Skip to content

Commit a94d13d

Browse files
Allow to build shared library on Linux on Mac OS X
With this commit we adapt the Makefile so it builds the shared library for Linux and Mac OS X. Cross compilation is not supported.
1 parent e70f795 commit a94d13d

4 files changed

Lines changed: 23 additions & 8 deletions

File tree

.gitignore

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,3 +5,5 @@ affinity.ipr
55
target/
66

77
affinity.iws
8+
9+
.DS_Store

src/main/c/Makefile

Lines changed: 21 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -6,17 +6,27 @@
66
# C sources to compile
77

88
TARGET_DIR := ../../../target/classes
9-
TARGET := $(TARGET_DIR)/libaffinity.so
10-
9+
JAVA_BUILD_DIR := $(TARGET_DIR)
1110
WORKING_DIR := $(TARGET_DIR)/../jni
1211

13-
JAVA_BUILD_DIR := $(TARGET_DIR)
12+
SYS := $(shell gcc -dumpmachine)
13+
uname_S := $(shell sh -c 'uname -s 2>/dev/null || echo not')
1414

15-
JAVA_HOME ?= /usr/java/default
16-
JAVA_LIB := $(JAVA_HOME)/jre/lib
17-
JVM_SHARED_LIBS := -L$(JAVA_LIB)/amd64/server -L$(JAVA_LIB)/i386/server -L$(JAVA_LIB)/amd64/jrockit/ -L$(JAVA_LIB)/i386/jrockit/
15+
ifeq ($(uname_S),Linux)
16+
TARGET := $(TARGET_DIR)/libaffinity.so
17+
JAVA_HOME := /usr/java/default
18+
JAVA_LIB := $(JAVA_HOME)/jre/lib
19+
INCLUDES := -I $(JAVA_HOME)/include -I $(JAVA_HOME)/include/linux -I $(WORKING_DIR)
20+
JVM_SHARED_LIBS := -L$(JAVA_LIB)/amd64/server -L$(JAVA_LIB)/i386/server -L$(JAVA_LIB)/amd64/jrockit/ -L$(JAVA_LIB)/i386/jrockit/
21+
endif
1822

19-
INCLUDES := -I $(JAVA_HOME)/include -I $(JAVA_HOME)/include/linux -I $(WORKING_DIR)
23+
ifeq ($(uname_S),Darwin)
24+
TARGET := $(TARGET_DIR)/libaffinity.dylib
25+
JAVA_HOME := $(shell /usr/libexec/java_home)
26+
JAVA_LIB := $(JAVA_HOME)/jre/lib
27+
INCLUDES := -I $(JAVA_HOME)/include -I $(JAVA_HOME)/include/darwin -I $(WORKING_DIR)
28+
JVM_SHARED_LIBS := -L$(JAVA_LIB) -L$(JAVA_LIB)/server
29+
endif
2030

2131
# classpath for javah
2232
ifdef CLASSPATH
@@ -27,7 +37,10 @@ endif
2737

2838
all: $(TARGET)
2939

30-
$(TARGET): com_higherfrequencytrading_affinity_impl_NativeAffinity.c $(WORKING_DIR)/com_higherfrequencytrading_affinity_impl_NativeAffinity.h $(WORKING_DIR)/com_higherfrequencytrading_clock_impl_JNIClock.h $(WORKING_DIR)/com_higherfrequencytrading_busywaiting_impl_BusyWaiting.h
40+
$(TARGET_DIR)/libaffinity.dylib: com_higherfrequencytrading_affinity_impl_NativeAffinity_MacOSX.c $(WORKING_DIR)/com_higherfrequencytrading_affinity_impl_NativeAffinity.h $(WORKING_DIR)/com_higherfrequencytrading_clock_impl_JNIClock.h $(WORKING_DIR)/com_higherfrequencytrading_busywaiting_impl_BusyWaiting.h
41+
gcc -O2 -shared -fPIC $(JVM_SHARED_LIBS) -ljvm $(INCLUDES) com_higherfrequencytrading_affinity_impl_NativeAffinity_MacOSX.c -o $(TARGET)
42+
43+
$(TARGET_DIR)/libaffinity.so: com_higherfrequencytrading_affinity_impl_NativeAffinity.c $(WORKING_DIR)/com_higherfrequencytrading_affinity_impl_NativeAffinity.h $(WORKING_DIR)/com_higherfrequencytrading_clock_impl_JNIClock.h $(WORKING_DIR)/com_higherfrequencytrading_busywaiting_impl_BusyWaiting.h
3144
gcc -O2 -shared -fPIC $(JVM_SHARED_LIBS) -ljvm -lrt $(INCLUDES) com_higherfrequencytrading_affinity_impl_NativeAffinity.c -o $(TARGET)
3245

3346
$(WORKING_DIR)/com_higherfrequencytrading_affinity_impl_NativeAffinity.h: $(TARGET_DIR)/com/higherfrequencytrading/affinity/impl/NativeAffinity.class
Binary file not shown.
Binary file not shown.

0 commit comments

Comments
 (0)