From: Mathieu Baudier Date: Wed, 6 Mar 2024 07:34:39 +0000 (+0100) Subject: Improve JNI build X-Git-Tag: v2.3.10~41 X-Git-Url: https://git.argeo.org/?p=cc0%2Fargeo-build.git;a=commitdiff_plain;h=8b3dc98cbdb1fb8f4bf827a3c11f1c07f6818616 Improve JNI build --- diff --git a/common.mk b/common.mk index c105100..041e699 100644 --- 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 915098b..db0cecc 100644 --- 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 ca17cbe..6e57706 100644 --- 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