**/generated/
**/MANIFEST.MF
**/.DS_Store
+/sdk.mk
--- /dev/null
+include sdk.mk
+.PHONY: clean all osgi
+
+all: osgi
+
+A2_CATEGORY = org.argeo.suite
+
+BUNDLES = \
+org.argeo.app.api \
+org.argeo.app.core \
+org.argeo.app.servlet.odk \
+org.argeo.app.servlet.publish \
+org.argeo.app.ui \
+org.argeo.app.theme.default \
+org.argeo.app.ui.rap \
+
+A2_OUTPUT = $(SDK_BUILD_BASE)/a2
+A2_BASE = $(A2_OUTPUT)
+
+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 \
+org.argeo.cms
+
+clean:
+ rm -rf $(BUILD_BASE)
+
+include $(SDK_SRC_BASE)/sdk/osgi.mk
\ No newline at end of file
--- /dev/null
+MAJOR=2
+MINOR=3
--- /dev/null
+#!/bin/sh
+
+# We build where we are
+SDK_BUILD_BASE=$(pwd -P)/output
+
+# Source are located where this script is
+SDK_SRC_BASE="$(cd "$(dirname "$0")"; pwd -P)"
+
+SDK_MK=$SDK_SRC_BASE/sdk.mk
+
+#echo SDK_BUILD_BASE=$SDK_BUILD_BASE
+#echo SDK_SRC_BASE=$SDK_SRC_BASE
+#echo SDK_MK=$SDK_MK
+
+if [ -f "$SDK_MK" ];
+then
+
+echo "File $SDK_MK already exists. Remove it in order to configure a new build location:"
+echo "rm $SDK_MK"
+exit 1
+
+else
+
+if [ -z "$JAVA_HOME" ]
+then
+echo "Environment variable JAVA_HOME must be set"
+exit 1
+fi
+
+# Create build directory, so that it can be used right away
+# and we check whether we have the rights
+mkdir -p $SDK_BUILD_BASE
+if [ -f "$SDK_MK" ];
+then
+echo "Cannot create $SDK_BUILD_BASE, SDK configuration has failed."
+exit 2
+fi
+
+# Generate sdk.mk
+cat > "$SDK_MK" <<EOF
+SDK_SRC_BASE := $SDK_SRC_BASE
+SDK_BUILD_BASE := $SDK_BUILD_BASE
+JAVA_HOME := $JAVA_HOME
+
+include \$(SDK_SRC_BASE)/branch.properties
+EOF
+
+
+echo SDK was configured.
+echo "JAVA_HOME : $JAVA_HOME"
+echo "Base for sources : $SDK_SRC_BASE"
+echo "Base for builds : $SDK_BUILD_BASE"
+exit 0
+fi
+
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-11"/>
+ <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+ <classpathentry kind="src" path="src"/>
+ <classpathentry kind="output" path="bin"/>
+</classpath>
<projects>
</projects>
<buildSpec>
+ <buildCommand>
+ <name>org.eclipse.jdt.core.javabuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
<buildCommand>
<name>org.eclipse.pde.ManifestBuilder</name>
<arguments>
</buildSpec>
<natures>
<nature>org.eclipse.pde.PluginNature</nature>
+ <nature>org.eclipse.jdt.core.javanature</nature>
</natures>
</projectDescription>
+++ /dev/null
-.argeo-suite-header {
- color: white;
- background-color: #00294b;
-}
-
-.argeo-suite-headerTitle {
- font: bold 18px sans-serif;
- color: white;
- background-color: #00294b;
-}
-
-.argeo-suite-leadPane {
- background-color: #eee;
-}
-
-Label.argeo-suite-leadPane {
- font: 14px sans-serif;
- color: #888;
- background-color: #eee;
-}
-
-Button.argeo-suite-leadPane:hover {
- cursor:pointer;
-}
-
-.argeo-suite-recentItems {
- font: bold 14px sans-serif;
- color: white;
- background-color: #00294b;
- padding: 8px 16px;
-}
-
-.argeo-suite-titleContainer {
- background-color: #00294b;
- padding: 6px 8px 4px 8px;
-}
-
-.argeo-suite-titleLabel {
- font: bold 14px sans-serif;
- color: white;
- background-color: #00294b;
-}
-
-.argeo-suite-subTitleLabel {
- font: italic 14px sans-serif;
- color: #777;
- padding: 4px 8px;
-}
-
-.argeo-suite-simpleLabel {
- font: bold 14px sans-serif;
- padding: 0px;
-}
-
-.argeo-suite-simpleText {
- font: 14px sans-serif;
- padding: 0px;
-}
-
-.argeo-suite-titleCell {
- font: bold 14px sans-serif;
- background-color: #ddd;
-}
-
-.argeo-suite-inlineButton {
- padding: 0px 4px;
- font: 12px sans-serif;
- border: 1px solid white;
- color: white;
- background-image: none;
- background-color: #00294b;
-}
-
-.argeo-suite-inlineButton:hover {
- color: #00294b;
- background-color: white;
-}
-
-Composite.argeo-suite-mainTabBody {
- background-color: #eee;
- border: 1px solid #bbb;
-}
-
-.argeo-suite-mainTab {
- background-color: #eee;
- border: 1px solid #888;
-}
-
-ToolItem.argeo-suite-mainTab {
- border: none;
- background-color: #eee;
-}
-
-ToolItem.argeo-suite-mainTab:hover {
- background-color: #eee;
-}
-
-
-Button.argeo-suite-mainTab {
- border: 1px solid #eee;
- background-color: #eee;
-}
-
-.argeo-suite-mainTab:hover {
- background-color: #eee;
-}
-
-Button.argeo-suite-mainTab:hover {
- cursor: pointer;
- background-color: #eee;
-}
-
-.argeo-suite-mainTabSelected {
- font: bold 14px sans-serif;
- color: white;
- /*background-color: #00294b;*/
- background-color: #5882b5;
- border:1px solid #888;
-}
-
-ToolItem.argeo-suite-mainTabSelected {
- border: none;
-}
-
-ToolItem.argeo-suite-mainTabSelected:hover {
- background-color: #5882b5;
-}
-
-Button.argeo-suite-mainTabSelected {
- border: none;
-}
-
-Sash {
- border: 1px solid white;
- background-image: none;
- background-color: white;
-}
-
-Sash:hover {
- border: 1px solid #5882b5;
- background-color: #5882b5;
-}
-
-TreeItem{
- background-color:#fff;
-}
-
-Tree-RowOverlay:selected {
- color:#fff;
- background-color:#5882b5;
-}
-
-TableItem{
- background-color:#fff;
-}
-
-Table-RowOverlay:selected {
- color:#fff;
- background-color:#5882b5;
-}
-
-.argeo-suite-navigationBar{
- background-color:#ddd;
-}
-
-.argeo-suite-navigationTitle{
- background-color:#ddd;
- font:bold 14px sans-serif;
-}
-
-.argeo-suite-navigationButton{
- color:#777;
- background-color:#ddd;
- font:bold 14px sans-serif;
-}
-
-.argeo-suite-navigationButton:hover{
- cursor:pointer;
- color:#ddd;
- background-color:#777;
-}
--- /dev/null
+.argeo-suite-header {
+ color: white;
+ background-color: #00294b;
+}
+
+.argeo-suite-headerTitle {
+ font: bold 18px sans-serif;
+ color: white;
+ background-color: #00294b;
+}
+
+.argeo-suite-leadPane {
+ background-color: #eee;
+}
+
+Label.argeo-suite-leadPane {
+ font: 14px sans-serif;
+ color: #888;
+ background-color: #eee;
+}
+
+Button.argeo-suite-leadPane:hover {
+ cursor:pointer;
+}
+
+.argeo-suite-recentItems {
+ font: bold 14px sans-serif;
+ color: white;
+ background-color: #00294b;
+ padding: 8px 16px;
+}
+
+.argeo-suite-titleContainer {
+ background-color: #00294b;
+ padding: 6px 8px 4px 8px;
+}
+
+.argeo-suite-titleLabel {
+ font: bold 14px sans-serif;
+ color: white;
+ background-color: #00294b;
+}
+
+.argeo-suite-subTitleLabel {
+ font: italic 14px sans-serif;
+ color: #777;
+ padding: 4px 8px;
+}
+
+.argeo-suite-simpleLabel {
+ font: bold 14px sans-serif;
+ padding: 0px;
+}
+
+.argeo-suite-simpleText {
+ font: 14px sans-serif;
+ padding: 0px;
+}
+
+.argeo-suite-titleCell {
+ font: bold 14px sans-serif;
+ background-color: #ddd;
+}
+
+.argeo-suite-inlineButton {
+ padding: 0px 4px;
+ font: 12px sans-serif;
+ border: 1px solid white;
+ color: white;
+ background-image: none;
+ background-color: #00294b;
+}
+
+.argeo-suite-inlineButton:hover {
+ color: #00294b;
+ background-color: white;
+}
+
+Composite.argeo-suite-mainTabBody {
+ background-color: #eee;
+ border: 1px solid #bbb;
+}
+
+.argeo-suite-mainTab {
+ background-color: #eee;
+ border: 1px solid #888;
+}
+
+ToolItem.argeo-suite-mainTab {
+ border: none;
+ background-color: #eee;
+}
+
+ToolItem.argeo-suite-mainTab:hover {
+ background-color: #eee;
+}
+
+
+Button.argeo-suite-mainTab {
+ border: 1px solid #eee;
+ background-color: #eee;
+}
+
+.argeo-suite-mainTab:hover {
+ background-color: #eee;
+}
+
+Button.argeo-suite-mainTab:hover {
+ cursor: pointer;
+ background-color: #eee;
+}
+
+.argeo-suite-mainTabSelected {
+ font: bold 14px sans-serif;
+ color: white;
+ /*background-color: #00294b;*/
+ background-color: #5882b5;
+ border:1px solid #888;
+}
+
+ToolItem.argeo-suite-mainTabSelected {
+ border: none;
+}
+
+ToolItem.argeo-suite-mainTabSelected:hover {
+ background-color: #5882b5;
+}
+
+Button.argeo-suite-mainTabSelected {
+ border: none;
+}
+
+Sash {
+ border: 1px solid white;
+ background-image: none;
+ background-color: white;
+}
+
+Sash:hover {
+ border: 1px solid #5882b5;
+ background-color: #5882b5;
+}
+
+TreeItem{
+ background-color:#fff;
+}
+
+Tree-RowOverlay:selected {
+ color:#fff;
+ background-color:#5882b5;
+}
+
+TableItem{
+ background-color:#fff;
+}
+
+Table-RowOverlay:selected {
+ color:#fff;
+ background-color:#5882b5;
+}
+
+.argeo-suite-navigationBar{
+ background-color:#ddd;
+}
+
+.argeo-suite-navigationTitle{
+ background-color:#ddd;
+ font:bold 14px sans-serif;
+}
+
+.argeo-suite-navigationButton{
+ color:#777;
+ background-color:#ddd;
+ font:bold 14px sans-serif;
+}
+
+.argeo-suite-navigationButton:hover{
+ cursor:pointer;
+ color:#ddd;
+ background-color:#777;
+}
--- /dev/null
+.argeo-suite-header {
+ color: white;
+ background-color: #00294b;
+}
+
+.argeo-suite-headerTitle {
+ font: bold 14px sans-serif;
+ color: white;
+ background-color: #00294b;
+}
+
+.argeo-suite-leadPane {
+ background-color: #eee;
+}
+
+Label.argeo-suite-leadPane {
+ font: 11px sans-serif;
+ color: #888;
+ background-color: #eee;
+}
+
+Button.argeo-suite-leadPane:hover {
+ cursor: pointer;
+}
+
+.argeo-suite-recentItems {
+ font: bold 13px sans-serif;
+ color: white;
+ background-color: #00294b;
+ padding: 8px 16px;
+}
+
+.argeo-suite-titleContainer {
+ background-color: #00294b;
+}
+
+.argeo-suite-titleLabel {
+ font: bold 13px sans-serif;
+ margin: 6px 8px 4px 8px;
+ color: white;
+ background-color: #00294b;
+}
+
+.argeo-suite-subTitleLabel {
+ font: italic 14px sans-serif;
+ color: #777;
+ margin: 4px 8px;
+}
+
+.argeo-suite-formLine {
+ padding: 4px 8px 4px 16px;
+}
+
+.argeo-suite-simpleLabel {
+ font: normal 11px sans-serif;
+ border: 8px solid #eee;
+}
+
+.argeo-suite-simpleText {
+
+}
+
+.argeo-suite-simpleInput {
+ padding: 4px 8px 4px 8px;
+}
+
+.argeo-suite-titleCell {
+ font: bold 11px sans-serif;
+ background-color: #ddd;
+}
+
+.argeo-suite-inlineButton {
+ padding: 0px 4px;
+ font: 12px sans-serif;
+ border: 1px solid white;
+ color: white;
+ background-image: none;
+ background-color: #00294b;
+}
+
+.argeo-suite-inlineButton:hover {
+ color: #00294b;
+ background-color: white;
+}
+
+Composite.argeo-suite-mainTabBody {
+ background-color: #eee;
+ border: 1px solid #bbb;
+}
+
+.argeo-suite-mainTab {
+ background-color: #eee;
+ border: 1px solid #bbb;
+}
+
+ToolItem.argeo-suite-mainTab {
+ border: none;
+ background-color: #eee;
+}
+
+Button.argeo-suite-mainTab {
+ border: none;
+ background-color: #eee;
+}
+
+.argeo-suite-mainTab:hover {
+ background-color: #eee;
+}
+
+Button.argeo-suite-mainTab:hover {
+ cursor: pointer;
+ background-color: #eee;
+}
+
+.argeo-suite-mainTabSelected {
+ font: bold 14px sans-serif;
+ color: white;
+ /*background-color: #00294b;*/
+ background-color: #5882b5;
+ border: 1px solid #00294b;
+}
+
+ToolItem.argeo-suite-mainTabSelected {
+ border: none;
+}
+
+Button.argeo-suite-mainTabSelected {
+ border: none;
+}
\ No newline at end of file
+++ /dev/null
-.argeo-suite-header {
- color: white;
- background-color: #00294b;
-}
-
-.argeo-suite-headerTitle {
- font: bold 14px sans-serif;
- color: white;
- background-color: #00294b;
-}
-
-.argeo-suite-leadPane {
- background-color: #eee;
-}
-
-Label.argeo-suite-leadPane {
- font: 11px sans-serif;
- color: #888;
- background-color: #eee;
-}
-
-Button.argeo-suite-leadPane:hover {
- cursor: pointer;
-}
-
-.argeo-suite-recentItems {
- font: bold 13px sans-serif;
- color: white;
- background-color: #00294b;
- padding: 8px 16px;
-}
-
-.argeo-suite-titleContainer {
- background-color: #00294b;
-}
-
-.argeo-suite-titleLabel {
- font: bold 13px sans-serif;
- margin: 6px 8px 4px 8px;
- color: white;
- background-color: #00294b;
-}
-
-.argeo-suite-subTitleLabel {
- font: italic 14px sans-serif;
- color: #777;
- margin: 4px 8px;
-}
-
-.argeo-suite-formLine {
- padding: 4px 8px 4px 16px;
-}
-
-.argeo-suite-simpleLabel {
- font: normal 11px sans-serif;
- border: 8px solid #eee;
-}
-
-.argeo-suite-simpleText {
-
-}
-
-.argeo-suite-simpleInput {
- padding: 4px 8px 4px 8px;
-}
-
-.argeo-suite-titleCell {
- font: bold 11px sans-serif;
- background-color: #ddd;
-}
-
-.argeo-suite-inlineButton {
- padding: 0px 4px;
- font: 12px sans-serif;
- border: 1px solid white;
- color: white;
- background-image: none;
- background-color: #00294b;
-}
-
-.argeo-suite-inlineButton:hover {
- color: #00294b;
- background-color: white;
-}
-
-Composite.argeo-suite-mainTabBody {
- background-color: #eee;
- border: 1px solid #bbb;
-}
-
-.argeo-suite-mainTab {
- background-color: #eee;
- border: 1px solid #bbb;
-}
-
-ToolItem.argeo-suite-mainTab {
- border: none;
- background-color: #eee;
-}
-
-Button.argeo-suite-mainTab {
- border: none;
- background-color: #eee;
-}
-
-.argeo-suite-mainTab:hover {
- background-color: #eee;
-}
-
-Button.argeo-suite-mainTab:hover {
- cursor: pointer;
- background-color: #eee;
-}
-
-.argeo-suite-mainTabSelected {
- font: bold 14px sans-serif;
- color: white;
- /*background-color: #00294b;*/
- background-color: #5882b5;
- border: 1px solid #00294b;
-}
-
-ToolItem.argeo-suite-mainTabSelected {
- border: none;
-}
-
-Button.argeo-suite-mainTabSelected {
- border: none;
-}
\ No newline at end of file
--- /dev/null
+-source 17
+-target 11
+-nowarn
+-time
\ No newline at end of file
--- /dev/null
+
+
+#
+# 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)
+
+WORKSPACE_BNDS := $(shell cd $(SDK_SRC_BASE) && find cnf -name '*.bnd')
+BUILD_WORKSPACE_BNDS := $(WORKSPACE_BNDS:%=$(BUILD_BASE)/%)
+
+A2_JARS = $(foreach category, $(DEP_CATEGORIES), $(shell find $(A2_BASE)/$(category) -name '*.jar'))
+A2_CLASSPATH = $(subst $(space),$(pathsep),$(strip $(A2_JARS)))
+
+A2_BUNDLES = $(foreach bundle, $(BUNDLES),$(A2_OUTPUT)/$(A2_CATEGORY)/$(shell basename $(bundle)).$(MAJOR).$(MINOR).jar)
+
+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])
+
+JAVADOC_SRCS = $(foreach bundle, $(JAVADOC_BUNDLES),$(bundle)/src)
+
+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 := :