From: Mathieu Baudier Date: Sat, 12 Feb 2022 10:23:40 +0000 (+0100) Subject: Builds based on Make X-Git-Tag: argeo-commons-2.3.5~26 X-Git-Url: https://git.argeo.org/?p=lgpl%2Fargeo-commons.git;a=commitdiff_plain;h=b6c9c86547ad1828606426ad1e6c4470bcfc13a4 Builds based on Make --- diff --git a/Makefile b/Makefile index 85473c29c..f19a0dc4b 100644 --- a/Makefile +++ b/Makefile @@ -1,10 +1,9 @@ include sdk.mk .PHONY: clean all osgi jni -all: osgi +all: osgi jni -BUNDLE_PREFIX = org.argeo -A2_CATEGORY = org.argeo +A2_CATEGORY = org.argeo.cms BUNDLES = \ org.argeo.init \ @@ -15,34 +14,13 @@ org.argeo.api.cms \ org.argeo.cms \ org.argeo.cms.pgsql \ eclipse/org.argeo.cms.servlet \ -rcp/org.argeo.swt.minidesktop \ -rcp/org.argeo.swt.specific.rcp \ eclipse/org.argeo.cms.swt \ -rcp/org.argeo.cms.ui.rcp \ - -BUILD_CLASSPATH = \ -/usr/share/java/osgi-core/osgi.core.jar:$\ -/usr/share/java/osgi-compendium/osgi.cmpn.jar:$\ -/usr/share/java/ecj/ecj.jar:$\ -/usr/share/java/aqute-bnd/biz.aQute.bndlib.jar:$\ -/usr/share/java/slf4j/api.jar:$\ -/usr/share/java/commons-io.jar:$\ -/usr/share/java/commons-cli.jar:$\ -/usr/share/java/bcprov.jar:$\ -/usr/share/java/bcpkix.jar:$\ -/usr/share/java/commons-httpclient3.jar:$\ -/usr/share/java/postgresql-jdbc.jar:$\ -/usr/share/java/tomcat-servlet-api.jar:$\ -/usr/share/java/eclipse/equinox.http.jetty.jar:$\ -/usr/lib/java/swt.jar:$\ -/usr/lib/eclipse/plugins/org.eclipse.swt.gtk.linux.x86_64_3.116.0.v20210304-1735:$\ -/usr/lib/eclipse/plugins/org.eclipse.e4.ui.css.core_0.13.0.v20210304-1735.jar:$\ -/usr/lib/eclipse/plugins/org.eclipse.e4.ui.css.swt_0.14.100.v20210304-1735.jar:$\ -/usr/lib/eclipse/plugins/org.eclipse.e4.ui.css.swt.theme_0.13.0.v20210304-1735.jar:$\ -/usr/lib/eclipse/plugins/org.eclipse.jface_3.22.100.v20210304-1735.jar:$\ -/usr/lib/eclipse/plugins/org.eclipse.core.commands_3.9.800.v20210304-1735.jar:$\ -/usr/share/java/eclipse/equinox.common.jar:$\ -/usr/share/java/sac.jar:$\ +eclipse/org.argeo.cms.e4 \ +rap/org.argeo.cms.ui.rap \ +rap/org.argeo.swt.specific.rap \ +rap/org.argeo.cms.e4.rap \ +jcr/org.argeo.cms.jcr \ +jcr/org.argeo.cms.ui \ JAVADOC_BUNDLES = \ org.argeo.api.uuid \ @@ -54,80 +32,18 @@ org.argeo.api.uuid \ org.argeo.api.acr \ org.argeo.api.cms +A2_OUTPUT = $(SDK_BUILD_BASE)/a2 +A2_BASE = $(A2_OUTPUT) -jni: - $(MAKE) -C jni - -# TODO relativize from SDK_SRC_BASE -BUILD_BASE = $(SDK_BUILD_BASE) - -# -# GENERIC -# -JVM := /usr/lib/jvm/jre-11/bin/java -JAVADOC := /usr/lib/jvm/jre-11/bin/javadoc -ECJ_JAR := /usr/share/java/ecj/ecj.jar -BND_TOOL := /usr/bin/bnd - -WORKSPACE_BNDS := $(shell cd $(SDK_SRC_BASE) && find cnf -name '*.bnd') -#BND_WORKSPACES := $(foreach bundle, $(BUNDLES), ./$(dir $(bundle))) -BUILD_WORKSPACE_BNDS := $(WORKSPACE_BNDS:%=$(SDK_BUILD_BASE)/%) $(WORKSPACE_BNDS:%=$(SDK_BUILD_BASE)/eclipse/%) $(WORKSPACE_BNDS:%=$(SDK_BUILD_BASE)/rcp/%) - -cnf: $(BUILD_WORKSPACE_BNDS) - -A2_BUNDLES = $(BUNDLES:%=$(SDK_BUILD_BASE)/a2/$(A2_CATEGORY)/%.$(MAJOR).$(MINOR).jar) - -#JAVA_SRCS = $(shell find $(BUNDLE_PREFIX).* -name '*.java') -JAVA_SRCS = $(foreach bundle, $(BUNDLES), $(shell find $(bundle) -name '*.java')) -ECJ_SRCS = $(foreach bundle, $(BUNDLES), $(bundle)/src[-d $(BUILD_BASE)/$(bundle)/bin]) +VPATH = .:eclipse:rap:jcr -JAVADOC_SRCS = $(foreach bundle, $(JAVADOC_BUNDLES),$(bundle)/src) +DEP_CATEGORIES = org.argeo.tp org.argeo.tp.apache org.argeo.tp.jetty org.argeo.tp.eclipse.equinox org.argeo.tp.eclipse.rap org.argeo.tp.jcr -osgi: cnf $(A2_BUNDLES) - -javadoc: $(BUILD_BASE)/java-compiled - $(JAVADOC) -d $(SDK_BUILD_BASE)/api --source-path $(subst $(space),$(pathsep),$(strip $(JAVADOC_SRCS))) -subpackages $(JAVADOC_PACKAGES) +jni: + $(MAKE) -C jni clean: - rm -rf $(BUILD_BASE)/*-compiled - rm -rf $(BUILD_BASE)/{cnf,a2} - rm -rf $(BUILD_BASE)/$(BUNDLE_PREFIX).* $(BUILD_BASE)/eclipse $(BUILD_BASE)/rcp + rm -rf $(BUILD_BASE) $(MAKE) -C jni clean -# SDK level -$(SDK_BUILD_BASE)/cnf/%.bnd: cnf/%.bnd - mkdir -p $(dir $@) - cp $< $@ - -$(SDK_BUILD_BASE)/eclipse/cnf/%.bnd: cnf/%.bnd - mkdir -p $(dir $@) - cp $< $@ - -$(SDK_BUILD_BASE)/rcp/cnf/%.bnd: cnf/%.bnd - mkdir -p $(dir $@) - cp $< $@ - -$(SDK_BUILD_BASE)/a2/$(A2_CATEGORY)/%.$(MAJOR).$(MINOR).jar : $(BUILD_BASE)/%/bundle.jar - mkdir -p $(dir $@) - cp $< $@ - -# Build level -$(BUILD_BASE)/%/bundle.jar : %/bnd.bnd $(BUILD_BASE)/java-compiled - rsync -r --exclude "*.java" $(dir $<)src/ $(dir $@)bin - rsync -r $(dir $<)src/ $(dir $@)src - if [ -d "$(dir $<)OSGI-INF" ]; then rsync -r $(dir $<)OSGI-INF/ $(dir $@)/OSGI-INF; fi - cp $< $(dir $@) - cd $(dir $@) && $(BND_TOOL) build - mv $(dir $@)generated/*.jar $(dir $@)bundle.jar - -$(BUILD_BASE)/java-compiled : $(JAVA_SRCS) - $(JVM) -jar $(ECJ_JAR) -11 -nowarn -time -cp $(BUILD_CLASSPATH) \ - $(ECJ_SRCS) - touch $@ - -null := -space := $(null) # -pathsep := : - -#WITH_LIST := $(subst $(space),$(pathsep),$(strip $(WITH_LIST))) - +include $(SDK_SRC_BASE)/sdk/osgi.mk \ No newline at end of file diff --git a/configure b/configure index 90c0e9953..da5dffbd1 100644 --- a/configure +++ b/configure @@ -43,7 +43,6 @@ SDK_BUILD_BASE := $SDK_BUILD_BASE JAVA_HOME := $JAVA_HOME include \$(SDK_SRC_BASE)/branch.properties -include \$(SDK_SRC_BASE)/sdk/includes.mk EOF diff --git a/jcr/org.argeo.cms.jcr/build.properties b/jcr/org.argeo.cms.jcr/build.properties index 55784db08..2b99dd7ba 100644 --- a/jcr/org.argeo.cms.jcr/build.properties +++ b/jcr/org.argeo.cms.jcr/build.properties @@ -1,27 +1,10 @@ output.. = bin/ bin.includes = META-INF/,\ .,\ - OSGI-INF/jcrDeployment.xml,\ - OSGI-INF/repositoryContextsFactory.xml,\ - OSGI-INF/jcrRepositoryFactory.xml,\ - OSGI-INF/jcrFsProvider.xml + OSGI-INF/ source.. = src/ -additional.bundles = org.apache.jackrabbit.core,\ - javax.jcr,\ - org.apache.jackrabbit.api,\ - org.apache.jackrabbit.data,\ - org.apache.jackrabbit.jcr.commons,\ - org.apache.jackrabbit.spi,\ - org.apache.jackrabbit.spi.commons,\ - org.slf4j.api,\ - org.apache.commons.collections,\ - EDU.oswego.cs.dl.util.concurrent,\ - org.apache.lucene,\ - org.apache.tika.core,\ - org.apache.commons.dbcp,\ - org.apache.jackrabbit.jcr2spi,\ - org.apache.jackrabbit.spi2dav,\ - org.apache.httpcomponents.httpclient,\ - org.apache.httpcomponents.httpcore,\ - org.apache.tika.parsers,\ - org.h2 +additional.bundles = \ +org.apache.jackrabbit.data, \ +org.apache.jackrabbit.spi.commons,\ + + \ No newline at end of file diff --git a/jni/Makefile b/jni/Makefile index 8944d5ce7..daac622fe 100644 --- a/jni/Makefile +++ b/jni/Makefile @@ -1,3 +1,5 @@ +include ../sdk.mk + JNIDIRS = org_argeo_api_uuid_libuuid .PHONY: clean all @@ -6,5 +8,7 @@ all: $(foreach dir, $(JNIDIRS), $(MAKE) -C $(dir);) clean: - $(foreach dir, $(JNIDIRS), $(MAKE) -C $(dir) clean;) + rm -r $(BUILD_DIR) $(SDK_BUILD_BASE)/jni + + diff --git a/jni/jni.mk b/jni/jni.mk index 46f06749c..40dde4469 100644 --- a/jni/jni.mk +++ b/jni/jni.mk @@ -50,9 +50,6 @@ $(BUILD_DIR)/%.cpp.o: %.cpp mkdir -p $(dir $@) $(CXX) $(CPPFLAGS) $(CXXFLAGS) -c $< -o $@ -clean: - rm -r $(BUILD_DIR) $(SDK_BUILD_BASE)/$(TARGET_EXEC) - # Include the .d makefiles. The - at the front suppresses the errors of missing # Makefiles. Initially, all the .d files will be missing, and we don't want those # errors to show up. diff --git a/sdk/ecj.args b/sdk/ecj.args index 306fd825c..852a33d4a 100644 --- a/sdk/ecj.args +++ b/sdk/ecj.args @@ -1,2 +1,4 @@ --11 --nowarn \ No newline at end of file +-source 17 +-target 11 +-nowarn +-time \ No newline at end of file diff --git a/sdk/includes.mk b/sdk/includes.mk deleted file mode 100644 index e69de29bb..000000000 diff --git a/sdk/osgi.mk b/sdk/osgi.mk index 5b27b0e3b..a97a937f8 100644 --- a/sdk/osgi.mk +++ b/sdk/osgi.mk @@ -1,21 +1,67 @@ +# +# GENERIC +# +JVM := $(JAVA_HOME)/bin/java +JAVADOC := $(JAVA_HOME)/bin/javadoc +ECJ_JAR := $(SDK_BUILD_BASE)/a2/org.argeo.tp.sdk/org.eclipse.jdt.core.compiler.batch.3.28.jar +BND_TOOL := /usr/bin/bnd +BUILD_BASE = $(SDK_BUILD_BASE)/$(A2_CATEGORY) -#base-java-sources : $(shell find org.argeo.* -name '*.java') +WORKSPACE_BNDS := $(shell cd $(SDK_SRC_BASE) && find cnf -name '*.bnd') +BUILD_WORKSPACE_BNDS := $(WORKSPACE_BNDS:%=$(BUILD_BASE)/%) -#base-java-classes : $(shell find org.argeo.* -name '*.class') +A2_JARS = $(foreach category, $(DEP_CATEGORIES), $(shell find $(A2_BASE)/$(category) -name '*.jar')) +A2_CLASSPATH = $(subst $(space),$(pathsep),$(strip $(A2_JARS))) -# each dir depends on its package directories -#$(SDK_SRC_BASE)/% : $(shell find */src -type f | sed "s%/[^/]*$%%" | sort -u) +A2_BUNDLES = $(foreach bundle, $(BUNDLES),$(A2_OUTPUT)/$(A2_CATEGORY)/$(shell basename $(bundle)).$(MAJOR).$(MINOR).jar) -# non empty package dirs -#$(SDK_SRC_BASE)/*/src/% : $(shell grep --no-filename ^import '%/*.java' | sed 's/import //g' | sed 's/static //g' | sed 's/\.[A-Za-z0-9_]*;//' | sed 's/\.[A-Z].*//' | sort | uniq) +JAVA_SRCS = $(foreach bundle, $(BUNDLES), $(shell find $(bundle) -name '*.java')) +BNDS = $(foreach bundle, $(BUNDLES), $(BUILD_BASE)/$(shell basename $(bundle))/bnd.bnd) +ECJ_SRCS = $(foreach bundle, $(BUNDLES), $(bundle)/src[-d $(BUILD_BASE)/$(shell basename $(bundle))/bin]) -# convert dir to package -#$(shell find %/src -mindepth 1 -type d -printf '%P\n' | sed "s/\//\./g") +JAVADOC_SRCS = $(foreach bundle, $(JAVADOC_BUNDLES),$(bundle)/src) -# all packages -# grep --no-filename ^import src/org/argeo/api/uuid/*.java | sed "s/import //g" | sed "s/static //g" | sed "s/\.[A-Za-z0-9_]*;//" | sed "s/\.[A-Z].*//" | sort | uniq +osgi: $(BUILD_WORKSPACE_BNDS) $(A2_BUNDLES) +javadoc: $(BUILD_BASE)/java-compiled + $(JAVADOC) -d $(BUILD_BASE)/api --source-path $(subst $(space),$(pathsep),$(strip $(JAVADOC_SRCS))) -subpackages $(JAVADOC_PACKAGES) + +# SDK level +$(BUILD_BASE)/cnf/%.bnd: cnf/%.bnd + mkdir -p $(dir $@) + cp $< $@ + +$(SDK_BUILD_BASE)/a2/$(A2_CATEGORY)/%.$(MAJOR).$(MINOR).jar : $(BUILD_BASE)/%.jar + mkdir -p $(dir $@) + cp $< $@ + +$(BUILD_BASE)/%.jar: $(BUILD_BASE)/jars-built + mv $(basename $@)/generated/*.jar $(basename $@).jar + +# Build level +$(BUILD_BASE)/jars-built: $(BNDS) + cd $(BUILD_BASE) && $(BND_TOOL) build + touch $@ + +$(BUILD_BASE)/%/bnd.bnd : %/bnd.bnd $(BUILD_BASE)/java-compiled + mkdir -p $(dir $@)bin + rsync -r --exclude "*.java" $(dir $<)src/ $(dir $@)bin + if [ -d "$(dir $<)OSGI-INF" ]; then rsync -r $(dir $<)OSGI-INF/ $(dir $@)/OSGI-INF; fi + cp $< $@ + echo "\n-sourcepath:$(SDK_SRC_BASE)/$(dir $<)src\n" >> $@ + +$(BUILD_BASE)/java-compiled : $(JAVA_SRCS) + $(JVM) -jar $(ECJ_JAR) @$(SDK_SRC_BASE)/sdk/ecj.args -cp $(A2_CLASSPATH) $(ECJ_SRCS) + touch $@ + +# Local manifests +manifests : osgi + $(foreach bundle, $(BUNDLES), cp -v $(BUILD_BASE)/$(shell basename $(bundle))/META-INF/MANIFEST.MF $(bundle)/META-INF/MANIFEST.MF;) + +null := +space := $(null) # +pathsep := :