a139c2517bd3270d79e667e3c8035f10f562e032
[measurements/measurements.git] / Makefile
1 NAME:=measurements
2 empty:=
3
4 # $(OO) is now taken from shell-setup.
5 ifeq ($(OO),)
6 $(error You must source "shell-setup" in the shell before running make.)
7 endif
8
9
10 IDL_TYPES:=net/mattmccutchen/measurements/XMeasurementsAddIn
11
12 all: $(NAME).oxt
13
14 # Compile src -> bin using Eclipse's Java Builder.
15
16 urd/%.urd: src/%.idl
17         mkdir -p $(dir $@)
18         idlc -C -I$(OO)/sdk/idl -O$(dir $@) $<
19
20 %/.:
21         mkdir -p $*
22
23 pkg/$(NAME).uno.rdb: $(patsubst %,urd/%.urd,$(IDL_TYPES)) pkg/.
24         regmerge $@ /UCR $^
25
26 .PHONY: bin-types
27 bin-types: pkg/$(NAME).uno.rdb
28         rm -rf $@
29         mkdir -p $(addprefix $@/,$(dir $(IDL_TYPES)))
30 # javamaker is temperamental and demands the ./
31         javamaker -BUCR -nD -T$(subst /,.,$(subst $(empty) ,;,$(IDL_TYPES))) -O./$@ $(OO)/ure-link/share/misc/types.rdb $<
32
33 # We collect both types and implementation into this jar.
34 # It seems that the manifest has to be first, so handle it specially.
35 .PHONY: pkg/$(NAME).uno.jar
36 pkg/$(NAME).uno.jar: bin-types pkg/.
37         cd bin && fastjar -cMf ../$@ META-INF/MANIFEST.MF
38         cd bin-types && fastjar -uMf ../$@ $(addsuffix .class,$(IDL_TYPES))
39         cd bin && find . -name '*.class' | LC_COLLATE=C sort | fastjar -uMf ../$@ -@
40
41 PKG_FILES:=META-INF/manifest.xml $(NAME).uno.jar $(NAME).uno.rdb
42
43 pkg/META-INF/manifest.xml: src/META-INF/manifest.xml pkg/META-INF/.
44         cat $< >$@
45
46 $(NAME).oxt: $(addprefix pkg/,$(PKG_FILES))
47         cd pkg && fastjar -cMf ../$@ $(PKG_FILES)
48
49 clean:
50         rm -rf urd bin-types pkg $(NAME).oxt