JAVADOC_PACKAGES ?=
A2_BASE ?=/usr/share/a2 /usr/local/share/a2 $(A2_OUTPUT)
+# We always use the latest version of the ECJ compiler
+ECJ_JAR ?= $(lastword $(foreach base, $(A2_BASE), $(sort $(wildcard $(base)/org.argeo.tp.build/org.eclipse.jdt.core.compiler.batch.$(ECJ_MAJOR).*.jar))))
# Third-party libraries
-LOGGER_JAR ?= $(lastword $(foreach base, $(A2_BASE), $(wildcard $(base)/org.argeo.tp/org.argeo.tp.syslogger.$(SYSLOGGER_BRANCH).jar)))
-ECJ_JAR ?= $(lastword $(foreach base, $(A2_BASE), $(wildcard $(base)/org.argeo.tp.sdk/org.eclipse.jdt.core.compiler.batch.$(ECJ_BRANCH).jar)))
-BNDLIB_JAR ?= $(lastword $(foreach base, $(A2_BASE), $(wildcard $(base)/org.argeo.tp.sdk/biz.aQute.bndlib.$(BNDLIB_BRANCH).jar)))
+LOGGER_JAR ?= $(lastword $(foreach base, $(A2_BASE), $(wildcard $(base)/log/syslogger/org.argeo.tp/org.argeo.tp.syslogger.$(SYSLOGGER_BRANCH).jar)))
+BNDLIB_JAR ?= $(lastword $(foreach base, $(A2_BASE), $(wildcard $(base)/org.argeo.tp.build/biz.aQute.bndlib.$(BNDLIB_BRANCH).jar)))
# Internal variables
-ARGEO_MAKE = $(JVM) -cp $(LOGGER_JAR):$(ECJ_JAR):$(BNDLIB_JAR) $(ARGEO_BUILD_BASE)/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)
+ifneq ($(NO_MANIFEST_COPY),true)
MANIFESTS = $(foreach bundle, $(BUNDLES), $(bundle)/META-INF/MANIFEST.MF)
+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)
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)
- $(ARGEO_MAKE) \
+ @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)
@touch $(BUILD_BASE)/built
# Local manifests
%/META-INF/MANIFEST.MF : $(BUILD_BASE)/%/META-INF/MANIFEST.MF
-ifneq($(NO_MANIFEST_COPY),true)
+ifneq ($(NO_MANIFEST_COPY),true)
@mkdir -p $*/META-INF
@cp $< $@
endif
clean-manifests :
@rm -rf $(foreach bundle, $(BUNDLES), $(bundle)/META-INF/MANIFEST.MF);
+osgi-install:
+ $(ARGEO_MAKE) \
+ install --category $(A2_CATEGORY) --bundles $(BUNDLES) \
+ --target $(A2_INSTALL_TARGET)
+
+osgi-uninstall:
+ $(ARGEO_MAKE) \
+ uninstall --category $(A2_CATEGORY) --bundles $(BUNDLES) \
+ --target $(A2_INSTALL_TARGET)
+
# Javadoc generation
javadoc: $(BUILD_BASE)/built
- $(JAVADOC) -quiet -Xmaxwarns 1 -d $(BUILD_BASE)/api --source-path $(subst $(space),$(pathsep),$(strip $(JAVADOC_SRCS))) -subpackages $(JAVADOC_PACKAGES)
+ $(JAVADOC) -noindex -quiet -Xmaxwarns 1 -d $(BUILD_BASE)/api --source-path $(subst $(space),$(pathsep),$(strip $(JAVADOC_SRCS))) -subpackages $(JAVADOC_PACKAGES)
# Make variables used to replace spaces by a separator, typically in order to generate classpaths
# for example: CLASSPATH = $(subst $(space),$(pathsep),$(strip $(JARS)))