]> git.argeo.org Git - gpl/argeo-slc.git/blob - Makefile
fb4e41880b9cabecf6ca8ad14e067cc205efa253
[gpl/argeo-slc.git] / Makefile
1 include sdk.mk
2 .PHONY: clean all osgi
3
4 all: osgi
5
6 BUNDLE_PREFIX = org.argeo.slc
7 A2_CATEGORY = org.argeo.slc
8
9 BUNDLES = \
10 org.argeo.slc.api \
11 org.argeo.slc.factory \
12
13 BUILD_CLASSPATH_FEDORA = \
14 /usr/share/java/osgi-core/osgi.core.jar:$\
15 /usr/share/java/osgi-compendium/osgi.cmpn.jar:$\
16 /usr/share/java/ecj/ecj.jar:$\
17 /usr/share/java/aqute-bnd/biz.aQute.bndlib.jar:$\
18 /usr/share/java/slf4j/api.jar:$\
19 /usr/share/java/commons-io.jar:$\
20 /usr/share/java/commons-cli.jar:$\
21 /usr/share/java/commons-exec.jar:$\
22
23 BUILD_CLASSPATH = \
24 /usr/share/java/osgi.core.jar:$\
25 /usr/share/java/osgi.cmpn.jar:$\
26 /usr/share/java/ecj.jar:$\
27 /usr/share/java/bndlib.jar:$\
28 /usr/share/java/slf4j-api.jar:$\
29 /usr/share/java/commons-io.jar:$\
30 /usr/share/java/commons-cli.jar:$\
31 /usr/share/java/commons-exec.jar:$\
32
33 DISTRIBUTION_CLASSPATH = \
34 $(SDK_BUILD_BASE)/a2/org.argeo.slc/org.argeo.slc.api.$(MAJOR).$(MINOR).jar:$\
35 $(SDK_BUILD_BASE)/a2/org.argeo.slc/org.argeo.slc.factory.$(MAJOR).$(MINOR).jar:$\
36 /usr/share/java/bndlib.jar:$\
37 /usr/share/java/slf4j-api.jar
38
39 # TODO relativize from SDK_SRC_BASE
40 BUILD_BASE = $(SDK_BUILD_BASE)
41
42 distribution: osgi
43 $(JVM) -cp $(DISTRIBUTION_CLASSPATH) tp/Make.java
44
45 #
46 # GENERIC
47 #
48 JVM := /usr/bin/java
49 JAVADOC := /usr/bin/javadoc
50 ECJ_JAR := /usr/share/java/ecj.jar
51 BND_TOOL := /usr/bin/bnd
52
53 WORKSPACE_BNDS := $(shell cd $(SDK_SRC_BASE) && find cnf -name '*.bnd')
54 #BND_WORKSPACES := $(foreach bundle, $(BUNDLES), ./$(dir $(bundle)))
55 BUILD_WORKSPACE_BNDS := $(WORKSPACE_BNDS:%=$(SDK_BUILD_BASE)/%)
56
57 cnf: $(BUILD_WORKSPACE_BNDS)
58
59 A2_BUNDLES = $(BUNDLES:%=$(SDK_BUILD_BASE)/a2/$(A2_CATEGORY)/%.$(MAJOR).$(MINOR).jar)
60
61 #JAVA_SRCS = $(shell find $(BUNDLE_PREFIX).* -name '*.java')
62 JAVA_SRCS = $(foreach bundle, $(BUNDLES), $(shell find $(bundle) -name '*.java'))
63 ECJ_SRCS = $(foreach bundle, $(BUNDLES), $(bundle)/src[-d $(BUILD_BASE)/$(bundle)/bin])
64
65 osgi: cnf $(A2_BUNDLES)
66
67 clean:
68 rm -rf $(BUILD_BASE)/*-compiled
69 rm -rf $(BUILD_BASE)/{cnf,a2}
70 rm -rf $(BUILD_BASE)/$(BUNDLE_PREFIX).*
71
72 # SDK level
73 $(SDK_BUILD_BASE)/cnf/%.bnd: cnf/%.bnd
74 mkdir -p $(dir $@)
75 cp $< $@
76
77 $(SDK_BUILD_BASE)/eclipse/cnf/%.bnd: cnf/%.bnd
78 mkdir -p $(dir $@)
79 cp $< $@
80
81 $(SDK_BUILD_BASE)/rcp/cnf/%.bnd: cnf/%.bnd
82 mkdir -p $(dir $@)
83 cp $< $@
84
85 $(SDK_BUILD_BASE)/a2/$(A2_CATEGORY)/%.$(MAJOR).$(MINOR).jar : $(BUILD_BASE)/%/bundle.jar
86 mkdir -p $(dir $@)
87 cp $< $@
88
89 # Build level
90 $(BUILD_BASE)/%/bundle.jar : %/bnd.bnd $(BUILD_BASE)/java-compiled
91 rsync -r --exclude "*.java" $(dir $<)src/ $(dir $@)bin
92 rsync -r $(dir $<)src/ $(dir $@)src
93 if [ -d "$(dir $<)OSGI-INF" ]; then rsync -r $(dir $<)OSGI-INF/ $(dir $@)/OSGI-INF; fi
94 cp $< $(dir $@)
95 cd $(dir $@) && $(BND_TOOL) build
96 mv $(dir $@)generated/*.jar $(dir $@)bundle.jar
97
98 $(BUILD_BASE)/java-compiled : $(JAVA_SRCS)
99 $(JVM) -cp $(ECJ_JAR) org.eclipse.jdt.internal.compiler.batch.Main -11 -nowarn -time -cp $(BUILD_CLASSPATH) \
100 $(ECJ_SRCS)
101 touch $@
102
103 null :=
104 space := $(null) #
105 pathsep := :
106
107 #WITH_LIST := $(subst $(space),$(pathsep),$(strip $(WITH_LIST)))
108