| ARCH=$(shell uname -m) |
| |
| ifeq ($(ARCH), x86_64) |
| JARCH=amd64 |
| endif |
| ifeq ($(ARCH), armv7l) |
| JARCH=armhf |
| endif |
| ifeq ($(ARCH), armv6l) |
| JARCH=armhf |
| endif |
| ifeq ($(ARCH), aarch64) |
| JARCH=aarch64 |
| endif |
| ifeq ($(ARCH), ppc64) |
| JARCH=powerpc |
| endif |
| ifeq ($(ARCH), ppc64le) |
| JARCH=powerpc |
| endif |
| |
| DESTDIR=/usr/local |
| |
| VERSION=1 |
| REVISION=0 |
| AGE=0 |
| |
| LN=ln -sf |
| RM=rm |
| |
| SLIBJVMTI=libjvmti.so.$(VERSION).$(REVISION).$(AGE) |
| VLIBJVMTI=libjvmti.so.$(VERSION) |
| SLDFLAGS=-shared -Wl,-soname -Wl,$(VLIBJVMTI) |
| SOLIBEXT=so |
| |
| # The following works at least on fedora 23, you may need the next |
| # line for other distros. |
| ifneq (,$(wildcard /usr/sbin/update-java-alternatives)) |
| JDIR=$(shell /usr/sbin/update-java-alternatives -l | head -1 | awk '{print $$3}') |
| else |
| ifneq (,$(wildcard /usr/sbin/alternatives)) |
| JDIR=$(shell alternatives --display java | tail -1 | cut -d' ' -f 5 | sed 's%/jre/bin/java.%%g') |
| endif |
| endif |
| ifndef JDIR |
| $(error Could not find alternatives command, you need to set JDIR= to point to the root of your Java directory) |
| else |
| ifeq (,$(wildcard $(JDIR)/include/jvmti.h)) |
| $(error the openjdk development package appears to me missing, install and try again) |
| endif |
| endif |
| $(info Using Java from $(JDIR)) |
| # -lrt required in 32-bit mode for clock_gettime() |
| LIBS=-lelf -lrt |
| INCDIR=-I $(JDIR)/include -I $(JDIR)/include/linux |
| |
| TARGETS=$(SLIBJVMTI) |
| |
| SRCS=libjvmti.c jvmti_agent.c |
| OBJS=$(SRCS:.c=.o) |
| SOBJS=$(OBJS:.o=.lo) |
| OPT=-O2 -g -Werror -Wall |
| |
| CFLAGS=$(INCDIR) $(OPT) |
| |
| all: $(TARGETS) |
| |
| .c.o: |
| $(CC) $(CFLAGS) -c $*.c |
| .c.lo: |
| $(CC) -fPIC -DPIC $(CFLAGS) -c $*.c -o $*.lo |
| |
| $(OBJS) $(SOBJS): Makefile jvmti_agent.h ../util/jitdump.h |
| |
| $(SLIBJVMTI): $(SOBJS) |
| $(CC) $(CFLAGS) $(SLDFLAGS) -o $@ $(SOBJS) $(LIBS) |
| $(LN) $@ libjvmti.$(SOLIBEXT) |
| |
| clean: |
| $(RM) -f *.o *.so.* *.so *.lo |
| |
| install: |
| -mkdir -p $(DESTDIR)/lib |
| install -m 755 $(SLIBJVMTI) $(DESTDIR)/lib/ |
| (cd $(DESTDIR)/lib; $(LN) $(SLIBJVMTI) $(VLIBJVMTI)) |
| (cd $(DESTDIR)/lib; $(LN) $(SLIBJVMTI) libjvmti.$(SOLIBEXT)) |
| ldconfig |
| |
| .SUFFIXES: .c .S .o .lo |