-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathMakefile
More file actions
38 lines (31 loc) · 1.41 KB
/
Copy pathMakefile
File metadata and controls
38 lines (31 loc) · 1.41 KB
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
# -------- CONFIGURATION --------
# JAVA_HOME ?= /usr/lib/jvm/default-jdk
JAVA_HOME := $(shell echo $$JAVA_HOME)
ifeq ($(JAVA_HOME),)
$(error JAVA_HOME is not set. Please set it to your JDK path, e.g., export JAVA_HOME=/usr/lib/jvm/java-11-openjdk)
endif
PROJECT_ROOT := $(CURDIR)
JAVA_SRC := $(PROJECT_ROOT)/src/main/java/com/example/telemetryviewer
CPP_SRC := $(PROJECT_ROOT)/src/main/cpp
HEADERS := $(CPP_SRC)/headers
OUT_DIR := $(PROJECT_ROOT)/build
JNI_INCLUDE := -I"$(JAVA_HOME)/include"
JNI_PLATFORM := -I"$(JAVA_HOME)/include/$(shell uname | tr A-Z a-z)"
# -------- TARGETS --------
all: detect-os build-jni
detect-os:
@echo "Detected OS: $(shell uname)"
build-jni:
ifeq ($(OS),Windows_NT)
@echo "Building for Windows..."
javac -h $(HEADERS) -d $(OUT_DIR) $(JAVA_SRC)/service/BinaryReader.java $(JAVA_SRC)/models/*.java
g++ -m64 -I"$(JAVA_HOME)/include" -I"$(JAVA_HOME)/include/win32" -I$(HEADERS) -shared -o $(OUT_DIR)/filedecoder.dll $(CPP_SRC)/filedecoder.cpp
else
@echo "Building for Linux..."
mkdir -p $(OUT_DIR)
javac -h $(HEADERS) -d $(OUT_DIR) $(JAVA_SRC)/service/BinaryReader.java $(JAVA_SRC)/models/*.java
g++ -fPIC $(JNI_INCLUDE) $(JNI_PLATFORM) -I$(HEADERS) -c $(CPP_SRC)/filedecoder.cpp -o $(OUT_DIR)/filedecoder.o
g++ -shared -o $(OUT_DIR)/filedecoder.so $(OUT_DIR)/filedecoder.o
endif
clean:
rm -rf $(OUT_DIR)/*.o $(OUT_DIR)/*.so $(OUT_DIR)/*.dll