<classpathentry kind="src" path="src"/>
<classpathentry kind="src" path="test"/>
<classpathentry combineaccessrules="false" kind="src" path="/ooo-api"/>
- <classpathentry kind="lib" path="idl-classes"/>
- <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/java-1.5.0-sun-1.5.0.06-1jpp"/>
+ <classpathentry kind="lib" path="bin-types"/>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
<classpathentry kind="output" path="bin"/>
</classpath>
+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