1*122c3632SJürgen Schmidt#************************************************************** 2*122c3632SJürgen Schmidt# 3*122c3632SJürgen Schmidt# Licensed to the Apache Software Foundation (ASF) under one 4*122c3632SJürgen Schmidt# or more contributor license agreements. See the NOTICE file 5*122c3632SJürgen Schmidt# distributed with this work for additional information 6*122c3632SJürgen Schmidt# regarding copyright ownership. The ASF licenses this file 7*122c3632SJürgen Schmidt# to you under the Apache License, Version 2.0 (the 8*122c3632SJürgen Schmidt# "License"); you may not use this file except in compliance 9*122c3632SJürgen Schmidt# with the License. You may obtain a copy of the License at 10*122c3632SJürgen Schmidt# 11*122c3632SJürgen Schmidt# http://www.apache.org/licenses/LICENSE-2.0 12*122c3632SJürgen Schmidt# 13*122c3632SJürgen Schmidt# Unless required by applicable law or agreed to in writing, 14*122c3632SJürgen Schmidt# software distributed under the License is distributed on an 15*122c3632SJürgen Schmidt# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 16*122c3632SJürgen Schmidt# KIND, either express or implied. See the License for the 17*122c3632SJürgen Schmidt# specific language governing permissions and limitations 18*122c3632SJürgen Schmidt# under the License. 19cdf0e10cSrcweir# 20*122c3632SJürgen Schmidt#************************************************************** 21cdf0e10cSrcweir 22cdf0e10cSrcweir# Builds the OfficeDevLinguistic examples of the Developers Guide. 23cdf0e10cSrcweir 24cdf0e10cSrcweirPRJ=../../../.. 25cdf0e10cSrcweirSETTINGS=$(PRJ)/settings 26cdf0e10cSrcweir 27cdf0e10cSrcweirinclude $(SETTINGS)/settings.mk 28cdf0e10cSrcweirinclude $(SETTINGS)/std.mk 29cdf0e10cSrcweirinclude $(SETTINGS)/dk.mk 30cdf0e10cSrcweir 31cdf0e10cSrcweir# Define non-platform/compiler specific settings 32cdf0e10cSrcweirEXAMPLE_NAME=OfficeDevLinguisticExample 33cdf0e10cSrcweirOUT_COMP_CLASS = $(OUT_CLASS)/$(EXAMPLE_NAME) 34cdf0e10cSrcweir 35cdf0e10cSrcweirCOMP1_NAME=SampleHyphenator 36cdf0e10cSrcweirCOMP1_PACKAGE = $(OUT_BIN)/$(COMP1_NAME).$(UNOOXT_EXT) 37cdf0e10cSrcweirCOMP1_PACKAGE_URL = $(subst \\,\,"$(COMP_PACKAGE_DIR)$(PS)$(COMP1_NAME).$(UNOOXT_EXT)") 38cdf0e10cSrcweirCOMP1_JAR_NAME = $(COMP1_NAME).uno.jar 39cdf0e10cSrcweirCOMP1_JAR = $(OUT_COMP_CLASS)/$(COMP1_JAR_NAME) 40cdf0e10cSrcweirCOMP1_MANIFESTFILE = $(OUT_COMP_CLASS)/$(COMP1_NAME).uno.Manifest 41cdf0e10cSrcweirCOMP1_UNOPKG_MANIFEST = $(OUT_COMP_CLASS)/$(COMP1_NAME)/META-INF/manifest.xml 42cdf0e10cSrcweirCOMP1_COMPONENTS=$(COMP1_NAME).components 43cdf0e10cSrcweir 44cdf0e10cSrcweirCOMP2_NAME=SampleSpellChecker 45cdf0e10cSrcweirCOMP2_PACKAGE = $(OUT_BIN)/$(COMP2_NAME).$(UNOOXT_EXT) 46cdf0e10cSrcweirCOMP2_PACKAGE_URL = $(subst \\,\,"$(COMP_PACKAGE_DIR)$(PS)$(COMP2_NAME).$(UNOOXT_EXT)") 47cdf0e10cSrcweirCOMP2_JAR_NAME = $(COMP2_NAME).uno.jar 48cdf0e10cSrcweirCOMP2_JAR = $(OUT_COMP_CLASS)/$(COMP2_JAR_NAME) 49cdf0e10cSrcweirCOMP2_MANIFESTFILE = $(OUT_COMP_CLASS)/$(COMP2_NAME).uno.Manifest 50cdf0e10cSrcweirCOMP2_UNOPKG_MANIFEST = $(OUT_COMP_CLASS)/$(COMP2_NAME)/META-INF/manifest.xml 51cdf0e10cSrcweirCOMP2_COMPONENTS=$(COMP2_NAME).components 52cdf0e10cSrcweir 53cdf0e10cSrcweirCOMP3_NAME=SampleThesaurus 54cdf0e10cSrcweirCOMP3_PACKAGE = $(OUT_BIN)/$(COMP3_NAME).$(UNOOXT_EXT) 55cdf0e10cSrcweirCOMP3_PACKAGE_URL = $(subst \\,\,"$(COMP_PACKAGE_DIR)$(PS)$(COMP3_NAME).$(UNOOXT_EXT)") 56cdf0e10cSrcweirCOMP3_JAR_NAME = $(COMP3_NAME).uno.jar 57cdf0e10cSrcweirCOMP3_JAR = $(OUT_COMP_CLASS)/$(COMP3_JAR_NAME) 58cdf0e10cSrcweirCOMP3_MANIFESTFILE = $(OUT_COMP_CLASS)/$(COMP3_NAME).uno.Manifest 59cdf0e10cSrcweirCOMP3_UNOPKG_MANIFEST = $(OUT_COMP_CLASS)/$(COMP3_NAME)/META-INF/manifest.xml 60cdf0e10cSrcweirCOMP3_COMPONENTS=$(COMP2_NAME).components 61cdf0e10cSrcweir 62cdf0e10cSrcweirAPP1_NAME=LinguisticExamples 63cdf0e10cSrcweirAPP1_JAR=$(OUT_COMP_CLASS)/$(APP1_NAME).jar 64cdf0e10cSrcweir 65cdf0e10cSrcweirREGISTERFLAG = $(OUT_MISC)/devguide_officedevlinguistic_register_component.flag 66cdf0e10cSrcweir 67cdf0e10cSrcweirJAVAFILES = \ 68cdf0e10cSrcweir OneInstanceFactory.java \ 69cdf0e10cSrcweir PropChgHelper.java \ 70cdf0e10cSrcweir PropChgHelper_Hyph.java \ 71cdf0e10cSrcweir PropChgHelper_Spell.java \ 72cdf0e10cSrcweir XHyphenatedWord_impl.java \ 73cdf0e10cSrcweir XMeaning_impl.java \ 74cdf0e10cSrcweir XPossibleHyphens_impl.java \ 75cdf0e10cSrcweir XSpellAlternatives_impl.java \ 76cdf0e10cSrcweir SampleHyphenator.java \ 77cdf0e10cSrcweir SampleSpellChecker.java \ 78cdf0e10cSrcweir SampleThesaurus.java 79cdf0e10cSrcweir 80cdf0e10cSrcweirCLASSFILES = $(patsubst %.java,$(OUT_COMP_CLASS)/%.class,$(JAVAFILES)) 81cdf0e10cSrcweir 82cdf0e10cSrcweir$(COMP1_NAME)_CLASSFILES = XHyphenatedWord_impl.class \ 83cdf0e10cSrcweir XPossibleHyphens_impl.class \ 84cdf0e10cSrcweir PropChgHelper.class \ 85cdf0e10cSrcweir PropChgHelper_Hyph.class \ 86cdf0e10cSrcweir OneInstanceFactory.class \ 87cdf0e10cSrcweir $(COMP1_NAME).class 88cdf0e10cSrcweir 89cdf0e10cSrcweir$(COMP2_NAME)_CLASSFILES = XSpellAlternatives_impl.class \ 90cdf0e10cSrcweir PropChgHelper_Spell.class \ 91cdf0e10cSrcweir PropChgHelper.class \ 92cdf0e10cSrcweir OneInstanceFactory.class \ 93cdf0e10cSrcweir $(COMP2_NAME).class 94cdf0e10cSrcweir 95cdf0e10cSrcweir$(COMP3_NAME)_CLASSFILES = XMeaning_impl.class \ 96cdf0e10cSrcweir OneInstanceFactory.class \ 97cdf0e10cSrcweir $(COMP3_NAME).class 98cdf0e10cSrcweir 99cdf0e10cSrcweirSDK_CLASSPATH = $(subst $(EMPTYSTRING) $(PATH_SEPARATOR),$(PATH_SEPARATOR),$(CLASSPATH)\ 100cdf0e10cSrcweir $(PATH_SEPARATOR)$(OUT_COMP_CLASS)) 101cdf0e10cSrcweir 102cdf0e10cSrcweir.PHONY: ALL 103cdf0e10cSrcweirALL : $(EXAMPLE_NAME) 104cdf0e10cSrcweir 105cdf0e10cSrcweirinclude $(SETTINGS)/stdtarget.mk 106cdf0e10cSrcweir 107cdf0e10cSrcweir$(OUT_COMP_CLASS)/%.Manifest : 108cdf0e10cSrcweir -$(MKDIR) $(subst /,$(PS),$(@D)) 109cdf0e10cSrcweir @echo RegistrationClassName: $(basename $(basename $(@F)))> $@ 110cdf0e10cSrcweir 111cdf0e10cSrcweir$(CLASSFILES) : $(JAVAFILES) 112cdf0e10cSrcweir -$(MKDIR) $(subst /,$(PS),$(@D)) 113cdf0e10cSrcweir $(SDK_JAVAC) $(JAVAC_FLAGS) -classpath "$(SDK_CLASSPATH)" -d $(OUT_COMP_CLASS) $(JAVAFILES) 114cdf0e10cSrcweir 115cdf0e10cSrcweir# NOTE: because of gnu make problems with full qualified paths, the pattern 116cdf0e10cSrcweir# rules for the component jars and the packages doesn't work proper and we 117cdf0e10cSrcweir# defined explicit rules 118cdf0e10cSrcweir 119cdf0e10cSrcweir# rule for component package manifest 120cdf0e10cSrcweir$(OUT_COMP_CLASS)/%/manifest.xml : 121cdf0e10cSrcweir -$(MKDIR) $(subst /,$(PS),$(@D)) 122cdf0e10cSrcweir @echo $(OSEP)?xml version="$(QM)1.0$(QM)" encoding="$(QM)UTF-8$(QM)"?$(CSEP) > $@ 123cdf0e10cSrcweir @echo $(OSEP)!DOCTYPE manifest:manifest PUBLIC "$(QM)-//OpenOffice.org//DTD Manifest 1.0//EN$(QM)" "$(QM)Manifest.dtd$(QM)"$(CSEP) >> $@ 124cdf0e10cSrcweir @echo $(OSEP)manifest:manifest xmlns:manifest="$(QM)http://openoffice.org/2001/manifest$(QM)"$(CSEP) >> $@ 125cdf0e10cSrcweir @echo $(SQM) $(SQM)$(OSEP)manifest:file-entry manifest:media-type="$(QM)application/vnd.sun.star.uno-components$(QM)" >> $@ 126cdf0e10cSrcweir @echo $(SQM) $(SQM)manifest:full-path="$(QM)$(subst /META-INF,,$(subst $(OUT_COMP_CLASS)/,,$(@D))).components$(QM)"/$(CSEP) >> $@ 127cdf0e10cSrcweir @echo $(OSEP)/manifest:manifest$(CSEP) >> $@ 128cdf0e10cSrcweir 129cdf0e10cSrcweir$(COMP1_JAR) : $(COMP1_MANIFESTFILE) $(CLASSFILES) 130cdf0e10cSrcweir -$(DEL) $(subst \\,\,$(subst /,$(PS),$@)) 131cdf0e10cSrcweir -$(MKDIR) $(subst /,$(PS),$(@D)) 132cdf0e10cSrcweir cd $(subst /,$(PS),$(OUT_COMP_CLASS)) && $(SDK_JAR) cvfm $(@F) $(<F) $($(basename $(basename $(@F)))_CLASSFILES) 133cdf0e10cSrcweir 134cdf0e10cSrcweir$(COMP1_PACKAGE) : $(COMP1_JAR) $(COMP1_UNOPKG_MANIFEST) $(COMP1_COMPONENTS) 135cdf0e10cSrcweir -$(DEL) $(subst \\,\,$(subst /,$(PS),$@)) 136cdf0e10cSrcweir -$(MKDIR) $(subst /,$(PS),$(@D)) 137cdf0e10cSrcweir $(SDK_ZIP) $@ $(COMP1_COMPONENTS) 138cdf0e10cSrcweir cd $(subst /,$(PS),$(OUT_COMP_CLASS)) && $(SDK_ZIP) -u ../../bin/$(@F) $(<F) 139cdf0e10cSrcweir cd $(subst /,$(PS),$(OUT_COMP_CLASS)/$(subst .$(UNOOXT_EXT),,$(@F))) && $(SDK_ZIP) -u ../../../bin/$(@F) META-INF/manifest.xml 140cdf0e10cSrcweir 141cdf0e10cSrcweir$(COMP2_JAR) : $(COMP2_MANIFESTFILE) $(CLASSFILES) 142cdf0e10cSrcweir -$(DEL) $(subst \\,\,$(subst /,$(PS),$@)) 143cdf0e10cSrcweir -$(MKDIR) $(subst /,$(PS),$(@D)) 144cdf0e10cSrcweir cd $(subst /,$(PS),$(OUT_COMP_CLASS)) && $(SDK_JAR) cvfm $(@F) $(<F) $($(basename $(basename $(@F)))_CLASSFILES) 145cdf0e10cSrcweir 146cdf0e10cSrcweir$(COMP2_PACKAGE) : $(COMP2_JAR) $(COMP2_UNOPKG_MANIFEST) $(COMP2_COMPONENTS) 147cdf0e10cSrcweir -$(DEL) $(subst \\,\,$(subst /,$(PS),$@)) 148cdf0e10cSrcweir -$(MKDIR) $(subst /,$(PS),$(@D)) 149cdf0e10cSrcweir $(SDK_ZIP) $@ $(COMP2_COMPONENTS) 150cdf0e10cSrcweir cd $(subst /,$(PS),$(OUT_COMP_CLASS)) && $(SDK_ZIP) -u ../../bin/$(@F) $(<F) 151cdf0e10cSrcweir cd $(subst /,$(PS),$(OUT_COMP_CLASS)/$(subst .$(UNOOXT_EXT),,$(@F))) && $(SDK_ZIP) -u ../../../bin/$(@F) META-INF/manifest.xml 152cdf0e10cSrcweir 153cdf0e10cSrcweir$(COMP3_JAR) : $(COMP3_MANIFESTFILE) $(CLASSFILES) 154cdf0e10cSrcweir -$(DEL) $(subst \\,\,$(subst /,$(PS),$@)) 155cdf0e10cSrcweir -$(MKDIR) $(subst /,$(PS),$(@D)) 156cdf0e10cSrcweir cd $(subst /,$(PS),$(OUT_COMP_CLASS)) && $(SDK_JAR) cvfm $(@F) $(<F) $($(basename $(basename $(@F)))_CLASSFILES) 157cdf0e10cSrcweir 158cdf0e10cSrcweir$(COMP3_PACKAGE) : $(COMP3_JAR) $(COMP3_UNOPKG_MANIFEST) $(COMP3_COMPONENTS) 159cdf0e10cSrcweir -$(DEL) $(subst \\,\,$(subst /,$(PS),$@)) 160cdf0e10cSrcweir -$(MKDIR) $(subst /,$(PS),$(@D)) 161cdf0e10cSrcweir $(SDK_ZIP) $@ $(COMP3_COMPONENTS) 162cdf0e10cSrcweir cd $(subst /,$(PS),$(OUT_COMP_CLASS)) && $(SDK_ZIP) -u ../../bin/$(@F) $(<F) 163cdf0e10cSrcweir cd $(subst /,$(PS),$(OUT_COMP_CLASS)/$(subst .$(UNOOXT_EXT),,$(@F))) && $(SDK_ZIP) -u ../../../bin/$(@F) META-INF/manifest.xml 164cdf0e10cSrcweir 165cdf0e10cSrcweir$(REGISTERFLAG) : $(COMP1_PACKAGE) $(COMP2_PACKAGE) $(COMP3_PACKAGE) 166cdf0e10cSrcweirifeq "$(SDK_AUTO_DEPLOYMENT)" "YES" 167cdf0e10cSrcweir -$(MKDIR) $(subst /,$(PS),$(@D)) 168cdf0e10cSrcweir -$(DEL) $(subst \\,\,$(subst /,$(PS),$@)) 169cdf0e10cSrcweir $(DEPLOYTOOL) $(COMP1_PACKAGE_URL) 170cdf0e10cSrcweir $(DEPLOYTOOL) $(COMP2_PACKAGE_URL) 171cdf0e10cSrcweir $(DEPLOYTOOL) $(COMP3_PACKAGE_URL) 172cdf0e10cSrcweir @echo flagged > $(subst /,$(PS),$@) 173cdf0e10cSrcweirelse 174cdf0e10cSrcweir @echo -------------------------------------------------------------------------------- 175cdf0e10cSrcweir @echo If you want to install your component automatically, please set the environment 176cdf0e10cSrcweir @echo variable SDK_AUTO_DEPLOYMENT = YES. But note that auto deployment is only 177cdf0e10cSrcweir @echo possible if no office instance is running. 178cdf0e10cSrcweir @echo -------------------------------------------------------------------------------- 179cdf0e10cSrcweirendif 180cdf0e10cSrcweir 181cdf0e10cSrcweir$(OUT_COMP_CLASS)/%.class : %.java 182cdf0e10cSrcweir -$(MKDIR) $(subst /,$(PS),$(@D)) 183cdf0e10cSrcweir $(SDK_JAVAC) $(JAVAC_FLAGS) -classpath "$(SDK_CLASSPATH)" -d $(OUT_COMP_CLASS) $< 184cdf0e10cSrcweir 185cdf0e10cSrcweir$(OUT_COMP_CLASS)/%.mf : 186cdf0e10cSrcweir -$(MKDIR) $(subst /,$(PS),$(@D)) 187cdf0e10cSrcweir @echo Main-Class: com.sun.star.lib.loader.Loader> $@ 188cdf0e10cSrcweir $(ECHOLINE)>> $@ 189cdf0e10cSrcweir @echo Name: com/sun/star/lib/loader/Loader.class>> $@ 190cdf0e10cSrcweir @echo Application-Class: $*>> $@ 191cdf0e10cSrcweir 192cdf0e10cSrcweir$(APP1_JAR) : $(OUT_COMP_CLASS)/$(APP1_NAME).mf $(OUT_COMP_CLASS)/$(APP1_NAME).class 193cdf0e10cSrcweir -$(DEL) $(subst \\,\,$(subst /,$(PS),$@)) 194cdf0e10cSrcweir -$(MKDIR) $(subst /,$(PS),$(@D)) 195cdf0e10cSrcweir +cd $(subst /,$(PS),$(OUT_COMP_CLASS)) && $(SDK_JAR) cvfm $(@F) $(basename $(@F)).mf $(basename $(@F)).class $(basename $(@F))$(QUOTE)$$Client.class 196cdf0e10cSrcweir +$(SDK_JAR) uvf $@ $(SDK_JAVA_UNO_BOOTSTRAP_FILES) 197cdf0e10cSrcweir 198cdf0e10cSrcweir 199cdf0e10cSrcweir$(EXAMPLE_NAME) : $(REGISTERFLAG) $(APP1_JAR) 200cdf0e10cSrcweir @echo -------------------------------------------------------------------------------- 201cdf0e10cSrcweir @echo Please use the following command to execute the example! 202cdf0e10cSrcweir @echo - 203cdf0e10cSrcweir @echo $(MAKE) $(APP1_NAME).run 204cdf0e10cSrcweir @echo -------- 205cdf0e10cSrcweir @echo Before you can run the examples the components "$(QM)$(COMP1_NAME)$(QM)", 206cdf0e10cSrcweir @echo "$(QM)$(COMP2_NAME)$(QM)" and "$(QM)$(COMP3_NAME)$(QM)" must be deployed. 207cdf0e10cSrcweir @echo The components will be automatically deployed if SDK_AUTO_DEPLOYMENT = YES. 208cdf0e10cSrcweir @echo -------------------------------------------------------------------------------- 209cdf0e10cSrcweir 210cdf0e10cSrcweir%.run: $(OUT_COMP_CLASS)/%.jar 211cdf0e10cSrcweir $(SDK_JAVA) -Dcom.sun.star.lib.loader.unopath="$(OFFICE_PROGRAM_PATH)" -jar $< 212cdf0e10cSrcweir 213cdf0e10cSrcweir.PHONY: clean 214cdf0e10cSrcweirclean : 215cdf0e10cSrcweir -$(DELRECURSIVE) $(subst /,$(PS),$(OUT_COMP_CLASS)) 216cdf0e10cSrcweir -$(DEL) $(subst \\,\,$(subst /,$(PS),$(COMP1_PACKAGE_URL))) 217cdf0e10cSrcweir -$(DEL) $(subst \\,\,$(subst /,$(PS),$(COMP2_PACKAGE_URL))) 218cdf0e10cSrcweir -$(DEL) $(subst \\,\,$(subst /,$(PS),$(COMP3_PACKAGE_URL))) 219cdf0e10cSrcweir -$(DEL) $(subst \\,\,$(subst /,$(PS),$(REGISTERFLAG))) 220