1 #*************************************************************************
2 #
3 #  The Contents of this file are made available subject to the terms of
4 #  the BSD license.
5 #
6 #  Copyright 2000, 2010 Oracle and/or its affiliates.
7 #  All rights reserved.
8 #
9 #  Redistribution and use in source and binary forms, with or without
10 #  modification, are permitted provided that the following conditions
11 #  are met:
12 #  1. Redistributions of source code must retain the above copyright
13 #     notice, this list of conditions and the following disclaimer.
14 #  2. Redistributions in binary form must reproduce the above copyright
15 #     notice, this list of conditions and the following disclaimer in the
16 #     documentation and/or other materials provided with the distribution.
17 #  3. Neither the name of Sun Microsystems, Inc. nor the names of its
18 #     contributors may be used to endorse or promote products derived
19 #     from this software without specific prior written permission.
20 #
21 #  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
22 #  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
23 #  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
24 #  FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
25 #  COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
26 #  INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
27 #  BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
28 #  OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
29 #  ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR
30 #  TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE
31 #  USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
32 #
33 #**************************************************************************
34 
35 # Builds the DevGuide Jobs Addon component example of the SDK.
36 
37 PRJ=../../../../..
38 SETTINGS=$(PRJ)/settings
39 
40 include $(SETTINGS)/settings.mk
41 include $(SETTINGS)/std.mk
42 include $(SETTINGS)/dk.mk
43 
44 # Define non-platform/compiler specific settings
45 COMP_NAME=AsyncJob
46 OUT_COMP_CLASS=$(OUT_CLASS)/$(COMP_NAME)
47 OUT_COMP_MISC=$(OUT_MISC)/$(COMP_NAME)
48 COMP_PACKAGE=$(OUT_BIN)/$(COMP_NAME).$(UNOOXT_EXT)
49 COMP_PACKAGE_URL=$(subst \\,\,"$(COMP_PACKAGE_DIR)$(PS)$(COMP_NAME).$(UNOOXT_EXT)")
50 COMP_JAR_NAME=$(COMP_NAME).uno.jar
51 COMP_JAR=$(OUT_CLASS)/$(COMP_JAR_NAME)
52 COMP_MANIFESTFILE=$(OUT_COMP_CLASS)/$(COMP_NAME).uno.Manifest
53 COMP_UNOPKG_MANIFEST = $(OUT_COMP_CLASS)/$(COMP_NAME)/META-INF/manifest.xml
54 REGISTERFLAG=$(OUT_COMP_MISC)$(PS)java_$(COMP_NAME)_register_component.flag
55 COMP_COMPONENTS=$(COMP_NAME).components
56 
57 JAVAFILES  = AsyncJob.java
58 
59 CLASSFILES = $(patsubst %.java,$(OUT_COMP_CLASS)/%.class,$(JAVAFILES))
60 
61 SDK_CLASSPATH = $(subst $(EMPTYSTRING) $(PATH_SEPARATOR),$(PATH_SEPARATOR),$(CLASSPATH)\
62 		$(PATH_SEPARATOR)$(OUT_COMP_CLASS))
63 
64 
65 # Targets
66 .PHONY: ALL
67 ALL : DevGuideJobsAddon
68 
69 include $(SETTINGS)/stdtarget.mk
70 
71 $(OUT_COMP_CLASS)/%.Manifest :
72 	-$(MKDIR) $(subst /,$(PS),$(@D))
73 	@echo RegistrationClassName: $(basename $(basename $(@F)))> $@
74 
75 $(CLASSFILES) : $(JAVAFILES)
76 	-$(MKDIR) $(subst /,$(PS),$(@D))
77 	$(SDK_JAVAC) $(JAVAC_FLAGS) -classpath "$(SDK_CLASSPATH)" -d $(OUT_COMP_CLASS) $(JAVAFILES)
78 
79 # rule for component jar file
80 $(COMP_JAR) : $(COMP_MANIFESTFILE) $(CLASSFILES)
81 	-$(DEL) $(subst \\,\,$(subst /,$(PS),$@))
82 	-$(MKDIR) $(subst /,$(PS),$(@D))
83 	$(SDK_JAR) cvfm $@ $< -C $(OUT_COMP_CLASS) .
84 
85 # rule for component package manifest
86 $(OUT_COMP_CLASS)/%/manifest.xml :
87 	-$(MKDIR) $(subst /,$(PS),$(@D))
88 	@echo $(OSEP)?xml version="$(QM)1.0$(QM)" encoding="$(QM)UTF-8$(QM)"?$(CSEP) > $@
89 	@echo $(OSEP)!DOCTYPE manifest:manifest PUBLIC "$(QM)-//OpenOffice.org//DTD Manifest 1.0//EN$(QM)" "$(QM)Manifest.dtd$(QM)"$(CSEP) >> $@
90 	@echo $(OSEP)manifest:manifest xmlns:manifest="$(QM)http://openoffice.org/2001/manifest$(QM)"$(CSEP) >> $@
91 	@echo $(SQM)  $(SQM)$(OSEP)manifest:file-entry manifest:media-type="$(QM)application/vnd.sun.star.configuration-data$(QM)" >> $@
92 	@echo $(SQM)                       $(SQM)manifest:full-path="$(QM)Addons.xcu$(QM)"/$(CSEP) >> $@
93 	@echo $(SQM)  $(SQM)$(OSEP)manifest:file-entry manifest:media-type="$(QM)application/vnd.sun.star.configuration-data$(QM)" >> $@
94 	@echo $(SQM)                       $(SQM)manifest:full-path="$(QM)Jobs.xcu$(QM)"/$(CSEP) >> $@
95 	@echo $(SQM)  $(SQM)$(OSEP)manifest:file-entry manifest:media-type="$(QM)application/vnd.sun.star.uno-components$(QM)">> $@
96 	@echo $(SQM)                       $(SQM)manifest:full-path="$(QM)$(COMP_COMPONENTS)$(QM)"/$(CSEP)>> $@
97 	@echo $(OSEP)/manifest:manifest$(CSEP) >> $@
98 
99 # rule for component package file
100 $(COMP_PACKAGE) : $(COMP_JAR) Addons.xcu Jobs.xcu $(COMP_UNOPKG_MANIFEST) $(COMP_COMPONENTS)
101 	-$(DEL) $(subst \\,\,$(subst /,$(PS),$@))
102 	-$(MKDIR) $(subst /,$(PS),$(@D))
103 	cd $(subst /,$(PS),$(OUT_CLASS)) && $(SDK_ZIP) ../bin/$(@F) $(<F)
104 	$(SDK_ZIP) -u $@ Addons.xcu Jobs.xcu $(COMP_COMPONENTS)
105 	cd $(subst /,$(PS),$(OUT_COMP_CLASS)/$(subst .$(UNOOXT_EXT),,$(@F))) && $(SDK_ZIP) -u ../../../bin/$(@F) META-INF/manifest.xml
106 
107 
108 $(REGISTERFLAG) : $(COMP_PACKAGE)
109 ifeq "$(SDK_AUTO_DEPLOYMENT)" "YES"
110 	-$(DEL) $(subst \\,\,$(subst /,$(PS),$@))
111 	-$(MKDIR) $(subst /,$(PS),$(@D))
112 	$(DEPLOYTOOL) $(COMP_PACKAGE_URL)
113 	@echo flagged > $(subst /,$(PS),$@)
114 else
115 	@echo --------------------------------------------------------------------------------
116 	@echo  If you want to install your component automatically, please set the environment
117 	@echo  variable SDK_AUTO_DEPLOYMENT = YES. But note that auto deployment is only
118 	@echo  possible if no office instance is running.
119 	@echo --------------------------------------------------------------------------------
120 endif
121 
122 DevGuideJobsAddon : $(REGISTERFLAG)
123 	@echo --------------------------------------------------------------------------------
124 	@echo The "$(QM)AsyncJob$(QM)" addon component was installed if SDK_AUTO_DEPLOYMENT = YES.
125 	@echo You can use this component inside your office installation, see the example
126 	@echo description.
127 	@echo --------------------------------------------------------------------------------
128 
129 %.run: $(OUT_COMP_CLASS)/%.class
130 	$(SDK_JAVA) -classpath "$(SDK_CLASSPATH)" $(basename $@)
131 
132 .PHONY: clean
133 clean :
134 	-$(DELRECURSIVE) $(subst /,$(PS),$(OUT_COMP_CLASS))
135 	-$(DELRECURSIVE) $(subst /,$(PS),$(OUT_COMP_MISC))
136 	-$(DEL) $(subst \\,\,$(subst /,$(PS),$(COMP_PACKAGE_URL)))
137 	-$(DEL) $(subst \\,\,$(subst /,$(PS),$(COMP_JAR)))
138