From: Mathieu Baudier Date: Thu, 16 Mar 2023 08:21:23 +0000 (+0100) Subject: Location-independent makefiles X-Git-Tag: v2.3.5~93 X-Git-Url: https://git.argeo.org/?a=commitdiff_plain;h=6122d55354d63a5274d9a528ffb38f734da9f826;p=cc0%2Fargeo-build.git Location-independent makefiles --- diff --git a/osgi.mk b/osgi.mk index 4ac180d..6f92144 100644 --- a/osgi.mk +++ b/osgi.mk @@ -1,5 +1,5 @@ -SELF_DIR := $(dir $(lastword $(MAKEFILE_LIST))) -include $(SELF_DIR)common.mk +ARGEO_BUILD_BASE := $(dir $(lastword $(MAKEFILE_LIST))) +include $(ARGEO_BUILD_BASE)common.mk # # Common build routines to be included in Makefiles # @@ -29,7 +29,7 @@ ECJ_JAR ?= $(lastword $(foreach base, $(A2_BASE), $(wildcard $(base)/org.argeo.t BNDLIB_JAR ?= $(lastword $(foreach base, $(A2_BASE), $(wildcard $(base)/org.argeo.tp.sdk/biz.aQute.bndlib.$(BNDLIB_BRANCH).jar))) # Internal variables -ARGEO_MAKE = $(JVM) -cp $(LOGGER_JAR):$(ECJ_JAR):$(BNDLIB_JAR) $(SDK_SRC_BASE)/sdk/argeo-build/src/org/argeo/build/Make.java +ARGEO_MAKE = $(JVM) -cp $(LOGGER_JAR):$(ECJ_JAR):$(BNDLIB_JAR) $(ARGEO_BUILD_BASE)/src/org/argeo/build/Make.java JAVADOC_SRCS = $(foreach bundle, $(BUNDLES), $(bundle)/src) 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)) @@ -44,8 +44,8 @@ osgi: $(BUILD_BASE)/built # Actual build (compilation + bundle packaging) $(BUILD_BASE)/built : BUNDLES_TO_BUILD = $(subst $(abspath $(BUILD_BASE))/,, $(subst to-build,, $?)) $(BUILD_BASE)/built : $(TODOS) - $(JVM) -cp $(LOGGER_JAR):$(ECJ_JAR):$(BNDLIB_JAR) $(SDK_SRC_BASE)/sdk/argeo-build/src/org/argeo/build/Make.java \ - all --a2-bases $(A2_BASE) --dep-categories $(DEP_CATEGORIES) --category $(A2_CATEGORY) --bundles $(BUNDLES_TO_BUILD) + $(ARGEO_MAKE) all --a2-bases $(A2_BASE) --dep-categories $(DEP_CATEGORIES) \ + --category $(A2_CATEGORY) --bundles $(BUNDLES_TO_BUILD) touch $(BUILD_BASE)/built $(BUILD_BASE)/%/to-build : $$(shell find % -type f -not -path 'bin/*' -not -path '*/MANIFEST.MF' | sed 's/ /\\ /g') diff --git a/repackage.mk b/repackage.mk index ccb89ed..a4c591c 100644 --- a/repackage.mk +++ b/repackage.mk @@ -1,5 +1,5 @@ -SELF_DIR := $(dir $(lastword $(MAKEFILE_LIST))) -include $(SELF_DIR)common.mk +ARGEO_BUILD_BASE := $(dir $(lastword $(MAKEFILE_LIST))) +include $(ARGEO_BUILD_BASE)common.mk # # Common repackage routines to be included in Makefiles # @@ -22,21 +22,18 @@ LOGGER_JAR ?= $(lastword $(foreach base, $(A2_BASE), $(wildcard $(base)/org.arge BNDLIB_JAR ?= $(lastword $(foreach base, $(A2_BASE), $(wildcard $(base)/org.argeo.tp.sdk/biz.aQute.bndlib.$(BNDLIB_BRANCH).jar))) # Internal variables +ARGEO_REPACKAGE = $(JVM) -cp $(LOGGER_JAR):$(BNDLIB_JAR) $(ARGEO_BUILD_BASE)/src/org/argeo/build/Repackage.java TODOS_REPACKAGE = $(foreach category, $(CATEGORIES),$(BUILD_BASE)/$(category)/to-repackage) BUILD_BASE = $(SDK_BUILD_BASE)/$(shell basename $(SDK_SRC_BASE)) all: $(BUILD_BASE)/repackaged .SECONDEXPANSION: - # We use .SECONDEXPANSION and CATEGORIES_TO_REPACKAGE instead of directly CATEGORIES # so that we don't repackage a category if it hasn't changed $(BUILD_BASE)/repackaged : CATEGORIES_TO_REPACKAGE = $(subst $(abspath $(BUILD_BASE))/,, $(subst to-repackage,, $?)) $(BUILD_BASE)/repackaged : $(TODOS_REPACKAGE) - $(JVM) \ - -cp $(LOGGER_JAR):$(BNDLIB_JAR) \ - $(SDK_SRC_BASE)/sdk/argeo-build/src/org/argeo/build/Repackage.java \ - $(A2_OUTPUT) $(CATEGORIES_TO_REPACKAGE) + $(ARGEO_REPACKAGE) $(A2_OUTPUT) $(CATEGORIES_TO_REPACKAGE) touch $(BUILD_BASE)/repackaged $(BUILD_BASE)/%/to-repackage : $$(shell find % -type f )