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