update ooo310-m15
[ooovba.git] / solenv / inc / tg_shl.mk
blob98b20405a6a96cb0792929ccc8feb6a81fc71f37
1 #*************************************************************************
3 # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4 #
5 # Copyright 2008 by Sun Microsystems, Inc.
7 # OpenOffice.org - a multi-platform office productivity suite
9 # $RCSfile: tg_shl.mk,v $
11 # $Revision: 1.127 $
13 # This file is part of OpenOffice.org.
15 # OpenOffice.org is free software: you can redistribute it and/or modify
16 # it under the terms of the GNU Lesser General Public License version 3
17 # only, as published by the Free Software Foundation.
19 # OpenOffice.org is distributed in the hope that it will be useful,
20 # but WITHOUT ANY WARRANTY; without even the implied warranty of
21 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
22 # GNU Lesser General Public License version 3 for more details
23 # (a copy is included in the LICENSE file that accompanied this code).
25 # You should have received a copy of the GNU Lesser General Public License
26 # version 3 along with OpenOffice.org. If not, see
27 # <http://www.openoffice.org/license.html>
28 # for a copy of the LGPLv3 License.
30 #*************************************************************************
32 #######################################################
33 # targets for linking
34 # unroll begin
36 .IF "$(SHL$(TNR)TARGETN)"!=""
38 .IF "$(OS)"=="AIX"
39 SHL$(TNR)STDLIBS=
40 .ENDIF
42 .IF "$(SHLLINKARCONLY)" != ""
43 SHL$(TNR)STDLIBS=
44 STDSHL=
45 .ELSE
46 SHL$(TNR)ARCHIVES=
47 .ENDIF
49 # decide how to link
50 .IF "$(SHL$(TNR)CODETYPE)"=="C"
51 SHL$(TNR)LINKER=$(LINKC)
52 SHL$(TNR)STDSHL=$(subst,CPPRUNTIME, $(STDSHL))
53 SHL$(TNR)LINKFLAGS+=$(LINKCFLAGS)
54 .ELSE # "$(SHL$(TNR)CODETYPE)"=="C"
55 SHL$(TNR)LINKER=$(LINK)
56 SHL$(TNR)STDSHL=$(subst,CPPRUNTIME,$(STDLIBCPP) $(STDSHL))
57 SHL$(TNR)LINKFLAGS+=$(LINKFLAGS)
58 .ENDIF # "$(SHL$(TNR)CODETYPE)"=="C"
60 SHL$(TNR)RPATH*=OOO
61 LINKFLAGSRUNPATH_$(SHL$(TNR)RPATH)*=/ERROR:/Bad_SHL$(TNR)RPATH_value
62 SHL$(TNR)LINKFLAGS+=$(LINKFLAGSRUNPATH_$(SHL$(TNR)RPATH))
64 .IF "$(SHL$(TNR)USE_EXPORTS)"==""
65 SHL$(TNR)DEF*=$(MISC)$/$(SHL$(TNR)TARGET).def
66 .ENDIF # "$(SHL$(TNR)USE_EXPORTS)"==""
68 #+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
69 #+++++++++++ version object ++++++++++++++++++++++++++++++++++++++++
70 #+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
72 .IF "$(VERSIONOBJ)"!=""
73 SHL$(TNR)VERSIONOBJ:=$(VERSIONOBJ:d){$(subst,$(DLLPOSTFIX),_dflt $(SHL$(TNR)TARGET))}$(VERSIONOBJ:f)
74 USE_VERSIONH:=$(INCCOM)$/$(SHL$(TNR)VERSIONOBJ:b).h
75 .IF "$(GUI)" == "UNX"
76 SHL$(TNR)VERSIONOBJDEP:=$(VERSIONOBJ:d){$(subst,$(DLLPOSTFIX),_dflt $(SHL$(TNR)TARGET))}$(VERSIONOBJ:f:s/.o/.obj/)
77 .ELSE # "$(GUI)" == "UNX"
78 SHL$(TNR)VERSIONOBJDEP:=$(VERSIONOBJ:d){$(subst,$(DLLPOSTFIX),_dflt $(SHL$(TNR)TARGET))}$(VERSIONOBJ:f)
79 .ENDIF # "$(GUI)" == "UNX"
80 $(MISC)$/$(SHL$(TNR)VERSIONOBJ:b).c : $(SOLARENV)$/src$/version.c $(INCCOM)$/$(SHL$(TNR)VERSIONOBJ:b).h
81 # $(COPY) $(SOLARENV)$/src$/version.c $@
82 $(QUIET_BUILD) $(TYPE) $(SOLARENV)$/src$/version.c | $(SED) s/_version.h/$(SHL$(TNR)VERSIONOBJ:b).h/ > $@
84 .INIT : $(SHL$(TNR)VERSIONOBJDEP)
85 .ENDIF # "$(VERSIONOBJ)"!=""
87 .IF "$(GUI)" != "UNX"
88 .IF "$(GUI)" == "WNT" || "$(GUI)" == "OS2"
89 .IF "$(SHL$(TNR)IMPLIB)" == ""
90 SHL$(TNR)IMPLIB=i$(TARGET)_t$(TNR)
91 .ENDIF # "$(SHL$(TNR)IMPLIB)" == ""
92 .IF "$(COM)" != "GCC"
93 USE_$(TNR)IMPLIB=-implib:$(LB)$/$(SHL$(TNR)IMPLIB).lib
94 .ENDIF # "$(COM)" != "GCC"
95 SHL$(TNR)IMPLIBN=$(LB)$/$(SHL$(TNR)IMPLIB).lib
96 ALLTAR : $(SHL$(TNR)IMPLIBN)
98 .IF "$(USE_DEFFILE)"==""
99 USE_$(TNR)IMPLIB_DEPS=$(LB)$/$(SHL$(TNR)IMPLIB).lib
100 .ENDIF # "$(USE_DEFFILE)"==""
101 .ENDIF # "$(GUI)" == "WNT" || "$(GUI)" == "OS2"
102 USE_SHL$(TNR)DEF=$(SHL$(TNR)DEF)
103 .ELSE # "$(GUI)" != "UNX"
104 USE_SHL$(TNR)DEF=
105 SHL$(TNR)DEPN+:=$(SHL$(TNR)DEPNU)
107 .IF "$(SHL$(TNR)VERSIONMAP)"==""
108 # to activate vmaps remove "#"
109 USE_SHL$(TNR)VERSIONMAP=$(MISC)$/$(SHL$(TNR)TARGET).vmap
110 .ENDIF # "$(SHL$(TNR)VERSIONMAP)"==""
112 .IF "$(USE_SHL$(TNR)VERSIONMAP)"!=""
114 .IF "$(SHL$(TNR)FILTERFILE)"!=""
115 .IF "$(SHL$(TNR)VERSIONMAP)"!=""
116 #eine von beiden ist zuviel
117 USE_SHL$(TNR)VERSIONMAP=$(MISC)$/$(SHL$(TNR)TARGET).vmap
118 $(USE_SHL$(TNR)VERSIONMAP) .PHONY:
119 @echo -----------------------------
120 @echo you should only use versionmap OR exportfile
121 @echo -----------------------------
122 # force_dmake_to_error
124 .ENDIF # "$(SHL$(TNR)VERSIONMAP)"!=""
126 .IF "$(OS)"!="IRIX"
127 SHL$(TNR)VERSIONMAPPARA=$(LINKVERSIONMAPFLAG) $(USE_SHL$(TNR)VERSIONMAP)
128 .ENDIF
130 $(USE_SHL$(TNR)VERSIONMAP): \
131 $(SHL$(TNR)OBJS)\
132 $(SHL$(TNR)LIBS)\
133 $(SHL$(TNR)FILTERFILE)
134 @$(RM) $@.dump
135 .IF "$(SHL$(TNR)OBJS)"!=""
136 # dump remaining objects on the fly
137 .IF "$(OS)"=="MACOSX"
138 @-nm $(SHL$(TNR)OBJS:s/.obj/.o/) > $@.dump
139 .ELSE
140 @nm $(SHL$(TNR)OBJS:s/.obj/.o/) > $@.dump
141 .ENDIF
142 .ENDIF # "$(SHL$(TNR)OBJS)!"=""
143 @$(TYPE) /dev/null $(SHL$(TNR)LIBS:s/.lib/.dump/) >> $@.dump
144 $(QUIET_BUILD) $(PERL) $(SOLARENV)$/bin$/mapgen.pl -d $@.dump -s $(SHL$(TNR)INTERFACE) -f $(SHL$(TNR)FILTERFILE) -m $@
146 .ELSE # "$(SHL$(TNR)FILTERFILE)"!=""
147 USE_SHL$(TNR)VERSIONMAP=$(MISC)$/$(SHL$(TNR)TARGET).vmap
148 $(USE_SHL$(TNR)VERSIONMAP) :
149 .IF "$(QUIET_BUILD)"==""
150 @echo -----------------------------
151 @echo SHL$(TNR)FILTERFILE not set!
152 @echo -----------------------------
153 @$(TOUCH) $@
154 @echo dummy file to keep the dependencies for later use.
155 .ELSE
156 @$(TOUCH) $@
157 .ENDIF
158 # force_dmake_to_error
159 .ENDIF # "$(SHL$(TNR)FILTERFILE)"!=""
160 .ELSE # "$(USE_SHL$(TNR)VERSIONMAP)"!=""
162 #and now for the plain non-generic way...
163 .IF "$(SHL$(TNR)VERSIONMAP)"!=""
164 USE_SHL$(TNR)VERSIONMAP=$(MISC)$/$(SHL$(TNR)VERSIONMAP:b)_$(SHL$(TNR)TARGET)$(SHL$(TNR)VERSIONMAP:e)
165 .IF "$(OS)"!="IRIX"
166 SHL$(TNR)VERSIONMAPPARA=$(LINKVERSIONMAPFLAG) $(USE_SHL$(TNR)VERSIONMAP)
167 .ENDIF
169 .IF "$(OS)"=="MACOSX"
170 $(USE_SHL$(TNR)VERSIONMAP): $(SHL$(TNR)OBJS) $(SHL$(TNR)LIBS)
171 .ENDIF
173 $(USE_SHL$(TNR)VERSIONMAP): $(SHL$(TNR)VERSIONMAP)
174 @@-$(RM) -f $@
175 # The following files will only be generated and needed on Mac OS X as temporary files
176 # in order to generate exported symbols list out of Linux/Solaris map files
177 .IF "$(OS)"=="MACOSX"
178 @-$(RM) -f $@.symregexp >& $(NULLDEV)
179 @-$(RM) -f $@.expsymlist >& $(NULLDEV)
180 .ENDIF
181 # Its questionable if the following condition '.IF "$(COMID)"=="gcc3"' makes sense and what
182 # happens if somebody will change it in the future
183 .IF "$(COMID)"=="gcc3"
184 $(QUIET_BUILD) tr -d "\015" < $(SHL$(TNR)VERSIONMAP) | $(AWK) -f $(SOLARENV)$/bin$/addsym.awk > $@
185 .ELIF "$(COMNAME)"=="sunpro5"
186 $(QUIET_BUILD) tr -d "\015" < $(SHL$(TNR)VERSIONMAP) | $(GREP) -v $(IGNORE_SYMBOLS) > $@
187 .ELSE # "$(COMID)"=="gcc3"
188 $(QUIET_BUILD) tr -d "\015" < $(SHL$(TNR)VERSIONMAP) > $@
189 .ENDIF # "$(COMID)"=="gcc3"
190 @chmod a+w $@
191 # Mac OS X post-processing generate an exported symbols list from the generated map file
192 # for details on exported symbols list see man ld on Mac OS X
193 .IF "$(OS)"=="MACOSX"
194 -cat $@ | $(AWK) -f $(SOLARENV)$/bin$/unxmap-to-macosx-explist.awk | grep -v "\*\|?" > $@.exported-symbols
195 -cat $@ | $(AWK) -f $(SOLARENV)$/bin$/unxmap-to-macosx-explist.awk | grep "\*\|?" > $@.symbols-regexp
196 # Shared libraries will be build out of the *.obj files specified in SHL?OBJS and SHL?LIBS
197 # Extract RTTI symbols from all the objects that will be used to build a shared library
198 .IF "$(SHL$(TNR)OBJS)"!=""
199 -echo $(foreach,i,$(SHL$(TNR)OBJS:s/.obj/.o/) $i) | xargs -n1 nm -gx | $(SOLARENV)$/bin$/addsym-macosx.sh $@.symbols-regexp $@.symbols-regexp.tmp >> $@.exported-symbols
200 .ENDIF
201 .IF "$(SHL$(TNR)LIBS)"!=""
202 -$(TYPE) $(foreach,j,$(SHL$(TNR)LIBS) $j) | $(SED) s\#$(ROUT)\#$(PRJ)$/$(ROUT)\#g | xargs -n1 nm -gx | $(SOLARENV)$/bin$/addsym-macosx.sh $@.symbols-regexp $@.symbols-regexp.tmp >> $@.exported-symbols
203 .ENDIF
204 # overwrite the map file generate into the local output tree with the generated
205 # exported symbols list
206 cp $@.exported-symbols $@
207 .ENDIF # .IF "$(OS)"=="MACOSX"
208 .ENDIF # "$(SHL$(TNR)VERSIONMAP)"!=""
209 .ENDIF # "$(USE_SHL$(TNR)VERSIONMAP)"!=""
210 .ENDIF # "$(GUI)" != "UNX"
212 .IF "$(UNIXVERSIONNAMES)"!=""
213 .IF "$(OS)"!="MACOSX"
214 .IF "$(GUI)"=="UNX"
215 .IF "$(OS)"=="IRIX"
216 SHL$(TNR)SONAME=$(SONAME_SWITCH)$(SHL$(TNR)TARGETN:f)
217 .ELSE
218 SHL$(TNR)SONAME=\"$(SONAME_SWITCH)$(SHL$(TNR)TARGETN:f)\"
219 .ENDIF
220 .ENDIF # "$(GUI)"!="UNX"
221 .ENDIF # "$(OS)"!="MACOSX"
222 .ENDIF # "$(UNIXVERSIONNAMES)"!=""
224 .IF "$(SHL$(TNR)RES)"!=""
225 SHL$(TNR)ALLRES+=$(SHL$(TNR)RES)
226 SHL$(TNR)LINKRES*=$(MISC)$/$(SHL$(TNR)TARGET).res
227 SHL$(TNR)LINKRESO*=$(MISC)$/$(SHL$(TNR)TARGET)_res.o
228 .ENDIF # "$(SHL$(TNR)RES)"!=""
230 .IF "$(SHL$(TNR)DEFAULTRES)$(use_shl_versions)"!=""
231 SHL$(TNR)DEFAULTRES*=$(MISC)$/$(SHL$(TNR)TARGET)_def.res
232 SHL$(TNR)ALLRES+=$(SHL$(TNR)DEFAULTRES)
233 SHL$(TNR)LINKRES*=$(MISC)$/$(SHL$(TNR)TARGET).res
234 SHL$(TNR)LINKRESO*=$(MISC)$/$(SHL$(TNR)TARGET)_res.o
235 .ENDIF # "$(SHL$(TNR)DEFAULTRES)$(use_shl_versions)"!=""
237 #.IF "$(SHL$(TNR)TARGETN)"!=""
239 .IF "$(linkinc)"!=""
240 .IF "$(GUI)"=="WNT" || "$(GUI)" == "OS2"
241 .IF "$(SHL$(TNR)LIBS)"!=""
242 $(MISC)$/$(SHL$(TNR)TARGET)_linkinc.ls .PHONY:
243 @@-$(RM) $@
244 $(SED) -f $(SOLARENV)$/bin$/chrel.sed $(foreach,i,$(SHL$(TNR)LIBS) $(i:s/.lib/.lin/)) >> $@
245 .ENDIF # "$(SHL$(TNR)LIBS)"!=""
246 .ENDIF
248 LINKINCTARGETS+=$(MISC)$/$(SHL$(TNR)TARGETN:b)_linkinc.ls
249 $(SHL$(TNR)TARGETN) : $(LINKINCTARGETS)
251 .ELSE
252 .IF "$(SHL$(TNR)USE_EXPORTS)"=="name"
253 .IF "$(GUI)"=="WNT" || "$(GUI)" == "OS2"
254 .IF "$(COM)"!="GCC"
255 .IF "$(SHL$(TNR)LIBS)"!=""
256 SHL$(TNR)LINKLIST=$(MISC)$/$(SHL$(TNR)TARGET)_link.lst
257 SHL$(TNR)LINKLISTPARAM=@$(SHL$(TNR)LINKLIST)
258 $(SHL$(TNR)LINKLIST) : $(SHL$(TNR)LIBS)
259 @@-$(RM) $@
260 $(SED) -f $(SOLARENV)$/bin$/chrel.sed $(foreach,i,$(SHL$(TNR)LIBS) $(i:s/.lib/.lin/)) >> $@
261 .ENDIF # "$(SHL$(TNR)LIBS)"!=""
262 .ENDIF # "$(COM)"!="GCC"
263 .ENDIF
264 .ENDIF # "$(SHL$(TNR)USE_EXPORTS)"=="name"
266 $(MISC)$/%linkinc.ls:
267 echo . > $@
268 .ENDIF # "$(linkinc)"!=""
270 .IF "$(GUI)" == "OS2"
271 #21/02/2006 YD dll names must be 8.3, invoke fix script
272 #check osl/os2/module.c/osl_loadModule()
273 SHL$(TNR)TARGET8=$(shell @fix_shl $(SHL$(TNR)TARGET))
274 .ENDIF
276 .IF "$(GUI)" == "OS2"
277 _SHL$(TNR)IMP_ORD = $(SHL$(TNR)STDLIBS:^"$(SOLARVERSION)$/$(INPATH)$/lib$/") $(SHL$(TNR)STDLIBS:^"$(LB)$/")
278 SHL$(TNR)IMP_ORD = $(foreach,i,$(_SHL$(TNR)IMP_ORD) $(shell @-ls $i))
279 .ELSE
280 SHL$(TNR)IMP_ORD =
281 .ENDIF
284 $(SHL$(TNR)TARGETN) : \
285 $(SHL$(TNR)OBJS)\
286 $(SHL$(TNR)LIBS)\
287 $(USE_$(TNR)IMPLIB_DEPS)\
288 $(USE_SHL$(TNR)DEF)\
289 $(USE_SHL$(TNR)VERSIONMAP)\
290 $(SHL$(TNR)RES)\
291 $(SHL$(TNR)DEPN) \
292 $(SHL$(TNR)IMP_ORD) \
293 $(SHL$(TNR)LINKLIST)
294 .IF "$(QUIET_BUILD)"==""
295 @echo ------------------------------
296 .ENDIF
297 @echo "Making: " $(@:f)
298 .IF "$(GUI)" == "WNT"
299 .IF "$(SHL$(TNR)DEFAULTRES)"!=""
300 @@-$(RM) $(MISC)$/$(SHL$(TNR)DEFAULTRES:b).rc
301 .IF "$(SHL$(TNR)ICON)" != ""
302 @echo 1 ICON $(SHL$(TNR)ICON) >> $(MISC)$/$(SHL$(TNR)DEFAULTRES:b).rc
303 .ENDIF
304 .IF "$(use_shl_versions)" != ""
305 .IF "$(SHL$(TNR)ADD_VERINFO)"!=""
306 @echo $(EMQ)#include $(EMQ)"$(SHL$(TNR)ADD_VERINFO)$(EMQ)" >> $(MISC)$/$(SHL$(TNR)DEFAULTRES:b).rc
307 .ELSE # "$(SHL$(TNR)ADD_VERINFO)"!=""
308 @echo $(EMQ)#define ADDITIONAL_VERINFO1 >> $(MISC)$/$(SHL$(TNR)DEFAULTRES:b).rc
309 @echo $(EMQ)#define ADDITIONAL_VERINFO2 >> $(MISC)$/$(SHL$(TNR)DEFAULTRES:b).rc
310 @echo $(EMQ)#define ADDITIONAL_VERINFO3 >> $(MISC)$/$(SHL$(TNR)DEFAULTRES:b).rc
311 .ENDIF # "$(SHL$(TNR)ADD_VERINFO)"!=""
312 @echo $(EMQ)#define VERVARIANT $(BUILD) >> $(MISC)$/$(SHL$(TNR)DEFAULTRES:b).rc
313 @echo $(EMQ)#define ORG_NAME $(SHL$(TNR)TARGET)$(DLLPOST) >> $(MISC)$/$(SHL$(TNR)DEFAULTRES:b).rc
314 @echo $(EMQ)#define INTERNAL_NAME $(SHL$(TNR)TARGET:b) >> $(MISC)$/$(SHL$(TNR)DEFAULTRES:b).rc
315 @echo $(EMQ)#include $(EMQ)"shlinfo.rc$(EMQ)" >> $(MISC)$/$(SHL$(TNR)DEFAULTRES:b).rc
316 .ENDIF # "$(use_shl_versions)" != ""
317 $(RC) -DWIN32 $(INCLUDE) $(RCLINKFLAGS) $(MISC)$/$(SHL$(TNR)DEFAULTRES:b).rc
318 .ENDIF # "$(SHL$(TNR)DEFAULTRES)"!=""
319 .IF "$(SHL$(TNR)ALLRES)"!=""
320 .IF "$(USE_SHELL)"=="4nt"
321 $(COPY) /b $(SHL$(TNR)ALLRES:s/res /res+/) $(SHL$(TNR)LINKRES)
322 .ELSE # "$(USE_SHELL)"=="4nt"
323 $(TYPE) $(SHL$(TNR)ALLRES) > $(SHL$(TNR)LINKRES)
324 .IF "$(COM)"=="GCC"
325 windres $(SHL$(TNR)LINKRES) $(SHL$(TNR)LINKRESO)
326 .ENDIF # "$(COM)"=="GCC"
327 .ENDIF # "$(USE_SHELL)"=="4nt"
328 .ENDIF # "$(SHL$(TNR)ALLRES)"!=""
329 .IF "$(COM)"=="GCC" # always have to call dlltool explicitly as ld cannot handle # comment in .def
330 .IF "$(DEFLIB$(TNR)NAME)"!="" # do not have to include objs
331 @echo dlltool --input-def $(SHL$(TNR)DEF) \
332 --dllname $(SHL$(TNR)TARGET)$(DLLPOST) \
333 --kill-at \
334 --output-exp $(MISC)$/$(@:b)_exp.o > $(MISC)$/$(TARGET).$(@:b)_$(TNR).cmd
335 .ELSE # "$(DEFLIB$(TNR)NAME)"!="" # do not have to include objs
336 @echo dlltool --input-def $(SHL$(TNR)DEF) \
337 --dllname $(SHL$(TNR)TARGET)$(DLLPOST) \
338 --kill-at \
339 --output-exp $(MISC)$/$(@:b)_exp.o \
340 $(STDOBJ) $(SHL$(TNR)OBJS) $(SHL$(TNR)LINKRESO) \
341 `$(TYPE) /dev/null $(SHL$(TNR)LIBS) | $(SED) s\#$(ROUT)\#$(PRJ)$/$(ROUT)\#g` > $(MISC)$/$(TARGET).$(@:b)_$(TNR).cmd
342 .ENDIF # "$(DEFLIB$(TNR)NAME)"!=""
343 @echo $(LINK) $(LINKFLAGS) $(LINKFLAGSSHL) -o$@ \
344 $(STDOBJ) $(SHL$(TNR)VERSIONOBJ) $(SHL$(TNR)DESCRIPTIONOBJ) $(SHL$(TNR)OBJS) $(SHL$(TNR)LINKRESO) \
345 `$(TYPE) /dev/null $(SHL$(TNR)LIBS) | $(SED) s\#$(ROUT)\#$(PRJ)$/$(ROUT)\#g` \
346 -Wl,--exclude-libs,ALL $(SHL$(TNR)STDLIBS) $(SHL$(TNR)STDSHL) $(STDSHL$(TNR)) \
347 $(MISC)$/$(@:b)_exp.o \
348 -Wl,-Map,$(MISC)$/$(@:b).map >> $(MISC)$/$(TARGET).$(@:b)_$(TNR).cmd
349 @$(TYPE) $(MISC)$/$(TARGET).$(@:b)_$(TNR).cmd
350 @+source $(MISC)$/$(TARGET).$(@:b)_$(TNR).cmd
351 .ELSE
352 .IF "$(linkinc)"==""
353 .IF "$(SHL$(TNR)USE_EXPORTS)"!="name"
354 .IF "$(USE_DEFFILE)"!=""
355 $(SHL$(TNR)LINKER) @$(mktmp \
356 $(SHL$(TNR)LINKFLAGS) \
357 $(LINKFLAGSSHL) \
358 $(SHL$(TNR)STACK) $(SHL$(TNR)BASEX) \
359 -out:$@ \
360 -map:$(MISC)$/$(@:b).map \
361 -def:$(SHL$(TNR)DEF) \
362 $(USE_$(TNR)IMPLIB) \
363 $(STDOBJ) \
364 $(SHL$(TNR)VERSIONOBJ) $(SHL$(TNR)OBJS) \
365 $(SHL$(TNR)LIBS) \
366 $(SHL$(TNR)STDLIBS) \
367 $(SHL$(TNR)STDSHL) $(STDSHL$(TNR)) \
368 $(SHL$(TNR)LINKRES) \
369 ) $(LINKOUTPUTFILTER)
370 # double check if target was really written... still making sense?
371 @@$(LS) $@
372 @echo linking $@.manifest ...
373 .IF "$(VISTA_MANIFEST)"!=""
374 $(IFEXIST) $@.manifest $(THEN) mt.exe -manifest $@.manifest -manifest $(TRUSTED_MANIFEST_LOCATION)$/trustedinfo.manifest -out:$@.tmanifest$(EMQ) $(FI)
375 $(IFEXIST) $@.manifest $(THEN) mt.exe -manifest $@.tmanifest -outputresource:$@$(EMQ);2 $(FI)
376 .ELSE
377 $(IFEXIST) $@.manifest $(THEN) mt.exe -manifest $@.manifest -outputresource:$@$(EMQ);2 $(FI)
378 .ENDIF # "$(VISTA_MANIFEST)"!=""
379 $(IFEXIST) $@.manifest $(THEN) $(RM:s/+//) $@.manifest $(FI)
380 $(IFEXIST) $@.tmanifest $(THEN) $(RM:s/+//) $@.tmanifest $(FI)
381 .ELSE # "$(USE_DEFFILE)"!=""
382 $(SHL$(TNR)LINKER) @$(mktmp $(SHL$(TNR)LINKFLAGS) \
383 $(LINKFLAGSSHL) $(SHL$(TNR)BASEX) \
384 $(SHL$(TNR)STACK) -out:$(SHL$(TNR)TARGETN) \
385 -map:$(MISC)$/$(@:B).map \
386 $(LB)$/$(SHL$(TNR)IMPLIB).exp \
387 $(STDOBJ) \
388 $(SHL$(TNR)OBJS) $(SHL$(TNR)VERSIONOBJ) \
389 $(SHL$(TNR)LIBS) \
390 $(SHL$(TNR)STDLIBS) \
391 $(SHL$(TNR)STDSHL) $(STDSHL$(TNR)) \
392 $(SHL$(TNR)LINKRES) \
393 ) $(LINKOUTPUTFILTER)
394 # double check if target was really written... still making sense?
395 @@$(LS) $@
396 @echo linking $@.manifest ...
397 .IF "$(VISTA_MANIFEST)"!=""
398 $(IFEXIST) $@.manifest $(THEN) mt.exe -manifest $@.manifest -manifest $(TRUSTED_MANIFEST_LOCATION)$/trustedinfo.manifest -out:$@.tmanifest$(EMQ) $(FI)
399 $(IFEXIST) $@.manifest $(THEN) mt.exe -manifest $@.tmanifest -outputresource:$@$(EMQ);2 $(FI)
400 .ELSE
401 $(IFEXIST) $@.manifest $(THEN) mt.exe -manifest $@.manifest -outputresource:$@$(EMQ);2 $(FI)
402 .ENDIF # "$(VISTA_MANIFEST)"!=""
403 $(IFEXIST) $@.manifest $(THEN) $(RM:s/+//) $@.manifest $(FI)
404 $(IFEXIST) $@.tmanifest $(THEN) $(RM:s/+//) $@.tmanifest $(FI)
405 .ENDIF # "$(USE_DEFFILE)"!=""
406 .ELSE # "$(SHL$(TNR)USE_EXPORTS)"!="name"
407 $(SHL$(TNR)LINKER) @$(mktmp $(SHL$(TNR)LINKFLAGS) \
408 $(LINKFLAGSSHL) $(SHL$(TNR)BASEX) \
409 $(SHL$(TNR)STACK) -out:$(SHL$(TNR)TARGETN) \
410 -map:$(MISC)$/$(@:B).map \
411 $(USE_$(TNR)IMPLIB) \
412 $(STDOBJ) \
413 $(SHL$(TNR)OBJS) $(SHL$(TNR)VERSIONOBJ)) \
414 $(SHL$(TNR)LINKLISTPARAM) \
415 @$(mktmp $(SHL$(TNR)STDLIBS) \
416 $(SHL$(TNR)STDSHL) $(STDSHL$(TNR)) \
417 $(SHL$(TNR)LINKRES) \
419 @echo linking $@.manifest ...
420 .IF "$(VISTA_MANIFEST)"!=""
421 $(IFEXIST) $@.manifest $(THEN) mt.exe -manifest $@.manifest -manifest $(TRUSTED_MANIFEST_LOCATION)$/trustedinfo.manifest -out:$@.tmanifest$(EMQ) $(FI)
422 $(IFEXIST) $@.manifest $(THEN) mt.exe -manifest $@.tmanifest -outputresource:$@$(EMQ);2 $(FI)
423 .ELSE
424 $(IFEXIST) $@.manifest $(THEN) mt.exe -manifest $@.manifest -outputresource:$@$(EMQ);2 $(FI)
425 .ENDIF # "$(VISTA_MANIFEST)"!=""
426 $(IFEXIST) $@.manifest $(THEN) $(RM:s/+//) $@.manifest $(FI)
427 $(IFEXIST) $@.tmanifest $(THEN) $(RM:s/+//) $@.tmanifest $(FI)
428 .ENDIF # "$(SHL$(TNR)USE_EXPORTS)"!="name"
429 .ELSE # "$(linkinc)"==""
430 -$(RM) del $(MISC)$/$(SHL$(TNR)TARGET).lnk
431 -$(RM) $(MISC)$/$(SHL$(TNR)TARGET).lst
432 $(TYPE) $(mktmp \
433 $(SHL$(TNR)LINKFLAGS) \
434 $(LINKFLAGSSHL) $(SHL$(TNR)BASEX) \
435 $(SHL$(TNR)STACK) $(MAPFILE) \
436 -out:$@ \
437 $(LB)$/$(SHL$(TNR)IMPLIB).exp \
438 $(STDOBJ) \
439 $(SHL$(TNR)OBJS) \
440 $(SHL$(TNR)STDLIBS) \
441 $(SHL$(TNR)STDSHL) $(STDSHL$(TNR)) \
442 $(SHL$(TNR)LINKRES) \
443 ) >> $(MISC)$/$(SHL$(TNR)TARGET).lnk
444 $(TYPE) $(MISC)$/$(SHL$(TNR)TARGETN:b)_linkinc.ls >> $(MISC)$/$(SHL$(TNR)TARGET).lnk
445 $(SHL$(TNR)LINKER) @$(MISC)$/$(SHL$(TNR)TARGET).lnk
446 @echo linking $@.manifest ...
447 .IF "$(VISTA_MANIFEST)"!=""
448 $(IFEXIST) $@.manifest $(THEN) mt.exe -manifest $@.manifest -manifest $(TRUSTED_MANIFEST_LOCATION)$/trustedinfo.manifest -out:$@.tmanifest$(EMQ) $(FI)
449 $(IFEXIST) $@.manifest $(THEN) mt.exe -manifest $@.tmanifest -outputresource:$@$(EMQ);2 $(FI)
450 .ELSE
451 $(IFEXIST) $@.manifest $(THEN) mt.exe -manifest $@.manifest -outputresource:$@$(EMQ);2 $(FI)
452 .ENDIF # "$(VISTA_MANIFEST)"!=""
453 $(IFEXIST) $@.manifest $(THEN) $(RM:s/+//) $@.manifest $(FI)
454 $(IFEXIST) $@.tmanifest $(THEN) $(RM:s/+//) $@.tmanifest $(FI)
455 .ENDIF # "$(linkinc)"==""
456 .ENDIF # "$(COM)"=="GCC"
457 .ENDIF # "$(GUI)" == "WNT"
458 .IF "$(GUI)"=="UNX"
459 .IF "$(OS)"=="MACOSX"
460 @-$(RM) $(MISC)$/$(@:b).list
461 @-$(RM) $(MISC)$/$(TARGET).$(@:b)_$(TNR).cmd
462 @echo $(STDSLO) $(SHL$(TNR)OBJS:s/.obj/.o/) \
463 $(SHL$(TNR)VERSIONOBJ) \
464 `cat /dev/null $(SHL$(TNR)LIBS) | sed s\#$(ROUT)\#$(PRJ)$/$(ROUT)\#g` | tr -s " " "\n" > $(MISC)$/$(@:b).list
465 @echo -n $(SHL$(TNR)LINKER) $(SHL$(TNR)LINKFLAGS) $(SHL$(TNR)VERSIONMAPPARA) $(LINKFLAGSSHL) -L$(PRJ)$/$(ROUT)$/lib $(SOLARLIB) -o $@ \
466 $(SHL$(TNR)STDLIBS) $(SHL$(TNR)ARCHIVES) $(SHL$(TNR)STDSHL) $(STDSHL$(TNR)) -filelist $(MISC)$/$(@:b).list $(LINKOUTPUT_FILTER) > $(MISC)$/$(TARGET).$(@:b)_$(TNR).cmd
467 @$(PERL) $(SOLARENV)$/bin$/macosx-dylib-link-list.pl \
468 `cat $(MISC)$/$(TARGET).$(@:b)_$(TNR).cmd` \
469 >> $(MISC)$/$(TARGET).$(@:b)_$(TNR).cmd
470 @cat $(MISC)$/$(TARGET).$(@:b)_$(TNR).cmd
471 @+source $(MISC)$/$(TARGET).$(@:b)_$(TNR).cmd
472 @$(PERL) $(SOLARENV)$/bin$/macosx-change-install-names.pl \
473 shl $(SHL$(TNR)RPATH) $@
474 @echo "Making: " $(@:f).jnilib
475 @macosx-create-bundle $@
476 .IF "$(UPDATER)"=="YES"
477 .IF "$(SHL$(TNR)NOCHECK)"==""
478 $(SOLARENV)$/bin$/checkdll.sh -L$(LB) -L$(SOLARLIBDIR) $(EXTRALIBPATHS) $(SHL$(TNR)TARGETN)
479 .ENDIF # "$(SHL$(TNR)NOCHECK)"!=""
480 .ENDIF
481 .ELSE # "$(OS)"=="MACOSX"
482 @-$(RM) $(MISC)$/$(TARGET).$(@:b)_$(TNR).cmd
483 @echo $(SHL$(TNR)LINKER) $(SHL$(TNR)LINKFLAGS) $(SHL$(TNR)SONAME) $(LINKFLAGSSHL) $(SHL$(TNR)VERSIONMAPPARA) -L$(PRJ)$/$(ROUT)$/lib $(SOLARLIB) $(STDSLO) $(SHL$(TNR)OBJS:s/.obj/.o/) \
484 $(SHL$(TNR)VERSIONOBJ) -o $@ \
485 `cat /dev/null $(SHL$(TNR)LIBS) | tr -s " " "\n" | $(SED) s\#$(ROUT)\#$(PRJ)$/$(ROUT)\#g` \
486 $(SHL$(TNR)STDLIBS) $(SHL$(TNR)ARCHIVES) $(SHL$(TNR)STDSHL) $(STDSHL$(TNR)) $(LINKOUTPUT_FILTER) > $(MISC)$/$(TARGET).$(@:b)_$(TNR).cmd
487 .IF "$(QUIET_BUILD)"==""
488 @cat $(MISC)$/$(TARGET).$(@:b)_$(TNR).cmd
489 .ENDIF
490 @+source $(MISC)$/$(TARGET).$(@:b)_$(TNR).cmd
491 .IF "$(UPDATER)"=="YES"
492 .IF "$(SHL$(TNR)NOCHECK)"==""
493 $(QUIET_BUILD) -$(RM) $(SHL$(TNR)TARGETN:d)check_$(SHL$(TNR)TARGETN:f)
494 $(QUIET_BUILD) $(RENAME) $(SHL$(TNR)TARGETN) $(SHL$(TNR)TARGETN:d)check_$(SHL$(TNR)TARGETN:f)
495 .IF "$(QUIET_BUILD)"==""
496 $(SOLARENV)$/bin$/checkdll.sh -L$(LB) -L$(SOLARLIBDIR) $(EXTRALIBPATHS) $(SHL$(TNR)TARGETN:d)check_$(SHL$(TNR)TARGETN:f)
497 .ELSE
498 $(QUIET_BUILD) $(SOLARENV)$/bin$/checkdll.sh -L$(LB) -L$(SOLARLIBDIR) $(EXTRALIBPATHS) -- -s $(SHL$(TNR)TARGETN:d)check_$(SHL$(TNR)TARGETN:f)
499 .ENDIF
500 .ENDIF # "$(SHL$(TNR)NOCHECK)"!=""
501 .ENDIF # "$(UPDATER)"=="YES"
502 .ENDIF # "$(OS)"=="MACOSX"
503 .IF "$(UNIXVERSIONNAMES)"!=""
504 $(QUIET_BUILD) $(RM) $(LB)$/$(SHL$(TNR)TARGETN:b)
505 $(QUIET_BUILD) cd $(LB) && ln -s $(SHL$(TNR)TARGETN:f) $(SHL$(TNR)TARGETN:b)
506 .ENDIF # "$(UNIXVERSIONNAMES)"!=""
507 .IF "$(QUIET_BUILD)"==""
508 @ls -l $@
509 .ENDIF
510 .ENDIF # "$(GUI)" == "UNX"
512 .IF "$(GUI)" == "OS2"
514 .IF "$(SHL$(TNR)DEFAULTRES)"!=""
515 @+-$(RM) $(MISC)$/$(SHL$(TNR)DEFAULTRES:b).rc >& $(NULLDEV)
516 .IF "$(SHL$(TNR)ICON)" != ""
517 @-+echo 1 ICON $(SHL$(TNR)ICON) >> $(MISC)$/$(SHL$(TNR)DEFAULTRES:b).rc
518 .ENDIF
519 .IF "$(use_shl_versions)" != ""
520 .IF "$(SHL$(TNR)ADD_VERINFO)"!=""
521 @-+echo $(EMQ)#include $(EMQ)"$(SHL$(TNR)ADD_VERINFO)$(EMQ)" >> $(MISC)$/$(SHL$(TNR)DEFAULTRES:b).rc
522 .ENDIF # "$(SHL$(TNR)ADD_VERINFO)"!=""
523 @-+echo MENU 1 BEGIN END >> $(MISC)$/$(SHL$(TNR)DEFAULTRES:b).rc
524 # @-+echo $(EMQ)RCDATA 1 { "Build string here" }$(EMQ) >> $(MISC)$/$(SHL$(TNR)DEFAULTRES:b).rc
525 .ENDIF # "$(use_shl_versions)" != ""
526 # YD 04/07/06 seems null, confuses rc cli: -i $(SOLARTESDIR)
527 $(RC) -r -DOS2 $(INCLUDE) $(RCLINKFLAGS) $(MISC)$/$(SHL$(TNR)DEFAULTRES:b).rc
528 .ENDIF # "$(SHL$(TNR)DEFAULTRES)"!=""
530 .IF "$(SHL$(TNR)ALLRES)"!=""
531 .IF "$(USE_SHELL)"=="4nt"
532 +$(COPY) $(SHL$(TNR)ALLRES:s/res /res+/) $(SHL$(TNR)LINKRES)
533 .ELSE # "$(USE_SHELL)"=="4nt"
534 +$(TYPE) $(SHL$(TNR)ALLRES) > $(SHL$(TNR)LINKRES)
535 .ENDIF # "$(USE_SHELL)"=="4nt"
536 .ENDIF # "$(SHL$(TNR)ALLRES)"!=""
538 .IF "$(USE_DEFFILE)"!=""
540 $(SHL$(TNR)LINKER) $(SHL$(TNR)LINKFLAGS) $(LINKFLAGSSHL) -o $@ \
541 $(SHL$(TNR)DEF) \
542 $(STDOBJ) \
543 -L$(LB) \
544 -L$(SOLARVERSION)$/$(INPATH)$/lib \
545 $(SHL$(TNR)OBJS) $(SHL$(TNR)VERSIONOBJ) \
546 $(SHL$(TNR)LIBS) \
547 $(SHL$(TNR)STDLIBS:^"-l") \
548 $(SHL$(TNR)LINKRES) \
549 $(SHL$(TNR)STDSHL:^"-l") $(STDSHL$(TNR):^"-l")
551 .ELSE # "$(USE_DEFFILE)"!=""
553 $(SHL$(TNR)LINKER) -v $(SHL$(TNR)LINKFLAGS) \
554 $(LINKFLAGSSHL) $(SHL$(TNR)BASEX) \
555 $(SHL$(TNR)STACK) -o $(SHL$(TNR)TARGETN) \
556 $(SHL$(TNR)DEF) \
557 $(STDOBJ) \
558 -L$(LB) \
559 -L$(SOLARVERSION)$/$(INPATH)$/lib \
560 $(SHL$(TNR)OBJS) $(SHL$(TNR)VERSIONOBJ) \
561 $(SHL$(TNR)LIBS) \
562 $(SHL$(TNR)STDLIBS:^"-l") \
563 $(SHL$(TNR)LINKRES) \
564 $(SHL$(TNR)STDSHL:^"-l") $(STDSHL$(TNR):^"-l") \
565 $(LINKOUTPUTFILTER)
566 @$(LS) $@ >& $(NULLDEV)
568 .ENDIF # "$(USE_DEFFILE)"!=""
570 .IF "$(SHL$(TNR)TARGET8)" != "$(SHL$(TNR)TARGET)"
571 +$(COPY) $@ $(@:d)$(SHL$(TNR)TARGET8).dll
572 .ENDIF
574 .ENDIF # "$(GUI)" == "OS2"
577 .IF "$(TESTDIR)"!=""
578 .IF "$(NO_TESTS)"==""
580 ALLTAR : runtest_$(SHL$(TNR)TARGET)
582 runtest_$(SHL$(TNR)TARGET) : $(SHL$(TNR)TARGETN)
583 testshl $(SHL$(TNR)TARGETN) sce$/$(SHL$(TNR)TARGET).sce -msg -skip
584 .ENDIF # "$(NO_TESTS)"==""
585 .ENDIF # "$(TESTDIR)"!=""
586 .ENDIF # "$(SHL$(TNR)TARGETN)"!=""
588 # unroll end
589 #######################################################
591 #-------------------------------------------------------------------------
593 #######################################################
594 # Anweisungen fuer das Linken
595 # unroll begin
597 .IF "$(SHL$(TNR)IMPLIBN)" != ""
599 .IF "$(UPDATER)"=="YES"
600 USELIB$(TNR)DEPN+=$(SHL$(TNR)LIBS)
601 .ELSE
602 .ENDIF
604 .IF "$(USE_DEFFILE)"!=""
605 USE_SHL$(TNR)TARGET=$(SHL$(TNR)TARGETN)
606 .ENDIF
608 .IF "$(GUI)" != "UNX"
609 $(SHL$(TNR)IMPLIBN): \
610 $(SHL$(TNR)DEF) \
611 $(USE_SHL$(TNR)TARGET) \
612 $(USELIB$(TNR)DEPN) \
613 $(USELIBDEPN)
614 .ELSE
615 $(SHL$(TNR)IMPLIBN): \
616 $(SHL$(TNR)LIBS)
617 .ENDIF
618 .IF "$(QUIET_BUILD)"==""
619 @echo ------------------------------1
620 .ENDIF
621 @echo "Making: " $(@:f)
622 .IF "$(GUI)" == "WNT"
623 .IF "$(COM)"=="GCC"
624 @echo no ImportLibs on mingw
625 @-$(RM) $@
626 @$(TOUCH) $@
627 .ELSE # "$(COM)=="GCC"
628 # bei use_deffile implib von linker erstellt
629 .IF "$(USE_DEFFILE)"==""
630 $(IMPLIB) $(IMPLIBFLAGS) @$(mktmp -out:$(SHL$(TNR)IMPLIBN) \
631 -def:$(SHL$(TNR)DEF) )
632 .ELSE # "$(USE_DEFFILE)==""
633 @echo build of $(SHL$(TNR)TARGETN) creates $@
634 @$(TOUCH) $@
635 .ENDIF # "$(USE_DEFFILE)==""
636 .ENDIF # "$(COM)"=="GCC"
638 .ELIF "$(GUI)" == "OS2"
640 # touch creates an empty file, but this is not good for emxomfar, so
641 # create a dummy lib here
642 -$(LIBMGR) $(LIBFLAGS) $@ $(SHL$(TNR)VERSIONOBJ)
643 +@echo build of $(SHL$(TNR)TARGETN) creates $@
645 .ELSE
646 @echo no ImportLibs on Mac and *ix
647 @-$(RM) $@
648 @$(TOUCH) $@
649 .ENDIF
650 .ENDIF
652 # unroll end
653 #######################################################