Improve JNI build
authorMathieu Baudier <mbaudier@argeo.org>
Wed, 6 Mar 2024 07:34:39 +0000 (08:34 +0100)
committerMathieu Baudier <mbaudier@argeo.org>
Wed, 6 Mar 2024 07:34:39 +0000 (08:34 +0100)
common.mk
jni.mk
osgi.mk

index c1051007f412fbb029df83902970395d26939f2a..041e699d78f411a8d17ea1bc4ef8ce8e503baaea 100644 (file)
--- a/common.mk
+++ b/common.mk
@@ -24,4 +24,4 @@ TARGET_OS_CATEGORY_PREFIX=lib/linux
 TARGET_ARCH_CATEGORY_PREFIX=$(TARGET_OS_CATEGORY_PREFIX)/$(TARGET_ARCH)
 PORTABLE_CATEGORIES=$(filter-out lib/%, $(CATEGORIES))
 ARCH_CATEGORIES=$(filter $(TARGET_ARCH_CATEGORY_PREFIX)/%, $(CATEGORIES))
-OS_CATEGORIES=$(filter-out $(foreach arch, $(KNOWN_ARCHS), $(TARGET_OS_CATEGORY_PREFIX)/$(arch)/%), $(filter $(TARGET_OS_CATEGORY_PREFIX)/%, $(CATEGORIES)))
\ No newline at end of file
+OS_CATEGORIES=$(filter-out $(foreach arch, $(KNOWN_ARCHS), $(TARGET_OS_CATEGORY_PREFIX)/$(arch)/%), $(filter $(TARGET_OS_CATEGORY_PREFIX)/%, $(CATEGORIES)))
diff --git a/jni.mk b/jni.mk
index 915098b5c96f4d7aad17a75533a733b2daaebb82..db0cecc81fe4f8027b0078fafaf6a0abece86bd6 100644 (file)
--- a/jni.mk
+++ b/jni.mk
@@ -1,5 +1,5 @@
 ARGEO_BUILD_BASE := $(dir $(lastword $(MAKEFILE_LIST)))
-include $(ARGEO_BUILD_BASE)osgi.mk
+include $(ARGEO_BUILD_BASE)common.mk
 
 A2_NATIVE_CATEGORY=$(A2_OUTPUT)/lib/linux/$(shell uname -m)/$(A2_CATEGORY)
 TARGET_EXEC := libJava_$(NATIVE_PACKAGE).so
@@ -17,12 +17,18 @@ BUILD_DIR := $(SDK_BUILD_BASE)/jni/$(NATIVE_PACKAGE)
 # Include directories
 INC_DIRS := $(shell find $(SRC_DIRS) -type d) $(JAVA_HOME)/include $(JAVA_HOME)/include/linux $(ADDITIONAL_INCLUDES)
 
-.PHONY: clean all ide
 all: $(A2_NATIVE_CATEGORY)/$(TARGET_EXEC)
 
 clean:
+       $(RM) $(BUILD_DIR)/*.o
        $(RM) $(A2_NATIVE_CATEGORY)/$(TARGET_EXEC)
 
+install:
+       $(CP) $(A2_NATIVE_CATEGORY)/$(TARGET_EXEC) $(A2_NATIVE_INSTALL_TARGET)
+
+uninstall:
+       $(RM) $(A2_NATIVE_INSTALL_TARGET)/$(TARGET_EXEC)
+
 # Sources
 SRCS := $(shell find $(SRC_DIRS) -name '*.cpp' -or -name '*.c' -or -name '*.s')
 # Objects (example.cpp to ./org_example_core/example.cpp.o)
@@ -51,3 +57,5 @@ $(BUILD_DIR)/%.cpp.o: %.cpp
 
 # Include the .d makefiles. (- pefix suppress errors if not found)
 -include $(DEPS)
+
+.PHONY: clean all install uninstall
diff --git a/osgi.mk b/osgi.mk
index ca17cbe820b8fb7b7f7150da2f3d7f4085cab2e3..6e57706314c641fd3b1e7786cad12acd8bbf2fdd 100644 (file)
--- a/osgi.mk
+++ b/osgi.mk
@@ -42,10 +42,11 @@ endif
 BUILD_BASE = $(SDK_BUILD_BASE)/$(shell basename $(SDK_SRC_BASE))
 TARGET_BUNDLES =  $(abspath $(foreach bundle, $(BUNDLES),$(A2_OUTPUT)/$(shell dirname $(bundle))/$(A2_CATEGORY)/$(shell basename $(bundle)).$(major).$(minor).jar))
 TODOS = $(foreach bundle, $(BUNDLES),$(BUILD_BASE)/$(bundle)/to-build) 
+# Native
+JNIDIRS=$(foreach package, $(NATIVE_PACKAGES), jni/$(package))
 
 # Needed in order to be able to expand $$ variables
 .SECONDEXPANSION:
-.PHONY: osgi manifests javadoc
 
 osgi: $(BUILD_BASE)/built $(MANIFESTS)
 
@@ -81,16 +82,33 @@ endif
 clean-manifests :
        @rm -rf $(foreach bundle, $(BUNDLES), $(bundle)/META-INF/MANIFEST.MF);
 
-osgi-install:
+osgi-all: osgi jni-all
+
+osgi-clean: jni-clean
+       rm -rf $(BUILD_BASE)
+
+osgi-install: jni-install
        $(ARGEO_MAKE) \
         install --category $(A2_CATEGORY) --bundles $(BUNDLES) \
         --target $(A2_INSTALL_TARGET)
 
-osgi-uninstall:
+osgi-uninstall: jni-uninstall
        $(ARGEO_MAKE) \
         uninstall --category $(A2_CATEGORY) --bundles $(BUNDLES) \
         --target $(A2_INSTALL_TARGET)
 
+jni-all: 
+       $(foreach dir, $(JNIDIRS), $(MAKE) -C $(dir) all;)
+       
+jni-clean:
+       $(foreach dir, $(JNIDIRS), $(MAKE) -C $(dir) clean;)
+
+jni-install:
+       $(foreach dir, $(JNIDIRS), $(MAKE) -C $(dir) install;)
+
+jni-uninstall:
+       $(foreach dir, $(JNIDIRS), $(MAKE) -C $(dir) uninstall;)
+
 # Javadoc generation
 javadoc: $(BUILD_BASE)/built
        $(JAVADOC) -noindex -quiet -Xmaxwarns 1 -d $(BUILD_BASE)/api --source-path $(subst $(space),$(pathsep),$(strip $(JAVADOC_SRCS))) -subpackages $(JAVADOC_PACKAGES)
@@ -99,4 +117,6 @@ javadoc: $(BUILD_BASE)/built
 # for example: CLASSPATH = $(subst $(space),$(pathsep),$(strip $(JARS)))
 null  :=
 space := $(null) #
-pathsep := :
\ No newline at end of file
+pathsep := :
+
+.PHONY: osgi manifests javadoc osgi-all osgi-clean osgi-install osgi-uninstall jni-all jni-clean jni-install jni-uninstall