Improve JNI build
[cc0/argeo-build.git] / osgi.mk
diff --git a/osgi.mk b/osgi.mk
index 38bd93f608fcd904e0b0b388231515f70f631744..6e57706314c641fd3b1e7786cad12acd8bbf2fdd 100644 (file)
--- a/osgi.mk
+++ b/osgi.mk
@@ -42,20 +42,21 @@ 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)
 
 # Actual build (compilation + bundle packaging)
-$(BUILD_BASE)/built : BUNDLES_TO_BUILD = $(subst $(abspath $(BUILD_BASE))/,, $(subst to-build,, $?))
+$(BUILD_BASE)/built : BUNDLES_TO_BUILD = $(strip $(subst $(abspath $(BUILD_BASE))/,, $(subst to-build,, $?)))
 $(BUILD_BASE)/built : $(TODOS)
-       @echo "\| Compiler     : $(ECJ_JAR)"
-       @echo "\| A2 category  : $(A2_CATEGORY)"
-       @echo "\| Bundles      : $(BUNDLES_TO_BUILD)"
-       @echo "\| Dependencies : $(DEP_CATEGORIES)"
+       @echo "| A2 category  : $(A2_CATEGORY)"
+       @echo "| Bundles      : $(BUNDLES_TO_BUILD)"
+       @echo "| Dependencies : $(DEP_CATEGORIES)"
+       @echo "| Compiler     : $(notdir $(ECJ_JAR))"
        @$(ARGEO_MAKE) \
         all --a2-bases $(A2_BASE) --dep-categories $(DEP_CATEGORIES) \
         --category $(A2_CATEGORY) --bundles $(BUNDLES_TO_BUILD)
@@ -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