X-Git-Url: https://git.argeo.org/?a=blobdiff_plain;f=repackage.mk;h=f68fc09ff933afcf3edf4b4a7bc7cb507e3d22fc;hb=731021f68224b769cffee4d89f2938fc23e56a56;hp=e0a6239c6a4815f8d28935febadc85a01edaa39a;hpb=172991d3d8c3949ff72e81e080ebdfced2a3e2d7;p=cc0%2Fargeo-build.git diff --git a/repackage.mk b/repackage.mk index e0a6239..f68fc09 100644 --- a/repackage.mk +++ b/repackage.mk @@ -1,23 +1,46 @@ -A2_OUTPUT = $(SDK_BUILD_BASE)/a2 -A2_BASE ?= $(A2_OUTPUT) +ARGEO_BUILD_BASE := $(dir $(lastword $(MAKEFILE_LIST))) +include $(ARGEO_BUILD_BASE)common.mk -TODOS_REPACKAGE = $(foreach category, $(CATEGORIES),$(BUILD_BASE)/$(category)/to-repackage) +# The following variables should be declared in the including Makefile: +# CATEGORIES the space-separated list of categories to repackage + +A2_BASE ?=/usr/share/a2 /usr/local/share/a2 $(A2_OUTPUT) +# Third-party libraries +LOGGER_JAR ?= $(firstword $(foreach base, $(A2_BASE), $(wildcard $(base)/log/syslogger/org.argeo.tp/org.argeo.tp.syslogger.$(SYSLOGGER_BRANCH).jar))) +BNDLIB_JAR ?= $(firstword $(foreach base, $(A2_BASE), $(wildcard $(base)/org.argeo.tp.build/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)) +REPACKAGED_CATEGORIES = $(foreach category, $(CATEGORIES),$(A2_OUTPUT)/$(category)) +INSTALL=install -m644 -D all: $(BUILD_BASE)/repackaged -.SECONDEXPANSION: +install: + $(foreach category, $(PORTABLE_CATEGORIES), $(INSTALL) $(wildcard $(A2_OUTPUT)/$(category)/*.jar) $(A2_INSTALL_TARGET)/$(category);$(LF)) + @echo Installed portable jars '$(PORTABLE_CATEGORIES)' to $(A2_INSTALL_TARGET) + $(foreach category, $(OS_CATEGORIES), $(INSTALL) $(wildcard $(A2_OUTPUT)/$(category)/*.jar) $(A2_INSTALL_TARGET)/$(patsubst,$(TARGET_OS_CATEGORY_PREFIX)/%,%,$(category));$(LF)) + @echo Installed OS-dependent jars '$(OS_CATEGORIES)' to $(A2_INSTALL_TARGET) + $(foreach category, $(ARCH_CATEGORIES), $(INSTALL) $(wildcard $(A2_OUTPUT)/$(category)/*.jar) $(A2_NATIVE_INSTALL_TARGET)/$(patsubst,$(TARGET_OS_CATEGORY_PREFIX)/%,%,$(category));$(LF)) + @echo Installed arch-dependent jars '$(ARCH_CATEGORIES)' to $(A2_NATIVE_INSTALL_TARGET) + $(foreach category, $(ARCH_CATEGORIES), $(INSTALL) $(wildcard $(A2_OUTPUT)/$(category)/*.so) $(A2_NATIVE_INSTALL_TARGET);$(LF)) + @echo Installed arch binaries '$(ARCH_CATEGORIES)' to $(A2_NATIVE_INSTALL_TARGET) + +uninstall: + @$(foreach category, $(CATEGORIES), rm -rf $(A2_INSTALL_TARGET)/$(category);) + @find $(A2_INSTALL_TARGET) -empty -type d -delete + @echo Uninstalled $(CATEGORIES) from $(A2_INSTALL_TARGET) +.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 $(A2_BASE)/org.argeo.tp/org.argeo.tp.syslogger.2.3.jar:$(A2_BASE)/org.argeo.tp.sdk/biz.aQute.bndlib.5.3.jar \ - $(SDK_SRC_BASE)/sdk/argeo-build/src/org/argeo/build/Repackage.java \ - $(A2_OUTPUT) $(CATEGORIES_TO_REPACKAGE) - touch $(BUILD_BASE)/repackaged + @$(ARGEO_REPACKAGE) $(A2_OUTPUT) $(CATEGORIES_TO_REPACKAGE) + @touch $(BUILD_BASE)/repackaged $(BUILD_BASE)/%/to-repackage : $$(shell find % -type f ) @rm -rf $(dir $@) @@ -25,6 +48,5 @@ $(BUILD_BASE)/%/to-repackage : $$(shell find % -type f ) @touch $@ clean: - $(foreach category, $(CATEGORIES), rm -rf $(A2_OUTPUT)/$(category)) - $(foreach category, $(CATEGORIES), rm -rf $(BUILD_BASE)/$(category)) - rm -f $(BUILD_BASE)/repackaged + @$(foreach category, $(CATEGORIES), rm -rf $(BUILD_BASE)/$(category)) + @rm -f $(BUILD_BASE)/repackaged