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