-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathMakefile
49 lines (40 loc) · 1.14 KB
/
Makefile
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
TARGET_LIB_NAME=counter
BCCOUNT_DIR=.
JAVAC=javac
JAVAC_FLAGS=-g -d .
JAVA_LD_LIB_PATH=${CURDIR}/${BCCOUNT_DIR}
UNAME=$(shell uname -s)
ifeq (${UNAME}, Darwin)
TARGET_LIB=lib${TARGET_LIB_NAME}.jnilib
JAVA_HEADERS=/System/Library/Frameworks/JavaVM.framework/Headers
CFLAGS_JNILIB=-fPIC -dynamiclib
else
TARGET_LIB=lib${TARGET_LIB_NAME}.so
JAVA_HEADERS=/usr/lib/jvm/default-java/include
CFLAGS_JNILIB=-fPIC -shared
endif
TARGET=${BCCOUNT_DIR}/${TARGET_LIB}
JAVA_WITH_AGENT=java -agentpath:${TARGET}
CFLAGS_OBJ=-I${BCCOUNT_DIR} -I${JAVA_HEADERS} -O0 -fPIC -Wall -g3 -c
OBJ=${BCCOUNT_DIR}/hashmap.o ${BCCOUNT_DIR}/count_instructions.o
HDR=${BCCOUNT_DIR}/hashmap.h
SRC=$(OBJ:%.o=%.c)
JAVA_TESTCLASS=Test
JAVA_AGENT_TEST_LOG=${JAVA_TESTCLASS}.agent.log
OBJ_TEST=${JAVA_TESTCLASS}.class
all: ${TARGET}
test: ${TARGET} ${OBJ_TEST}
run-test: test
${JAVA_WITH_AGENT} ${JAVA_TESTCLASS} | tee ${JAVA_AGENT_TEST_LOG}
${TARGET}: ${OBJ}
${CC} ${CFLAGS_JNILIB} -o $@ $^
%.o: %.c ${HDR}
${CC} ${CFLAGS_OBJ} -o $@ $<
%.class: %.java
${JAVAC} ${JAVAC_FLAGS} $<
clean-all: clean
${RM} ${JAVA_AGENT_TEST_LOG}
${RM} ${TARGET}
clean:
${RM} ${OBJ}
${RM} ${OBJ_TEST}