Bring packaging process up to date for OpenOffice 2.3.
[measurements/measurements.git] / Makefile
index 680b515..78a8851 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -1,44 +1,45 @@
+NAME:=measurements
 empty:=
-
 OO:=/usr/lib/openoffice.org
 
-#export PATH+=:$(OO)/sdk/linux/bin
-#export LD_LIBRARY_PATH=$(OO)/program
-
-#IDL_TYPES:=net/mattmccutchen/measurements/XExampleAddIn
 IDL_TYPES:=net/mattmccutchen/measurements/XMeasurementsAddIn
 
-all: measurements.uno.pkg
+all: $(NAME).oxt
+
+# Compile src -> bin using Eclipse's Java Builder.
+
+urd/%.urd: src/%.idl
+       mkdir -p $(dir $@)
+       idlc -C -I$(OO)/sdk/idl -O$(dir $@) $<
 
-%.urd: %.idl
-       idlc -I$(OO)/sdk/idl $<
+%/.:
+       mkdir -p $*
 
-types.rdb: $(patsubst %,src/%.urd,$(IDL_TYPES))
+pkg/$(NAME).uno.rdb: $(patsubst %,urd/%.urd,$(IDL_TYPES)) pkg/.
        regmerge $@ /UCR $^
 
-.PHONY: idl-classes
-idl-classes: types.rdb
-       rm -rf idl-classes
-       mkdir -p $(addprefix idl-classes/,$(dir $(IDL_TYPES)))
+.PHONY: bin-types
+bin-types: pkg/$(NAME).uno.rdb
+       rm -rf $@
+       mkdir -p $(addprefix $@/,$(dir $(IDL_TYPES)))
 # javamaker is temperamental and demands the ./
-       javamaker -O./idl-classes -T$(subst /,.,$(subst $(empty) ,;,$(IDL_TYPES))) -nD -BUCR $(OO)/program/types.rdb types.rdb
+       javamaker -BUCR -nD -T$(subst /,.,$(subst $(empty) ,;,$(IDL_TYPES))) -O./$@ $(OO)/program/types.rdb $<
 
-pkg/types.rdb: types.rdb
-       cat $< >$@
-
-.PHONY: pkg/types.jar
-pkg/types.jar: idl-classes
-       cd idl-classes && fastjar -cMf ../$@ $(addsuffix .class,$(IDL_TYPES))
+# We collect both types and implementation into this jar.
+# It seems that the manifest has to be first, so handle it specially.
+.PHONY: pkg/$(NAME).uno.jar
+pkg/$(NAME).uno.jar: bin-types pkg/.
+       cd bin && fastjar -cMf ../$@ META-INF/MANIFEST.MF
+       cd bin-types && fastjar -uMf ../$@ $(addsuffix .class,$(IDL_TYPES))
+       cd bin && find . -name '*.class' | LC_COLLATE=C sort | fastjar -uMf ../$@ -@
 
-.PHONY: pkg/component.jar
-pkg/component.jar:
-       cd bin && find . -name '*.class' -or -wholename './META-INF/MANIFEST.MF' | LC_COLLATE=C sort | fastjar -cMf ../$@ -@
+PKG_FILES:=META-INF/manifest.xml $(NAME).uno.jar $(NAME).uno.rdb
 
-PKG_FILES:=META-INF/manifest.xml types.rdb types.jar component.jar
+pkg/META-INF/manifest.xml: src/META-INF/manifest.xml pkg/META-INF/.
+       cat $< >$@
 
-measurements.uno.pkg: $(addprefix pkg/,$(PKG_FILES))
+$(NAME).oxt: $(addprefix pkg/,$(PKG_FILES))
        cd pkg && fastjar -cMf ../$@ $(PKG_FILES)
 
 clean:
-       rm -rf idl-classes types.rdb pkg/{types.rdb,types.jar,component.jar}
-       find src -name '*.urd' -delete
+       rm -rf urd bin-types pkg $(NAME).oxt