diff --git a/util/m5/Makefile.x86 b/util/m5/Makefile.x86 --- a/util/m5/Makefile.x86 +++ b/util/m5/Makefile.x86 @@ -33,6 +33,19 @@ CFLAGS=-O2 -DM5OP_ADDR=0xFFFF0000 OBJS=m5.o m5op_x86.o +LIB_OBJS=m5op_x86.o +JNI_OBJS=m5op_x86.o jni_gem5Op.o + +## FIXME: overwrite CFLAGS to get rid of M5OP_ADDR +CFLAGS=-O2 -I$(JDK_PATH)/include/ -I$(JDK_PATH)/include/linux -fPIC +LDFLAGS=-L. -lm5 + +JC=javac +JH=javah +JR=jar +### JDK_PATH must be set to build gem5OpJni +#JDK_PATH=/path/to/jdk/version_number +JDK_PATH=/usr/lib/jvm/java-1.6.0-openjdk.x86_64 all: m5 @@ -42,8 +55,19 @@ %.o: %.c $(CC) $(CFLAGS) -o $@ -c $< -m5: $(OBJS) - $(CC) -o $@ $(OBJS) +m5: $(OBJS) libm5.a + $(CC) -o $@ $(OBJS) $(LDFLAGS) + +libm5.a: $(LIB_OBJS) + $(AR) rcs $@ $< + +gem5OpJni: gem5OpJni.jar $(JNI_OBJS) + $(CC) -shared -o lib$@.so $(JNI_OBJS) + +gem5OpJni.jar: + $(JC) jni/gem5Op.java; \ + $(JH) jni.gem5Op; \ + $(JR) cvf $@ jni/*.class clean: - rm -f *.o m5 + rm -f *.o m5 libgemOpJni.so gem5OpJni.jar jni/*.class