]> git.argeo.org Git - cc0/argeo-build.git/blob - repackage.mk
6f2a97dc751b4d5a3f7bd29d2586db7f9bc1afac
[cc0/argeo-build.git] / repackage.mk
1 ARGEO_BUILD_BASE := $(dir $(lastword $(MAKEFILE_LIST)))
2 include $(ARGEO_BUILD_BASE)common.mk
3
4 # The following variables should be declared in the including Makefile:
5 # CATEGORIES the space-separated list of categories to repackage
6
7 A2_BASE ?=/usr/share/a2 /usr/local/share/a2 $(A2_OUTPUT)
8
9 # Third-party libraries
10 LOGGER_JAR ?= $(firstword $(foreach base, $(A2_BASE), $(wildcard $(base)/log/syslogger/org.argeo.tp/org.argeo.tp.syslogger.$(SYSLOGGER_BRANCH).jar)))
11 BNDLIB_JAR ?= $(firstword $(foreach base, $(A2_BASE), $(wildcard $(base)/org.argeo.tp.build/biz.aQute.bndlib.$(BNDLIB_BRANCH).jar)))
12
13 # Internal variables
14 ARGEO_REPACKAGE = $(JVM) -cp $(LOGGER_JAR):$(BNDLIB_JAR) $(ARGEO_BUILD_BASE)src/org/argeo/build/Repackage.java
15 TODOS_REPACKAGE = $(foreach category, $(CATEGORIES),$(BUILD_BASE)/$(category)/to-repackage)
16 BUILD_BASE = $(SDK_BUILD_BASE)/$(shell basename $(SDK_SRC_BASE))
17 REPACKAGED_CATEGORIES = $(foreach category, $(CATEGORIES),$(A2_OUTPUT)/$(category))
18
19 all: $(BUILD_BASE)/repackaged
20
21 install:
22 $(foreach category, $(PORTABLE_CATEGORIES), $(INSTALL) $(A2_INSTALL_TARGET)/$(category) $(wildcard $(A2_OUTPUT)/$(category)/*.jar);$(LF))
23 @echo Installed portable jars '$(PORTABLE_CATEGORIES)' to $(A2_INSTALL_TARGET)
24 $(foreach category, $(OS_CATEGORIES), $(INSTALL) $(A2_INSTALL_TARGET)/$(category:$(TARGET_OS_CATEGORY_PREFIX)/%=%) $(wildcard $(A2_OUTPUT)/$(category)/*.jar);$(LF))
25 @echo Installed OS-dependent jars '$(OS_CATEGORIES)' to $(A2_INSTALL_TARGET)
26 $(foreach category, $(ARCH_CATEGORIES), $(INSTALL) $(A2_NATIVE_INSTALL_TARGET)/$(category:$(TARGET_ARCH_CATEGORY_PREFIX)/%=%) $(wildcard $(A2_OUTPUT)/$(category)/*.jar);$(LF))
27 @echo Installed arch-dependent jars '$(ARCH_CATEGORIES)' to $(A2_NATIVE_INSTALL_TARGET)
28 $(foreach category, $(ARCH_CATEGORIES), $(INSTALL) $(A2_NATIVE_INSTALL_TARGET) $(wildcard $(A2_OUTPUT)/$(category)/*.so);$(LF))
29 @echo Installed arch binaries '$(ARCH_CATEGORIES)' to $(A2_NATIVE_INSTALL_TARGET)
30
31 uninstall:
32 @$(foreach category, $(CATEGORIES), rm -rf $(A2_INSTALL_TARGET)/$(category);)
33 @find $(A2_INSTALL_TARGET) -empty -type d -delete
34 @echo Uninstalled $(CATEGORIES) from $(A2_INSTALL_TARGET)
35
36 .SECONDEXPANSION:
37 # We use .SECONDEXPANSION and CATEGORIES_TO_REPACKAGE instead of directly CATEGORIES
38 # so that we don't repackage a category if it hasn't changed
39 $(BUILD_BASE)/repackaged : CATEGORIES_TO_REPACKAGE = $(subst $(abspath $(BUILD_BASE))/,, $(subst to-repackage,, $?))
40 $(BUILD_BASE)/repackaged : $(TODOS_REPACKAGE)
41 @$(ARGEO_REPACKAGE) $(A2_OUTPUT) $(CATEGORIES_TO_REPACKAGE)
42 @touch $(BUILD_BASE)/repackaged
43
44 $(BUILD_BASE)/%/to-repackage : $$(shell find % -type f )
45 @rm -rf $(dir $@)
46 @mkdir -p $(dir $@)
47 @touch $@
48
49 clean:
50 @$(foreach category, $(CATEGORIES), rm -rf $(BUILD_BASE)/$(category))
51 @rm -f $(BUILD_BASE)/repackaged