xref: /AOO41X/main/solenv/inc/_tg_shl.mk (revision dd517d763d1590106211e60c61ad7d6551aa7b11)
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# unroll begin
22
23.IF "$(SHL1TARGETN)"!=""
24
25.IF "$(OS)"=="AIX"
26SHL1STDLIBS=
27.ENDIF
28
29.IF "$(SHLLINKARCONLY)" != ""
30SHL1STDLIBS=
31STDSHL=
32.ELSE
33SHL1ARCHIVES=
34.ENDIF
35
36# decide how to link
37.IF "$(SHL1CODETYPE)"=="C"
38SHL1LINKER=$(LINKC)
39SHL1STDSHL=$(subst,CPPRUNTIME, $(STDSHL))
40SHL1LINKFLAGS+=$(LINKCFLAGS)
41.ELSE           # "$(SHL1CODETYPE)"=="C"
42SHL1LINKER=$(LINK)
43SHL1STDSHL=$(subst,CPPRUNTIME,$(STDLIBCPP) $(STDSHL))
44SHL1LINKFLAGS+=$(LINKFLAGS)
45.ENDIF          # "$(SHL1CODETYPE)"=="C"
46
47SHL1RPATH*=OOO
48LINKFLAGSRUNPATH_$(SHL1RPATH)*=/ERROR:/Bad_SHL1RPATH_value
49SHL1LINKFLAGS+=$(LINKFLAGSRUNPATH_$(SHL1RPATH))
50
51.IF "$(SHL1USE_EXPORTS)"==""
52SHL1DEF*=$(MISC)/$(SHL1TARGET).def
53.ENDIF          # "$(SHL1USE_EXPORTS)"==""
54
55EXTRALIBPATHS1=$(EXTRALIBPATHS)
56.IF "$(UPDATER)"=="YES"
57.IF "$(SHL1NOCHECK)"==""
58.IF "$(SOLAR_STLLIBPATH)"!=""
59EXTRALIBPATHS1+=-L$(SOLAR_STLLIBPATH)
60.ENDIF
61.ENDIF              # "$(SHL1NOCHECK)"!=""
62.ENDIF
63#+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
64#+++++++++++    version object      ++++++++++++++++++++++++++++++++++++++++
65#+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
66
67.IF "$(L10N_framework)"==""
68.IF "$(VERSIONOBJ)"!=""
69SHL1VERSIONOBJ:=$(VERSIONOBJ:d){$(subst,$(DLLPOSTFIX),_dflt $(SHL1TARGET))}$(VERSIONOBJ:f)
70USE_VERSIONH:=$(INCCOM)/$(SHL1VERSIONOBJ:b).h
71.IF "$(GUI)" == "UNX"
72SHL1VERSIONOBJDEP:=$(VERSIONOBJ:d){$(subst,$(DLLPOSTFIX),_dflt $(SHL1TARGET))}$(VERSIONOBJ:f:s/.o/.obj/)
73.ELSE           # "$(GUI)" == "UNX"
74SHL1VERSIONOBJDEP:=$(VERSIONOBJ:d){$(subst,$(DLLPOSTFIX),_dflt $(SHL1TARGET))}$(VERSIONOBJ:f)
75.ENDIF          # "$(GUI)" == "UNX"
76$(MISC)/$(SHL1VERSIONOBJ:b).c : $(SOLARENV)/src/version.c $(INCCOM)/$(SHL1VERSIONOBJ:b).h
77#    $(COPY) $(SOLARENV)/src/version.c $@
78    $(COMMAND_ECHO)$(TYPE) $(SOLARENV)/src/version.c | $(SED) s/_version.h/$(SHL1VERSIONOBJ:b).h/ > $@
79
80.INIT : $(SHL1VERSIONOBJDEP)
81.ENDIF          # "$(VERSIONOBJ)"!=""
82.ENDIF
83
84.IF "$(GUI)" != "UNX"
85.IF "$(GUI)" == "WNT" || "$(GUI)" == "OS2"
86.IF "$(SHL1IMPLIB)" == ""
87SHL1IMPLIB=i$(TARGET)_t1
88.ENDIF          # "$(SHL1IMPLIB)" == ""
89.IF "$(COM)" != "GCC"
90USE_1IMPLIB=-implib:$(LB)/$(SHL1IMPLIB).lib
91.ENDIF          # "$(COM)" != "GCC"
92SHL1IMPLIBN=$(LB)/$(SHL1IMPLIB).lib
93ALLTAR : $(SHL1IMPLIBN)
94
95.IF "$(USE_DEFFILE)"==""
96USE_1IMPLIB_DEPS=$(LB)/$(SHL1IMPLIB).lib
97.ENDIF          # "$(USE_DEFFILE)"==""
98.ENDIF          # "$(GUI)" == "WNT" || "$(GUI)" == "OS2"
99USE_SHL1DEF=$(SHL1DEF)
100.ELSE           # "$(GUI)" != "UNX"
101USE_SHL1DEF=
102SHL1DEPN+:=$(SHL1DEPNU)
103
104.IF "$(SHL1VERSIONMAP)"==""
105# to activate vmaps remove "#"
106USE_SHL1VERSIONMAP=$(MISC)/$(SHL1TARGET).vmap
107.ENDIF          # "$(SHL1VERSIONMAP)"==""
108
109.IF "$(USE_SHL1VERSIONMAP)"!=""
110
111.IF "$(SHL1FILTERFILE)"!=""
112.IF "$(SHL1VERSIONMAP)"!=""
113#eine von beiden ist zuviel
114USE_SHL1VERSIONMAP=$(MISC)/$(SHL1TARGET).vmap
115$(USE_SHL1VERSIONMAP) .PHONY:
116    @echo -----------------------------
117    @echo you should only use versionmap OR exportfile
118    @echo -----------------------------
119#   force_dmake_to_error
120
121.ENDIF          # "$(SHL1VERSIONMAP)"!=""
122
123SHL1VERSIONMAPPARA=$(LINKVERSIONMAPFLAG) $(USE_SHL1VERSIONMAP)
124
125$(USE_SHL1VERSIONMAP): \
126                    $(SHL1OBJS)\
127                    $(SHL1LIBS)\
128                    $(SHL1FILTERFILE)
129    @$(RM) $@.dump
130.IF "$(SHL1OBJS)"!=""
131# dump remaining objects on the fly
132.IF "$(OS)"=="MACOSX"
133    @-nm $(SHL1OBJS:s/.obj/.o/) > $@.dump
134.ELSE
135    @nm $(SHL1OBJS:s/.obj/.o/) > $@.dump
136.ENDIF
137.ENDIF          # "$(SHL1OBJS)!"=""
138    @$(TYPE) /dev/null $(SHL1LIBS:s/.lib/.dump/) >> $@.dump
139    $(COMMAND_ECHO) $(PERL) $(SOLARENV)/bin/mapgen.pl -d $@.dump -s $(SHL1INTERFACE) -f $(SHL1FILTERFILE) -m $@
140
141.ELSE           # "$(SHL1FILTERFILE)"!=""
142USE_SHL1VERSIONMAP=$(MISC)/$(SHL1TARGET).vmap
143$(USE_SHL1VERSIONMAP) :
144.IF "$(VERBOSE)" == "TRUE"
145    @echo -----------------------------
146    @echo SHL1FILTERFILE not set!
147    @echo -----------------------------
148    @$(TOUCH) $@
149    @echo dummy file to keep the dependencies for later use.
150.ELSE
151    @$(TOUCH) $@
152.ENDIF
153#   force_dmake_to_error
154.ENDIF          # "$(SHL1FILTERFILE)"!=""
155.ELSE           # "$(USE_SHL1VERSIONMAP)"!=""
156
157#and now for the plain non-generic way...
158.IF "$(SHL1VERSIONMAP)"!=""
159USE_SHL1VERSIONMAP=$(MISC)/$(SHL1VERSIONMAP:b)_$(SHL1TARGET)$(SHL1VERSIONMAP:e)
160SHL1VERSIONMAPPARA=$(LINKVERSIONMAPFLAG) $(USE_SHL1VERSIONMAP)
161
162.IF "$(OS)"=="MACOSX"
163$(USE_SHL1VERSIONMAP): $(SHL1OBJS) $(SHL1LIBS)
164.ENDIF
165
166# .ERRREMOVE is needed as a recipe line like "$(AWK) ... > $@" would create $@
167# even if the $(AWK) part fails:
168$(USE_SHL1VERSIONMAP) .ERRREMOVE: $(SHL1VERSIONMAP)
169    @@-$(RM) -f $@
170# The following files will only be generated and needed on Mac OS X as temporary files
171# in order to generate exported symbols list out of Linux/Solaris map files
172.IF "$(OS)"=="MACOSX"
173    @-$(RM) -f $@.symregexp >& $(NULLDEV)
174    @-$(RM) -f $@.expsymlist >& $(NULLDEV)
175.ENDIF
176# Its questionable if the following condition '.IF "$(COMID)"=="gcc3"' makes sense and what
177# happens if somebody will change it in the future
178.IF "$(COMID)"=="gcc3"
179    $(COMMAND_ECHO) tr -d "\015" < $(SHL1VERSIONMAP) | $(AWK) -f $(SOLARENV)/bin/addsym.awk > $@
180.ELIF "$(COMNAME)"=="sunpro5"
181    $(COMMAND_ECHO) tr -d "\015" < $(SHL1VERSIONMAP) | $(GREP) -v $(IGNORE_SYMBOLS) > $@
182.ELSE           # "$(COMID)"=="gcc3"
183    $(COMMAND_ECHO) tr -d "\015" < $(SHL1VERSIONMAP) > $@
184.ENDIF          # "$(COMID)"=="gcc3"
185    @chmod a+w $@
186# Mac OS X post-processing generate an exported symbols list from the generated map file
187# for details on exported symbols list see man ld on Mac OS X
188.IF "$(OS)"=="MACOSX"
189    @-cat $@ | $(AWK) -f $(SOLARENV)/bin/unxmap-to-macosx-explist.awk | grep -v "\*\|?" > $@.exported-symbols
190    @-cat $@ | $(AWK) -f $(SOLARENV)/bin/unxmap-to-macosx-explist.awk | grep "\*\|?" > $@.symbols-regexp
191# Shared libraries will be build out of the *.obj files specified in SHL?OBJS and SHL?LIBS
192# Extract RTTI symbols from all the objects that will be used to build a shared library
193.IF "$(SHL1OBJS)"!=""
194    -echo $(foreach,i,$(SHL1OBJS:s/.obj/.o/) $i) | xargs -n1 nm -gx | $(SOLARENV)/bin/addsym-macosx.sh $@.symbols-regexp $@.symbols-regexp.tmp >> $@.exported-symbols
195.ENDIF
196.IF "$(SHL1LIBS)"!=""
197    $(COMMAND_ECHO)-$(TYPE) $(foreach,j,$(SHL1LIBS) $j) | $(SED) s\#$(ROUT)\#$(PRJ)/$(ROUT)\#g | xargs -n1 nm -gx | $(SOLARENV)/bin/addsym-macosx.sh $@.symbols-regexp $@.symbols-regexp.tmp >> $@.exported-symbols
198.ENDIF
199# overwrite the map file generate into the local output tree with the generated
200# exported symbols list
201    cp $@.exported-symbols $@
202.ENDIF # .IF "$(OS)"=="MACOSX"
203.ENDIF          # "$(SHL1VERSIONMAP)"!=""
204.ENDIF          # "$(USE_SHL1VERSIONMAP)"!=""
205.ENDIF          # "$(GUI)" != "UNX"
206
207.IF "$(UNIXVERSIONNAMES)"!=""
208.IF "$(OS)"!="MACOSX"
209.IF "$(GUI)"=="UNX"
210SHL1SONAME=\"$(SONAME_SWITCH)$(SHL1TARGETN:f)\"
211.ENDIF          # "$(GUI)"!="UNX"
212.ENDIF          # "$(OS)"!="MACOSX"
213.ENDIF          # "$(UNIXVERSIONNAMES)"!=""
214
215.IF "$(SHL1RES)"!=""
216SHL1ALLRES+=$(SHL1RES)
217SHL1LINKRES*=$(MISC)/$(SHL1TARGET).res
218SHL1LINKRESO*=$(MISC)/$(SHL1TARGET)_res.o
219.ENDIF          # "$(SHL1RES)"!=""
220
221.IF "$(SHL1DEFAULTRES)$(use_shl_versions)"!=""
222SHL1DEFAULTRES*=$(MISC)/$(SHL1TARGET)_def.res
223SHL1ALLRES+=$(SHL1DEFAULTRES)
224SHL1LINKRES*=$(MISC)/$(SHL1TARGET).res
225SHL1LINKRESO*=$(MISC)/$(SHL1TARGET)_res.o
226.ENDIF          # "$(SHL1DEFAULTRES)$(use_shl_versions)"!=""
227
228#.IF "$(SHL1TARGETN)"!=""
229
230.IF "$(linkinc)"!=""
231.IF "$(GUI)"=="WNT" || "$(GUI)" == "OS2"
232.IF "$(SHL1LIBS)"!=""
233$(MISC)/$(SHL1TARGET)_linkinc.ls .PHONY:
234    @@-$(RM) $@
235    $(COMMAND_ECHO)$(SED) -f $(SOLARENV)/bin/chrel.sed $(foreach,i,$(SHL1LIBS) $(i:s/.lib/.lin/)) >> $@
236.ENDIF          # "$(SHL1LIBS)"!=""
237.ENDIF
238
239LINKINCTARGETS+=$(MISC)/$(SHL1TARGETN:b)_linkinc.ls
240$(SHL1TARGETN) : $(LINKINCTARGETS)
241
242.ELSE
243.IF "$(SHL1USE_EXPORTS)"=="name"
244.IF "$(GUI)"=="WNT" || "$(GUI)" == "OS2"
245.IF "$(COM)"!="GCC"
246.IF "$(SHL1LIBS)"!=""
247SHL1LINKLIST=$(MISC)/$(SHL1TARGET)_link.lst
248SHL1LINKLISTPARAM=@$(SHL1LINKLIST)
249$(SHL1LINKLIST) : $(SHL1LIBS)
250    @@-$(RM) $@
251    $(COMMAND_ECHO)$(SED) -f $(SOLARENV)/bin/chrel.sed $(foreach,i,$(SHL1LIBS) $(i:s/.lib/.lin/)) >> $@
252.ENDIF          # "$(SHL1LIBS)"!=""
253.ENDIF          # "$(COM)"!="GCC"
254.ENDIF
255.ENDIF          # "$(SHL1USE_EXPORTS)"=="name"
256
257$(MISC)/%linkinc.ls:
258    @echo . > $@
259.ENDIF          # "$(linkinc)"!=""
260
261.IF "$(GUI)" == "OS2"
262#21/02/2006 YD dll names must be 8.3, invoke fix script
263#check osl/os2/module.c/osl_loadModule()
264SHL1TARGET8=$(shell @fix_shl.cmd $(SHL1TARGET))
265.ENDIF
266
267
268$(SHL1TARGETN) : \
269                    $(SHL1OBJS)\
270                    $(SHL1LIBS)\
271                    $(USE_1IMPLIB_DEPS)\
272                    $(USE_SHL1DEF)\
273                    $(USE_SHL1VERSIONMAP)\
274                    $(SHL1RES)\
275                    $(SHL1DEPN) \
276                    $(SHL1LINKLIST)
277    @echo "Making:   " $(@:f)
278.IF "$(GUI)" == "WNT"
279.IF "$(SHL1DEFAULTRES)"!=""
280    @@-$(RM) $(MISC)/$(SHL1DEFAULTRES:b).rc
281.IF "$(SHL1ICON)" != ""
282    @echo 1 ICON $(SHL1ICON) >> $(MISC)/$(SHL1DEFAULTRES:b).rc
283.ENDIF
284.IF "$(use_shl_versions)" != ""
285.IF "$(SHL1ADD_VERINFO)"!=""
286    @echo $(EMQ)#include $(EMQ)"$(SHL1ADD_VERINFO)$(EMQ)" >> $(MISC)/$(SHL1DEFAULTRES:b).rc
287.ELSE           # "$(SHL1ADD_VERINFO)"!=""
288    @echo $(EMQ)#define ADDITIONAL_VERINFO1 >> $(MISC)/$(SHL1DEFAULTRES:b).rc
289    @echo $(EMQ)#define ADDITIONAL_VERINFO2 >> $(MISC)/$(SHL1DEFAULTRES:b).rc
290    @echo $(EMQ)#define ADDITIONAL_VERINFO3 >> $(MISC)/$(SHL1DEFAULTRES:b).rc
291.ENDIF          # "$(SHL1ADD_VERINFO)"!=""
292    @echo $(EMQ)#define VERVARIANT  $(BUILD) >> $(MISC)/$(SHL1DEFAULTRES:b).rc
293    @echo $(EMQ)#define ORG_NAME    $(SHL1TARGET)$(DLLPOST) >> $(MISC)/$(SHL1DEFAULTRES:b).rc
294    @echo $(EMQ)#define INTERNAL_NAME $(SHL1TARGET:b) >> $(MISC)/$(SHL1DEFAULTRES:b).rc
295    @echo $(EMQ)#include $(EMQ)"shlinfo.rc$(EMQ)" >> $(MISC)/$(SHL1DEFAULTRES:b).rc
296.ENDIF          # "$(use_shl_versions)" != ""
297    $(COMMAND_ECHO)$(RC) -DWIN32 $(INCLUDE) $(RCLINKFLAGS) $(MISC)/$(SHL1DEFAULTRES:b).rc
298.ENDIF          # "$(SHL1DEFAULTRES)"!=""
299.IF "$(SHL1ALLRES)"!=""
300    $(COMMAND_ECHO)$(TYPE) $(SHL1ALLRES) > $(SHL1LINKRES)
301.IF "$(COM)"=="GCC"
302    windres $(SHL1LINKRES) $(SHL1LINKRESO)
303.ENDIF          # "$(COM)"=="GCC"
304.ENDIF          # "$(SHL1ALLRES)"!=""
305.IF "$(COM)"=="GCC" # always have to call dlltool explicitly as ld cannot handle # comment in .def
306    @echo dlltool --dllname $(SHL1TARGET)$(DLLPOST) \
307        --kill-at \\ > $(MISC)/$(TARGET).$(@:b)_1.cmd
308    @noop $(assign ALL1OBJLIST:=$(STDOBJ) $(SHL1OBJS) $(SHL1LINKRESO) $(shell $(TYPE) /dev/null $(SHL1LIBS) | $(SED) s?$(ROUT)?$(PRJ)/$(ROUT)?g))
309.IF "$(DEFLIB1NAME)"!=""    # do not have to include objs
310    @noop $(assign DEF1OBJLIST:=$(shell $(TYPE) $(foreach,i,$(DEFLIB1NAME) $(SLB)/$(i).lib) | sed s?$(ROUT)?$(PRJ)/$(ROUT)?g))
311    @noop $(foreach,i,$(DEF1OBJLIST) $(assign ALL1OBJLIST:=$(ALL1OBJLIST:s?$i??)))
312.ENDIF          # "$(DEFLIB1NAME)"!=""
313    @echo   --output-exp $(MISC)/$(@:b)_exp.o \\ >> $(MISC)/$(TARGET).$(@:b)_1.cmd
314.IF "$(SHL1DEF)"!=""
315    @echo   --input-def $(SHL1DEF) \\ >> $(MISC)/$(TARGET).$(@:b)_1.cmd
316.ELSE
317    @echo   $(SHL1VERSIONOBJ) $(SHL1DESCRIPTIONOBJ) \\ >> $(MISC)/$(TARGET).$(@:b)_1.cmd
318.ENDIF
319    @echo   $(ALL1OBJLIST) >> $(MISC)/$(TARGET).$(@:b)_1.cmd
320    @echo $(LINK) $(LINKFLAGS) $(LINKFLAGSSHL) $(MINGWSSTDOBJ) -o $@ \
321        $(STDOBJ) $(SHL1VERSIONOBJ) $(SHL1DESCRIPTIONOBJ) $(SHL1OBJS) $(SHL1LINKRESO) \
322        `$(TYPE) /dev/null $(SHL1LIBS) | $(SED) s\#$(ROUT)\#$(PRJ)/$(ROUT)\#g` \
323        -Wl,--exclude-libs,ALL,--start-group $(SHL1STDLIBS) -Wl,--end-group \
324        $(SHL1STDSHL) $(STDSHL1) $(MISC)/$(@:b)_exp.o $(MINGWSSTDENDOBJ) \
325        -Wl,-Map,$(MISC)/$(@:b).map >> $(MISC)/$(TARGET).$(@:b)_1.cmd
326  .IF "$(VERBOSE)" == "TRUE"
327    @$(TYPE)  $(MISC)/$(TARGET).$(@:b)_1.cmd
328  .ENDIF
329    @+source $(MISC)/$(TARGET).$(@:b)_1.cmd
330.ELSE
331.IF "$(linkinc)"==""
332.IF "$(SHL1USE_EXPORTS)"!="name"
333.IF "$(USE_DEFFILE)"!=""
334    $(COMMAND_ECHO)$(SHL1LINKER) @$(mktmp \
335        $(SHL1LINKFLAGS) \
336        $(LINKFLAGSSHL) \
337        $(SHL1STACK) $(SHL1BASEX)   \
338        -out:$@ \
339        -map:$(MISC)/$(@:b).map \
340        -def:$(SHL1DEF) \
341        $(USE_1IMPLIB) \
342        $(STDOBJ) \
343        $(SHL1VERSIONOBJ) $(SHL1OBJS) \
344        $(SHL1LIBS) \
345        $(SHL1STDLIBS) \
346        $(SHL1STDSHL) $(STDSHL1) \
347        $(SHL1LINKRES) \
348    )
349# double check if target was really written... still making sense?
350    @@$(LS) $@
351    @echo linking $@.manifest ...
352.IF "$(VISTA_MANIFEST)"!=""
353    $(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(MT) $(MTFLAGS) -manifest $@.manifest -manifest $(TRUSTED_MANIFEST_LOCATION)/trustedinfo.manifest -out:$@.tmanifest$(EMQ) $(FI)
354    $(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(MT) $(MTFLAGS) -manifest $@.tmanifest -outputresource:$@$(EMQ);2 $(FI)
355.ELSE
356    $(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(MT) $(MTFLAGS) -manifest $@.manifest -outputresource:$@$(EMQ);2 $(FI)
357.ENDIF # "$(VISTA_MANIFEST)"!=""
358    $(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(RM:s/+//) $@.manifest $(FI)
359    $(COMMAND_ECHO)$(IFEXIST) $@.tmanifest $(THEN) $(RM:s/+//) $@.tmanifest $(FI)
360.ELSE           # "$(USE_DEFFILE)"!=""
361    $(COMMAND_ECHO)$(SHL1LINKER) @$(mktmp   $(SHL1LINKFLAGS)            \
362        $(LINKFLAGSSHL) $(SHL1BASEX)        \
363        $(SHL1STACK) -out:$(SHL1TARGETN)    \
364        -map:$(MISC)/$(@:B).map             \
365        $(LB)/$(SHL1IMPLIB).exp             \
366        $(STDOBJ)                           \
367        $(SHL1OBJS) $(SHL1VERSIONOBJ) \
368        $(SHL1LIBS)                         \
369        $(SHL1STDLIBS)                      \
370        $(SHL1STDSHL) $(STDSHL1)                           \
371        $(SHL1LINKRES) \
372    )
373# double check if target was really written... still making sense?
374    @@$(LS) $@
375    @echo linking $@.manifest ...
376.IF "$(VISTA_MANIFEST)"!=""
377    $(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(MT) $(MTFLAGS) -manifest $@.manifest -manifest $(TRUSTED_MANIFEST_LOCATION)/trustedinfo.manifest -out:$@.tmanifest$(EMQ) $(FI)
378    $(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(MT) $(MTFLAGS) -manifest $@.tmanifest -outputresource:$@$(EMQ);2 $(FI)
379.ELSE
380    $(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(MT) $(MTFLAGS) -manifest $@.manifest -outputresource:$@$(EMQ);2 $(FI)
381.ENDIF # "$(VISTA_MANIFEST)"!=""
382    $(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(RM:s/+//) $@.manifest $(FI)
383    $(COMMAND_ECHO)$(IFEXIST) $@.tmanifest $(THEN) $(RM:s/+//) $@.tmanifest $(FI)
384.ENDIF          # "$(USE_DEFFILE)"!=""
385.ELSE           # "$(SHL1USE_EXPORTS)"!="name"
386    $(COMMAND_ECHO)$(SHL1LINKER) @$(mktmp   $(SHL1LINKFLAGS)            \
387        $(LINKFLAGSSHL) $(SHL1BASEX)        \
388        $(SHL1STACK) -out:$(SHL1TARGETN)    \
389        -map:$(MISC)/$(@:B).map             \
390        $(USE_1IMPLIB) \
391        $(STDOBJ)                           \
392        $(SHL1OBJS) $(SHL1VERSIONOBJ))   \
393        $(SHL1LINKLISTPARAM) \
394        @$(mktmp $(SHL1STDLIBS)                      \
395        $(SHL1STDSHL) $(STDSHL1)                           \
396        $(SHL1LINKRES) \
397    )
398    @echo linking $@.manifest ...
399.IF "$(VISTA_MANIFEST)"!=""
400    $(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(MT) $(MTFLAGS) -manifest $@.manifest -manifest $(TRUSTED_MANIFEST_LOCATION)/trustedinfo.manifest -out:$@.tmanifest$(EMQ) $(FI)
401    $(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(MT) $(MTFLAGS) -manifest $@.tmanifest -outputresource:$@$(EMQ);2 $(FI)
402.ELSE
403    $(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(MT) $(MTFLAGS) -manifest $@.manifest -outputresource:$@$(EMQ);2 $(FI)
404.ENDIF # "$(VISTA_MANIFEST)"!=""
405    $(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(RM:s/+//) $@.manifest $(FI)
406    $(COMMAND_ECHO)$(IFEXIST) $@.tmanifest $(THEN) $(RM:s/+//) $@.tmanifest $(FI)
407.ENDIF          # "$(SHL1USE_EXPORTS)"!="name"
408.ELSE           # "$(linkinc)"==""
409        $(COMMAND_ECHO)-$(RM) del $(MISC)/$(SHL1TARGET).lnk
410        $(COMMAND_ECHO)-$(RM) $(MISC)/$(SHL1TARGET).lst
411        $(COMMAND_ECHO)$(TYPE) $(mktmp \
412        $(SHL1LINKFLAGS) \
413        $(LINKFLAGSSHL) $(SHL1BASEX) \
414        $(SHL1STACK) $(MAPFILE) \
415        -out:$@ \
416        $(LB)/$(SHL1IMPLIB).exp \
417        $(STDOBJ) \
418        $(SHL1OBJS) \
419        $(SHL1STDLIBS) \
420        $(SHL1STDSHL) $(STDSHL1) \
421        $(SHL1LINKRES) \
422        ) >> $(MISC)/$(SHL1TARGET).lnk
423        $(COMMAND_ECHO)$(TYPE) $(MISC)/$(SHL1TARGETN:b)_linkinc.ls  >> $(MISC)/$(SHL1TARGET).lnk
424        $(COMMAND_ECHO)$(SHL1LINKER) @$(MISC)/$(SHL1TARGET).lnk
425        @echo linking $@.manifest ...
426.IF "$(VISTA_MANIFEST)"!=""
427        $(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(MT) $(MTFLAGS) -manifest $@.manifest -manifest $(TRUSTED_MANIFEST_LOCATION)/trustedinfo.manifest -out:$@.tmanifest$(EMQ) $(FI)
428        $(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(MT) $(MTFLAGS) -manifest $@.tmanifest -outputresource:$@$(EMQ);2 $(FI)
429.ELSE
430        $(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(MT) $(MTFLAGS) -manifest $@.manifest -outputresource:$@$(EMQ);2 $(FI)
431.ENDIF # "$(VISTA_MANIFEST)"!=""
432        $(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(RM:s/+//) $@.manifest $(FI)
433        $(COMMAND_ECHO)$(IFEXIST) $@.tmanifest $(THEN) $(RM:s/+//) $@.tmanifest $(FI)
434.ENDIF          # "$(linkinc)"==""
435.ENDIF          # "$(COM)"=="GCC"
436.ENDIF          # "$(GUI)" == "WNT"
437.IF "$(GUI)"=="UNX"
438.IF "$(OS)"=="MACOSX"
439    @-$(RM) $(MISC)/$(@:b).list
440    @-$(RM) $(MISC)/$(TARGET).$(@:b)_1.cmd
441    @echo $(STDSLO) $(SHL1OBJS:s/.obj/.o/) \
442    $(SHL1VERSIONOBJ) \
443    `cat /dev/null $(SHL1LIBS) | sed s\#$(ROUT)\#$(PRJ)/$(ROUT)\#g` | tr -s " " "\n" > $(MISC)/$(@:b).list
444    @echo -n $(SHL1LINKER) $(SHL1LINKFLAGS) $(SHL1VERSIONMAPPARA) $(LINKFLAGSSHL) -L$(PRJ)/$(ROUT)/lib $(SOLARLIB) -o $@ \
445    $(SHL1STDLIBS) $(SHL1ARCHIVES) $(SHL1STDSHL) $(STDSHL1) -filelist $(MISC)/$(@:b).list $(LINKOUTPUT_FILTER) > $(MISC)/$(TARGET).$(@:b)_1.cmd
446    @$(PERL) $(SOLARENV)/bin/macosx-dylib-link-list.pl \
447        `cat $(MISC)/$(TARGET).$(@:b)_1.cmd` \
448        >> $(MISC)/$(TARGET).$(@:b)_1.cmd
449  .IF "$(VERBOSE)" == "TRUE"
450    @cat $(MISC)/$(TARGET).$(@:b)_1.cmd
451  .ENDIF
452    @+source $(MISC)/$(TARGET).$(@:b)_1.cmd
453    @$(PERL) $(SOLARENV)/bin/macosx-change-install-names.pl \
454        shl $(SHL1RPATH) $@
455.IF "$(SHL1CREATEJNILIB)"!=""
456    @echo "Making:   " $(@:f).jnilib
457    @macosx-create-bundle $@
458.ENDIF          # "$(SHL1CREATEJNILIB)"!=""
459.IF "$(UPDATER)"=="YES"
460.IF "$(SHL1NOCHECK)"==""
461    $(SOLARENV)/bin/checkdll.sh -L$(LB) -L$(SOLARLIBDIR) $(EXTRALIBPATHS1) $(SHL1TARGETN)
462.ENDIF              # "$(SHL1NOCHECK)"!=""
463.ENDIF
464.ELSE           # "$(OS)"=="MACOSX"
465    @-$(RM) $(MISC)/$(TARGET).$(@:b)_1.cmd
466    @echo $(SHL1LINKER) $(SHL1LINKFLAGS) $(SHL1SONAME) $(LINKFLAGSSHL) $(SHL1VERSIONMAPPARA) -L$(PRJ)/$(ROUT)/lib $(SOLARLIB) $(STDSLO) $(SHL1OBJS:s/.obj/.o/) \
467    $(SHL1VERSIONOBJ) -o $@ \
468    `cat /dev/null $(SHL1LIBS) | tr -s " " "\n" | $(SED) s\#$(ROUT)\#$(PRJ)/$(ROUT)\#g` \
469    $(SHL1STDLIBS) $(SHL1ARCHIVES) $(SHL1STDSHL) $(STDSHL1) $(LINKOUTPUT_FILTER) > $(MISC)/$(TARGET).$(@:b)_1.cmd
470  .IF "$(VERBOSE)" == "TRUE"
471    @cat $(MISC)/$(TARGET).$(@:b)_1.cmd
472  .ENDIF
473    @+source $(MISC)/$(TARGET).$(@:b)_1.cmd
474.IF "$(UPDATER)"=="YES"
475.IF "$(SHL1NOCHECK)"==""
476    $(COMMAND_ECHO)-$(RM) $(SHL1TARGETN:d)check_$(SHL1TARGETN:f)
477    $(COMMAND_ECHO)$(RENAME) $(SHL1TARGETN) $(SHL1TARGETN:d)check_$(SHL1TARGETN:f)
478.IF "$(VERBOSE)"=="TRUE"
479    $(COMMAND_ECHO)$(SOLARENV)/bin/checkdll.sh -L$(LB) -L$(SOLARLIBDIR) $(EXTRALIBPATHS1) $(SHL1TARGETN:d)check_$(SHL1TARGETN:f)
480.ELSE
481    $(COMMAND_ECHO)$(SOLARENV)/bin/checkdll.sh -L$(LB) -L$(SOLARLIBDIR) $(EXTRALIBPATHS1) -- -s $(SHL1TARGETN:d)check_$(SHL1TARGETN:f)
482.ENDIF
483.ENDIF              # "$(SHL1NOCHECK)"!=""
484.ENDIF          # "$(UPDATER)"=="YES"
485.ENDIF          # "$(OS)"=="MACOSX"
486.IF "$(UNIXVERSIONNAMES)"!=""
487    $(COMMAND_ECHO)$(RM) $(LB)/$(SHL1TARGETN:b)
488    $(COMMAND_ECHO)cd $(LB) && ln -s $(SHL1TARGETN:f) $(SHL1TARGETN:b)
489.ENDIF          # "$(UNIXVERSIONNAMES)"!=""
490.IF "$(VERBOSE)" == "TRUE"
491    @ls -l $@
492.ENDIF
493.ENDIF          # "$(GUI)" == "UNX"
494
495.IF "$(GUI)" == "OS2"
496
497.IF "$(SHL1DEFAULTRES)"!=""
498    @+-$(RM) $(MISC)/$(SHL1DEFAULTRES:b).rc > $(NULLDEV)
499.IF "$(SHL1ICON)" != ""
500    @-+echo 1 ICON $(SHL1ICON) >> $(MISC)/$(SHL1DEFAULTRES:b).rc
501.ENDIF
502.IF "$(use_shl_versions)" != ""
503.IF "$(SHL1ADD_VERINFO)"!=""
504    @-+echo $(EMQ)#include $(EMQ)"$(SHL1ADD_VERINFO)$(EMQ)" >> $(MISC)/$(SHL1DEFAULTRES:b).rc
505.ENDIF          # "$(SHL1ADD_VERINFO)"!=""
506    @-+echo MENU 1 BEGIN END >> $(MISC)/$(SHL1DEFAULTRES:b).rc
507#   @-+echo $(EMQ)RCDATA 1 { "Build string here" }$(EMQ) >> $(MISC)/$(SHL1DEFAULTRES:b).rc
508.ENDIF          # "$(use_shl_versions)" != ""
509# YD 04/07/06 seems null, confuses rc cli: -i $(SOLARTESDIR)
510    $(COMMAND_ECHO)$(RC) -r -DOS2 $(INCLUDE) $(RCLINKFLAGS) $(MISC)/$(SHL1DEFAULTRES:b).rc
511.ENDIF          # "$(SHL1DEFAULTRES)"!=""
512
513.IF "$(SHL1ALLRES)"!=""
514    $(COMMAND_ECHO)+$(TYPE) $(SHL1ALLRES) > $(SHL1LINKRES)
515.ENDIF          # "$(SHL1ALLRES)"!=""
516
517.IF "$(USE_DEFFILE)"!=""
518
519    $(COMMAND_ECHO)$(SHL1LINKER) $(SHL1LINKFLAGS) $(LINKFLAGSSHL) -o $@ \
520        $(SHL1DEF) \
521        $(STDOBJ) \
522        -L$(LB) \
523        -L$(SOLARVERSION)/$(INPATH)/lib \
524        $(SHL1OBJS) $(SHL1VERSIONOBJ) \
525        $(SHL1LIBS) \
526        $(SHL1LINKRES) \
527        $(SHL1STDLIBS) \
528        $(SHL1STDSHL) $(STDSHL1)
529
530.ELSE           # "$(USE_DEFFILE)"!=""
531
532    $(COMMAND_ECHO)$(SHL1LINKER) $(SHL1LINKFLAGS)           \
533        $(LINKFLAGSSHL) $(SHL1BASEX)        \
534        $(SHL1STACK) -o $(SHL1TARGETN)  \
535        $(SHL1DEF) \
536        $(STDOBJ)                           \
537        -L$(LB) \
538        -L$(SOLARVERSION)/$(INPATH)/lib \
539        $(SHL1OBJS) $(SHL1VERSIONOBJ) \
540        $(SHL1LIBS) \
541        $(SHL1LINKRES) \
542        $(SHL1STDLIBS) \
543        $(SHL1STDSHL) $(STDSHL1)
544
545.ENDIF          # "$(USE_DEFFILE)"!=""
546
547    $(COMMAND_ECHO)+$(IMPLIB) -p256 $(IMPLIBFLAGS) $(SHL1IMPLIBN) $@
548    $(COMMAND_ECHO)+$(IMPLIB) -p256 $(IMPLIBFLAGS) $(LB)/$(SHL1TARGET).lib $@
549
550.IF "$(SHL1TARGET8)" != "$(SHL1TARGET)"
551    $(COMMAND_ECHO)+$(COPY) $@ $(@:d)$(SHL1TARGET8).dll
552.ENDIF
553
554.ENDIF          # "$(GUI)" == "OS2"
555
556.ENDIF          # "$(SHL1TARGETN)"!=""
557
558# unroll begin
559
560.IF "$(SHL2TARGETN)"!=""
561
562.IF "$(OS)"=="AIX"
563SHL2STDLIBS=
564.ENDIF
565
566.IF "$(SHLLINKARCONLY)" != ""
567SHL2STDLIBS=
568STDSHL=
569.ELSE
570SHL2ARCHIVES=
571.ENDIF
572
573# decide how to link
574.IF "$(SHL2CODETYPE)"=="C"
575SHL2LINKER=$(LINKC)
576SHL2STDSHL=$(subst,CPPRUNTIME, $(STDSHL))
577SHL2LINKFLAGS+=$(LINKCFLAGS)
578.ELSE           # "$(SHL2CODETYPE)"=="C"
579SHL2LINKER=$(LINK)
580SHL2STDSHL=$(subst,CPPRUNTIME,$(STDLIBCPP) $(STDSHL))
581SHL2LINKFLAGS+=$(LINKFLAGS)
582.ENDIF          # "$(SHL2CODETYPE)"=="C"
583
584SHL2RPATH*=OOO
585LINKFLAGSRUNPATH_$(SHL2RPATH)*=/ERROR:/Bad_SHL2RPATH_value
586SHL2LINKFLAGS+=$(LINKFLAGSRUNPATH_$(SHL2RPATH))
587
588.IF "$(SHL2USE_EXPORTS)"==""
589SHL2DEF*=$(MISC)/$(SHL2TARGET).def
590.ENDIF          # "$(SHL2USE_EXPORTS)"==""
591
592EXTRALIBPATHS2=$(EXTRALIBPATHS)
593.IF "$(UPDATER)"=="YES"
594.IF "$(SHL2NOCHECK)"==""
595.IF "$(SOLAR_STLLIBPATH)"!=""
596EXTRALIBPATHS2+=-L$(SOLAR_STLLIBPATH)
597.ENDIF
598.ENDIF              # "$(SHL2NOCHECK)"!=""
599.ENDIF
600#+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
601#+++++++++++    version object      ++++++++++++++++++++++++++++++++++++++++
602#+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
603
604.IF "$(L10N_framework)"==""
605.IF "$(VERSIONOBJ)"!=""
606SHL2VERSIONOBJ:=$(VERSIONOBJ:d){$(subst,$(DLLPOSTFIX),_dflt $(SHL2TARGET))}$(VERSIONOBJ:f)
607USE_VERSIONH:=$(INCCOM)/$(SHL2VERSIONOBJ:b).h
608.IF "$(GUI)" == "UNX"
609SHL2VERSIONOBJDEP:=$(VERSIONOBJ:d){$(subst,$(DLLPOSTFIX),_dflt $(SHL2TARGET))}$(VERSIONOBJ:f:s/.o/.obj/)
610.ELSE           # "$(GUI)" == "UNX"
611SHL2VERSIONOBJDEP:=$(VERSIONOBJ:d){$(subst,$(DLLPOSTFIX),_dflt $(SHL2TARGET))}$(VERSIONOBJ:f)
612.ENDIF          # "$(GUI)" == "UNX"
613$(MISC)/$(SHL2VERSIONOBJ:b).c : $(SOLARENV)/src/version.c $(INCCOM)/$(SHL2VERSIONOBJ:b).h
614#    $(COPY) $(SOLARENV)/src/version.c $@
615    $(COMMAND_ECHO)$(TYPE) $(SOLARENV)/src/version.c | $(SED) s/_version.h/$(SHL2VERSIONOBJ:b).h/ > $@
616
617.INIT : $(SHL2VERSIONOBJDEP)
618.ENDIF          # "$(VERSIONOBJ)"!=""
619.ENDIF
620
621.IF "$(GUI)" != "UNX"
622.IF "$(GUI)" == "WNT" || "$(GUI)" == "OS2"
623.IF "$(SHL2IMPLIB)" == ""
624SHL2IMPLIB=i$(TARGET)_t2
625.ENDIF          # "$(SHL2IMPLIB)" == ""
626.IF "$(COM)" != "GCC"
627USE_2IMPLIB=-implib:$(LB)/$(SHL2IMPLIB).lib
628.ENDIF          # "$(COM)" != "GCC"
629SHL2IMPLIBN=$(LB)/$(SHL2IMPLIB).lib
630ALLTAR : $(SHL2IMPLIBN)
631
632.IF "$(USE_DEFFILE)"==""
633USE_2IMPLIB_DEPS=$(LB)/$(SHL2IMPLIB).lib
634.ENDIF          # "$(USE_DEFFILE)"==""
635.ENDIF          # "$(GUI)" == "WNT" || "$(GUI)" == "OS2"
636USE_SHL2DEF=$(SHL2DEF)
637.ELSE           # "$(GUI)" != "UNX"
638USE_SHL2DEF=
639SHL2DEPN+:=$(SHL2DEPNU)
640
641.IF "$(SHL2VERSIONMAP)"==""
642# to activate vmaps remove "#"
643USE_SHL2VERSIONMAP=$(MISC)/$(SHL2TARGET).vmap
644.ENDIF          # "$(SHL2VERSIONMAP)"==""
645
646.IF "$(USE_SHL2VERSIONMAP)"!=""
647
648.IF "$(SHL2FILTERFILE)"!=""
649.IF "$(SHL2VERSIONMAP)"!=""
650#eine von beiden ist zuviel
651USE_SHL2VERSIONMAP=$(MISC)/$(SHL2TARGET).vmap
652$(USE_SHL2VERSIONMAP) .PHONY:
653    @echo -----------------------------
654    @echo you should only use versionmap OR exportfile
655    @echo -----------------------------
656#   force_dmake_to_error
657
658.ENDIF          # "$(SHL2VERSIONMAP)"!=""
659
660SHL2VERSIONMAPPARA=$(LINKVERSIONMAPFLAG) $(USE_SHL2VERSIONMAP)
661
662$(USE_SHL2VERSIONMAP): \
663                    $(SHL2OBJS)\
664                    $(SHL2LIBS)\
665                    $(SHL2FILTERFILE)
666    @$(RM) $@.dump
667.IF "$(SHL2OBJS)"!=""
668# dump remaining objects on the fly
669.IF "$(OS)"=="MACOSX"
670    @-nm $(SHL2OBJS:s/.obj/.o/) > $@.dump
671.ELSE
672    @nm $(SHL2OBJS:s/.obj/.o/) > $@.dump
673.ENDIF
674.ENDIF          # "$(SHL2OBJS)!"=""
675    @$(TYPE) /dev/null $(SHL2LIBS:s/.lib/.dump/) >> $@.dump
676    $(COMMAND_ECHO) $(PERL) $(SOLARENV)/bin/mapgen.pl -d $@.dump -s $(SHL2INTERFACE) -f $(SHL2FILTERFILE) -m $@
677
678.ELSE           # "$(SHL2FILTERFILE)"!=""
679USE_SHL2VERSIONMAP=$(MISC)/$(SHL2TARGET).vmap
680$(USE_SHL2VERSIONMAP) :
681.IF "$(VERBOSE)" == "TRUE"
682    @echo -----------------------------
683    @echo SHL2FILTERFILE not set!
684    @echo -----------------------------
685    @$(TOUCH) $@
686    @echo dummy file to keep the dependencies for later use.
687.ELSE
688    @$(TOUCH) $@
689.ENDIF
690#   force_dmake_to_error
691.ENDIF          # "$(SHL2FILTERFILE)"!=""
692.ELSE           # "$(USE_SHL2VERSIONMAP)"!=""
693
694#and now for the plain non-generic way...
695.IF "$(SHL2VERSIONMAP)"!=""
696USE_SHL2VERSIONMAP=$(MISC)/$(SHL2VERSIONMAP:b)_$(SHL2TARGET)$(SHL2VERSIONMAP:e)
697SHL2VERSIONMAPPARA=$(LINKVERSIONMAPFLAG) $(USE_SHL2VERSIONMAP)
698
699.IF "$(OS)"=="MACOSX"
700$(USE_SHL2VERSIONMAP): $(SHL2OBJS) $(SHL2LIBS)
701.ENDIF
702
703# .ERRREMOVE is needed as a recipe line like "$(AWK) ... > $@" would create $@
704# even if the $(AWK) part fails:
705$(USE_SHL2VERSIONMAP) .ERRREMOVE: $(SHL2VERSIONMAP)
706    @@-$(RM) -f $@
707# The following files will only be generated and needed on Mac OS X as temporary files
708# in order to generate exported symbols list out of Linux/Solaris map files
709.IF "$(OS)"=="MACOSX"
710    @-$(RM) -f $@.symregexp >& $(NULLDEV)
711    @-$(RM) -f $@.expsymlist >& $(NULLDEV)
712.ENDIF
713# Its questionable if the following condition '.IF "$(COMID)"=="gcc3"' makes sense and what
714# happens if somebody will change it in the future
715.IF "$(COMID)"=="gcc3"
716    $(COMMAND_ECHO) tr -d "\015" < $(SHL2VERSIONMAP) | $(AWK) -f $(SOLARENV)/bin/addsym.awk > $@
717.ELIF "$(COMNAME)"=="sunpro5"
718    $(COMMAND_ECHO) tr -d "\015" < $(SHL2VERSIONMAP) | $(GREP) -v $(IGNORE_SYMBOLS) > $@
719.ELSE           # "$(COMID)"=="gcc3"
720    $(COMMAND_ECHO) tr -d "\015" < $(SHL2VERSIONMAP) > $@
721.ENDIF          # "$(COMID)"=="gcc3"
722    @chmod a+w $@
723# Mac OS X post-processing generate an exported symbols list from the generated map file
724# for details on exported symbols list see man ld on Mac OS X
725.IF "$(OS)"=="MACOSX"
726    @-cat $@ | $(AWK) -f $(SOLARENV)/bin/unxmap-to-macosx-explist.awk | grep -v "\*\|?" > $@.exported-symbols
727    @-cat $@ | $(AWK) -f $(SOLARENV)/bin/unxmap-to-macosx-explist.awk | grep "\*\|?" > $@.symbols-regexp
728# Shared libraries will be build out of the *.obj files specified in SHL?OBJS and SHL?LIBS
729# Extract RTTI symbols from all the objects that will be used to build a shared library
730.IF "$(SHL2OBJS)"!=""
731    -echo $(foreach,i,$(SHL2OBJS:s/.obj/.o/) $i) | xargs -n1 nm -gx | $(SOLARENV)/bin/addsym-macosx.sh $@.symbols-regexp $@.symbols-regexp.tmp >> $@.exported-symbols
732.ENDIF
733.IF "$(SHL2LIBS)"!=""
734    $(COMMAND_ECHO)-$(TYPE) $(foreach,j,$(SHL2LIBS) $j) | $(SED) s\#$(ROUT)\#$(PRJ)/$(ROUT)\#g | xargs -n1 nm -gx | $(SOLARENV)/bin/addsym-macosx.sh $@.symbols-regexp $@.symbols-regexp.tmp >> $@.exported-symbols
735.ENDIF
736# overwrite the map file generate into the local output tree with the generated
737# exported symbols list
738    cp $@.exported-symbols $@
739.ENDIF # .IF "$(OS)"=="MACOSX"
740.ENDIF          # "$(SHL2VERSIONMAP)"!=""
741.ENDIF          # "$(USE_SHL2VERSIONMAP)"!=""
742.ENDIF          # "$(GUI)" != "UNX"
743
744.IF "$(UNIXVERSIONNAMES)"!=""
745.IF "$(OS)"!="MACOSX"
746.IF "$(GUI)"=="UNX"
747SHL2SONAME=\"$(SONAME_SWITCH)$(SHL2TARGETN:f)\"
748.ENDIF          # "$(GUI)"!="UNX"
749.ENDIF          # "$(OS)"!="MACOSX"
750.ENDIF          # "$(UNIXVERSIONNAMES)"!=""
751
752.IF "$(SHL2RES)"!=""
753SHL2ALLRES+=$(SHL2RES)
754SHL2LINKRES*=$(MISC)/$(SHL2TARGET).res
755SHL2LINKRESO*=$(MISC)/$(SHL2TARGET)_res.o
756.ENDIF          # "$(SHL2RES)"!=""
757
758.IF "$(SHL2DEFAULTRES)$(use_shl_versions)"!=""
759SHL2DEFAULTRES*=$(MISC)/$(SHL2TARGET)_def.res
760SHL2ALLRES+=$(SHL2DEFAULTRES)
761SHL2LINKRES*=$(MISC)/$(SHL2TARGET).res
762SHL2LINKRESO*=$(MISC)/$(SHL2TARGET)_res.o
763.ENDIF          # "$(SHL2DEFAULTRES)$(use_shl_versions)"!=""
764
765#.IF "$(SHL2TARGETN)"!=""
766
767.IF "$(linkinc)"!=""
768.IF "$(GUI)"=="WNT" || "$(GUI)" == "OS2"
769.IF "$(SHL2LIBS)"!=""
770$(MISC)/$(SHL2TARGET)_linkinc.ls .PHONY:
771    @@-$(RM) $@
772    $(COMMAND_ECHO)$(SED) -f $(SOLARENV)/bin/chrel.sed $(foreach,i,$(SHL2LIBS) $(i:s/.lib/.lin/)) >> $@
773.ENDIF          # "$(SHL2LIBS)"!=""
774.ENDIF
775
776LINKINCTARGETS+=$(MISC)/$(SHL2TARGETN:b)_linkinc.ls
777$(SHL2TARGETN) : $(LINKINCTARGETS)
778
779.ELSE
780.IF "$(SHL2USE_EXPORTS)"=="name"
781.IF "$(GUI)"=="WNT" || "$(GUI)" == "OS2"
782.IF "$(COM)"!="GCC"
783.IF "$(SHL2LIBS)"!=""
784SHL2LINKLIST=$(MISC)/$(SHL2TARGET)_link.lst
785SHL2LINKLISTPARAM=@$(SHL2LINKLIST)
786$(SHL2LINKLIST) : $(SHL2LIBS)
787    @@-$(RM) $@
788    $(COMMAND_ECHO)$(SED) -f $(SOLARENV)/bin/chrel.sed $(foreach,i,$(SHL2LIBS) $(i:s/.lib/.lin/)) >> $@
789.ENDIF          # "$(SHL2LIBS)"!=""
790.ENDIF          # "$(COM)"!="GCC"
791.ENDIF
792.ENDIF          # "$(SHL2USE_EXPORTS)"=="name"
793
794$(MISC)/%linkinc.ls:
795    @echo . > $@
796.ENDIF          # "$(linkinc)"!=""
797
798.IF "$(GUI)" == "OS2"
799#21/02/2006 YD dll names must be 8.3, invoke fix script
800#check osl/os2/module.c/osl_loadModule()
801SHL2TARGET8=$(shell @fix_shl.cmd $(SHL2TARGET))
802.ENDIF
803
804
805$(SHL2TARGETN) : \
806                    $(SHL2OBJS)\
807                    $(SHL2LIBS)\
808                    $(USE_2IMPLIB_DEPS)\
809                    $(USE_SHL2DEF)\
810                    $(USE_SHL2VERSIONMAP)\
811                    $(SHL2RES)\
812                    $(SHL2DEPN) \
813                    $(SHL2LINKLIST)
814    @echo "Making:   " $(@:f)
815.IF "$(GUI)" == "WNT"
816.IF "$(SHL2DEFAULTRES)"!=""
817    @@-$(RM) $(MISC)/$(SHL2DEFAULTRES:b).rc
818.IF "$(SHL2ICON)" != ""
819    @echo 1 ICON $(SHL2ICON) >> $(MISC)/$(SHL2DEFAULTRES:b).rc
820.ENDIF
821.IF "$(use_shl_versions)" != ""
822.IF "$(SHL2ADD_VERINFO)"!=""
823    @echo $(EMQ)#include $(EMQ)"$(SHL2ADD_VERINFO)$(EMQ)" >> $(MISC)/$(SHL2DEFAULTRES:b).rc
824.ELSE           # "$(SHL2ADD_VERINFO)"!=""
825    @echo $(EMQ)#define ADDITIONAL_VERINFO1 >> $(MISC)/$(SHL2DEFAULTRES:b).rc
826    @echo $(EMQ)#define ADDITIONAL_VERINFO2 >> $(MISC)/$(SHL2DEFAULTRES:b).rc
827    @echo $(EMQ)#define ADDITIONAL_VERINFO3 >> $(MISC)/$(SHL2DEFAULTRES:b).rc
828.ENDIF          # "$(SHL2ADD_VERINFO)"!=""
829    @echo $(EMQ)#define VERVARIANT  $(BUILD) >> $(MISC)/$(SHL2DEFAULTRES:b).rc
830    @echo $(EMQ)#define ORG_NAME    $(SHL2TARGET)$(DLLPOST) >> $(MISC)/$(SHL2DEFAULTRES:b).rc
831    @echo $(EMQ)#define INTERNAL_NAME $(SHL2TARGET:b) >> $(MISC)/$(SHL2DEFAULTRES:b).rc
832    @echo $(EMQ)#include $(EMQ)"shlinfo.rc$(EMQ)" >> $(MISC)/$(SHL2DEFAULTRES:b).rc
833.ENDIF          # "$(use_shl_versions)" != ""
834    $(COMMAND_ECHO)$(RC) -DWIN32 $(INCLUDE) $(RCLINKFLAGS) $(MISC)/$(SHL2DEFAULTRES:b).rc
835.ENDIF          # "$(SHL2DEFAULTRES)"!=""
836.IF "$(SHL2ALLRES)"!=""
837    $(COMMAND_ECHO)$(TYPE) $(SHL2ALLRES) > $(SHL2LINKRES)
838.IF "$(COM)"=="GCC"
839    windres $(SHL2LINKRES) $(SHL2LINKRESO)
840.ENDIF          # "$(COM)"=="GCC"
841.ENDIF          # "$(SHL2ALLRES)"!=""
842.IF "$(COM)"=="GCC" # always have to call dlltool explicitly as ld cannot handle # comment in .def
843    @echo dlltool --dllname $(SHL2TARGET)$(DLLPOST) \
844        --kill-at \\ > $(MISC)/$(TARGET).$(@:b)_2.cmd
845    @noop $(assign ALL2OBJLIST:=$(STDOBJ) $(SHL2OBJS) $(SHL2LINKRESO) $(shell $(TYPE) /dev/null $(SHL2LIBS) | $(SED) s?$(ROUT)?$(PRJ)/$(ROUT)?g))
846.IF "$(DEFLIB2NAME)"!=""    # do not have to include objs
847    @noop $(assign DEF2OBJLIST:=$(shell $(TYPE) $(foreach,i,$(DEFLIB2NAME) $(SLB)/$(i).lib) | sed s?$(ROUT)?$(PRJ)/$(ROUT)?g))
848    @noop $(foreach,i,$(DEF2OBJLIST) $(assign ALL2OBJLIST:=$(ALL2OBJLIST:s?$i??)))
849.ENDIF          # "$(DEFLIB2NAME)"!=""
850    @echo   --output-exp $(MISC)/$(@:b)_exp.o \\ >> $(MISC)/$(TARGET).$(@:b)_2.cmd
851.IF "$(SHL2DEF)"!=""
852    @echo   --input-def $(SHL2DEF) \\ >> $(MISC)/$(TARGET).$(@:b)_2.cmd
853.ELSE
854    @echo   $(SHL2VERSIONOBJ) $(SHL2DESCRIPTIONOBJ) \\ >> $(MISC)/$(TARGET).$(@:b)_2.cmd
855.ENDIF
856    @echo   $(ALL2OBJLIST) >> $(MISC)/$(TARGET).$(@:b)_2.cmd
857    @echo $(LINK) $(LINKFLAGS) $(LINKFLAGSSHL) $(MINGWSSTDOBJ) -o $@ \
858        $(STDOBJ) $(SHL2VERSIONOBJ) $(SHL2DESCRIPTIONOBJ) $(SHL2OBJS) $(SHL2LINKRESO) \
859        `$(TYPE) /dev/null $(SHL2LIBS) | $(SED) s\#$(ROUT)\#$(PRJ)/$(ROUT)\#g` \
860        -Wl,--exclude-libs,ALL,--start-group $(SHL2STDLIBS) -Wl,--end-group \
861        $(SHL2STDSHL) $(STDSHL2) $(MISC)/$(@:b)_exp.o $(MINGWSSTDENDOBJ) \
862        -Wl,-Map,$(MISC)/$(@:b).map >> $(MISC)/$(TARGET).$(@:b)_2.cmd
863  .IF "$(VERBOSE)" == "TRUE"
864    @$(TYPE)  $(MISC)/$(TARGET).$(@:b)_2.cmd
865  .ENDIF
866    @+source $(MISC)/$(TARGET).$(@:b)_2.cmd
867.ELSE
868.IF "$(linkinc)"==""
869.IF "$(SHL2USE_EXPORTS)"!="name"
870.IF "$(USE_DEFFILE)"!=""
871    $(COMMAND_ECHO)$(SHL2LINKER) @$(mktmp \
872        $(SHL2LINKFLAGS) \
873        $(LINKFLAGSSHL) \
874        $(SHL2STACK) $(SHL2BASEX)   \
875        -out:$@ \
876        -map:$(MISC)/$(@:b).map \
877        -def:$(SHL2DEF) \
878        $(USE_2IMPLIB) \
879        $(STDOBJ) \
880        $(SHL2VERSIONOBJ) $(SHL2OBJS) \
881        $(SHL2LIBS) \
882        $(SHL2STDLIBS) \
883        $(SHL2STDSHL) $(STDSHL2) \
884        $(SHL2LINKRES) \
885    )
886# double check if target was really written... still making sense?
887    @@$(LS) $@
888    @echo linking $@.manifest ...
889.IF "$(VISTA_MANIFEST)"!=""
890    $(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(MT) $(MTFLAGS) -manifest $@.manifest -manifest $(TRUSTED_MANIFEST_LOCATION)/trustedinfo.manifest -out:$@.tmanifest$(EMQ) $(FI)
891    $(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(MT) $(MTFLAGS) -manifest $@.tmanifest -outputresource:$@$(EMQ);2 $(FI)
892.ELSE
893    $(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(MT) $(MTFLAGS) -manifest $@.manifest -outputresource:$@$(EMQ);2 $(FI)
894.ENDIF # "$(VISTA_MANIFEST)"!=""
895    $(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(RM:s/+//) $@.manifest $(FI)
896    $(COMMAND_ECHO)$(IFEXIST) $@.tmanifest $(THEN) $(RM:s/+//) $@.tmanifest $(FI)
897.ELSE           # "$(USE_DEFFILE)"!=""
898    $(COMMAND_ECHO)$(SHL2LINKER) @$(mktmp   $(SHL2LINKFLAGS)            \
899        $(LINKFLAGSSHL) $(SHL2BASEX)        \
900        $(SHL2STACK) -out:$(SHL2TARGETN)    \
901        -map:$(MISC)/$(@:B).map             \
902        $(LB)/$(SHL2IMPLIB).exp             \
903        $(STDOBJ)                           \
904        $(SHL2OBJS) $(SHL2VERSIONOBJ) \
905        $(SHL2LIBS)                         \
906        $(SHL2STDLIBS)                      \
907        $(SHL2STDSHL) $(STDSHL2)                           \
908        $(SHL2LINKRES) \
909    )
910# double check if target was really written... still making sense?
911    @@$(LS) $@
912    @echo linking $@.manifest ...
913.IF "$(VISTA_MANIFEST)"!=""
914    $(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(MT) $(MTFLAGS) -manifest $@.manifest -manifest $(TRUSTED_MANIFEST_LOCATION)/trustedinfo.manifest -out:$@.tmanifest$(EMQ) $(FI)
915    $(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(MT) $(MTFLAGS) -manifest $@.tmanifest -outputresource:$@$(EMQ);2 $(FI)
916.ELSE
917    $(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(MT) $(MTFLAGS) -manifest $@.manifest -outputresource:$@$(EMQ);2 $(FI)
918.ENDIF # "$(VISTA_MANIFEST)"!=""
919    $(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(RM:s/+//) $@.manifest $(FI)
920    $(COMMAND_ECHO)$(IFEXIST) $@.tmanifest $(THEN) $(RM:s/+//) $@.tmanifest $(FI)
921.ENDIF          # "$(USE_DEFFILE)"!=""
922.ELSE           # "$(SHL2USE_EXPORTS)"!="name"
923    $(COMMAND_ECHO)$(SHL2LINKER) @$(mktmp   $(SHL2LINKFLAGS)            \
924        $(LINKFLAGSSHL) $(SHL2BASEX)        \
925        $(SHL2STACK) -out:$(SHL2TARGETN)    \
926        -map:$(MISC)/$(@:B).map             \
927        $(USE_2IMPLIB) \
928        $(STDOBJ)                           \
929        $(SHL2OBJS) $(SHL2VERSIONOBJ))   \
930        $(SHL2LINKLISTPARAM) \
931        @$(mktmp $(SHL2STDLIBS)                      \
932        $(SHL2STDSHL) $(STDSHL2)                           \
933        $(SHL2LINKRES) \
934    )
935    @echo linking $@.manifest ...
936.IF "$(VISTA_MANIFEST)"!=""
937    $(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(MT) $(MTFLAGS) -manifest $@.manifest -manifest $(TRUSTED_MANIFEST_LOCATION)/trustedinfo.manifest -out:$@.tmanifest$(EMQ) $(FI)
938    $(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(MT) $(MTFLAGS) -manifest $@.tmanifest -outputresource:$@$(EMQ);2 $(FI)
939.ELSE
940    $(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(MT) $(MTFLAGS) -manifest $@.manifest -outputresource:$@$(EMQ);2 $(FI)
941.ENDIF # "$(VISTA_MANIFEST)"!=""
942    $(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(RM:s/+//) $@.manifest $(FI)
943    $(COMMAND_ECHO)$(IFEXIST) $@.tmanifest $(THEN) $(RM:s/+//) $@.tmanifest $(FI)
944.ENDIF          # "$(SHL2USE_EXPORTS)"!="name"
945.ELSE           # "$(linkinc)"==""
946        $(COMMAND_ECHO)-$(RM) del $(MISC)/$(SHL2TARGET).lnk
947        $(COMMAND_ECHO)-$(RM) $(MISC)/$(SHL2TARGET).lst
948        $(COMMAND_ECHO)$(TYPE) $(mktmp \
949        $(SHL2LINKFLAGS) \
950        $(LINKFLAGSSHL) $(SHL2BASEX) \
951        $(SHL2STACK) $(MAPFILE) \
952        -out:$@ \
953        $(LB)/$(SHL2IMPLIB).exp \
954        $(STDOBJ) \
955        $(SHL2OBJS) \
956        $(SHL2STDLIBS) \
957        $(SHL2STDSHL) $(STDSHL2) \
958        $(SHL2LINKRES) \
959        ) >> $(MISC)/$(SHL2TARGET).lnk
960        $(COMMAND_ECHO)$(TYPE) $(MISC)/$(SHL2TARGETN:b)_linkinc.ls  >> $(MISC)/$(SHL2TARGET).lnk
961        $(COMMAND_ECHO)$(SHL2LINKER) @$(MISC)/$(SHL2TARGET).lnk
962        @echo linking $@.manifest ...
963.IF "$(VISTA_MANIFEST)"!=""
964        $(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(MT) $(MTFLAGS) -manifest $@.manifest -manifest $(TRUSTED_MANIFEST_LOCATION)/trustedinfo.manifest -out:$@.tmanifest$(EMQ) $(FI)
965        $(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(MT) $(MTFLAGS) -manifest $@.tmanifest -outputresource:$@$(EMQ);2 $(FI)
966.ELSE
967        $(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(MT) $(MTFLAGS) -manifest $@.manifest -outputresource:$@$(EMQ);2 $(FI)
968.ENDIF # "$(VISTA_MANIFEST)"!=""
969        $(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(RM:s/+//) $@.manifest $(FI)
970        $(COMMAND_ECHO)$(IFEXIST) $@.tmanifest $(THEN) $(RM:s/+//) $@.tmanifest $(FI)
971.ENDIF          # "$(linkinc)"==""
972.ENDIF          # "$(COM)"=="GCC"
973.ENDIF          # "$(GUI)" == "WNT"
974.IF "$(GUI)"=="UNX"
975.IF "$(OS)"=="MACOSX"
976    @-$(RM) $(MISC)/$(@:b).list
977    @-$(RM) $(MISC)/$(TARGET).$(@:b)_2.cmd
978    @echo $(STDSLO) $(SHL2OBJS:s/.obj/.o/) \
979    $(SHL2VERSIONOBJ) \
980    `cat /dev/null $(SHL2LIBS) | sed s\#$(ROUT)\#$(PRJ)/$(ROUT)\#g` | tr -s " " "\n" > $(MISC)/$(@:b).list
981    @echo -n $(SHL2LINKER) $(SHL2LINKFLAGS) $(SHL2VERSIONMAPPARA) $(LINKFLAGSSHL) -L$(PRJ)/$(ROUT)/lib $(SOLARLIB) -o $@ \
982    $(SHL2STDLIBS) $(SHL2ARCHIVES) $(SHL2STDSHL) $(STDSHL2) -filelist $(MISC)/$(@:b).list $(LINKOUTPUT_FILTER) > $(MISC)/$(TARGET).$(@:b)_2.cmd
983    @$(PERL) $(SOLARENV)/bin/macosx-dylib-link-list.pl \
984        `cat $(MISC)/$(TARGET).$(@:b)_2.cmd` \
985        >> $(MISC)/$(TARGET).$(@:b)_2.cmd
986  .IF "$(VERBOSE)" == "TRUE"
987    @cat $(MISC)/$(TARGET).$(@:b)_2.cmd
988  .ENDIF
989    @+source $(MISC)/$(TARGET).$(@:b)_2.cmd
990    @$(PERL) $(SOLARENV)/bin/macosx-change-install-names.pl \
991        shl $(SHL2RPATH) $@
992.IF "$(SHL2CREATEJNILIB)"!=""
993    @echo "Making:   " $(@:f).jnilib
994    @macosx-create-bundle $@
995.ENDIF          # "$(SHL2CREATEJNILIB)"!=""
996.IF "$(UPDATER)"=="YES"
997.IF "$(SHL2NOCHECK)"==""
998    $(SOLARENV)/bin/checkdll.sh -L$(LB) -L$(SOLARLIBDIR) $(EXTRALIBPATHS2) $(SHL2TARGETN)
999.ENDIF              # "$(SHL2NOCHECK)"!=""
1000.ENDIF
1001.ELSE           # "$(OS)"=="MACOSX"
1002    @-$(RM) $(MISC)/$(TARGET).$(@:b)_2.cmd
1003    @echo $(SHL2LINKER) $(SHL2LINKFLAGS) $(SHL2SONAME) $(LINKFLAGSSHL) $(SHL2VERSIONMAPPARA) -L$(PRJ)/$(ROUT)/lib $(SOLARLIB) $(STDSLO) $(SHL2OBJS:s/.obj/.o/) \
1004    $(SHL2VERSIONOBJ) -o $@ \
1005    `cat /dev/null $(SHL2LIBS) | tr -s " " "\n" | $(SED) s\#$(ROUT)\#$(PRJ)/$(ROUT)\#g` \
1006    $(SHL2STDLIBS) $(SHL2ARCHIVES) $(SHL2STDSHL) $(STDSHL2) $(LINKOUTPUT_FILTER) > $(MISC)/$(TARGET).$(@:b)_2.cmd
1007  .IF "$(VERBOSE)" == "TRUE"
1008    @cat $(MISC)/$(TARGET).$(@:b)_2.cmd
1009  .ENDIF
1010    @+source $(MISC)/$(TARGET).$(@:b)_2.cmd
1011.IF "$(UPDATER)"=="YES"
1012.IF "$(SHL2NOCHECK)"==""
1013    $(COMMAND_ECHO)-$(RM) $(SHL2TARGETN:d)check_$(SHL2TARGETN:f)
1014    $(COMMAND_ECHO)$(RENAME) $(SHL2TARGETN) $(SHL2TARGETN:d)check_$(SHL2TARGETN:f)
1015.IF "$(VERBOSE)"=="TRUE"
1016    $(COMMAND_ECHO)$(SOLARENV)/bin/checkdll.sh -L$(LB) -L$(SOLARLIBDIR) $(EXTRALIBPATHS2) $(SHL2TARGETN:d)check_$(SHL2TARGETN:f)
1017.ELSE
1018    $(COMMAND_ECHO)$(SOLARENV)/bin/checkdll.sh -L$(LB) -L$(SOLARLIBDIR) $(EXTRALIBPATHS2) -- -s $(SHL2TARGETN:d)check_$(SHL2TARGETN:f)
1019.ENDIF
1020.ENDIF              # "$(SHL2NOCHECK)"!=""
1021.ENDIF          # "$(UPDATER)"=="YES"
1022.ENDIF          # "$(OS)"=="MACOSX"
1023.IF "$(UNIXVERSIONNAMES)"!=""
1024    $(COMMAND_ECHO)$(RM) $(LB)/$(SHL2TARGETN:b)
1025    $(COMMAND_ECHO)cd $(LB) && ln -s $(SHL2TARGETN:f) $(SHL2TARGETN:b)
1026.ENDIF          # "$(UNIXVERSIONNAMES)"!=""
1027.IF "$(VERBOSE)" == "TRUE"
1028    @ls -l $@
1029.ENDIF
1030.ENDIF          # "$(GUI)" == "UNX"
1031
1032.IF "$(GUI)" == "OS2"
1033
1034.IF "$(SHL2DEFAULTRES)"!=""
1035    @+-$(RM) $(MISC)/$(SHL2DEFAULTRES:b).rc > $(NULLDEV)
1036.IF "$(SHL2ICON)" != ""
1037    @-+echo 1 ICON $(SHL2ICON) >> $(MISC)/$(SHL2DEFAULTRES:b).rc
1038.ENDIF
1039.IF "$(use_shl_versions)" != ""
1040.IF "$(SHL2ADD_VERINFO)"!=""
1041    @-+echo $(EMQ)#include $(EMQ)"$(SHL2ADD_VERINFO)$(EMQ)" >> $(MISC)/$(SHL2DEFAULTRES:b).rc
1042.ENDIF          # "$(SHL2ADD_VERINFO)"!=""
1043    @-+echo MENU 1 BEGIN END >> $(MISC)/$(SHL2DEFAULTRES:b).rc
1044#   @-+echo $(EMQ)RCDATA 1 { "Build string here" }$(EMQ) >> $(MISC)/$(SHL2DEFAULTRES:b).rc
1045.ENDIF          # "$(use_shl_versions)" != ""
1046# YD 04/07/06 seems null, confuses rc cli: -i $(SOLARTESDIR)
1047    $(COMMAND_ECHO)$(RC) -r -DOS2 $(INCLUDE) $(RCLINKFLAGS) $(MISC)/$(SHL2DEFAULTRES:b).rc
1048.ENDIF          # "$(SHL2DEFAULTRES)"!=""
1049
1050.IF "$(SHL2ALLRES)"!=""
1051    $(COMMAND_ECHO)+$(TYPE) $(SHL2ALLRES) > $(SHL2LINKRES)
1052.ENDIF          # "$(SHL2ALLRES)"!=""
1053
1054.IF "$(USE_DEFFILE)"!=""
1055
1056    $(COMMAND_ECHO)$(SHL2LINKER) $(SHL2LINKFLAGS) $(LINKFLAGSSHL) -o $@ \
1057        $(SHL2DEF) \
1058        $(STDOBJ) \
1059        -L$(LB) \
1060        -L$(SOLARVERSION)/$(INPATH)/lib \
1061        $(SHL2OBJS) $(SHL2VERSIONOBJ) \
1062        $(SHL2LIBS) \
1063        $(SHL2LINKRES) \
1064        $(SHL2STDLIBS) \
1065        $(SHL2STDSHL) $(STDSHL2)
1066
1067.ELSE           # "$(USE_DEFFILE)"!=""
1068
1069    $(COMMAND_ECHO)$(SHL2LINKER) $(SHL2LINKFLAGS)           \
1070        $(LINKFLAGSSHL) $(SHL2BASEX)        \
1071        $(SHL2STACK) -o $(SHL2TARGETN)  \
1072        $(SHL2DEF) \
1073        $(STDOBJ)                           \
1074        -L$(LB) \
1075        -L$(SOLARVERSION)/$(INPATH)/lib \
1076        $(SHL2OBJS) $(SHL2VERSIONOBJ) \
1077        $(SHL2LIBS) \
1078        $(SHL2LINKRES) \
1079        $(SHL2STDLIBS) \
1080        $(SHL2STDSHL) $(STDSHL2)
1081
1082.ENDIF          # "$(USE_DEFFILE)"!=""
1083
1084    $(COMMAND_ECHO)+$(IMPLIB) -p256 $(IMPLIBFLAGS) $(SHL2IMPLIBN) $@
1085    $(COMMAND_ECHO)+$(IMPLIB) -p256 $(IMPLIBFLAGS) $(LB)/$(SHL2TARGET).lib $@
1086
1087.IF "$(SHL2TARGET8)" != "$(SHL2TARGET)"
1088    $(COMMAND_ECHO)+$(COPY) $@ $(@:d)$(SHL2TARGET8).dll
1089.ENDIF
1090
1091.ENDIF          # "$(GUI)" == "OS2"
1092
1093.ENDIF          # "$(SHL2TARGETN)"!=""
1094
1095# unroll begin
1096
1097.IF "$(SHL3TARGETN)"!=""
1098
1099.IF "$(OS)"=="AIX"
1100SHL3STDLIBS=
1101.ENDIF
1102
1103.IF "$(SHLLINKARCONLY)" != ""
1104SHL3STDLIBS=
1105STDSHL=
1106.ELSE
1107SHL3ARCHIVES=
1108.ENDIF
1109
1110# decide how to link
1111.IF "$(SHL3CODETYPE)"=="C"
1112SHL3LINKER=$(LINKC)
1113SHL3STDSHL=$(subst,CPPRUNTIME, $(STDSHL))
1114SHL3LINKFLAGS+=$(LINKCFLAGS)
1115.ELSE           # "$(SHL3CODETYPE)"=="C"
1116SHL3LINKER=$(LINK)
1117SHL3STDSHL=$(subst,CPPRUNTIME,$(STDLIBCPP) $(STDSHL))
1118SHL3LINKFLAGS+=$(LINKFLAGS)
1119.ENDIF          # "$(SHL3CODETYPE)"=="C"
1120
1121SHL3RPATH*=OOO
1122LINKFLAGSRUNPATH_$(SHL3RPATH)*=/ERROR:/Bad_SHL3RPATH_value
1123SHL3LINKFLAGS+=$(LINKFLAGSRUNPATH_$(SHL3RPATH))
1124
1125.IF "$(SHL3USE_EXPORTS)"==""
1126SHL3DEF*=$(MISC)/$(SHL3TARGET).def
1127.ENDIF          # "$(SHL3USE_EXPORTS)"==""
1128
1129EXTRALIBPATHS3=$(EXTRALIBPATHS)
1130.IF "$(UPDATER)"=="YES"
1131.IF "$(SHL3NOCHECK)"==""
1132.IF "$(SOLAR_STLLIBPATH)"!=""
1133EXTRALIBPATHS3+=-L$(SOLAR_STLLIBPATH)
1134.ENDIF
1135.ENDIF              # "$(SHL3NOCHECK)"!=""
1136.ENDIF
1137#+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
1138#+++++++++++    version object      ++++++++++++++++++++++++++++++++++++++++
1139#+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
1140
1141.IF "$(L10N_framework)"==""
1142.IF "$(VERSIONOBJ)"!=""
1143SHL3VERSIONOBJ:=$(VERSIONOBJ:d){$(subst,$(DLLPOSTFIX),_dflt $(SHL3TARGET))}$(VERSIONOBJ:f)
1144USE_VERSIONH:=$(INCCOM)/$(SHL3VERSIONOBJ:b).h
1145.IF "$(GUI)" == "UNX"
1146SHL3VERSIONOBJDEP:=$(VERSIONOBJ:d){$(subst,$(DLLPOSTFIX),_dflt $(SHL3TARGET))}$(VERSIONOBJ:f:s/.o/.obj/)
1147.ELSE           # "$(GUI)" == "UNX"
1148SHL3VERSIONOBJDEP:=$(VERSIONOBJ:d){$(subst,$(DLLPOSTFIX),_dflt $(SHL3TARGET))}$(VERSIONOBJ:f)
1149.ENDIF          # "$(GUI)" == "UNX"
1150$(MISC)/$(SHL3VERSIONOBJ:b).c : $(SOLARENV)/src/version.c $(INCCOM)/$(SHL3VERSIONOBJ:b).h
1151#    $(COPY) $(SOLARENV)/src/version.c $@
1152    $(COMMAND_ECHO)$(TYPE) $(SOLARENV)/src/version.c | $(SED) s/_version.h/$(SHL3VERSIONOBJ:b).h/ > $@
1153
1154.INIT : $(SHL3VERSIONOBJDEP)
1155.ENDIF          # "$(VERSIONOBJ)"!=""
1156.ENDIF
1157
1158.IF "$(GUI)" != "UNX"
1159.IF "$(GUI)" == "WNT" || "$(GUI)" == "OS2"
1160.IF "$(SHL3IMPLIB)" == ""
1161SHL3IMPLIB=i$(TARGET)_t3
1162.ENDIF          # "$(SHL3IMPLIB)" == ""
1163.IF "$(COM)" != "GCC"
1164USE_3IMPLIB=-implib:$(LB)/$(SHL3IMPLIB).lib
1165.ENDIF          # "$(COM)" != "GCC"
1166SHL3IMPLIBN=$(LB)/$(SHL3IMPLIB).lib
1167ALLTAR : $(SHL3IMPLIBN)
1168
1169.IF "$(USE_DEFFILE)"==""
1170USE_3IMPLIB_DEPS=$(LB)/$(SHL3IMPLIB).lib
1171.ENDIF          # "$(USE_DEFFILE)"==""
1172.ENDIF          # "$(GUI)" == "WNT" || "$(GUI)" == "OS2"
1173USE_SHL3DEF=$(SHL3DEF)
1174.ELSE           # "$(GUI)" != "UNX"
1175USE_SHL3DEF=
1176SHL3DEPN+:=$(SHL3DEPNU)
1177
1178.IF "$(SHL3VERSIONMAP)"==""
1179# to activate vmaps remove "#"
1180USE_SHL3VERSIONMAP=$(MISC)/$(SHL3TARGET).vmap
1181.ENDIF          # "$(SHL3VERSIONMAP)"==""
1182
1183.IF "$(USE_SHL3VERSIONMAP)"!=""
1184
1185.IF "$(SHL3FILTERFILE)"!=""
1186.IF "$(SHL3VERSIONMAP)"!=""
1187#eine von beiden ist zuviel
1188USE_SHL3VERSIONMAP=$(MISC)/$(SHL3TARGET).vmap
1189$(USE_SHL3VERSIONMAP) .PHONY:
1190    @echo -----------------------------
1191    @echo you should only use versionmap OR exportfile
1192    @echo -----------------------------
1193#   force_dmake_to_error
1194
1195.ENDIF          # "$(SHL3VERSIONMAP)"!=""
1196
1197SHL3VERSIONMAPPARA=$(LINKVERSIONMAPFLAG) $(USE_SHL3VERSIONMAP)
1198
1199$(USE_SHL3VERSIONMAP): \
1200                    $(SHL3OBJS)\
1201                    $(SHL3LIBS)\
1202                    $(SHL3FILTERFILE)
1203    @$(RM) $@.dump
1204.IF "$(SHL3OBJS)"!=""
1205# dump remaining objects on the fly
1206.IF "$(OS)"=="MACOSX"
1207    @-nm $(SHL3OBJS:s/.obj/.o/) > $@.dump
1208.ELSE
1209    @nm $(SHL3OBJS:s/.obj/.o/) > $@.dump
1210.ENDIF
1211.ENDIF          # "$(SHL3OBJS)!"=""
1212    @$(TYPE) /dev/null $(SHL3LIBS:s/.lib/.dump/) >> $@.dump
1213    $(COMMAND_ECHO) $(PERL) $(SOLARENV)/bin/mapgen.pl -d $@.dump -s $(SHL3INTERFACE) -f $(SHL3FILTERFILE) -m $@
1214
1215.ELSE           # "$(SHL3FILTERFILE)"!=""
1216USE_SHL3VERSIONMAP=$(MISC)/$(SHL3TARGET).vmap
1217$(USE_SHL3VERSIONMAP) :
1218.IF "$(VERBOSE)" == "TRUE"
1219    @echo -----------------------------
1220    @echo SHL3FILTERFILE not set!
1221    @echo -----------------------------
1222    @$(TOUCH) $@
1223    @echo dummy file to keep the dependencies for later use.
1224.ELSE
1225    @$(TOUCH) $@
1226.ENDIF
1227#   force_dmake_to_error
1228.ENDIF          # "$(SHL3FILTERFILE)"!=""
1229.ELSE           # "$(USE_SHL3VERSIONMAP)"!=""
1230
1231#and now for the plain non-generic way...
1232.IF "$(SHL3VERSIONMAP)"!=""
1233USE_SHL3VERSIONMAP=$(MISC)/$(SHL3VERSIONMAP:b)_$(SHL3TARGET)$(SHL3VERSIONMAP:e)
1234SHL3VERSIONMAPPARA=$(LINKVERSIONMAPFLAG) $(USE_SHL3VERSIONMAP)
1235
1236.IF "$(OS)"=="MACOSX"
1237$(USE_SHL3VERSIONMAP): $(SHL3OBJS) $(SHL3LIBS)
1238.ENDIF
1239
1240# .ERRREMOVE is needed as a recipe line like "$(AWK) ... > $@" would create $@
1241# even if the $(AWK) part fails:
1242$(USE_SHL3VERSIONMAP) .ERRREMOVE: $(SHL3VERSIONMAP)
1243    @@-$(RM) -f $@
1244# The following files will only be generated and needed on Mac OS X as temporary files
1245# in order to generate exported symbols list out of Linux/Solaris map files
1246.IF "$(OS)"=="MACOSX"
1247    @-$(RM) -f $@.symregexp >& $(NULLDEV)
1248    @-$(RM) -f $@.expsymlist >& $(NULLDEV)
1249.ENDIF
1250# Its questionable if the following condition '.IF "$(COMID)"=="gcc3"' makes sense and what
1251# happens if somebody will change it in the future
1252.IF "$(COMID)"=="gcc3"
1253    $(COMMAND_ECHO) tr -d "\015" < $(SHL3VERSIONMAP) | $(AWK) -f $(SOLARENV)/bin/addsym.awk > $@
1254.ELIF "$(COMNAME)"=="sunpro5"
1255    $(COMMAND_ECHO) tr -d "\015" < $(SHL3VERSIONMAP) | $(GREP) -v $(IGNORE_SYMBOLS) > $@
1256.ELSE           # "$(COMID)"=="gcc3"
1257    $(COMMAND_ECHO) tr -d "\015" < $(SHL3VERSIONMAP) > $@
1258.ENDIF          # "$(COMID)"=="gcc3"
1259    @chmod a+w $@
1260# Mac OS X post-processing generate an exported symbols list from the generated map file
1261# for details on exported symbols list see man ld on Mac OS X
1262.IF "$(OS)"=="MACOSX"
1263    @-cat $@ | $(AWK) -f $(SOLARENV)/bin/unxmap-to-macosx-explist.awk | grep -v "\*\|?" > $@.exported-symbols
1264    @-cat $@ | $(AWK) -f $(SOLARENV)/bin/unxmap-to-macosx-explist.awk | grep "\*\|?" > $@.symbols-regexp
1265# Shared libraries will be build out of the *.obj files specified in SHL?OBJS and SHL?LIBS
1266# Extract RTTI symbols from all the objects that will be used to build a shared library
1267.IF "$(SHL3OBJS)"!=""
1268    -echo $(foreach,i,$(SHL3OBJS:s/.obj/.o/) $i) | xargs -n1 nm -gx | $(SOLARENV)/bin/addsym-macosx.sh $@.symbols-regexp $@.symbols-regexp.tmp >> $@.exported-symbols
1269.ENDIF
1270.IF "$(SHL3LIBS)"!=""
1271    $(COMMAND_ECHO)-$(TYPE) $(foreach,j,$(SHL3LIBS) $j) | $(SED) s\#$(ROUT)\#$(PRJ)/$(ROUT)\#g | xargs -n1 nm -gx | $(SOLARENV)/bin/addsym-macosx.sh $@.symbols-regexp $@.symbols-regexp.tmp >> $@.exported-symbols
1272.ENDIF
1273# overwrite the map file generate into the local output tree with the generated
1274# exported symbols list
1275    cp $@.exported-symbols $@
1276.ENDIF # .IF "$(OS)"=="MACOSX"
1277.ENDIF          # "$(SHL3VERSIONMAP)"!=""
1278.ENDIF          # "$(USE_SHL3VERSIONMAP)"!=""
1279.ENDIF          # "$(GUI)" != "UNX"
1280
1281.IF "$(UNIXVERSIONNAMES)"!=""
1282.IF "$(OS)"!="MACOSX"
1283.IF "$(GUI)"=="UNX"
1284SHL3SONAME=\"$(SONAME_SWITCH)$(SHL3TARGETN:f)\"
1285.ENDIF          # "$(GUI)"!="UNX"
1286.ENDIF          # "$(OS)"!="MACOSX"
1287.ENDIF          # "$(UNIXVERSIONNAMES)"!=""
1288
1289.IF "$(SHL3RES)"!=""
1290SHL3ALLRES+=$(SHL3RES)
1291SHL3LINKRES*=$(MISC)/$(SHL3TARGET).res
1292SHL3LINKRESO*=$(MISC)/$(SHL3TARGET)_res.o
1293.ENDIF          # "$(SHL3RES)"!=""
1294
1295.IF "$(SHL3DEFAULTRES)$(use_shl_versions)"!=""
1296SHL3DEFAULTRES*=$(MISC)/$(SHL3TARGET)_def.res
1297SHL3ALLRES+=$(SHL3DEFAULTRES)
1298SHL3LINKRES*=$(MISC)/$(SHL3TARGET).res
1299SHL3LINKRESO*=$(MISC)/$(SHL3TARGET)_res.o
1300.ENDIF          # "$(SHL3DEFAULTRES)$(use_shl_versions)"!=""
1301
1302#.IF "$(SHL3TARGETN)"!=""
1303
1304.IF "$(linkinc)"!=""
1305.IF "$(GUI)"=="WNT" || "$(GUI)" == "OS2"
1306.IF "$(SHL3LIBS)"!=""
1307$(MISC)/$(SHL3TARGET)_linkinc.ls .PHONY:
1308    @@-$(RM) $@
1309    $(COMMAND_ECHO)$(SED) -f $(SOLARENV)/bin/chrel.sed $(foreach,i,$(SHL3LIBS) $(i:s/.lib/.lin/)) >> $@
1310.ENDIF          # "$(SHL3LIBS)"!=""
1311.ENDIF
1312
1313LINKINCTARGETS+=$(MISC)/$(SHL3TARGETN:b)_linkinc.ls
1314$(SHL3TARGETN) : $(LINKINCTARGETS)
1315
1316.ELSE
1317.IF "$(SHL3USE_EXPORTS)"=="name"
1318.IF "$(GUI)"=="WNT" || "$(GUI)" == "OS2"
1319.IF "$(COM)"!="GCC"
1320.IF "$(SHL3LIBS)"!=""
1321SHL3LINKLIST=$(MISC)/$(SHL3TARGET)_link.lst
1322SHL3LINKLISTPARAM=@$(SHL3LINKLIST)
1323$(SHL3LINKLIST) : $(SHL3LIBS)
1324    @@-$(RM) $@
1325    $(COMMAND_ECHO)$(SED) -f $(SOLARENV)/bin/chrel.sed $(foreach,i,$(SHL3LIBS) $(i:s/.lib/.lin/)) >> $@
1326.ENDIF          # "$(SHL3LIBS)"!=""
1327.ENDIF          # "$(COM)"!="GCC"
1328.ENDIF
1329.ENDIF          # "$(SHL3USE_EXPORTS)"=="name"
1330
1331$(MISC)/%linkinc.ls:
1332    @echo . > $@
1333.ENDIF          # "$(linkinc)"!=""
1334
1335.IF "$(GUI)" == "OS2"
1336#21/02/2006 YD dll names must be 8.3, invoke fix script
1337#check osl/os2/module.c/osl_loadModule()
1338SHL3TARGET8=$(shell @fix_shl.cmd $(SHL3TARGET))
1339.ENDIF
1340
1341
1342$(SHL3TARGETN) : \
1343                    $(SHL3OBJS)\
1344                    $(SHL3LIBS)\
1345                    $(USE_3IMPLIB_DEPS)\
1346                    $(USE_SHL3DEF)\
1347                    $(USE_SHL3VERSIONMAP)\
1348                    $(SHL3RES)\
1349                    $(SHL3DEPN) \
1350                    $(SHL3LINKLIST)
1351    @echo "Making:   " $(@:f)
1352.IF "$(GUI)" == "WNT"
1353.IF "$(SHL3DEFAULTRES)"!=""
1354    @@-$(RM) $(MISC)/$(SHL3DEFAULTRES:b).rc
1355.IF "$(SHL3ICON)" != ""
1356    @echo 1 ICON $(SHL3ICON) >> $(MISC)/$(SHL3DEFAULTRES:b).rc
1357.ENDIF
1358.IF "$(use_shl_versions)" != ""
1359.IF "$(SHL3ADD_VERINFO)"!=""
1360    @echo $(EMQ)#include $(EMQ)"$(SHL3ADD_VERINFO)$(EMQ)" >> $(MISC)/$(SHL3DEFAULTRES:b).rc
1361.ELSE           # "$(SHL3ADD_VERINFO)"!=""
1362    @echo $(EMQ)#define ADDITIONAL_VERINFO1 >> $(MISC)/$(SHL3DEFAULTRES:b).rc
1363    @echo $(EMQ)#define ADDITIONAL_VERINFO2 >> $(MISC)/$(SHL3DEFAULTRES:b).rc
1364    @echo $(EMQ)#define ADDITIONAL_VERINFO3 >> $(MISC)/$(SHL3DEFAULTRES:b).rc
1365.ENDIF          # "$(SHL3ADD_VERINFO)"!=""
1366    @echo $(EMQ)#define VERVARIANT  $(BUILD) >> $(MISC)/$(SHL3DEFAULTRES:b).rc
1367    @echo $(EMQ)#define ORG_NAME    $(SHL3TARGET)$(DLLPOST) >> $(MISC)/$(SHL3DEFAULTRES:b).rc
1368    @echo $(EMQ)#define INTERNAL_NAME $(SHL3TARGET:b) >> $(MISC)/$(SHL3DEFAULTRES:b).rc
1369    @echo $(EMQ)#include $(EMQ)"shlinfo.rc$(EMQ)" >> $(MISC)/$(SHL3DEFAULTRES:b).rc
1370.ENDIF          # "$(use_shl_versions)" != ""
1371    $(COMMAND_ECHO)$(RC) -DWIN32 $(INCLUDE) $(RCLINKFLAGS) $(MISC)/$(SHL3DEFAULTRES:b).rc
1372.ENDIF          # "$(SHL3DEFAULTRES)"!=""
1373.IF "$(SHL3ALLRES)"!=""
1374    $(COMMAND_ECHO)$(TYPE) $(SHL3ALLRES) > $(SHL3LINKRES)
1375.IF "$(COM)"=="GCC"
1376    windres $(SHL3LINKRES) $(SHL3LINKRESO)
1377.ENDIF          # "$(COM)"=="GCC"
1378.ENDIF          # "$(SHL3ALLRES)"!=""
1379.IF "$(COM)"=="GCC" # always have to call dlltool explicitly as ld cannot handle # comment in .def
1380    @echo dlltool --dllname $(SHL3TARGET)$(DLLPOST) \
1381        --kill-at \\ > $(MISC)/$(TARGET).$(@:b)_3.cmd
1382    @noop $(assign ALL3OBJLIST:=$(STDOBJ) $(SHL3OBJS) $(SHL3LINKRESO) $(shell $(TYPE) /dev/null $(SHL3LIBS) | $(SED) s?$(ROUT)?$(PRJ)/$(ROUT)?g))
1383.IF "$(DEFLIB3NAME)"!=""    # do not have to include objs
1384    @noop $(assign DEF3OBJLIST:=$(shell $(TYPE) $(foreach,i,$(DEFLIB3NAME) $(SLB)/$(i).lib) | sed s?$(ROUT)?$(PRJ)/$(ROUT)?g))
1385    @noop $(foreach,i,$(DEF3OBJLIST) $(assign ALL3OBJLIST:=$(ALL3OBJLIST:s?$i??)))
1386.ENDIF          # "$(DEFLIB3NAME)"!=""
1387    @echo   --output-exp $(MISC)/$(@:b)_exp.o \\ >> $(MISC)/$(TARGET).$(@:b)_3.cmd
1388.IF "$(SHL3DEF)"!=""
1389    @echo   --input-def $(SHL3DEF) \\ >> $(MISC)/$(TARGET).$(@:b)_3.cmd
1390.ELSE
1391    @echo   $(SHL3VERSIONOBJ) $(SHL3DESCRIPTIONOBJ) \\ >> $(MISC)/$(TARGET).$(@:b)_3.cmd
1392.ENDIF
1393    @echo   $(ALL3OBJLIST) >> $(MISC)/$(TARGET).$(@:b)_3.cmd
1394    @echo $(LINK) $(LINKFLAGS) $(LINKFLAGSSHL) $(MINGWSSTDOBJ) -o $@ \
1395        $(STDOBJ) $(SHL3VERSIONOBJ) $(SHL3DESCRIPTIONOBJ) $(SHL3OBJS) $(SHL3LINKRESO) \
1396        `$(TYPE) /dev/null $(SHL3LIBS) | $(SED) s\#$(ROUT)\#$(PRJ)/$(ROUT)\#g` \
1397        -Wl,--exclude-libs,ALL,--start-group $(SHL3STDLIBS) -Wl,--end-group \
1398        $(SHL3STDSHL) $(STDSHL3) $(MISC)/$(@:b)_exp.o $(MINGWSSTDENDOBJ) \
1399        -Wl,-Map,$(MISC)/$(@:b).map >> $(MISC)/$(TARGET).$(@:b)_3.cmd
1400  .IF "$(VERBOSE)" == "TRUE"
1401    @$(TYPE)  $(MISC)/$(TARGET).$(@:b)_3.cmd
1402  .ENDIF
1403    @+source $(MISC)/$(TARGET).$(@:b)_3.cmd
1404.ELSE
1405.IF "$(linkinc)"==""
1406.IF "$(SHL3USE_EXPORTS)"!="name"
1407.IF "$(USE_DEFFILE)"!=""
1408    $(COMMAND_ECHO)$(SHL3LINKER) @$(mktmp \
1409        $(SHL3LINKFLAGS) \
1410        $(LINKFLAGSSHL) \
1411        $(SHL3STACK) $(SHL3BASEX)   \
1412        -out:$@ \
1413        -map:$(MISC)/$(@:b).map \
1414        -def:$(SHL3DEF) \
1415        $(USE_3IMPLIB) \
1416        $(STDOBJ) \
1417        $(SHL3VERSIONOBJ) $(SHL3OBJS) \
1418        $(SHL3LIBS) \
1419        $(SHL3STDLIBS) \
1420        $(SHL3STDSHL) $(STDSHL3) \
1421        $(SHL3LINKRES) \
1422    )
1423# double check if target was really written... still making sense?
1424    @@$(LS) $@
1425    @echo linking $@.manifest ...
1426.IF "$(VISTA_MANIFEST)"!=""
1427    $(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(MT) $(MTFLAGS) -manifest $@.manifest -manifest $(TRUSTED_MANIFEST_LOCATION)/trustedinfo.manifest -out:$@.tmanifest$(EMQ) $(FI)
1428    $(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(MT) $(MTFLAGS) -manifest $@.tmanifest -outputresource:$@$(EMQ);2 $(FI)
1429.ELSE
1430    $(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(MT) $(MTFLAGS) -manifest $@.manifest -outputresource:$@$(EMQ);2 $(FI)
1431.ENDIF # "$(VISTA_MANIFEST)"!=""
1432    $(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(RM:s/+//) $@.manifest $(FI)
1433    $(COMMAND_ECHO)$(IFEXIST) $@.tmanifest $(THEN) $(RM:s/+//) $@.tmanifest $(FI)
1434.ELSE           # "$(USE_DEFFILE)"!=""
1435    $(COMMAND_ECHO)$(SHL3LINKER) @$(mktmp   $(SHL3LINKFLAGS)            \
1436        $(LINKFLAGSSHL) $(SHL3BASEX)        \
1437        $(SHL3STACK) -out:$(SHL3TARGETN)    \
1438        -map:$(MISC)/$(@:B).map             \
1439        $(LB)/$(SHL3IMPLIB).exp             \
1440        $(STDOBJ)                           \
1441        $(SHL3OBJS) $(SHL3VERSIONOBJ) \
1442        $(SHL3LIBS)                         \
1443        $(SHL3STDLIBS)                      \
1444        $(SHL3STDSHL) $(STDSHL3)                           \
1445        $(SHL3LINKRES) \
1446    )
1447# double check if target was really written... still making sense?
1448    @@$(LS) $@
1449    @echo linking $@.manifest ...
1450.IF "$(VISTA_MANIFEST)"!=""
1451    $(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(MT) $(MTFLAGS) -manifest $@.manifest -manifest $(TRUSTED_MANIFEST_LOCATION)/trustedinfo.manifest -out:$@.tmanifest$(EMQ) $(FI)
1452    $(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(MT) $(MTFLAGS) -manifest $@.tmanifest -outputresource:$@$(EMQ);2 $(FI)
1453.ELSE
1454    $(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(MT) $(MTFLAGS) -manifest $@.manifest -outputresource:$@$(EMQ);2 $(FI)
1455.ENDIF # "$(VISTA_MANIFEST)"!=""
1456    $(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(RM:s/+//) $@.manifest $(FI)
1457    $(COMMAND_ECHO)$(IFEXIST) $@.tmanifest $(THEN) $(RM:s/+//) $@.tmanifest $(FI)
1458.ENDIF          # "$(USE_DEFFILE)"!=""
1459.ELSE           # "$(SHL3USE_EXPORTS)"!="name"
1460    $(COMMAND_ECHO)$(SHL3LINKER) @$(mktmp   $(SHL3LINKFLAGS)            \
1461        $(LINKFLAGSSHL) $(SHL3BASEX)        \
1462        $(SHL3STACK) -out:$(SHL3TARGETN)    \
1463        -map:$(MISC)/$(@:B).map             \
1464        $(USE_3IMPLIB) \
1465        $(STDOBJ)                           \
1466        $(SHL3OBJS) $(SHL3VERSIONOBJ))   \
1467        $(SHL3LINKLISTPARAM) \
1468        @$(mktmp $(SHL3STDLIBS)                      \
1469        $(SHL3STDSHL) $(STDSHL3)                           \
1470        $(SHL3LINKRES) \
1471    )
1472    @echo linking $@.manifest ...
1473.IF "$(VISTA_MANIFEST)"!=""
1474    $(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(MT) $(MTFLAGS) -manifest $@.manifest -manifest $(TRUSTED_MANIFEST_LOCATION)/trustedinfo.manifest -out:$@.tmanifest$(EMQ) $(FI)
1475    $(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(MT) $(MTFLAGS) -manifest $@.tmanifest -outputresource:$@$(EMQ);2 $(FI)
1476.ELSE
1477    $(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(MT) $(MTFLAGS) -manifest $@.manifest -outputresource:$@$(EMQ);2 $(FI)
1478.ENDIF # "$(VISTA_MANIFEST)"!=""
1479    $(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(RM:s/+//) $@.manifest $(FI)
1480    $(COMMAND_ECHO)$(IFEXIST) $@.tmanifest $(THEN) $(RM:s/+//) $@.tmanifest $(FI)
1481.ENDIF          # "$(SHL3USE_EXPORTS)"!="name"
1482.ELSE           # "$(linkinc)"==""
1483        $(COMMAND_ECHO)-$(RM) del $(MISC)/$(SHL3TARGET).lnk
1484        $(COMMAND_ECHO)-$(RM) $(MISC)/$(SHL3TARGET).lst
1485        $(COMMAND_ECHO)$(TYPE) $(mktmp \
1486        $(SHL3LINKFLAGS) \
1487        $(LINKFLAGSSHL) $(SHL3BASEX) \
1488        $(SHL3STACK) $(MAPFILE) \
1489        -out:$@ \
1490        $(LB)/$(SHL3IMPLIB).exp \
1491        $(STDOBJ) \
1492        $(SHL3OBJS) \
1493        $(SHL3STDLIBS) \
1494        $(SHL3STDSHL) $(STDSHL3) \
1495        $(SHL3LINKRES) \
1496        ) >> $(MISC)/$(SHL3TARGET).lnk
1497        $(COMMAND_ECHO)$(TYPE) $(MISC)/$(SHL3TARGETN:b)_linkinc.ls  >> $(MISC)/$(SHL3TARGET).lnk
1498        $(COMMAND_ECHO)$(SHL3LINKER) @$(MISC)/$(SHL3TARGET).lnk
1499        @echo linking $@.manifest ...
1500.IF "$(VISTA_MANIFEST)"!=""
1501        $(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(MT) $(MTFLAGS) -manifest $@.manifest -manifest $(TRUSTED_MANIFEST_LOCATION)/trustedinfo.manifest -out:$@.tmanifest$(EMQ) $(FI)
1502        $(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(MT) $(MTFLAGS) -manifest $@.tmanifest -outputresource:$@$(EMQ);2 $(FI)
1503.ELSE
1504        $(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(MT) $(MTFLAGS) -manifest $@.manifest -outputresource:$@$(EMQ);2 $(FI)
1505.ENDIF # "$(VISTA_MANIFEST)"!=""
1506        $(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(RM:s/+//) $@.manifest $(FI)
1507        $(COMMAND_ECHO)$(IFEXIST) $@.tmanifest $(THEN) $(RM:s/+//) $@.tmanifest $(FI)
1508.ENDIF          # "$(linkinc)"==""
1509.ENDIF          # "$(COM)"=="GCC"
1510.ENDIF          # "$(GUI)" == "WNT"
1511.IF "$(GUI)"=="UNX"
1512.IF "$(OS)"=="MACOSX"
1513    @-$(RM) $(MISC)/$(@:b).list
1514    @-$(RM) $(MISC)/$(TARGET).$(@:b)_3.cmd
1515    @echo $(STDSLO) $(SHL3OBJS:s/.obj/.o/) \
1516    $(SHL3VERSIONOBJ) \
1517    `cat /dev/null $(SHL3LIBS) | sed s\#$(ROUT)\#$(PRJ)/$(ROUT)\#g` | tr -s " " "\n" > $(MISC)/$(@:b).list
1518    @echo -n $(SHL3LINKER) $(SHL3LINKFLAGS) $(SHL3VERSIONMAPPARA) $(LINKFLAGSSHL) -L$(PRJ)/$(ROUT)/lib $(SOLARLIB) -o $@ \
1519    $(SHL3STDLIBS) $(SHL3ARCHIVES) $(SHL3STDSHL) $(STDSHL3) -filelist $(MISC)/$(@:b).list $(LINKOUTPUT_FILTER) > $(MISC)/$(TARGET).$(@:b)_3.cmd
1520    @$(PERL) $(SOLARENV)/bin/macosx-dylib-link-list.pl \
1521        `cat $(MISC)/$(TARGET).$(@:b)_3.cmd` \
1522        >> $(MISC)/$(TARGET).$(@:b)_3.cmd
1523  .IF "$(VERBOSE)" == "TRUE"
1524    @cat $(MISC)/$(TARGET).$(@:b)_3.cmd
1525  .ENDIF
1526    @+source $(MISC)/$(TARGET).$(@:b)_3.cmd
1527    @$(PERL) $(SOLARENV)/bin/macosx-change-install-names.pl \
1528        shl $(SHL3RPATH) $@
1529.IF "$(SHL3CREATEJNILIB)"!=""
1530    @echo "Making:   " $(@:f).jnilib
1531    @macosx-create-bundle $@
1532.ENDIF          # "$(SHL3CREATEJNILIB)"!=""
1533.IF "$(UPDATER)"=="YES"
1534.IF "$(SHL3NOCHECK)"==""
1535    $(SOLARENV)/bin/checkdll.sh -L$(LB) -L$(SOLARLIBDIR) $(EXTRALIBPATHS3) $(SHL3TARGETN)
1536.ENDIF              # "$(SHL3NOCHECK)"!=""
1537.ENDIF
1538.ELSE           # "$(OS)"=="MACOSX"
1539    @-$(RM) $(MISC)/$(TARGET).$(@:b)_3.cmd
1540    @echo $(SHL3LINKER) $(SHL3LINKFLAGS) $(SHL3SONAME) $(LINKFLAGSSHL) $(SHL3VERSIONMAPPARA) -L$(PRJ)/$(ROUT)/lib $(SOLARLIB) $(STDSLO) $(SHL3OBJS:s/.obj/.o/) \
1541    $(SHL3VERSIONOBJ) -o $@ \
1542    `cat /dev/null $(SHL3LIBS) | tr -s " " "\n" | $(SED) s\#$(ROUT)\#$(PRJ)/$(ROUT)\#g` \
1543    $(SHL3STDLIBS) $(SHL3ARCHIVES) $(SHL3STDSHL) $(STDSHL3) $(LINKOUTPUT_FILTER) > $(MISC)/$(TARGET).$(@:b)_3.cmd
1544  .IF "$(VERBOSE)" == "TRUE"
1545    @cat $(MISC)/$(TARGET).$(@:b)_3.cmd
1546  .ENDIF
1547    @+source $(MISC)/$(TARGET).$(@:b)_3.cmd
1548.IF "$(UPDATER)"=="YES"
1549.IF "$(SHL3NOCHECK)"==""
1550    $(COMMAND_ECHO)-$(RM) $(SHL3TARGETN:d)check_$(SHL3TARGETN:f)
1551    $(COMMAND_ECHO)$(RENAME) $(SHL3TARGETN) $(SHL3TARGETN:d)check_$(SHL3TARGETN:f)
1552.IF "$(VERBOSE)"=="TRUE"
1553    $(COMMAND_ECHO)$(SOLARENV)/bin/checkdll.sh -L$(LB) -L$(SOLARLIBDIR) $(EXTRALIBPATHS3) $(SHL3TARGETN:d)check_$(SHL3TARGETN:f)
1554.ELSE
1555    $(COMMAND_ECHO)$(SOLARENV)/bin/checkdll.sh -L$(LB) -L$(SOLARLIBDIR) $(EXTRALIBPATHS3) -- -s $(SHL3TARGETN:d)check_$(SHL3TARGETN:f)
1556.ENDIF
1557.ENDIF              # "$(SHL3NOCHECK)"!=""
1558.ENDIF          # "$(UPDATER)"=="YES"
1559.ENDIF          # "$(OS)"=="MACOSX"
1560.IF "$(UNIXVERSIONNAMES)"!=""
1561    $(COMMAND_ECHO)$(RM) $(LB)/$(SHL3TARGETN:b)
1562    $(COMMAND_ECHO)cd $(LB) && ln -s $(SHL3TARGETN:f) $(SHL3TARGETN:b)
1563.ENDIF          # "$(UNIXVERSIONNAMES)"!=""
1564.IF "$(VERBOSE)" == "TRUE"
1565    @ls -l $@
1566.ENDIF
1567.ENDIF          # "$(GUI)" == "UNX"
1568
1569.IF "$(GUI)" == "OS2"
1570
1571.IF "$(SHL3DEFAULTRES)"!=""
1572    @+-$(RM) $(MISC)/$(SHL3DEFAULTRES:b).rc > $(NULLDEV)
1573.IF "$(SHL3ICON)" != ""
1574    @-+echo 1 ICON $(SHL3ICON) >> $(MISC)/$(SHL3DEFAULTRES:b).rc
1575.ENDIF
1576.IF "$(use_shl_versions)" != ""
1577.IF "$(SHL3ADD_VERINFO)"!=""
1578    @-+echo $(EMQ)#include $(EMQ)"$(SHL3ADD_VERINFO)$(EMQ)" >> $(MISC)/$(SHL3DEFAULTRES:b).rc
1579.ENDIF          # "$(SHL3ADD_VERINFO)"!=""
1580    @-+echo MENU 1 BEGIN END >> $(MISC)/$(SHL3DEFAULTRES:b).rc
1581#   @-+echo $(EMQ)RCDATA 1 { "Build string here" }$(EMQ) >> $(MISC)/$(SHL3DEFAULTRES:b).rc
1582.ENDIF          # "$(use_shl_versions)" != ""
1583# YD 04/07/06 seems null, confuses rc cli: -i $(SOLARTESDIR)
1584    $(COMMAND_ECHO)$(RC) -r -DOS2 $(INCLUDE) $(RCLINKFLAGS) $(MISC)/$(SHL3DEFAULTRES:b).rc
1585.ENDIF          # "$(SHL3DEFAULTRES)"!=""
1586
1587.IF "$(SHL3ALLRES)"!=""
1588    $(COMMAND_ECHO)+$(TYPE) $(SHL3ALLRES) > $(SHL3LINKRES)
1589.ENDIF          # "$(SHL3ALLRES)"!=""
1590
1591.IF "$(USE_DEFFILE)"!=""
1592
1593    $(COMMAND_ECHO)$(SHL3LINKER) $(SHL3LINKFLAGS) $(LINKFLAGSSHL) -o $@ \
1594        $(SHL3DEF) \
1595        $(STDOBJ) \
1596        -L$(LB) \
1597        -L$(SOLARVERSION)/$(INPATH)/lib \
1598        $(SHL3OBJS) $(SHL3VERSIONOBJ) \
1599        $(SHL3LIBS) \
1600        $(SHL3LINKRES) \
1601        $(SHL3STDLIBS) \
1602        $(SHL3STDSHL) $(STDSHL3)
1603
1604.ELSE           # "$(USE_DEFFILE)"!=""
1605
1606    $(COMMAND_ECHO)$(SHL3LINKER) $(SHL3LINKFLAGS)           \
1607        $(LINKFLAGSSHL) $(SHL3BASEX)        \
1608        $(SHL3STACK) -o $(SHL3TARGETN)  \
1609        $(SHL3DEF) \
1610        $(STDOBJ)                           \
1611        -L$(LB) \
1612        -L$(SOLARVERSION)/$(INPATH)/lib \
1613        $(SHL3OBJS) $(SHL3VERSIONOBJ) \
1614        $(SHL3LIBS) \
1615        $(SHL3LINKRES) \
1616        $(SHL3STDLIBS) \
1617        $(SHL3STDSHL) $(STDSHL3)
1618
1619.ENDIF          # "$(USE_DEFFILE)"!=""
1620
1621    $(COMMAND_ECHO)+$(IMPLIB) -p256 $(IMPLIBFLAGS) $(SHL3IMPLIBN) $@
1622    $(COMMAND_ECHO)+$(IMPLIB) -p256 $(IMPLIBFLAGS) $(LB)/$(SHL3TARGET).lib $@
1623
1624.IF "$(SHL3TARGET8)" != "$(SHL3TARGET)"
1625    $(COMMAND_ECHO)+$(COPY) $@ $(@:d)$(SHL3TARGET8).dll
1626.ENDIF
1627
1628.ENDIF          # "$(GUI)" == "OS2"
1629
1630.ENDIF          # "$(SHL3TARGETN)"!=""
1631
1632# unroll begin
1633
1634.IF "$(SHL4TARGETN)"!=""
1635
1636.IF "$(OS)"=="AIX"
1637SHL4STDLIBS=
1638.ENDIF
1639
1640.IF "$(SHLLINKARCONLY)" != ""
1641SHL4STDLIBS=
1642STDSHL=
1643.ELSE
1644SHL4ARCHIVES=
1645.ENDIF
1646
1647# decide how to link
1648.IF "$(SHL4CODETYPE)"=="C"
1649SHL4LINKER=$(LINKC)
1650SHL4STDSHL=$(subst,CPPRUNTIME, $(STDSHL))
1651SHL4LINKFLAGS+=$(LINKCFLAGS)
1652.ELSE           # "$(SHL4CODETYPE)"=="C"
1653SHL4LINKER=$(LINK)
1654SHL4STDSHL=$(subst,CPPRUNTIME,$(STDLIBCPP) $(STDSHL))
1655SHL4LINKFLAGS+=$(LINKFLAGS)
1656.ENDIF          # "$(SHL4CODETYPE)"=="C"
1657
1658SHL4RPATH*=OOO
1659LINKFLAGSRUNPATH_$(SHL4RPATH)*=/ERROR:/Bad_SHL4RPATH_value
1660SHL4LINKFLAGS+=$(LINKFLAGSRUNPATH_$(SHL4RPATH))
1661
1662.IF "$(SHL4USE_EXPORTS)"==""
1663SHL4DEF*=$(MISC)/$(SHL4TARGET).def
1664.ENDIF          # "$(SHL4USE_EXPORTS)"==""
1665
1666EXTRALIBPATHS4=$(EXTRALIBPATHS)
1667.IF "$(UPDATER)"=="YES"
1668.IF "$(SHL4NOCHECK)"==""
1669.IF "$(SOLAR_STLLIBPATH)"!=""
1670EXTRALIBPATHS4+=-L$(SOLAR_STLLIBPATH)
1671.ENDIF
1672.ENDIF              # "$(SHL4NOCHECK)"!=""
1673.ENDIF
1674#+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
1675#+++++++++++    version object      ++++++++++++++++++++++++++++++++++++++++
1676#+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
1677
1678.IF "$(L10N_framework)"==""
1679.IF "$(VERSIONOBJ)"!=""
1680SHL4VERSIONOBJ:=$(VERSIONOBJ:d){$(subst,$(DLLPOSTFIX),_dflt $(SHL4TARGET))}$(VERSIONOBJ:f)
1681USE_VERSIONH:=$(INCCOM)/$(SHL4VERSIONOBJ:b).h
1682.IF "$(GUI)" == "UNX"
1683SHL4VERSIONOBJDEP:=$(VERSIONOBJ:d){$(subst,$(DLLPOSTFIX),_dflt $(SHL4TARGET))}$(VERSIONOBJ:f:s/.o/.obj/)
1684.ELSE           # "$(GUI)" == "UNX"
1685SHL4VERSIONOBJDEP:=$(VERSIONOBJ:d){$(subst,$(DLLPOSTFIX),_dflt $(SHL4TARGET))}$(VERSIONOBJ:f)
1686.ENDIF          # "$(GUI)" == "UNX"
1687$(MISC)/$(SHL4VERSIONOBJ:b).c : $(SOLARENV)/src/version.c $(INCCOM)/$(SHL4VERSIONOBJ:b).h
1688#    $(COPY) $(SOLARENV)/src/version.c $@
1689    $(COMMAND_ECHO)$(TYPE) $(SOLARENV)/src/version.c | $(SED) s/_version.h/$(SHL4VERSIONOBJ:b).h/ > $@
1690
1691.INIT : $(SHL4VERSIONOBJDEP)
1692.ENDIF          # "$(VERSIONOBJ)"!=""
1693.ENDIF
1694
1695.IF "$(GUI)" != "UNX"
1696.IF "$(GUI)" == "WNT" || "$(GUI)" == "OS2"
1697.IF "$(SHL4IMPLIB)" == ""
1698SHL4IMPLIB=i$(TARGET)_t4
1699.ENDIF          # "$(SHL4IMPLIB)" == ""
1700.IF "$(COM)" != "GCC"
1701USE_4IMPLIB=-implib:$(LB)/$(SHL4IMPLIB).lib
1702.ENDIF          # "$(COM)" != "GCC"
1703SHL4IMPLIBN=$(LB)/$(SHL4IMPLIB).lib
1704ALLTAR : $(SHL4IMPLIBN)
1705
1706.IF "$(USE_DEFFILE)"==""
1707USE_4IMPLIB_DEPS=$(LB)/$(SHL4IMPLIB).lib
1708.ENDIF          # "$(USE_DEFFILE)"==""
1709.ENDIF          # "$(GUI)" == "WNT" || "$(GUI)" == "OS2"
1710USE_SHL4DEF=$(SHL4DEF)
1711.ELSE           # "$(GUI)" != "UNX"
1712USE_SHL4DEF=
1713SHL4DEPN+:=$(SHL4DEPNU)
1714
1715.IF "$(SHL4VERSIONMAP)"==""
1716# to activate vmaps remove "#"
1717USE_SHL4VERSIONMAP=$(MISC)/$(SHL4TARGET).vmap
1718.ENDIF          # "$(SHL4VERSIONMAP)"==""
1719
1720.IF "$(USE_SHL4VERSIONMAP)"!=""
1721
1722.IF "$(SHL4FILTERFILE)"!=""
1723.IF "$(SHL4VERSIONMAP)"!=""
1724#eine von beiden ist zuviel
1725USE_SHL4VERSIONMAP=$(MISC)/$(SHL4TARGET).vmap
1726$(USE_SHL4VERSIONMAP) .PHONY:
1727    @echo -----------------------------
1728    @echo you should only use versionmap OR exportfile
1729    @echo -----------------------------
1730#   force_dmake_to_error
1731
1732.ENDIF          # "$(SHL4VERSIONMAP)"!=""
1733
1734SHL4VERSIONMAPPARA=$(LINKVERSIONMAPFLAG) $(USE_SHL4VERSIONMAP)
1735
1736$(USE_SHL4VERSIONMAP): \
1737                    $(SHL4OBJS)\
1738                    $(SHL4LIBS)\
1739                    $(SHL4FILTERFILE)
1740    @$(RM) $@.dump
1741.IF "$(SHL4OBJS)"!=""
1742# dump remaining objects on the fly
1743.IF "$(OS)"=="MACOSX"
1744    @-nm $(SHL4OBJS:s/.obj/.o/) > $@.dump
1745.ELSE
1746    @nm $(SHL4OBJS:s/.obj/.o/) > $@.dump
1747.ENDIF
1748.ENDIF          # "$(SHL4OBJS)!"=""
1749    @$(TYPE) /dev/null $(SHL4LIBS:s/.lib/.dump/) >> $@.dump
1750    $(COMMAND_ECHO) $(PERL) $(SOLARENV)/bin/mapgen.pl -d $@.dump -s $(SHL4INTERFACE) -f $(SHL4FILTERFILE) -m $@
1751
1752.ELSE           # "$(SHL4FILTERFILE)"!=""
1753USE_SHL4VERSIONMAP=$(MISC)/$(SHL4TARGET).vmap
1754$(USE_SHL4VERSIONMAP) :
1755.IF "$(VERBOSE)" == "TRUE"
1756    @echo -----------------------------
1757    @echo SHL4FILTERFILE not set!
1758    @echo -----------------------------
1759    @$(TOUCH) $@
1760    @echo dummy file to keep the dependencies for later use.
1761.ELSE
1762    @$(TOUCH) $@
1763.ENDIF
1764#   force_dmake_to_error
1765.ENDIF          # "$(SHL4FILTERFILE)"!=""
1766.ELSE           # "$(USE_SHL4VERSIONMAP)"!=""
1767
1768#and now for the plain non-generic way...
1769.IF "$(SHL4VERSIONMAP)"!=""
1770USE_SHL4VERSIONMAP=$(MISC)/$(SHL4VERSIONMAP:b)_$(SHL4TARGET)$(SHL4VERSIONMAP:e)
1771SHL4VERSIONMAPPARA=$(LINKVERSIONMAPFLAG) $(USE_SHL4VERSIONMAP)
1772
1773.IF "$(OS)"=="MACOSX"
1774$(USE_SHL4VERSIONMAP): $(SHL4OBJS) $(SHL4LIBS)
1775.ENDIF
1776
1777# .ERRREMOVE is needed as a recipe line like "$(AWK) ... > $@" would create $@
1778# even if the $(AWK) part fails:
1779$(USE_SHL4VERSIONMAP) .ERRREMOVE: $(SHL4VERSIONMAP)
1780    @@-$(RM) -f $@
1781# The following files will only be generated and needed on Mac OS X as temporary files
1782# in order to generate exported symbols list out of Linux/Solaris map files
1783.IF "$(OS)"=="MACOSX"
1784    @-$(RM) -f $@.symregexp >& $(NULLDEV)
1785    @-$(RM) -f $@.expsymlist >& $(NULLDEV)
1786.ENDIF
1787# Its questionable if the following condition '.IF "$(COMID)"=="gcc3"' makes sense and what
1788# happens if somebody will change it in the future
1789.IF "$(COMID)"=="gcc3"
1790    $(COMMAND_ECHO) tr -d "\015" < $(SHL4VERSIONMAP) | $(AWK) -f $(SOLARENV)/bin/addsym.awk > $@
1791.ELIF "$(COMNAME)"=="sunpro5"
1792    $(COMMAND_ECHO) tr -d "\015" < $(SHL4VERSIONMAP) | $(GREP) -v $(IGNORE_SYMBOLS) > $@
1793.ELSE           # "$(COMID)"=="gcc3"
1794    $(COMMAND_ECHO) tr -d "\015" < $(SHL4VERSIONMAP) > $@
1795.ENDIF          # "$(COMID)"=="gcc3"
1796    @chmod a+w $@
1797# Mac OS X post-processing generate an exported symbols list from the generated map file
1798# for details on exported symbols list see man ld on Mac OS X
1799.IF "$(OS)"=="MACOSX"
1800    @-cat $@ | $(AWK) -f $(SOLARENV)/bin/unxmap-to-macosx-explist.awk | grep -v "\*\|?" > $@.exported-symbols
1801    @-cat $@ | $(AWK) -f $(SOLARENV)/bin/unxmap-to-macosx-explist.awk | grep "\*\|?" > $@.symbols-regexp
1802# Shared libraries will be build out of the *.obj files specified in SHL?OBJS and SHL?LIBS
1803# Extract RTTI symbols from all the objects that will be used to build a shared library
1804.IF "$(SHL4OBJS)"!=""
1805    -echo $(foreach,i,$(SHL4OBJS:s/.obj/.o/) $i) | xargs -n1 nm -gx | $(SOLARENV)/bin/addsym-macosx.sh $@.symbols-regexp $@.symbols-regexp.tmp >> $@.exported-symbols
1806.ENDIF
1807.IF "$(SHL4LIBS)"!=""
1808    $(COMMAND_ECHO)-$(TYPE) $(foreach,j,$(SHL4LIBS) $j) | $(SED) s\#$(ROUT)\#$(PRJ)/$(ROUT)\#g | xargs -n1 nm -gx | $(SOLARENV)/bin/addsym-macosx.sh $@.symbols-regexp $@.symbols-regexp.tmp >> $@.exported-symbols
1809.ENDIF
1810# overwrite the map file generate into the local output tree with the generated
1811# exported symbols list
1812    cp $@.exported-symbols $@
1813.ENDIF # .IF "$(OS)"=="MACOSX"
1814.ENDIF          # "$(SHL4VERSIONMAP)"!=""
1815.ENDIF          # "$(USE_SHL4VERSIONMAP)"!=""
1816.ENDIF          # "$(GUI)" != "UNX"
1817
1818.IF "$(UNIXVERSIONNAMES)"!=""
1819.IF "$(OS)"!="MACOSX"
1820.IF "$(GUI)"=="UNX"
1821SHL4SONAME=\"$(SONAME_SWITCH)$(SHL4TARGETN:f)\"
1822.ENDIF          # "$(GUI)"!="UNX"
1823.ENDIF          # "$(OS)"!="MACOSX"
1824.ENDIF          # "$(UNIXVERSIONNAMES)"!=""
1825
1826.IF "$(SHL4RES)"!=""
1827SHL4ALLRES+=$(SHL4RES)
1828SHL4LINKRES*=$(MISC)/$(SHL4TARGET).res
1829SHL4LINKRESO*=$(MISC)/$(SHL4TARGET)_res.o
1830.ENDIF          # "$(SHL4RES)"!=""
1831
1832.IF "$(SHL4DEFAULTRES)$(use_shl_versions)"!=""
1833SHL4DEFAULTRES*=$(MISC)/$(SHL4TARGET)_def.res
1834SHL4ALLRES+=$(SHL4DEFAULTRES)
1835SHL4LINKRES*=$(MISC)/$(SHL4TARGET).res
1836SHL4LINKRESO*=$(MISC)/$(SHL4TARGET)_res.o
1837.ENDIF          # "$(SHL4DEFAULTRES)$(use_shl_versions)"!=""
1838
1839#.IF "$(SHL4TARGETN)"!=""
1840
1841.IF "$(linkinc)"!=""
1842.IF "$(GUI)"=="WNT" || "$(GUI)" == "OS2"
1843.IF "$(SHL4LIBS)"!=""
1844$(MISC)/$(SHL4TARGET)_linkinc.ls .PHONY:
1845    @@-$(RM) $@
1846    $(COMMAND_ECHO)$(SED) -f $(SOLARENV)/bin/chrel.sed $(foreach,i,$(SHL4LIBS) $(i:s/.lib/.lin/)) >> $@
1847.ENDIF          # "$(SHL4LIBS)"!=""
1848.ENDIF
1849
1850LINKINCTARGETS+=$(MISC)/$(SHL4TARGETN:b)_linkinc.ls
1851$(SHL4TARGETN) : $(LINKINCTARGETS)
1852
1853.ELSE
1854.IF "$(SHL4USE_EXPORTS)"=="name"
1855.IF "$(GUI)"=="WNT" || "$(GUI)" == "OS2"
1856.IF "$(COM)"!="GCC"
1857.IF "$(SHL4LIBS)"!=""
1858SHL4LINKLIST=$(MISC)/$(SHL4TARGET)_link.lst
1859SHL4LINKLISTPARAM=@$(SHL4LINKLIST)
1860$(SHL4LINKLIST) : $(SHL4LIBS)
1861    @@-$(RM) $@
1862    $(COMMAND_ECHO)$(SED) -f $(SOLARENV)/bin/chrel.sed $(foreach,i,$(SHL4LIBS) $(i:s/.lib/.lin/)) >> $@
1863.ENDIF          # "$(SHL4LIBS)"!=""
1864.ENDIF          # "$(COM)"!="GCC"
1865.ENDIF
1866.ENDIF          # "$(SHL4USE_EXPORTS)"=="name"
1867
1868$(MISC)/%linkinc.ls:
1869    @echo . > $@
1870.ENDIF          # "$(linkinc)"!=""
1871
1872.IF "$(GUI)" == "OS2"
1873#21/02/2006 YD dll names must be 8.3, invoke fix script
1874#check osl/os2/module.c/osl_loadModule()
1875SHL4TARGET8=$(shell @fix_shl.cmd $(SHL4TARGET))
1876.ENDIF
1877
1878
1879$(SHL4TARGETN) : \
1880                    $(SHL4OBJS)\
1881                    $(SHL4LIBS)\
1882                    $(USE_4IMPLIB_DEPS)\
1883                    $(USE_SHL4DEF)\
1884                    $(USE_SHL4VERSIONMAP)\
1885                    $(SHL4RES)\
1886                    $(SHL4DEPN) \
1887                    $(SHL4LINKLIST)
1888    @echo "Making:   " $(@:f)
1889.IF "$(GUI)" == "WNT"
1890.IF "$(SHL4DEFAULTRES)"!=""
1891    @@-$(RM) $(MISC)/$(SHL4DEFAULTRES:b).rc
1892.IF "$(SHL4ICON)" != ""
1893    @echo 1 ICON $(SHL4ICON) >> $(MISC)/$(SHL4DEFAULTRES:b).rc
1894.ENDIF
1895.IF "$(use_shl_versions)" != ""
1896.IF "$(SHL4ADD_VERINFO)"!=""
1897    @echo $(EMQ)#include $(EMQ)"$(SHL4ADD_VERINFO)$(EMQ)" >> $(MISC)/$(SHL4DEFAULTRES:b).rc
1898.ELSE           # "$(SHL4ADD_VERINFO)"!=""
1899    @echo $(EMQ)#define ADDITIONAL_VERINFO1 >> $(MISC)/$(SHL4DEFAULTRES:b).rc
1900    @echo $(EMQ)#define ADDITIONAL_VERINFO2 >> $(MISC)/$(SHL4DEFAULTRES:b).rc
1901    @echo $(EMQ)#define ADDITIONAL_VERINFO3 >> $(MISC)/$(SHL4DEFAULTRES:b).rc
1902.ENDIF          # "$(SHL4ADD_VERINFO)"!=""
1903    @echo $(EMQ)#define VERVARIANT  $(BUILD) >> $(MISC)/$(SHL4DEFAULTRES:b).rc
1904    @echo $(EMQ)#define ORG_NAME    $(SHL4TARGET)$(DLLPOST) >> $(MISC)/$(SHL4DEFAULTRES:b).rc
1905    @echo $(EMQ)#define INTERNAL_NAME $(SHL4TARGET:b) >> $(MISC)/$(SHL4DEFAULTRES:b).rc
1906    @echo $(EMQ)#include $(EMQ)"shlinfo.rc$(EMQ)" >> $(MISC)/$(SHL4DEFAULTRES:b).rc
1907.ENDIF          # "$(use_shl_versions)" != ""
1908    $(COMMAND_ECHO)$(RC) -DWIN32 $(INCLUDE) $(RCLINKFLAGS) $(MISC)/$(SHL4DEFAULTRES:b).rc
1909.ENDIF          # "$(SHL4DEFAULTRES)"!=""
1910.IF "$(SHL4ALLRES)"!=""
1911    $(COMMAND_ECHO)$(TYPE) $(SHL4ALLRES) > $(SHL4LINKRES)
1912.IF "$(COM)"=="GCC"
1913    windres $(SHL4LINKRES) $(SHL4LINKRESO)
1914.ENDIF          # "$(COM)"=="GCC"
1915.ENDIF          # "$(SHL4ALLRES)"!=""
1916.IF "$(COM)"=="GCC" # always have to call dlltool explicitly as ld cannot handle # comment in .def
1917    @echo dlltool --dllname $(SHL4TARGET)$(DLLPOST) \
1918        --kill-at \\ > $(MISC)/$(TARGET).$(@:b)_4.cmd
1919    @noop $(assign ALL4OBJLIST:=$(STDOBJ) $(SHL4OBJS) $(SHL4LINKRESO) $(shell $(TYPE) /dev/null $(SHL4LIBS) | $(SED) s?$(ROUT)?$(PRJ)/$(ROUT)?g))
1920.IF "$(DEFLIB4NAME)"!=""    # do not have to include objs
1921    @noop $(assign DEF4OBJLIST:=$(shell $(TYPE) $(foreach,i,$(DEFLIB4NAME) $(SLB)/$(i).lib) | sed s?$(ROUT)?$(PRJ)/$(ROUT)?g))
1922    @noop $(foreach,i,$(DEF4OBJLIST) $(assign ALL4OBJLIST:=$(ALL4OBJLIST:s?$i??)))
1923.ENDIF          # "$(DEFLIB4NAME)"!=""
1924    @echo   --output-exp $(MISC)/$(@:b)_exp.o \\ >> $(MISC)/$(TARGET).$(@:b)_4.cmd
1925.IF "$(SHL4DEF)"!=""
1926    @echo   --input-def $(SHL4DEF) \\ >> $(MISC)/$(TARGET).$(@:b)_4.cmd
1927.ELSE
1928    @echo   $(SHL4VERSIONOBJ) $(SHL4DESCRIPTIONOBJ) \\ >> $(MISC)/$(TARGET).$(@:b)_4.cmd
1929.ENDIF
1930    @echo   $(ALL4OBJLIST) >> $(MISC)/$(TARGET).$(@:b)_4.cmd
1931    @echo $(LINK) $(LINKFLAGS) $(LINKFLAGSSHL) $(MINGWSSTDOBJ) -o $@ \
1932        $(STDOBJ) $(SHL4VERSIONOBJ) $(SHL4DESCRIPTIONOBJ) $(SHL4OBJS) $(SHL4LINKRESO) \
1933        `$(TYPE) /dev/null $(SHL4LIBS) | $(SED) s\#$(ROUT)\#$(PRJ)/$(ROUT)\#g` \
1934        -Wl,--exclude-libs,ALL,--start-group $(SHL4STDLIBS) -Wl,--end-group \
1935        $(SHL4STDSHL) $(STDSHL4) $(MISC)/$(@:b)_exp.o $(MINGWSSTDENDOBJ) \
1936        -Wl,-Map,$(MISC)/$(@:b).map >> $(MISC)/$(TARGET).$(@:b)_4.cmd
1937  .IF "$(VERBOSE)" == "TRUE"
1938    @$(TYPE)  $(MISC)/$(TARGET).$(@:b)_4.cmd
1939  .ENDIF
1940    @+source $(MISC)/$(TARGET).$(@:b)_4.cmd
1941.ELSE
1942.IF "$(linkinc)"==""
1943.IF "$(SHL4USE_EXPORTS)"!="name"
1944.IF "$(USE_DEFFILE)"!=""
1945    $(COMMAND_ECHO)$(SHL4LINKER) @$(mktmp \
1946        $(SHL4LINKFLAGS) \
1947        $(LINKFLAGSSHL) \
1948        $(SHL4STACK) $(SHL4BASEX)   \
1949        -out:$@ \
1950        -map:$(MISC)/$(@:b).map \
1951        -def:$(SHL4DEF) \
1952        $(USE_4IMPLIB) \
1953        $(STDOBJ) \
1954        $(SHL4VERSIONOBJ) $(SHL4OBJS) \
1955        $(SHL4LIBS) \
1956        $(SHL4STDLIBS) \
1957        $(SHL4STDSHL) $(STDSHL4) \
1958        $(SHL4LINKRES) \
1959    )
1960# double check if target was really written... still making sense?
1961    @@$(LS) $@
1962    @echo linking $@.manifest ...
1963.IF "$(VISTA_MANIFEST)"!=""
1964    $(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(MT) $(MTFLAGS) -manifest $@.manifest -manifest $(TRUSTED_MANIFEST_LOCATION)/trustedinfo.manifest -out:$@.tmanifest$(EMQ) $(FI)
1965    $(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(MT) $(MTFLAGS) -manifest $@.tmanifest -outputresource:$@$(EMQ);2 $(FI)
1966.ELSE
1967    $(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(MT) $(MTFLAGS) -manifest $@.manifest -outputresource:$@$(EMQ);2 $(FI)
1968.ENDIF # "$(VISTA_MANIFEST)"!=""
1969    $(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(RM:s/+//) $@.manifest $(FI)
1970    $(COMMAND_ECHO)$(IFEXIST) $@.tmanifest $(THEN) $(RM:s/+//) $@.tmanifest $(FI)
1971.ELSE           # "$(USE_DEFFILE)"!=""
1972    $(COMMAND_ECHO)$(SHL4LINKER) @$(mktmp   $(SHL4LINKFLAGS)            \
1973        $(LINKFLAGSSHL) $(SHL4BASEX)        \
1974        $(SHL4STACK) -out:$(SHL4TARGETN)    \
1975        -map:$(MISC)/$(@:B).map             \
1976        $(LB)/$(SHL4IMPLIB).exp             \
1977        $(STDOBJ)                           \
1978        $(SHL4OBJS) $(SHL4VERSIONOBJ) \
1979        $(SHL4LIBS)                         \
1980        $(SHL4STDLIBS)                      \
1981        $(SHL4STDSHL) $(STDSHL4)                           \
1982        $(SHL4LINKRES) \
1983    )
1984# double check if target was really written... still making sense?
1985    @@$(LS) $@
1986    @echo linking $@.manifest ...
1987.IF "$(VISTA_MANIFEST)"!=""
1988    $(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(MT) $(MTFLAGS) -manifest $@.manifest -manifest $(TRUSTED_MANIFEST_LOCATION)/trustedinfo.manifest -out:$@.tmanifest$(EMQ) $(FI)
1989    $(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(MT) $(MTFLAGS) -manifest $@.tmanifest -outputresource:$@$(EMQ);2 $(FI)
1990.ELSE
1991    $(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(MT) $(MTFLAGS) -manifest $@.manifest -outputresource:$@$(EMQ);2 $(FI)
1992.ENDIF # "$(VISTA_MANIFEST)"!=""
1993    $(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(RM:s/+//) $@.manifest $(FI)
1994    $(COMMAND_ECHO)$(IFEXIST) $@.tmanifest $(THEN) $(RM:s/+//) $@.tmanifest $(FI)
1995.ENDIF          # "$(USE_DEFFILE)"!=""
1996.ELSE           # "$(SHL4USE_EXPORTS)"!="name"
1997    $(COMMAND_ECHO)$(SHL4LINKER) @$(mktmp   $(SHL4LINKFLAGS)            \
1998        $(LINKFLAGSSHL) $(SHL4BASEX)        \
1999        $(SHL4STACK) -out:$(SHL4TARGETN)    \
2000        -map:$(MISC)/$(@:B).map             \
2001        $(USE_4IMPLIB) \
2002        $(STDOBJ)                           \
2003        $(SHL4OBJS) $(SHL4VERSIONOBJ))   \
2004        $(SHL4LINKLISTPARAM) \
2005        @$(mktmp $(SHL4STDLIBS)                      \
2006        $(SHL4STDSHL) $(STDSHL4)                           \
2007        $(SHL4LINKRES) \
2008    )
2009    @echo linking $@.manifest ...
2010.IF "$(VISTA_MANIFEST)"!=""
2011    $(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(MT) $(MTFLAGS) -manifest $@.manifest -manifest $(TRUSTED_MANIFEST_LOCATION)/trustedinfo.manifest -out:$@.tmanifest$(EMQ) $(FI)
2012    $(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(MT) $(MTFLAGS) -manifest $@.tmanifest -outputresource:$@$(EMQ);2 $(FI)
2013.ELSE
2014    $(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(MT) $(MTFLAGS) -manifest $@.manifest -outputresource:$@$(EMQ);2 $(FI)
2015.ENDIF # "$(VISTA_MANIFEST)"!=""
2016    $(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(RM:s/+//) $@.manifest $(FI)
2017    $(COMMAND_ECHO)$(IFEXIST) $@.tmanifest $(THEN) $(RM:s/+//) $@.tmanifest $(FI)
2018.ENDIF          # "$(SHL4USE_EXPORTS)"!="name"
2019.ELSE           # "$(linkinc)"==""
2020        $(COMMAND_ECHO)-$(RM) del $(MISC)/$(SHL4TARGET).lnk
2021        $(COMMAND_ECHO)-$(RM) $(MISC)/$(SHL4TARGET).lst
2022        $(COMMAND_ECHO)$(TYPE) $(mktmp \
2023        $(SHL4LINKFLAGS) \
2024        $(LINKFLAGSSHL) $(SHL4BASEX) \
2025        $(SHL4STACK) $(MAPFILE) \
2026        -out:$@ \
2027        $(LB)/$(SHL4IMPLIB).exp \
2028        $(STDOBJ) \
2029        $(SHL4OBJS) \
2030        $(SHL4STDLIBS) \
2031        $(SHL4STDSHL) $(STDSHL4) \
2032        $(SHL4LINKRES) \
2033        ) >> $(MISC)/$(SHL4TARGET).lnk
2034        $(COMMAND_ECHO)$(TYPE) $(MISC)/$(SHL4TARGETN:b)_linkinc.ls  >> $(MISC)/$(SHL4TARGET).lnk
2035        $(COMMAND_ECHO)$(SHL4LINKER) @$(MISC)/$(SHL4TARGET).lnk
2036        @echo linking $@.manifest ...
2037.IF "$(VISTA_MANIFEST)"!=""
2038        $(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(MT) $(MTFLAGS) -manifest $@.manifest -manifest $(TRUSTED_MANIFEST_LOCATION)/trustedinfo.manifest -out:$@.tmanifest$(EMQ) $(FI)
2039        $(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(MT) $(MTFLAGS) -manifest $@.tmanifest -outputresource:$@$(EMQ);2 $(FI)
2040.ELSE
2041        $(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(MT) $(MTFLAGS) -manifest $@.manifest -outputresource:$@$(EMQ);2 $(FI)
2042.ENDIF # "$(VISTA_MANIFEST)"!=""
2043        $(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(RM:s/+//) $@.manifest $(FI)
2044        $(COMMAND_ECHO)$(IFEXIST) $@.tmanifest $(THEN) $(RM:s/+//) $@.tmanifest $(FI)
2045.ENDIF          # "$(linkinc)"==""
2046.ENDIF          # "$(COM)"=="GCC"
2047.ENDIF          # "$(GUI)" == "WNT"
2048.IF "$(GUI)"=="UNX"
2049.IF "$(OS)"=="MACOSX"
2050    @-$(RM) $(MISC)/$(@:b).list
2051    @-$(RM) $(MISC)/$(TARGET).$(@:b)_4.cmd
2052    @echo $(STDSLO) $(SHL4OBJS:s/.obj/.o/) \
2053    $(SHL4VERSIONOBJ) \
2054    `cat /dev/null $(SHL4LIBS) | sed s\#$(ROUT)\#$(PRJ)/$(ROUT)\#g` | tr -s " " "\n" > $(MISC)/$(@:b).list
2055    @echo -n $(SHL4LINKER) $(SHL4LINKFLAGS) $(SHL4VERSIONMAPPARA) $(LINKFLAGSSHL) -L$(PRJ)/$(ROUT)/lib $(SOLARLIB) -o $@ \
2056    $(SHL4STDLIBS) $(SHL4ARCHIVES) $(SHL4STDSHL) $(STDSHL4) -filelist $(MISC)/$(@:b).list $(LINKOUTPUT_FILTER) > $(MISC)/$(TARGET).$(@:b)_4.cmd
2057    @$(PERL) $(SOLARENV)/bin/macosx-dylib-link-list.pl \
2058        `cat $(MISC)/$(TARGET).$(@:b)_4.cmd` \
2059        >> $(MISC)/$(TARGET).$(@:b)_4.cmd
2060  .IF "$(VERBOSE)" == "TRUE"
2061    @cat $(MISC)/$(TARGET).$(@:b)_4.cmd
2062  .ENDIF
2063    @+source $(MISC)/$(TARGET).$(@:b)_4.cmd
2064    @$(PERL) $(SOLARENV)/bin/macosx-change-install-names.pl \
2065        shl $(SHL4RPATH) $@
2066.IF "$(SHL4CREATEJNILIB)"!=""
2067    @echo "Making:   " $(@:f).jnilib
2068    @macosx-create-bundle $@
2069.ENDIF          # "$(SHL4CREATEJNILIB)"!=""
2070.IF "$(UPDATER)"=="YES"
2071.IF "$(SHL4NOCHECK)"==""
2072    $(SOLARENV)/bin/checkdll.sh -L$(LB) -L$(SOLARLIBDIR) $(EXTRALIBPATHS4) $(SHL4TARGETN)
2073.ENDIF              # "$(SHL4NOCHECK)"!=""
2074.ENDIF
2075.ELSE           # "$(OS)"=="MACOSX"
2076    @-$(RM) $(MISC)/$(TARGET).$(@:b)_4.cmd
2077    @echo $(SHL4LINKER) $(SHL4LINKFLAGS) $(SHL4SONAME) $(LINKFLAGSSHL) $(SHL4VERSIONMAPPARA) -L$(PRJ)/$(ROUT)/lib $(SOLARLIB) $(STDSLO) $(SHL4OBJS:s/.obj/.o/) \
2078    $(SHL4VERSIONOBJ) -o $@ \
2079    `cat /dev/null $(SHL4LIBS) | tr -s " " "\n" | $(SED) s\#$(ROUT)\#$(PRJ)/$(ROUT)\#g` \
2080    $(SHL4STDLIBS) $(SHL4ARCHIVES) $(SHL4STDSHL) $(STDSHL4) $(LINKOUTPUT_FILTER) > $(MISC)/$(TARGET).$(@:b)_4.cmd
2081  .IF "$(VERBOSE)" == "TRUE"
2082    @cat $(MISC)/$(TARGET).$(@:b)_4.cmd
2083  .ENDIF
2084    @+source $(MISC)/$(TARGET).$(@:b)_4.cmd
2085.IF "$(UPDATER)"=="YES"
2086.IF "$(SHL4NOCHECK)"==""
2087    $(COMMAND_ECHO)-$(RM) $(SHL4TARGETN:d)check_$(SHL4TARGETN:f)
2088    $(COMMAND_ECHO)$(RENAME) $(SHL4TARGETN) $(SHL4TARGETN:d)check_$(SHL4TARGETN:f)
2089.IF "$(VERBOSE)"=="TRUE"
2090    $(COMMAND_ECHO)$(SOLARENV)/bin/checkdll.sh -L$(LB) -L$(SOLARLIBDIR) $(EXTRALIBPATHS4) $(SHL4TARGETN:d)check_$(SHL4TARGETN:f)
2091.ELSE
2092    $(COMMAND_ECHO)$(SOLARENV)/bin/checkdll.sh -L$(LB) -L$(SOLARLIBDIR) $(EXTRALIBPATHS4) -- -s $(SHL4TARGETN:d)check_$(SHL4TARGETN:f)
2093.ENDIF
2094.ENDIF              # "$(SHL4NOCHECK)"!=""
2095.ENDIF          # "$(UPDATER)"=="YES"
2096.ENDIF          # "$(OS)"=="MACOSX"
2097.IF "$(UNIXVERSIONNAMES)"!=""
2098    $(COMMAND_ECHO)$(RM) $(LB)/$(SHL4TARGETN:b)
2099    $(COMMAND_ECHO)cd $(LB) && ln -s $(SHL4TARGETN:f) $(SHL4TARGETN:b)
2100.ENDIF          # "$(UNIXVERSIONNAMES)"!=""
2101.IF "$(VERBOSE)" == "TRUE"
2102    @ls -l $@
2103.ENDIF
2104.ENDIF          # "$(GUI)" == "UNX"
2105
2106.IF "$(GUI)" == "OS2"
2107
2108.IF "$(SHL4DEFAULTRES)"!=""
2109    @+-$(RM) $(MISC)/$(SHL4DEFAULTRES:b).rc > $(NULLDEV)
2110.IF "$(SHL4ICON)" != ""
2111    @-+echo 1 ICON $(SHL4ICON) >> $(MISC)/$(SHL4DEFAULTRES:b).rc
2112.ENDIF
2113.IF "$(use_shl_versions)" != ""
2114.IF "$(SHL4ADD_VERINFO)"!=""
2115    @-+echo $(EMQ)#include $(EMQ)"$(SHL4ADD_VERINFO)$(EMQ)" >> $(MISC)/$(SHL4DEFAULTRES:b).rc
2116.ENDIF          # "$(SHL4ADD_VERINFO)"!=""
2117    @-+echo MENU 1 BEGIN END >> $(MISC)/$(SHL4DEFAULTRES:b).rc
2118#   @-+echo $(EMQ)RCDATA 1 { "Build string here" }$(EMQ) >> $(MISC)/$(SHL4DEFAULTRES:b).rc
2119.ENDIF          # "$(use_shl_versions)" != ""
2120# YD 04/07/06 seems null, confuses rc cli: -i $(SOLARTESDIR)
2121    $(COMMAND_ECHO)$(RC) -r -DOS2 $(INCLUDE) $(RCLINKFLAGS) $(MISC)/$(SHL4DEFAULTRES:b).rc
2122.ENDIF          # "$(SHL4DEFAULTRES)"!=""
2123
2124.IF "$(SHL4ALLRES)"!=""
2125    $(COMMAND_ECHO)+$(TYPE) $(SHL4ALLRES) > $(SHL4LINKRES)
2126.ENDIF          # "$(SHL4ALLRES)"!=""
2127
2128.IF "$(USE_DEFFILE)"!=""
2129
2130    $(COMMAND_ECHO)$(SHL4LINKER) $(SHL4LINKFLAGS) $(LINKFLAGSSHL) -o $@ \
2131        $(SHL4DEF) \
2132        $(STDOBJ) \
2133        -L$(LB) \
2134        -L$(SOLARVERSION)/$(INPATH)/lib \
2135        $(SHL4OBJS) $(SHL4VERSIONOBJ) \
2136        $(SHL4LIBS) \
2137        $(SHL4LINKRES) \
2138        $(SHL4STDLIBS) \
2139        $(SHL4STDSHL) $(STDSHL4)
2140
2141.ELSE           # "$(USE_DEFFILE)"!=""
2142
2143    $(COMMAND_ECHO)$(SHL4LINKER) $(SHL4LINKFLAGS)           \
2144        $(LINKFLAGSSHL) $(SHL4BASEX)        \
2145        $(SHL4STACK) -o $(SHL4TARGETN)  \
2146        $(SHL4DEF) \
2147        $(STDOBJ)                           \
2148        -L$(LB) \
2149        -L$(SOLARVERSION)/$(INPATH)/lib \
2150        $(SHL4OBJS) $(SHL4VERSIONOBJ) \
2151        $(SHL4LIBS) \
2152        $(SHL4LINKRES) \
2153        $(SHL4STDLIBS) \
2154        $(SHL4STDSHL) $(STDSHL4)
2155
2156.ENDIF          # "$(USE_DEFFILE)"!=""
2157
2158    $(COMMAND_ECHO)+$(IMPLIB) -p256 $(IMPLIBFLAGS) $(SHL4IMPLIBN) $@
2159    $(COMMAND_ECHO)+$(IMPLIB) -p256 $(IMPLIBFLAGS) $(LB)/$(SHL4TARGET).lib $@
2160
2161.IF "$(SHL4TARGET8)" != "$(SHL4TARGET)"
2162    $(COMMAND_ECHO)+$(COPY) $@ $(@:d)$(SHL4TARGET8).dll
2163.ENDIF
2164
2165.ENDIF          # "$(GUI)" == "OS2"
2166
2167.ENDIF          # "$(SHL4TARGETN)"!=""
2168
2169# unroll begin
2170
2171.IF "$(SHL5TARGETN)"!=""
2172
2173.IF "$(OS)"=="AIX"
2174SHL5STDLIBS=
2175.ENDIF
2176
2177.IF "$(SHLLINKARCONLY)" != ""
2178SHL5STDLIBS=
2179STDSHL=
2180.ELSE
2181SHL5ARCHIVES=
2182.ENDIF
2183
2184# decide how to link
2185.IF "$(SHL5CODETYPE)"=="C"
2186SHL5LINKER=$(LINKC)
2187SHL5STDSHL=$(subst,CPPRUNTIME, $(STDSHL))
2188SHL5LINKFLAGS+=$(LINKCFLAGS)
2189.ELSE           # "$(SHL5CODETYPE)"=="C"
2190SHL5LINKER=$(LINK)
2191SHL5STDSHL=$(subst,CPPRUNTIME,$(STDLIBCPP) $(STDSHL))
2192SHL5LINKFLAGS+=$(LINKFLAGS)
2193.ENDIF          # "$(SHL5CODETYPE)"=="C"
2194
2195SHL5RPATH*=OOO
2196LINKFLAGSRUNPATH_$(SHL5RPATH)*=/ERROR:/Bad_SHL5RPATH_value
2197SHL5LINKFLAGS+=$(LINKFLAGSRUNPATH_$(SHL5RPATH))
2198
2199.IF "$(SHL5USE_EXPORTS)"==""
2200SHL5DEF*=$(MISC)/$(SHL5TARGET).def
2201.ENDIF          # "$(SHL5USE_EXPORTS)"==""
2202
2203EXTRALIBPATHS5=$(EXTRALIBPATHS)
2204.IF "$(UPDATER)"=="YES"
2205.IF "$(SHL5NOCHECK)"==""
2206.IF "$(SOLAR_STLLIBPATH)"!=""
2207EXTRALIBPATHS5+=-L$(SOLAR_STLLIBPATH)
2208.ENDIF
2209.ENDIF              # "$(SHL5NOCHECK)"!=""
2210.ENDIF
2211#+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
2212#+++++++++++    version object      ++++++++++++++++++++++++++++++++++++++++
2213#+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
2214
2215.IF "$(L10N_framework)"==""
2216.IF "$(VERSIONOBJ)"!=""
2217SHL5VERSIONOBJ:=$(VERSIONOBJ:d){$(subst,$(DLLPOSTFIX),_dflt $(SHL5TARGET))}$(VERSIONOBJ:f)
2218USE_VERSIONH:=$(INCCOM)/$(SHL5VERSIONOBJ:b).h
2219.IF "$(GUI)" == "UNX"
2220SHL5VERSIONOBJDEP:=$(VERSIONOBJ:d){$(subst,$(DLLPOSTFIX),_dflt $(SHL5TARGET))}$(VERSIONOBJ:f:s/.o/.obj/)
2221.ELSE           # "$(GUI)" == "UNX"
2222SHL5VERSIONOBJDEP:=$(VERSIONOBJ:d){$(subst,$(DLLPOSTFIX),_dflt $(SHL5TARGET))}$(VERSIONOBJ:f)
2223.ENDIF          # "$(GUI)" == "UNX"
2224$(MISC)/$(SHL5VERSIONOBJ:b).c : $(SOLARENV)/src/version.c $(INCCOM)/$(SHL5VERSIONOBJ:b).h
2225#    $(COPY) $(SOLARENV)/src/version.c $@
2226    $(COMMAND_ECHO)$(TYPE) $(SOLARENV)/src/version.c | $(SED) s/_version.h/$(SHL5VERSIONOBJ:b).h/ > $@
2227
2228.INIT : $(SHL5VERSIONOBJDEP)
2229.ENDIF          # "$(VERSIONOBJ)"!=""
2230.ENDIF
2231
2232.IF "$(GUI)" != "UNX"
2233.IF "$(GUI)" == "WNT" || "$(GUI)" == "OS2"
2234.IF "$(SHL5IMPLIB)" == ""
2235SHL5IMPLIB=i$(TARGET)_t5
2236.ENDIF          # "$(SHL5IMPLIB)" == ""
2237.IF "$(COM)" != "GCC"
2238USE_5IMPLIB=-implib:$(LB)/$(SHL5IMPLIB).lib
2239.ENDIF          # "$(COM)" != "GCC"
2240SHL5IMPLIBN=$(LB)/$(SHL5IMPLIB).lib
2241ALLTAR : $(SHL5IMPLIBN)
2242
2243.IF "$(USE_DEFFILE)"==""
2244USE_5IMPLIB_DEPS=$(LB)/$(SHL5IMPLIB).lib
2245.ENDIF          # "$(USE_DEFFILE)"==""
2246.ENDIF          # "$(GUI)" == "WNT" || "$(GUI)" == "OS2"
2247USE_SHL5DEF=$(SHL5DEF)
2248.ELSE           # "$(GUI)" != "UNX"
2249USE_SHL5DEF=
2250SHL5DEPN+:=$(SHL5DEPNU)
2251
2252.IF "$(SHL5VERSIONMAP)"==""
2253# to activate vmaps remove "#"
2254USE_SHL5VERSIONMAP=$(MISC)/$(SHL5TARGET).vmap
2255.ENDIF          # "$(SHL5VERSIONMAP)"==""
2256
2257.IF "$(USE_SHL5VERSIONMAP)"!=""
2258
2259.IF "$(SHL5FILTERFILE)"!=""
2260.IF "$(SHL5VERSIONMAP)"!=""
2261#eine von beiden ist zuviel
2262USE_SHL5VERSIONMAP=$(MISC)/$(SHL5TARGET).vmap
2263$(USE_SHL5VERSIONMAP) .PHONY:
2264    @echo -----------------------------
2265    @echo you should only use versionmap OR exportfile
2266    @echo -----------------------------
2267#   force_dmake_to_error
2268
2269.ENDIF          # "$(SHL5VERSIONMAP)"!=""
2270
2271SHL5VERSIONMAPPARA=$(LINKVERSIONMAPFLAG) $(USE_SHL5VERSIONMAP)
2272
2273$(USE_SHL5VERSIONMAP): \
2274                    $(SHL5OBJS)\
2275                    $(SHL5LIBS)\
2276                    $(SHL5FILTERFILE)
2277    @$(RM) $@.dump
2278.IF "$(SHL5OBJS)"!=""
2279# dump remaining objects on the fly
2280.IF "$(OS)"=="MACOSX"
2281    @-nm $(SHL5OBJS:s/.obj/.o/) > $@.dump
2282.ELSE
2283    @nm $(SHL5OBJS:s/.obj/.o/) > $@.dump
2284.ENDIF
2285.ENDIF          # "$(SHL5OBJS)!"=""
2286    @$(TYPE) /dev/null $(SHL5LIBS:s/.lib/.dump/) >> $@.dump
2287    $(COMMAND_ECHO) $(PERL) $(SOLARENV)/bin/mapgen.pl -d $@.dump -s $(SHL5INTERFACE) -f $(SHL5FILTERFILE) -m $@
2288
2289.ELSE           # "$(SHL5FILTERFILE)"!=""
2290USE_SHL5VERSIONMAP=$(MISC)/$(SHL5TARGET).vmap
2291$(USE_SHL5VERSIONMAP) :
2292.IF "$(VERBOSE)" == "TRUE"
2293    @echo -----------------------------
2294    @echo SHL5FILTERFILE not set!
2295    @echo -----------------------------
2296    @$(TOUCH) $@
2297    @echo dummy file to keep the dependencies for later use.
2298.ELSE
2299    @$(TOUCH) $@
2300.ENDIF
2301#   force_dmake_to_error
2302.ENDIF          # "$(SHL5FILTERFILE)"!=""
2303.ELSE           # "$(USE_SHL5VERSIONMAP)"!=""
2304
2305#and now for the plain non-generic way...
2306.IF "$(SHL5VERSIONMAP)"!=""
2307USE_SHL5VERSIONMAP=$(MISC)/$(SHL5VERSIONMAP:b)_$(SHL5TARGET)$(SHL5VERSIONMAP:e)
2308SHL5VERSIONMAPPARA=$(LINKVERSIONMAPFLAG) $(USE_SHL5VERSIONMAP)
2309
2310.IF "$(OS)"=="MACOSX"
2311$(USE_SHL5VERSIONMAP): $(SHL5OBJS) $(SHL5LIBS)
2312.ENDIF
2313
2314# .ERRREMOVE is needed as a recipe line like "$(AWK) ... > $@" would create $@
2315# even if the $(AWK) part fails:
2316$(USE_SHL5VERSIONMAP) .ERRREMOVE: $(SHL5VERSIONMAP)
2317    @@-$(RM) -f $@
2318# The following files will only be generated and needed on Mac OS X as temporary files
2319# in order to generate exported symbols list out of Linux/Solaris map files
2320.IF "$(OS)"=="MACOSX"
2321    @-$(RM) -f $@.symregexp >& $(NULLDEV)
2322    @-$(RM) -f $@.expsymlist >& $(NULLDEV)
2323.ENDIF
2324# Its questionable if the following condition '.IF "$(COMID)"=="gcc3"' makes sense and what
2325# happens if somebody will change it in the future
2326.IF "$(COMID)"=="gcc3"
2327    $(COMMAND_ECHO) tr -d "\015" < $(SHL5VERSIONMAP) | $(AWK) -f $(SOLARENV)/bin/addsym.awk > $@
2328.ELIF "$(COMNAME)"=="sunpro5"
2329    $(COMMAND_ECHO) tr -d "\015" < $(SHL5VERSIONMAP) | $(GREP) -v $(IGNORE_SYMBOLS) > $@
2330.ELSE           # "$(COMID)"=="gcc3"
2331    $(COMMAND_ECHO) tr -d "\015" < $(SHL5VERSIONMAP) > $@
2332.ENDIF          # "$(COMID)"=="gcc3"
2333    @chmod a+w $@
2334# Mac OS X post-processing generate an exported symbols list from the generated map file
2335# for details on exported symbols list see man ld on Mac OS X
2336.IF "$(OS)"=="MACOSX"
2337    @-cat $@ | $(AWK) -f $(SOLARENV)/bin/unxmap-to-macosx-explist.awk | grep -v "\*\|?" > $@.exported-symbols
2338    @-cat $@ | $(AWK) -f $(SOLARENV)/bin/unxmap-to-macosx-explist.awk | grep "\*\|?" > $@.symbols-regexp
2339# Shared libraries will be build out of the *.obj files specified in SHL?OBJS and SHL?LIBS
2340# Extract RTTI symbols from all the objects that will be used to build a shared library
2341.IF "$(SHL5OBJS)"!=""
2342    -echo $(foreach,i,$(SHL5OBJS:s/.obj/.o/) $i) | xargs -n1 nm -gx | $(SOLARENV)/bin/addsym-macosx.sh $@.symbols-regexp $@.symbols-regexp.tmp >> $@.exported-symbols
2343.ENDIF
2344.IF "$(SHL5LIBS)"!=""
2345    $(COMMAND_ECHO)-$(TYPE) $(foreach,j,$(SHL5LIBS) $j) | $(SED) s\#$(ROUT)\#$(PRJ)/$(ROUT)\#g | xargs -n1 nm -gx | $(SOLARENV)/bin/addsym-macosx.sh $@.symbols-regexp $@.symbols-regexp.tmp >> $@.exported-symbols
2346.ENDIF
2347# overwrite the map file generate into the local output tree with the generated
2348# exported symbols list
2349    cp $@.exported-symbols $@
2350.ENDIF # .IF "$(OS)"=="MACOSX"
2351.ENDIF          # "$(SHL5VERSIONMAP)"!=""
2352.ENDIF          # "$(USE_SHL5VERSIONMAP)"!=""
2353.ENDIF          # "$(GUI)" != "UNX"
2354
2355.IF "$(UNIXVERSIONNAMES)"!=""
2356.IF "$(OS)"!="MACOSX"
2357.IF "$(GUI)"=="UNX"
2358SHL5SONAME=\"$(SONAME_SWITCH)$(SHL5TARGETN:f)\"
2359.ENDIF          # "$(GUI)"!="UNX"
2360.ENDIF          # "$(OS)"!="MACOSX"
2361.ENDIF          # "$(UNIXVERSIONNAMES)"!=""
2362
2363.IF "$(SHL5RES)"!=""
2364SHL5ALLRES+=$(SHL5RES)
2365SHL5LINKRES*=$(MISC)/$(SHL5TARGET).res
2366SHL5LINKRESO*=$(MISC)/$(SHL5TARGET)_res.o
2367.ENDIF          # "$(SHL5RES)"!=""
2368
2369.IF "$(SHL5DEFAULTRES)$(use_shl_versions)"!=""
2370SHL5DEFAULTRES*=$(MISC)/$(SHL5TARGET)_def.res
2371SHL5ALLRES+=$(SHL5DEFAULTRES)
2372SHL5LINKRES*=$(MISC)/$(SHL5TARGET).res
2373SHL5LINKRESO*=$(MISC)/$(SHL5TARGET)_res.o
2374.ENDIF          # "$(SHL5DEFAULTRES)$(use_shl_versions)"!=""
2375
2376#.IF "$(SHL5TARGETN)"!=""
2377
2378.IF "$(linkinc)"!=""
2379.IF "$(GUI)"=="WNT" || "$(GUI)" == "OS2"
2380.IF "$(SHL5LIBS)"!=""
2381$(MISC)/$(SHL5TARGET)_linkinc.ls .PHONY:
2382    @@-$(RM) $@
2383    $(COMMAND_ECHO)$(SED) -f $(SOLARENV)/bin/chrel.sed $(foreach,i,$(SHL5LIBS) $(i:s/.lib/.lin/)) >> $@
2384.ENDIF          # "$(SHL5LIBS)"!=""
2385.ENDIF
2386
2387LINKINCTARGETS+=$(MISC)/$(SHL5TARGETN:b)_linkinc.ls
2388$(SHL5TARGETN) : $(LINKINCTARGETS)
2389
2390.ELSE
2391.IF "$(SHL5USE_EXPORTS)"=="name"
2392.IF "$(GUI)"=="WNT" || "$(GUI)" == "OS2"
2393.IF "$(COM)"!="GCC"
2394.IF "$(SHL5LIBS)"!=""
2395SHL5LINKLIST=$(MISC)/$(SHL5TARGET)_link.lst
2396SHL5LINKLISTPARAM=@$(SHL5LINKLIST)
2397$(SHL5LINKLIST) : $(SHL5LIBS)
2398    @@-$(RM) $@
2399    $(COMMAND_ECHO)$(SED) -f $(SOLARENV)/bin/chrel.sed $(foreach,i,$(SHL5LIBS) $(i:s/.lib/.lin/)) >> $@
2400.ENDIF          # "$(SHL5LIBS)"!=""
2401.ENDIF          # "$(COM)"!="GCC"
2402.ENDIF
2403.ENDIF          # "$(SHL5USE_EXPORTS)"=="name"
2404
2405$(MISC)/%linkinc.ls:
2406    @echo . > $@
2407.ENDIF          # "$(linkinc)"!=""
2408
2409.IF "$(GUI)" == "OS2"
2410#21/02/2006 YD dll names must be 8.3, invoke fix script
2411#check osl/os2/module.c/osl_loadModule()
2412SHL5TARGET8=$(shell @fix_shl.cmd $(SHL5TARGET))
2413.ENDIF
2414
2415
2416$(SHL5TARGETN) : \
2417                    $(SHL5OBJS)\
2418                    $(SHL5LIBS)\
2419                    $(USE_5IMPLIB_DEPS)\
2420                    $(USE_SHL5DEF)\
2421                    $(USE_SHL5VERSIONMAP)\
2422                    $(SHL5RES)\
2423                    $(SHL5DEPN) \
2424                    $(SHL5LINKLIST)
2425    @echo "Making:   " $(@:f)
2426.IF "$(GUI)" == "WNT"
2427.IF "$(SHL5DEFAULTRES)"!=""
2428    @@-$(RM) $(MISC)/$(SHL5DEFAULTRES:b).rc
2429.IF "$(SHL5ICON)" != ""
2430    @echo 1 ICON $(SHL5ICON) >> $(MISC)/$(SHL5DEFAULTRES:b).rc
2431.ENDIF
2432.IF "$(use_shl_versions)" != ""
2433.IF "$(SHL5ADD_VERINFO)"!=""
2434    @echo $(EMQ)#include $(EMQ)"$(SHL5ADD_VERINFO)$(EMQ)" >> $(MISC)/$(SHL5DEFAULTRES:b).rc
2435.ELSE           # "$(SHL5ADD_VERINFO)"!=""
2436    @echo $(EMQ)#define ADDITIONAL_VERINFO1 >> $(MISC)/$(SHL5DEFAULTRES:b).rc
2437    @echo $(EMQ)#define ADDITIONAL_VERINFO2 >> $(MISC)/$(SHL5DEFAULTRES:b).rc
2438    @echo $(EMQ)#define ADDITIONAL_VERINFO3 >> $(MISC)/$(SHL5DEFAULTRES:b).rc
2439.ENDIF          # "$(SHL5ADD_VERINFO)"!=""
2440    @echo $(EMQ)#define VERVARIANT  $(BUILD) >> $(MISC)/$(SHL5DEFAULTRES:b).rc
2441    @echo $(EMQ)#define ORG_NAME    $(SHL5TARGET)$(DLLPOST) >> $(MISC)/$(SHL5DEFAULTRES:b).rc
2442    @echo $(EMQ)#define INTERNAL_NAME $(SHL5TARGET:b) >> $(MISC)/$(SHL5DEFAULTRES:b).rc
2443    @echo $(EMQ)#include $(EMQ)"shlinfo.rc$(EMQ)" >> $(MISC)/$(SHL5DEFAULTRES:b).rc
2444.ENDIF          # "$(use_shl_versions)" != ""
2445    $(COMMAND_ECHO)$(RC) -DWIN32 $(INCLUDE) $(RCLINKFLAGS) $(MISC)/$(SHL5DEFAULTRES:b).rc
2446.ENDIF          # "$(SHL5DEFAULTRES)"!=""
2447.IF "$(SHL5ALLRES)"!=""
2448    $(COMMAND_ECHO)$(TYPE) $(SHL5ALLRES) > $(SHL5LINKRES)
2449.IF "$(COM)"=="GCC"
2450    windres $(SHL5LINKRES) $(SHL5LINKRESO)
2451.ENDIF          # "$(COM)"=="GCC"
2452.ENDIF          # "$(SHL5ALLRES)"!=""
2453.IF "$(COM)"=="GCC" # always have to call dlltool explicitly as ld cannot handle # comment in .def
2454    @echo dlltool --dllname $(SHL5TARGET)$(DLLPOST) \
2455        --kill-at \\ > $(MISC)/$(TARGET).$(@:b)_5.cmd
2456    @noop $(assign ALL5OBJLIST:=$(STDOBJ) $(SHL5OBJS) $(SHL5LINKRESO) $(shell $(TYPE) /dev/null $(SHL5LIBS) | $(SED) s?$(ROUT)?$(PRJ)/$(ROUT)?g))
2457.IF "$(DEFLIB5NAME)"!=""    # do not have to include objs
2458    @noop $(assign DEF5OBJLIST:=$(shell $(TYPE) $(foreach,i,$(DEFLIB5NAME) $(SLB)/$(i).lib) | sed s?$(ROUT)?$(PRJ)/$(ROUT)?g))
2459    @noop $(foreach,i,$(DEF5OBJLIST) $(assign ALL5OBJLIST:=$(ALL5OBJLIST:s?$i??)))
2460.ENDIF          # "$(DEFLIB5NAME)"!=""
2461    @echo   --output-exp $(MISC)/$(@:b)_exp.o \\ >> $(MISC)/$(TARGET).$(@:b)_5.cmd
2462.IF "$(SHL5DEF)"!=""
2463    @echo   --input-def $(SHL5DEF) \\ >> $(MISC)/$(TARGET).$(@:b)_5.cmd
2464.ELSE
2465    @echo   $(SHL5VERSIONOBJ) $(SHL5DESCRIPTIONOBJ) \\ >> $(MISC)/$(TARGET).$(@:b)_5.cmd
2466.ENDIF
2467    @echo   $(ALL5OBJLIST) >> $(MISC)/$(TARGET).$(@:b)_5.cmd
2468    @echo $(LINK) $(LINKFLAGS) $(LINKFLAGSSHL) $(MINGWSSTDOBJ) -o $@ \
2469        $(STDOBJ) $(SHL5VERSIONOBJ) $(SHL5DESCRIPTIONOBJ) $(SHL5OBJS) $(SHL5LINKRESO) \
2470        `$(TYPE) /dev/null $(SHL5LIBS) | $(SED) s\#$(ROUT)\#$(PRJ)/$(ROUT)\#g` \
2471        -Wl,--exclude-libs,ALL,--start-group $(SHL5STDLIBS) -Wl,--end-group \
2472        $(SHL5STDSHL) $(STDSHL5) $(MISC)/$(@:b)_exp.o $(MINGWSSTDENDOBJ) \
2473        -Wl,-Map,$(MISC)/$(@:b).map >> $(MISC)/$(TARGET).$(@:b)_5.cmd
2474  .IF "$(VERBOSE)" == "TRUE"
2475    @$(TYPE)  $(MISC)/$(TARGET).$(@:b)_5.cmd
2476  .ENDIF
2477    @+source $(MISC)/$(TARGET).$(@:b)_5.cmd
2478.ELSE
2479.IF "$(linkinc)"==""
2480.IF "$(SHL5USE_EXPORTS)"!="name"
2481.IF "$(USE_DEFFILE)"!=""
2482    $(COMMAND_ECHO)$(SHL5LINKER) @$(mktmp \
2483        $(SHL5LINKFLAGS) \
2484        $(LINKFLAGSSHL) \
2485        $(SHL5STACK) $(SHL5BASEX)   \
2486        -out:$@ \
2487        -map:$(MISC)/$(@:b).map \
2488        -def:$(SHL5DEF) \
2489        $(USE_5IMPLIB) \
2490        $(STDOBJ) \
2491        $(SHL5VERSIONOBJ) $(SHL5OBJS) \
2492        $(SHL5LIBS) \
2493        $(SHL5STDLIBS) \
2494        $(SHL5STDSHL) $(STDSHL5) \
2495        $(SHL5LINKRES) \
2496    )
2497# double check if target was really written... still making sense?
2498    @@$(LS) $@
2499    @echo linking $@.manifest ...
2500.IF "$(VISTA_MANIFEST)"!=""
2501    $(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(MT) $(MTFLAGS) -manifest $@.manifest -manifest $(TRUSTED_MANIFEST_LOCATION)/trustedinfo.manifest -out:$@.tmanifest$(EMQ) $(FI)
2502    $(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(MT) $(MTFLAGS) -manifest $@.tmanifest -outputresource:$@$(EMQ);2 $(FI)
2503.ELSE
2504    $(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(MT) $(MTFLAGS) -manifest $@.manifest -outputresource:$@$(EMQ);2 $(FI)
2505.ENDIF # "$(VISTA_MANIFEST)"!=""
2506    $(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(RM:s/+//) $@.manifest $(FI)
2507    $(COMMAND_ECHO)$(IFEXIST) $@.tmanifest $(THEN) $(RM:s/+//) $@.tmanifest $(FI)
2508.ELSE           # "$(USE_DEFFILE)"!=""
2509    $(COMMAND_ECHO)$(SHL5LINKER) @$(mktmp   $(SHL5LINKFLAGS)            \
2510        $(LINKFLAGSSHL) $(SHL5BASEX)        \
2511        $(SHL5STACK) -out:$(SHL5TARGETN)    \
2512        -map:$(MISC)/$(@:B).map             \
2513        $(LB)/$(SHL5IMPLIB).exp             \
2514        $(STDOBJ)                           \
2515        $(SHL5OBJS) $(SHL5VERSIONOBJ) \
2516        $(SHL5LIBS)                         \
2517        $(SHL5STDLIBS)                      \
2518        $(SHL5STDSHL) $(STDSHL5)                           \
2519        $(SHL5LINKRES) \
2520    )
2521# double check if target was really written... still making sense?
2522    @@$(LS) $@
2523    @echo linking $@.manifest ...
2524.IF "$(VISTA_MANIFEST)"!=""
2525    $(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(MT) $(MTFLAGS) -manifest $@.manifest -manifest $(TRUSTED_MANIFEST_LOCATION)/trustedinfo.manifest -out:$@.tmanifest$(EMQ) $(FI)
2526    $(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(MT) $(MTFLAGS) -manifest $@.tmanifest -outputresource:$@$(EMQ);2 $(FI)
2527.ELSE
2528    $(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(MT) $(MTFLAGS) -manifest $@.manifest -outputresource:$@$(EMQ);2 $(FI)
2529.ENDIF # "$(VISTA_MANIFEST)"!=""
2530    $(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(RM:s/+//) $@.manifest $(FI)
2531    $(COMMAND_ECHO)$(IFEXIST) $@.tmanifest $(THEN) $(RM:s/+//) $@.tmanifest $(FI)
2532.ENDIF          # "$(USE_DEFFILE)"!=""
2533.ELSE           # "$(SHL5USE_EXPORTS)"!="name"
2534    $(COMMAND_ECHO)$(SHL5LINKER) @$(mktmp   $(SHL5LINKFLAGS)            \
2535        $(LINKFLAGSSHL) $(SHL5BASEX)        \
2536        $(SHL5STACK) -out:$(SHL5TARGETN)    \
2537        -map:$(MISC)/$(@:B).map             \
2538        $(USE_5IMPLIB) \
2539        $(STDOBJ)                           \
2540        $(SHL5OBJS) $(SHL5VERSIONOBJ))   \
2541        $(SHL5LINKLISTPARAM) \
2542        @$(mktmp $(SHL5STDLIBS)                      \
2543        $(SHL5STDSHL) $(STDSHL5)                           \
2544        $(SHL5LINKRES) \
2545    )
2546    @echo linking $@.manifest ...
2547.IF "$(VISTA_MANIFEST)"!=""
2548    $(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(MT) $(MTFLAGS) -manifest $@.manifest -manifest $(TRUSTED_MANIFEST_LOCATION)/trustedinfo.manifest -out:$@.tmanifest$(EMQ) $(FI)
2549    $(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(MT) $(MTFLAGS) -manifest $@.tmanifest -outputresource:$@$(EMQ);2 $(FI)
2550.ELSE
2551    $(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(MT) $(MTFLAGS) -manifest $@.manifest -outputresource:$@$(EMQ);2 $(FI)
2552.ENDIF # "$(VISTA_MANIFEST)"!=""
2553    $(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(RM:s/+//) $@.manifest $(FI)
2554    $(COMMAND_ECHO)$(IFEXIST) $@.tmanifest $(THEN) $(RM:s/+//) $@.tmanifest $(FI)
2555.ENDIF          # "$(SHL5USE_EXPORTS)"!="name"
2556.ELSE           # "$(linkinc)"==""
2557        $(COMMAND_ECHO)-$(RM) del $(MISC)/$(SHL5TARGET).lnk
2558        $(COMMAND_ECHO)-$(RM) $(MISC)/$(SHL5TARGET).lst
2559        $(COMMAND_ECHO)$(TYPE) $(mktmp \
2560        $(SHL5LINKFLAGS) \
2561        $(LINKFLAGSSHL) $(SHL5BASEX) \
2562        $(SHL5STACK) $(MAPFILE) \
2563        -out:$@ \
2564        $(LB)/$(SHL5IMPLIB).exp \
2565        $(STDOBJ) \
2566        $(SHL5OBJS) \
2567        $(SHL5STDLIBS) \
2568        $(SHL5STDSHL) $(STDSHL5) \
2569        $(SHL5LINKRES) \
2570        ) >> $(MISC)/$(SHL5TARGET).lnk
2571        $(COMMAND_ECHO)$(TYPE) $(MISC)/$(SHL5TARGETN:b)_linkinc.ls  >> $(MISC)/$(SHL5TARGET).lnk
2572        $(COMMAND_ECHO)$(SHL5LINKER) @$(MISC)/$(SHL5TARGET).lnk
2573        @echo linking $@.manifest ...
2574.IF "$(VISTA_MANIFEST)"!=""
2575        $(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(MT) $(MTFLAGS) -manifest $@.manifest -manifest $(TRUSTED_MANIFEST_LOCATION)/trustedinfo.manifest -out:$@.tmanifest$(EMQ) $(FI)
2576        $(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(MT) $(MTFLAGS) -manifest $@.tmanifest -outputresource:$@$(EMQ);2 $(FI)
2577.ELSE
2578        $(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(MT) $(MTFLAGS) -manifest $@.manifest -outputresource:$@$(EMQ);2 $(FI)
2579.ENDIF # "$(VISTA_MANIFEST)"!=""
2580        $(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(RM:s/+//) $@.manifest $(FI)
2581        $(COMMAND_ECHO)$(IFEXIST) $@.tmanifest $(THEN) $(RM:s/+//) $@.tmanifest $(FI)
2582.ENDIF          # "$(linkinc)"==""
2583.ENDIF          # "$(COM)"=="GCC"
2584.ENDIF          # "$(GUI)" == "WNT"
2585.IF "$(GUI)"=="UNX"
2586.IF "$(OS)"=="MACOSX"
2587    @-$(RM) $(MISC)/$(@:b).list
2588    @-$(RM) $(MISC)/$(TARGET).$(@:b)_5.cmd
2589    @echo $(STDSLO) $(SHL5OBJS:s/.obj/.o/) \
2590    $(SHL5VERSIONOBJ) \
2591    `cat /dev/null $(SHL5LIBS) | sed s\#$(ROUT)\#$(PRJ)/$(ROUT)\#g` | tr -s " " "\n" > $(MISC)/$(@:b).list
2592    @echo -n $(SHL5LINKER) $(SHL5LINKFLAGS) $(SHL5VERSIONMAPPARA) $(LINKFLAGSSHL) -L$(PRJ)/$(ROUT)/lib $(SOLARLIB) -o $@ \
2593    $(SHL5STDLIBS) $(SHL5ARCHIVES) $(SHL5STDSHL) $(STDSHL5) -filelist $(MISC)/$(@:b).list $(LINKOUTPUT_FILTER) > $(MISC)/$(TARGET).$(@:b)_5.cmd
2594    @$(PERL) $(SOLARENV)/bin/macosx-dylib-link-list.pl \
2595        `cat $(MISC)/$(TARGET).$(@:b)_5.cmd` \
2596        >> $(MISC)/$(TARGET).$(@:b)_5.cmd
2597  .IF "$(VERBOSE)" == "TRUE"
2598    @cat $(MISC)/$(TARGET).$(@:b)_5.cmd
2599  .ENDIF
2600    @+source $(MISC)/$(TARGET).$(@:b)_5.cmd
2601    @$(PERL) $(SOLARENV)/bin/macosx-change-install-names.pl \
2602        shl $(SHL5RPATH) $@
2603.IF "$(SHL5CREATEJNILIB)"!=""
2604    @echo "Making:   " $(@:f).jnilib
2605    @macosx-create-bundle $@
2606.ENDIF          # "$(SHL5CREATEJNILIB)"!=""
2607.IF "$(UPDATER)"=="YES"
2608.IF "$(SHL5NOCHECK)"==""
2609    $(SOLARENV)/bin/checkdll.sh -L$(LB) -L$(SOLARLIBDIR) $(EXTRALIBPATHS5) $(SHL5TARGETN)
2610.ENDIF              # "$(SHL5NOCHECK)"!=""
2611.ENDIF
2612.ELSE           # "$(OS)"=="MACOSX"
2613    @-$(RM) $(MISC)/$(TARGET).$(@:b)_5.cmd
2614    @echo $(SHL5LINKER) $(SHL5LINKFLAGS) $(SHL5SONAME) $(LINKFLAGSSHL) $(SHL5VERSIONMAPPARA) -L$(PRJ)/$(ROUT)/lib $(SOLARLIB) $(STDSLO) $(SHL5OBJS:s/.obj/.o/) \
2615    $(SHL5VERSIONOBJ) -o $@ \
2616    `cat /dev/null $(SHL5LIBS) | tr -s " " "\n" | $(SED) s\#$(ROUT)\#$(PRJ)/$(ROUT)\#g` \
2617    $(SHL5STDLIBS) $(SHL5ARCHIVES) $(SHL5STDSHL) $(STDSHL5) $(LINKOUTPUT_FILTER) > $(MISC)/$(TARGET).$(@:b)_5.cmd
2618  .IF "$(VERBOSE)" == "TRUE"
2619    @cat $(MISC)/$(TARGET).$(@:b)_5.cmd
2620  .ENDIF
2621    @+source $(MISC)/$(TARGET).$(@:b)_5.cmd
2622.IF "$(UPDATER)"=="YES"
2623.IF "$(SHL5NOCHECK)"==""
2624    $(COMMAND_ECHO)-$(RM) $(SHL5TARGETN:d)check_$(SHL5TARGETN:f)
2625    $(COMMAND_ECHO)$(RENAME) $(SHL5TARGETN) $(SHL5TARGETN:d)check_$(SHL5TARGETN:f)
2626.IF "$(VERBOSE)"=="TRUE"
2627    $(COMMAND_ECHO)$(SOLARENV)/bin/checkdll.sh -L$(LB) -L$(SOLARLIBDIR) $(EXTRALIBPATHS5) $(SHL5TARGETN:d)check_$(SHL5TARGETN:f)
2628.ELSE
2629    $(COMMAND_ECHO)$(SOLARENV)/bin/checkdll.sh -L$(LB) -L$(SOLARLIBDIR) $(EXTRALIBPATHS5) -- -s $(SHL5TARGETN:d)check_$(SHL5TARGETN:f)
2630.ENDIF
2631.ENDIF              # "$(SHL5NOCHECK)"!=""
2632.ENDIF          # "$(UPDATER)"=="YES"
2633.ENDIF          # "$(OS)"=="MACOSX"
2634.IF "$(UNIXVERSIONNAMES)"!=""
2635    $(COMMAND_ECHO)$(RM) $(LB)/$(SHL5TARGETN:b)
2636    $(COMMAND_ECHO)cd $(LB) && ln -s $(SHL5TARGETN:f) $(SHL5TARGETN:b)
2637.ENDIF          # "$(UNIXVERSIONNAMES)"!=""
2638.IF "$(VERBOSE)" == "TRUE"
2639    @ls -l $@
2640.ENDIF
2641.ENDIF          # "$(GUI)" == "UNX"
2642
2643.IF "$(GUI)" == "OS2"
2644
2645.IF "$(SHL5DEFAULTRES)"!=""
2646    @+-$(RM) $(MISC)/$(SHL5DEFAULTRES:b).rc > $(NULLDEV)
2647.IF "$(SHL5ICON)" != ""
2648    @-+echo 1 ICON $(SHL5ICON) >> $(MISC)/$(SHL5DEFAULTRES:b).rc
2649.ENDIF
2650.IF "$(use_shl_versions)" != ""
2651.IF "$(SHL5ADD_VERINFO)"!=""
2652    @-+echo $(EMQ)#include $(EMQ)"$(SHL5ADD_VERINFO)$(EMQ)" >> $(MISC)/$(SHL5DEFAULTRES:b).rc
2653.ENDIF          # "$(SHL5ADD_VERINFO)"!=""
2654    @-+echo MENU 1 BEGIN END >> $(MISC)/$(SHL5DEFAULTRES:b).rc
2655#   @-+echo $(EMQ)RCDATA 1 { "Build string here" }$(EMQ) >> $(MISC)/$(SHL5DEFAULTRES:b).rc
2656.ENDIF          # "$(use_shl_versions)" != ""
2657# YD 04/07/06 seems null, confuses rc cli: -i $(SOLARTESDIR)
2658    $(COMMAND_ECHO)$(RC) -r -DOS2 $(INCLUDE) $(RCLINKFLAGS) $(MISC)/$(SHL5DEFAULTRES:b).rc
2659.ENDIF          # "$(SHL5DEFAULTRES)"!=""
2660
2661.IF "$(SHL5ALLRES)"!=""
2662    $(COMMAND_ECHO)+$(TYPE) $(SHL5ALLRES) > $(SHL5LINKRES)
2663.ENDIF          # "$(SHL5ALLRES)"!=""
2664
2665.IF "$(USE_DEFFILE)"!=""
2666
2667    $(COMMAND_ECHO)$(SHL5LINKER) $(SHL5LINKFLAGS) $(LINKFLAGSSHL) -o $@ \
2668        $(SHL5DEF) \
2669        $(STDOBJ) \
2670        -L$(LB) \
2671        -L$(SOLARVERSION)/$(INPATH)/lib \
2672        $(SHL5OBJS) $(SHL5VERSIONOBJ) \
2673        $(SHL5LIBS) \
2674        $(SHL5LINKRES) \
2675        $(SHL5STDLIBS) \
2676        $(SHL5STDSHL) $(STDSHL5)
2677
2678.ELSE           # "$(USE_DEFFILE)"!=""
2679
2680    $(COMMAND_ECHO)$(SHL5LINKER) $(SHL5LINKFLAGS)           \
2681        $(LINKFLAGSSHL) $(SHL5BASEX)        \
2682        $(SHL5STACK) -o $(SHL5TARGETN)  \
2683        $(SHL5DEF) \
2684        $(STDOBJ)                           \
2685        -L$(LB) \
2686        -L$(SOLARVERSION)/$(INPATH)/lib \
2687        $(SHL5OBJS) $(SHL5VERSIONOBJ) \
2688        $(SHL5LIBS) \
2689        $(SHL5LINKRES) \
2690        $(SHL5STDLIBS) \
2691        $(SHL5STDSHL) $(STDSHL5)
2692
2693.ENDIF          # "$(USE_DEFFILE)"!=""
2694
2695    $(COMMAND_ECHO)+$(IMPLIB) -p256 $(IMPLIBFLAGS) $(SHL5IMPLIBN) $@
2696    $(COMMAND_ECHO)+$(IMPLIB) -p256 $(IMPLIBFLAGS) $(LB)/$(SHL5TARGET).lib $@
2697
2698.IF "$(SHL5TARGET8)" != "$(SHL5TARGET)"
2699    $(COMMAND_ECHO)+$(COPY) $@ $(@:d)$(SHL5TARGET8).dll
2700.ENDIF
2701
2702.ENDIF          # "$(GUI)" == "OS2"
2703
2704.ENDIF          # "$(SHL5TARGETN)"!=""
2705
2706# unroll begin
2707
2708.IF "$(SHL6TARGETN)"!=""
2709
2710.IF "$(OS)"=="AIX"
2711SHL6STDLIBS=
2712.ENDIF
2713
2714.IF "$(SHLLINKARCONLY)" != ""
2715SHL6STDLIBS=
2716STDSHL=
2717.ELSE
2718SHL6ARCHIVES=
2719.ENDIF
2720
2721# decide how to link
2722.IF "$(SHL6CODETYPE)"=="C"
2723SHL6LINKER=$(LINKC)
2724SHL6STDSHL=$(subst,CPPRUNTIME, $(STDSHL))
2725SHL6LINKFLAGS+=$(LINKCFLAGS)
2726.ELSE           # "$(SHL6CODETYPE)"=="C"
2727SHL6LINKER=$(LINK)
2728SHL6STDSHL=$(subst,CPPRUNTIME,$(STDLIBCPP) $(STDSHL))
2729SHL6LINKFLAGS+=$(LINKFLAGS)
2730.ENDIF          # "$(SHL6CODETYPE)"=="C"
2731
2732SHL6RPATH*=OOO
2733LINKFLAGSRUNPATH_$(SHL6RPATH)*=/ERROR:/Bad_SHL6RPATH_value
2734SHL6LINKFLAGS+=$(LINKFLAGSRUNPATH_$(SHL6RPATH))
2735
2736.IF "$(SHL6USE_EXPORTS)"==""
2737SHL6DEF*=$(MISC)/$(SHL6TARGET).def
2738.ENDIF          # "$(SHL6USE_EXPORTS)"==""
2739
2740EXTRALIBPATHS6=$(EXTRALIBPATHS)
2741.IF "$(UPDATER)"=="YES"
2742.IF "$(SHL6NOCHECK)"==""
2743.IF "$(SOLAR_STLLIBPATH)"!=""
2744EXTRALIBPATHS6+=-L$(SOLAR_STLLIBPATH)
2745.ENDIF
2746.ENDIF              # "$(SHL6NOCHECK)"!=""
2747.ENDIF
2748#+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
2749#+++++++++++    version object      ++++++++++++++++++++++++++++++++++++++++
2750#+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
2751
2752.IF "$(L10N_framework)"==""
2753.IF "$(VERSIONOBJ)"!=""
2754SHL6VERSIONOBJ:=$(VERSIONOBJ:d){$(subst,$(DLLPOSTFIX),_dflt $(SHL6TARGET))}$(VERSIONOBJ:f)
2755USE_VERSIONH:=$(INCCOM)/$(SHL6VERSIONOBJ:b).h
2756.IF "$(GUI)" == "UNX"
2757SHL6VERSIONOBJDEP:=$(VERSIONOBJ:d){$(subst,$(DLLPOSTFIX),_dflt $(SHL6TARGET))}$(VERSIONOBJ:f:s/.o/.obj/)
2758.ELSE           # "$(GUI)" == "UNX"
2759SHL6VERSIONOBJDEP:=$(VERSIONOBJ:d){$(subst,$(DLLPOSTFIX),_dflt $(SHL6TARGET))}$(VERSIONOBJ:f)
2760.ENDIF          # "$(GUI)" == "UNX"
2761$(MISC)/$(SHL6VERSIONOBJ:b).c : $(SOLARENV)/src/version.c $(INCCOM)/$(SHL6VERSIONOBJ:b).h
2762#    $(COPY) $(SOLARENV)/src/version.c $@
2763    $(COMMAND_ECHO)$(TYPE) $(SOLARENV)/src/version.c | $(SED) s/_version.h/$(SHL6VERSIONOBJ:b).h/ > $@
2764
2765.INIT : $(SHL6VERSIONOBJDEP)
2766.ENDIF          # "$(VERSIONOBJ)"!=""
2767.ENDIF
2768
2769.IF "$(GUI)" != "UNX"
2770.IF "$(GUI)" == "WNT" || "$(GUI)" == "OS2"
2771.IF "$(SHL6IMPLIB)" == ""
2772SHL6IMPLIB=i$(TARGET)_t6
2773.ENDIF          # "$(SHL6IMPLIB)" == ""
2774.IF "$(COM)" != "GCC"
2775USE_6IMPLIB=-implib:$(LB)/$(SHL6IMPLIB).lib
2776.ENDIF          # "$(COM)" != "GCC"
2777SHL6IMPLIBN=$(LB)/$(SHL6IMPLIB).lib
2778ALLTAR : $(SHL6IMPLIBN)
2779
2780.IF "$(USE_DEFFILE)"==""
2781USE_6IMPLIB_DEPS=$(LB)/$(SHL6IMPLIB).lib
2782.ENDIF          # "$(USE_DEFFILE)"==""
2783.ENDIF          # "$(GUI)" == "WNT" || "$(GUI)" == "OS2"
2784USE_SHL6DEF=$(SHL6DEF)
2785.ELSE           # "$(GUI)" != "UNX"
2786USE_SHL6DEF=
2787SHL6DEPN+:=$(SHL6DEPNU)
2788
2789.IF "$(SHL6VERSIONMAP)"==""
2790# to activate vmaps remove "#"
2791USE_SHL6VERSIONMAP=$(MISC)/$(SHL6TARGET).vmap
2792.ENDIF          # "$(SHL6VERSIONMAP)"==""
2793
2794.IF "$(USE_SHL6VERSIONMAP)"!=""
2795
2796.IF "$(SHL6FILTERFILE)"!=""
2797.IF "$(SHL6VERSIONMAP)"!=""
2798#eine von beiden ist zuviel
2799USE_SHL6VERSIONMAP=$(MISC)/$(SHL6TARGET).vmap
2800$(USE_SHL6VERSIONMAP) .PHONY:
2801    @echo -----------------------------
2802    @echo you should only use versionmap OR exportfile
2803    @echo -----------------------------
2804#   force_dmake_to_error
2805
2806.ENDIF          # "$(SHL6VERSIONMAP)"!=""
2807
2808SHL6VERSIONMAPPARA=$(LINKVERSIONMAPFLAG) $(USE_SHL6VERSIONMAP)
2809
2810$(USE_SHL6VERSIONMAP): \
2811                    $(SHL6OBJS)\
2812                    $(SHL6LIBS)\
2813                    $(SHL6FILTERFILE)
2814    @$(RM) $@.dump
2815.IF "$(SHL6OBJS)"!=""
2816# dump remaining objects on the fly
2817.IF "$(OS)"=="MACOSX"
2818    @-nm $(SHL6OBJS:s/.obj/.o/) > $@.dump
2819.ELSE
2820    @nm $(SHL6OBJS:s/.obj/.o/) > $@.dump
2821.ENDIF
2822.ENDIF          # "$(SHL6OBJS)!"=""
2823    @$(TYPE) /dev/null $(SHL6LIBS:s/.lib/.dump/) >> $@.dump
2824    $(COMMAND_ECHO) $(PERL) $(SOLARENV)/bin/mapgen.pl -d $@.dump -s $(SHL6INTERFACE) -f $(SHL6FILTERFILE) -m $@
2825
2826.ELSE           # "$(SHL6FILTERFILE)"!=""
2827USE_SHL6VERSIONMAP=$(MISC)/$(SHL6TARGET).vmap
2828$(USE_SHL6VERSIONMAP) :
2829.IF "$(VERBOSE)" == "TRUE"
2830    @echo -----------------------------
2831    @echo SHL6FILTERFILE not set!
2832    @echo -----------------------------
2833    @$(TOUCH) $@
2834    @echo dummy file to keep the dependencies for later use.
2835.ELSE
2836    @$(TOUCH) $@
2837.ENDIF
2838#   force_dmake_to_error
2839.ENDIF          # "$(SHL6FILTERFILE)"!=""
2840.ELSE           # "$(USE_SHL6VERSIONMAP)"!=""
2841
2842#and now for the plain non-generic way...
2843.IF "$(SHL6VERSIONMAP)"!=""
2844USE_SHL6VERSIONMAP=$(MISC)/$(SHL6VERSIONMAP:b)_$(SHL6TARGET)$(SHL6VERSIONMAP:e)
2845SHL6VERSIONMAPPARA=$(LINKVERSIONMAPFLAG) $(USE_SHL6VERSIONMAP)
2846
2847.IF "$(OS)"=="MACOSX"
2848$(USE_SHL6VERSIONMAP): $(SHL6OBJS) $(SHL6LIBS)
2849.ENDIF
2850
2851# .ERRREMOVE is needed as a recipe line like "$(AWK) ... > $@" would create $@
2852# even if the $(AWK) part fails:
2853$(USE_SHL6VERSIONMAP) .ERRREMOVE: $(SHL6VERSIONMAP)
2854    @@-$(RM) -f $@
2855# The following files will only be generated and needed on Mac OS X as temporary files
2856# in order to generate exported symbols list out of Linux/Solaris map files
2857.IF "$(OS)"=="MACOSX"
2858    @-$(RM) -f $@.symregexp >& $(NULLDEV)
2859    @-$(RM) -f $@.expsymlist >& $(NULLDEV)
2860.ENDIF
2861# Its questionable if the following condition '.IF "$(COMID)"=="gcc3"' makes sense and what
2862# happens if somebody will change it in the future
2863.IF "$(COMID)"=="gcc3"
2864    $(COMMAND_ECHO) tr -d "\015" < $(SHL6VERSIONMAP) | $(AWK) -f $(SOLARENV)/bin/addsym.awk > $@
2865.ELIF "$(COMNAME)"=="sunpro5"
2866    $(COMMAND_ECHO) tr -d "\015" < $(SHL6VERSIONMAP) | $(GREP) -v $(IGNORE_SYMBOLS) > $@
2867.ELSE           # "$(COMID)"=="gcc3"
2868    $(COMMAND_ECHO) tr -d "\015" < $(SHL6VERSIONMAP) > $@
2869.ENDIF          # "$(COMID)"=="gcc3"
2870    @chmod a+w $@
2871# Mac OS X post-processing generate an exported symbols list from the generated map file
2872# for details on exported symbols list see man ld on Mac OS X
2873.IF "$(OS)"=="MACOSX"
2874    @-cat $@ | $(AWK) -f $(SOLARENV)/bin/unxmap-to-macosx-explist.awk | grep -v "\*\|?" > $@.exported-symbols
2875    @-cat $@ | $(AWK) -f $(SOLARENV)/bin/unxmap-to-macosx-explist.awk | grep "\*\|?" > $@.symbols-regexp
2876# Shared libraries will be build out of the *.obj files specified in SHL?OBJS and SHL?LIBS
2877# Extract RTTI symbols from all the objects that will be used to build a shared library
2878.IF "$(SHL6OBJS)"!=""
2879    -echo $(foreach,i,$(SHL6OBJS:s/.obj/.o/) $i) | xargs -n1 nm -gx | $(SOLARENV)/bin/addsym-macosx.sh $@.symbols-regexp $@.symbols-regexp.tmp >> $@.exported-symbols
2880.ENDIF
2881.IF "$(SHL6LIBS)"!=""
2882    $(COMMAND_ECHO)-$(TYPE) $(foreach,j,$(SHL6LIBS) $j) | $(SED) s\#$(ROUT)\#$(PRJ)/$(ROUT)\#g | xargs -n1 nm -gx | $(SOLARENV)/bin/addsym-macosx.sh $@.symbols-regexp $@.symbols-regexp.tmp >> $@.exported-symbols
2883.ENDIF
2884# overwrite the map file generate into the local output tree with the generated
2885# exported symbols list
2886    cp $@.exported-symbols $@
2887.ENDIF # .IF "$(OS)"=="MACOSX"
2888.ENDIF          # "$(SHL6VERSIONMAP)"!=""
2889.ENDIF          # "$(USE_SHL6VERSIONMAP)"!=""
2890.ENDIF          # "$(GUI)" != "UNX"
2891
2892.IF "$(UNIXVERSIONNAMES)"!=""
2893.IF "$(OS)"!="MACOSX"
2894.IF "$(GUI)"=="UNX"
2895SHL6SONAME=\"$(SONAME_SWITCH)$(SHL6TARGETN:f)\"
2896.ENDIF          # "$(GUI)"!="UNX"
2897.ENDIF          # "$(OS)"!="MACOSX"
2898.ENDIF          # "$(UNIXVERSIONNAMES)"!=""
2899
2900.IF "$(SHL6RES)"!=""
2901SHL6ALLRES+=$(SHL6RES)
2902SHL6LINKRES*=$(MISC)/$(SHL6TARGET).res
2903SHL6LINKRESO*=$(MISC)/$(SHL6TARGET)_res.o
2904.ENDIF          # "$(SHL6RES)"!=""
2905
2906.IF "$(SHL6DEFAULTRES)$(use_shl_versions)"!=""
2907SHL6DEFAULTRES*=$(MISC)/$(SHL6TARGET)_def.res
2908SHL6ALLRES+=$(SHL6DEFAULTRES)
2909SHL6LINKRES*=$(MISC)/$(SHL6TARGET).res
2910SHL6LINKRESO*=$(MISC)/$(SHL6TARGET)_res.o
2911.ENDIF          # "$(SHL6DEFAULTRES)$(use_shl_versions)"!=""
2912
2913#.IF "$(SHL6TARGETN)"!=""
2914
2915.IF "$(linkinc)"!=""
2916.IF "$(GUI)"=="WNT" || "$(GUI)" == "OS2"
2917.IF "$(SHL6LIBS)"!=""
2918$(MISC)/$(SHL6TARGET)_linkinc.ls .PHONY:
2919    @@-$(RM) $@
2920    $(COMMAND_ECHO)$(SED) -f $(SOLARENV)/bin/chrel.sed $(foreach,i,$(SHL6LIBS) $(i:s/.lib/.lin/)) >> $@
2921.ENDIF          # "$(SHL6LIBS)"!=""
2922.ENDIF
2923
2924LINKINCTARGETS+=$(MISC)/$(SHL6TARGETN:b)_linkinc.ls
2925$(SHL6TARGETN) : $(LINKINCTARGETS)
2926
2927.ELSE
2928.IF "$(SHL6USE_EXPORTS)"=="name"
2929.IF "$(GUI)"=="WNT" || "$(GUI)" == "OS2"
2930.IF "$(COM)"!="GCC"
2931.IF "$(SHL6LIBS)"!=""
2932SHL6LINKLIST=$(MISC)/$(SHL6TARGET)_link.lst
2933SHL6LINKLISTPARAM=@$(SHL6LINKLIST)
2934$(SHL6LINKLIST) : $(SHL6LIBS)
2935    @@-$(RM) $@
2936    $(COMMAND_ECHO)$(SED) -f $(SOLARENV)/bin/chrel.sed $(foreach,i,$(SHL6LIBS) $(i:s/.lib/.lin/)) >> $@
2937.ENDIF          # "$(SHL6LIBS)"!=""
2938.ENDIF          # "$(COM)"!="GCC"
2939.ENDIF
2940.ENDIF          # "$(SHL6USE_EXPORTS)"=="name"
2941
2942$(MISC)/%linkinc.ls:
2943    @echo . > $@
2944.ENDIF          # "$(linkinc)"!=""
2945
2946.IF "$(GUI)" == "OS2"
2947#21/02/2006 YD dll names must be 8.3, invoke fix script
2948#check osl/os2/module.c/osl_loadModule()
2949SHL6TARGET8=$(shell @fix_shl.cmd $(SHL6TARGET))
2950.ENDIF
2951
2952
2953$(SHL6TARGETN) : \
2954                    $(SHL6OBJS)\
2955                    $(SHL6LIBS)\
2956                    $(USE_6IMPLIB_DEPS)\
2957                    $(USE_SHL6DEF)\
2958                    $(USE_SHL6VERSIONMAP)\
2959                    $(SHL6RES)\
2960                    $(SHL6DEPN) \
2961                    $(SHL6LINKLIST)
2962    @echo "Making:   " $(@:f)
2963.IF "$(GUI)" == "WNT"
2964.IF "$(SHL6DEFAULTRES)"!=""
2965    @@-$(RM) $(MISC)/$(SHL6DEFAULTRES:b).rc
2966.IF "$(SHL6ICON)" != ""
2967    @echo 1 ICON $(SHL6ICON) >> $(MISC)/$(SHL6DEFAULTRES:b).rc
2968.ENDIF
2969.IF "$(use_shl_versions)" != ""
2970.IF "$(SHL6ADD_VERINFO)"!=""
2971    @echo $(EMQ)#include $(EMQ)"$(SHL6ADD_VERINFO)$(EMQ)" >> $(MISC)/$(SHL6DEFAULTRES:b).rc
2972.ELSE           # "$(SHL6ADD_VERINFO)"!=""
2973    @echo $(EMQ)#define ADDITIONAL_VERINFO1 >> $(MISC)/$(SHL6DEFAULTRES:b).rc
2974    @echo $(EMQ)#define ADDITIONAL_VERINFO2 >> $(MISC)/$(SHL6DEFAULTRES:b).rc
2975    @echo $(EMQ)#define ADDITIONAL_VERINFO3 >> $(MISC)/$(SHL6DEFAULTRES:b).rc
2976.ENDIF          # "$(SHL6ADD_VERINFO)"!=""
2977    @echo $(EMQ)#define VERVARIANT  $(BUILD) >> $(MISC)/$(SHL6DEFAULTRES:b).rc
2978    @echo $(EMQ)#define ORG_NAME    $(SHL6TARGET)$(DLLPOST) >> $(MISC)/$(SHL6DEFAULTRES:b).rc
2979    @echo $(EMQ)#define INTERNAL_NAME $(SHL6TARGET:b) >> $(MISC)/$(SHL6DEFAULTRES:b).rc
2980    @echo $(EMQ)#include $(EMQ)"shlinfo.rc$(EMQ)" >> $(MISC)/$(SHL6DEFAULTRES:b).rc
2981.ENDIF          # "$(use_shl_versions)" != ""
2982    $(COMMAND_ECHO)$(RC) -DWIN32 $(INCLUDE) $(RCLINKFLAGS) $(MISC)/$(SHL6DEFAULTRES:b).rc
2983.ENDIF          # "$(SHL6DEFAULTRES)"!=""
2984.IF "$(SHL6ALLRES)"!=""
2985    $(COMMAND_ECHO)$(TYPE) $(SHL6ALLRES) > $(SHL6LINKRES)
2986.IF "$(COM)"=="GCC"
2987    windres $(SHL6LINKRES) $(SHL6LINKRESO)
2988.ENDIF          # "$(COM)"=="GCC"
2989.ENDIF          # "$(SHL6ALLRES)"!=""
2990.IF "$(COM)"=="GCC" # always have to call dlltool explicitly as ld cannot handle # comment in .def
2991    @echo dlltool --dllname $(SHL6TARGET)$(DLLPOST) \
2992        --kill-at \\ > $(MISC)/$(TARGET).$(@:b)_6.cmd
2993    @noop $(assign ALL6OBJLIST:=$(STDOBJ) $(SHL6OBJS) $(SHL6LINKRESO) $(shell $(TYPE) /dev/null $(SHL6LIBS) | $(SED) s?$(ROUT)?$(PRJ)/$(ROUT)?g))
2994.IF "$(DEFLIB6NAME)"!=""    # do not have to include objs
2995    @noop $(assign DEF6OBJLIST:=$(shell $(TYPE) $(foreach,i,$(DEFLIB6NAME) $(SLB)/$(i).lib) | sed s?$(ROUT)?$(PRJ)/$(ROUT)?g))
2996    @noop $(foreach,i,$(DEF6OBJLIST) $(assign ALL6OBJLIST:=$(ALL6OBJLIST:s?$i??)))
2997.ENDIF          # "$(DEFLIB6NAME)"!=""
2998    @echo   --output-exp $(MISC)/$(@:b)_exp.o \\ >> $(MISC)/$(TARGET).$(@:b)_6.cmd
2999.IF "$(SHL6DEF)"!=""
3000    @echo   --input-def $(SHL6DEF) \\ >> $(MISC)/$(TARGET).$(@:b)_6.cmd
3001.ELSE
3002    @echo   $(SHL6VERSIONOBJ) $(SHL6DESCRIPTIONOBJ) \\ >> $(MISC)/$(TARGET).$(@:b)_6.cmd
3003.ENDIF
3004    @echo   $(ALL6OBJLIST) >> $(MISC)/$(TARGET).$(@:b)_6.cmd
3005    @echo $(LINK) $(LINKFLAGS) $(LINKFLAGSSHL) $(MINGWSSTDOBJ) -o $@ \
3006        $(STDOBJ) $(SHL6VERSIONOBJ) $(SHL6DESCRIPTIONOBJ) $(SHL6OBJS) $(SHL6LINKRESO) \
3007        `$(TYPE) /dev/null $(SHL6LIBS) | $(SED) s\#$(ROUT)\#$(PRJ)/$(ROUT)\#g` \
3008        -Wl,--exclude-libs,ALL,--start-group $(SHL6STDLIBS) -Wl,--end-group \
3009        $(SHL6STDSHL) $(STDSHL6) $(MISC)/$(@:b)_exp.o $(MINGWSSTDENDOBJ) \
3010        -Wl,-Map,$(MISC)/$(@:b).map >> $(MISC)/$(TARGET).$(@:b)_6.cmd
3011  .IF "$(VERBOSE)" == "TRUE"
3012    @$(TYPE)  $(MISC)/$(TARGET).$(@:b)_6.cmd
3013  .ENDIF
3014    @+source $(MISC)/$(TARGET).$(@:b)_6.cmd
3015.ELSE
3016.IF "$(linkinc)"==""
3017.IF "$(SHL6USE_EXPORTS)"!="name"
3018.IF "$(USE_DEFFILE)"!=""
3019    $(COMMAND_ECHO)$(SHL6LINKER) @$(mktmp \
3020        $(SHL6LINKFLAGS) \
3021        $(LINKFLAGSSHL) \
3022        $(SHL6STACK) $(SHL6BASEX)   \
3023        -out:$@ \
3024        -map:$(MISC)/$(@:b).map \
3025        -def:$(SHL6DEF) \
3026        $(USE_6IMPLIB) \
3027        $(STDOBJ) \
3028        $(SHL6VERSIONOBJ) $(SHL6OBJS) \
3029        $(SHL6LIBS) \
3030        $(SHL6STDLIBS) \
3031        $(SHL6STDSHL) $(STDSHL6) \
3032        $(SHL6LINKRES) \
3033    )
3034# double check if target was really written... still making sense?
3035    @@$(LS) $@
3036    @echo linking $@.manifest ...
3037.IF "$(VISTA_MANIFEST)"!=""
3038    $(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(MT) $(MTFLAGS) -manifest $@.manifest -manifest $(TRUSTED_MANIFEST_LOCATION)/trustedinfo.manifest -out:$@.tmanifest$(EMQ) $(FI)
3039    $(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(MT) $(MTFLAGS) -manifest $@.tmanifest -outputresource:$@$(EMQ);2 $(FI)
3040.ELSE
3041    $(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(MT) $(MTFLAGS) -manifest $@.manifest -outputresource:$@$(EMQ);2 $(FI)
3042.ENDIF # "$(VISTA_MANIFEST)"!=""
3043    $(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(RM:s/+//) $@.manifest $(FI)
3044    $(COMMAND_ECHO)$(IFEXIST) $@.tmanifest $(THEN) $(RM:s/+//) $@.tmanifest $(FI)
3045.ELSE           # "$(USE_DEFFILE)"!=""
3046    $(COMMAND_ECHO)$(SHL6LINKER) @$(mktmp   $(SHL6LINKFLAGS)            \
3047        $(LINKFLAGSSHL) $(SHL6BASEX)        \
3048        $(SHL6STACK) -out:$(SHL6TARGETN)    \
3049        -map:$(MISC)/$(@:B).map             \
3050        $(LB)/$(SHL6IMPLIB).exp             \
3051        $(STDOBJ)                           \
3052        $(SHL6OBJS) $(SHL6VERSIONOBJ) \
3053        $(SHL6LIBS)                         \
3054        $(SHL6STDLIBS)                      \
3055        $(SHL6STDSHL) $(STDSHL6)                           \
3056        $(SHL6LINKRES) \
3057    )
3058# double check if target was really written... still making sense?
3059    @@$(LS) $@
3060    @echo linking $@.manifest ...
3061.IF "$(VISTA_MANIFEST)"!=""
3062    $(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(MT) $(MTFLAGS) -manifest $@.manifest -manifest $(TRUSTED_MANIFEST_LOCATION)/trustedinfo.manifest -out:$@.tmanifest$(EMQ) $(FI)
3063    $(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(MT) $(MTFLAGS) -manifest $@.tmanifest -outputresource:$@$(EMQ);2 $(FI)
3064.ELSE
3065    $(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(MT) $(MTFLAGS) -manifest $@.manifest -outputresource:$@$(EMQ);2 $(FI)
3066.ENDIF # "$(VISTA_MANIFEST)"!=""
3067    $(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(RM:s/+//) $@.manifest $(FI)
3068    $(COMMAND_ECHO)$(IFEXIST) $@.tmanifest $(THEN) $(RM:s/+//) $@.tmanifest $(FI)
3069.ENDIF          # "$(USE_DEFFILE)"!=""
3070.ELSE           # "$(SHL6USE_EXPORTS)"!="name"
3071    $(COMMAND_ECHO)$(SHL6LINKER) @$(mktmp   $(SHL6LINKFLAGS)            \
3072        $(LINKFLAGSSHL) $(SHL6BASEX)        \
3073        $(SHL6STACK) -out:$(SHL6TARGETN)    \
3074        -map:$(MISC)/$(@:B).map             \
3075        $(USE_6IMPLIB) \
3076        $(STDOBJ)                           \
3077        $(SHL6OBJS) $(SHL6VERSIONOBJ))   \
3078        $(SHL6LINKLISTPARAM) \
3079        @$(mktmp $(SHL6STDLIBS)                      \
3080        $(SHL6STDSHL) $(STDSHL6)                           \
3081        $(SHL6LINKRES) \
3082    )
3083    @echo linking $@.manifest ...
3084.IF "$(VISTA_MANIFEST)"!=""
3085    $(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(MT) $(MTFLAGS) -manifest $@.manifest -manifest $(TRUSTED_MANIFEST_LOCATION)/trustedinfo.manifest -out:$@.tmanifest$(EMQ) $(FI)
3086    $(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(MT) $(MTFLAGS) -manifest $@.tmanifest -outputresource:$@$(EMQ);2 $(FI)
3087.ELSE
3088    $(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(MT) $(MTFLAGS) -manifest $@.manifest -outputresource:$@$(EMQ);2 $(FI)
3089.ENDIF # "$(VISTA_MANIFEST)"!=""
3090    $(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(RM:s/+//) $@.manifest $(FI)
3091    $(COMMAND_ECHO)$(IFEXIST) $@.tmanifest $(THEN) $(RM:s/+//) $@.tmanifest $(FI)
3092.ENDIF          # "$(SHL6USE_EXPORTS)"!="name"
3093.ELSE           # "$(linkinc)"==""
3094        $(COMMAND_ECHO)-$(RM) del $(MISC)/$(SHL6TARGET).lnk
3095        $(COMMAND_ECHO)-$(RM) $(MISC)/$(SHL6TARGET).lst
3096        $(COMMAND_ECHO)$(TYPE) $(mktmp \
3097        $(SHL6LINKFLAGS) \
3098        $(LINKFLAGSSHL) $(SHL6BASEX) \
3099        $(SHL6STACK) $(MAPFILE) \
3100        -out:$@ \
3101        $(LB)/$(SHL6IMPLIB).exp \
3102        $(STDOBJ) \
3103        $(SHL6OBJS) \
3104        $(SHL6STDLIBS) \
3105        $(SHL6STDSHL) $(STDSHL6) \
3106        $(SHL6LINKRES) \
3107        ) >> $(MISC)/$(SHL6TARGET).lnk
3108        $(COMMAND_ECHO)$(TYPE) $(MISC)/$(SHL6TARGETN:b)_linkinc.ls  >> $(MISC)/$(SHL6TARGET).lnk
3109        $(COMMAND_ECHO)$(SHL6LINKER) @$(MISC)/$(SHL6TARGET).lnk
3110        @echo linking $@.manifest ...
3111.IF "$(VISTA_MANIFEST)"!=""
3112        $(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(MT) $(MTFLAGS) -manifest $@.manifest -manifest $(TRUSTED_MANIFEST_LOCATION)/trustedinfo.manifest -out:$@.tmanifest$(EMQ) $(FI)
3113        $(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(MT) $(MTFLAGS) -manifest $@.tmanifest -outputresource:$@$(EMQ);2 $(FI)
3114.ELSE
3115        $(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(MT) $(MTFLAGS) -manifest $@.manifest -outputresource:$@$(EMQ);2 $(FI)
3116.ENDIF # "$(VISTA_MANIFEST)"!=""
3117        $(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(RM:s/+//) $@.manifest $(FI)
3118        $(COMMAND_ECHO)$(IFEXIST) $@.tmanifest $(THEN) $(RM:s/+//) $@.tmanifest $(FI)
3119.ENDIF          # "$(linkinc)"==""
3120.ENDIF          # "$(COM)"=="GCC"
3121.ENDIF          # "$(GUI)" == "WNT"
3122.IF "$(GUI)"=="UNX"
3123.IF "$(OS)"=="MACOSX"
3124    @-$(RM) $(MISC)/$(@:b).list
3125    @-$(RM) $(MISC)/$(TARGET).$(@:b)_6.cmd
3126    @echo $(STDSLO) $(SHL6OBJS:s/.obj/.o/) \
3127    $(SHL6VERSIONOBJ) \
3128    `cat /dev/null $(SHL6LIBS) | sed s\#$(ROUT)\#$(PRJ)/$(ROUT)\#g` | tr -s " " "\n" > $(MISC)/$(@:b).list
3129    @echo -n $(SHL6LINKER) $(SHL6LINKFLAGS) $(SHL6VERSIONMAPPARA) $(LINKFLAGSSHL) -L$(PRJ)/$(ROUT)/lib $(SOLARLIB) -o $@ \
3130    $(SHL6STDLIBS) $(SHL6ARCHIVES) $(SHL6STDSHL) $(STDSHL6) -filelist $(MISC)/$(@:b).list $(LINKOUTPUT_FILTER) > $(MISC)/$(TARGET).$(@:b)_6.cmd
3131    @$(PERL) $(SOLARENV)/bin/macosx-dylib-link-list.pl \
3132        `cat $(MISC)/$(TARGET).$(@:b)_6.cmd` \
3133        >> $(MISC)/$(TARGET).$(@:b)_6.cmd
3134  .IF "$(VERBOSE)" == "TRUE"
3135    @cat $(MISC)/$(TARGET).$(@:b)_6.cmd
3136  .ENDIF
3137    @+source $(MISC)/$(TARGET).$(@:b)_6.cmd
3138    @$(PERL) $(SOLARENV)/bin/macosx-change-install-names.pl \
3139        shl $(SHL6RPATH) $@
3140.IF "$(SHL6CREATEJNILIB)"!=""
3141    @echo "Making:   " $(@:f).jnilib
3142    @macosx-create-bundle $@
3143.ENDIF          # "$(SHL6CREATEJNILIB)"!=""
3144.IF "$(UPDATER)"=="YES"
3145.IF "$(SHL6NOCHECK)"==""
3146    $(SOLARENV)/bin/checkdll.sh -L$(LB) -L$(SOLARLIBDIR) $(EXTRALIBPATHS6) $(SHL6TARGETN)
3147.ENDIF              # "$(SHL6NOCHECK)"!=""
3148.ENDIF
3149.ELSE           # "$(OS)"=="MACOSX"
3150    @-$(RM) $(MISC)/$(TARGET).$(@:b)_6.cmd
3151    @echo $(SHL6LINKER) $(SHL6LINKFLAGS) $(SHL6SONAME) $(LINKFLAGSSHL) $(SHL6VERSIONMAPPARA) -L$(PRJ)/$(ROUT)/lib $(SOLARLIB) $(STDSLO) $(SHL6OBJS:s/.obj/.o/) \
3152    $(SHL6VERSIONOBJ) -o $@ \
3153    `cat /dev/null $(SHL6LIBS) | tr -s " " "\n" | $(SED) s\#$(ROUT)\#$(PRJ)/$(ROUT)\#g` \
3154    $(SHL6STDLIBS) $(SHL6ARCHIVES) $(SHL6STDSHL) $(STDSHL6) $(LINKOUTPUT_FILTER) > $(MISC)/$(TARGET).$(@:b)_6.cmd
3155  .IF "$(VERBOSE)" == "TRUE"
3156    @cat $(MISC)/$(TARGET).$(@:b)_6.cmd
3157  .ENDIF
3158    @+source $(MISC)/$(TARGET).$(@:b)_6.cmd
3159.IF "$(UPDATER)"=="YES"
3160.IF "$(SHL6NOCHECK)"==""
3161    $(COMMAND_ECHO)-$(RM) $(SHL6TARGETN:d)check_$(SHL6TARGETN:f)
3162    $(COMMAND_ECHO)$(RENAME) $(SHL6TARGETN) $(SHL6TARGETN:d)check_$(SHL6TARGETN:f)
3163.IF "$(VERBOSE)"=="TRUE"
3164    $(COMMAND_ECHO)$(SOLARENV)/bin/checkdll.sh -L$(LB) -L$(SOLARLIBDIR) $(EXTRALIBPATHS6) $(SHL6TARGETN:d)check_$(SHL6TARGETN:f)
3165.ELSE
3166    $(COMMAND_ECHO)$(SOLARENV)/bin/checkdll.sh -L$(LB) -L$(SOLARLIBDIR) $(EXTRALIBPATHS6) -- -s $(SHL6TARGETN:d)check_$(SHL6TARGETN:f)
3167.ENDIF
3168.ENDIF              # "$(SHL6NOCHECK)"!=""
3169.ENDIF          # "$(UPDATER)"=="YES"
3170.ENDIF          # "$(OS)"=="MACOSX"
3171.IF "$(UNIXVERSIONNAMES)"!=""
3172    $(COMMAND_ECHO)$(RM) $(LB)/$(SHL6TARGETN:b)
3173    $(COMMAND_ECHO)cd $(LB) && ln -s $(SHL6TARGETN:f) $(SHL6TARGETN:b)
3174.ENDIF          # "$(UNIXVERSIONNAMES)"!=""
3175.IF "$(VERBOSE)" == "TRUE"
3176    @ls -l $@
3177.ENDIF
3178.ENDIF          # "$(GUI)" == "UNX"
3179
3180.IF "$(GUI)" == "OS2"
3181
3182.IF "$(SHL6DEFAULTRES)"!=""
3183    @+-$(RM) $(MISC)/$(SHL6DEFAULTRES:b).rc > $(NULLDEV)
3184.IF "$(SHL6ICON)" != ""
3185    @-+echo 1 ICON $(SHL6ICON) >> $(MISC)/$(SHL6DEFAULTRES:b).rc
3186.ENDIF
3187.IF "$(use_shl_versions)" != ""
3188.IF "$(SHL6ADD_VERINFO)"!=""
3189    @-+echo $(EMQ)#include $(EMQ)"$(SHL6ADD_VERINFO)$(EMQ)" >> $(MISC)/$(SHL6DEFAULTRES:b).rc
3190.ENDIF          # "$(SHL6ADD_VERINFO)"!=""
3191    @-+echo MENU 1 BEGIN END >> $(MISC)/$(SHL6DEFAULTRES:b).rc
3192#   @-+echo $(EMQ)RCDATA 1 { "Build string here" }$(EMQ) >> $(MISC)/$(SHL6DEFAULTRES:b).rc
3193.ENDIF          # "$(use_shl_versions)" != ""
3194# YD 04/07/06 seems null, confuses rc cli: -i $(SOLARTESDIR)
3195    $(COMMAND_ECHO)$(RC) -r -DOS2 $(INCLUDE) $(RCLINKFLAGS) $(MISC)/$(SHL6DEFAULTRES:b).rc
3196.ENDIF          # "$(SHL6DEFAULTRES)"!=""
3197
3198.IF "$(SHL6ALLRES)"!=""
3199    $(COMMAND_ECHO)+$(TYPE) $(SHL6ALLRES) > $(SHL6LINKRES)
3200.ENDIF          # "$(SHL6ALLRES)"!=""
3201
3202.IF "$(USE_DEFFILE)"!=""
3203
3204    $(COMMAND_ECHO)$(SHL6LINKER) $(SHL6LINKFLAGS) $(LINKFLAGSSHL) -o $@ \
3205        $(SHL6DEF) \
3206        $(STDOBJ) \
3207        -L$(LB) \
3208        -L$(SOLARVERSION)/$(INPATH)/lib \
3209        $(SHL6OBJS) $(SHL6VERSIONOBJ) \
3210        $(SHL6LIBS) \
3211        $(SHL6LINKRES) \
3212        $(SHL6STDLIBS) \
3213        $(SHL6STDSHL) $(STDSHL6)
3214
3215.ELSE           # "$(USE_DEFFILE)"!=""
3216
3217    $(COMMAND_ECHO)$(SHL6LINKER) $(SHL6LINKFLAGS)           \
3218        $(LINKFLAGSSHL) $(SHL6BASEX)        \
3219        $(SHL6STACK) -o $(SHL6TARGETN)  \
3220        $(SHL6DEF) \
3221        $(STDOBJ)                           \
3222        -L$(LB) \
3223        -L$(SOLARVERSION)/$(INPATH)/lib \
3224        $(SHL6OBJS) $(SHL6VERSIONOBJ) \
3225        $(SHL6LIBS) \
3226        $(SHL6LINKRES) \
3227        $(SHL6STDLIBS) \
3228        $(SHL6STDSHL) $(STDSHL6)
3229
3230.ENDIF          # "$(USE_DEFFILE)"!=""
3231
3232    $(COMMAND_ECHO)+$(IMPLIB) -p256 $(IMPLIBFLAGS) $(SHL6IMPLIBN) $@
3233    $(COMMAND_ECHO)+$(IMPLIB) -p256 $(IMPLIBFLAGS) $(LB)/$(SHL6TARGET).lib $@
3234
3235.IF "$(SHL6TARGET8)" != "$(SHL6TARGET)"
3236    $(COMMAND_ECHO)+$(COPY) $@ $(@:d)$(SHL6TARGET8).dll
3237.ENDIF
3238
3239.ENDIF          # "$(GUI)" == "OS2"
3240
3241.ENDIF          # "$(SHL6TARGETN)"!=""
3242
3243# unroll begin
3244
3245.IF "$(SHL7TARGETN)"!=""
3246
3247.IF "$(OS)"=="AIX"
3248SHL7STDLIBS=
3249.ENDIF
3250
3251.IF "$(SHLLINKARCONLY)" != ""
3252SHL7STDLIBS=
3253STDSHL=
3254.ELSE
3255SHL7ARCHIVES=
3256.ENDIF
3257
3258# decide how to link
3259.IF "$(SHL7CODETYPE)"=="C"
3260SHL7LINKER=$(LINKC)
3261SHL7STDSHL=$(subst,CPPRUNTIME, $(STDSHL))
3262SHL7LINKFLAGS+=$(LINKCFLAGS)
3263.ELSE           # "$(SHL7CODETYPE)"=="C"
3264SHL7LINKER=$(LINK)
3265SHL7STDSHL=$(subst,CPPRUNTIME,$(STDLIBCPP) $(STDSHL))
3266SHL7LINKFLAGS+=$(LINKFLAGS)
3267.ENDIF          # "$(SHL7CODETYPE)"=="C"
3268
3269SHL7RPATH*=OOO
3270LINKFLAGSRUNPATH_$(SHL7RPATH)*=/ERROR:/Bad_SHL7RPATH_value
3271SHL7LINKFLAGS+=$(LINKFLAGSRUNPATH_$(SHL7RPATH))
3272
3273.IF "$(SHL7USE_EXPORTS)"==""
3274SHL7DEF*=$(MISC)/$(SHL7TARGET).def
3275.ENDIF          # "$(SHL7USE_EXPORTS)"==""
3276
3277EXTRALIBPATHS7=$(EXTRALIBPATHS)
3278.IF "$(UPDATER)"=="YES"
3279.IF "$(SHL7NOCHECK)"==""
3280.IF "$(SOLAR_STLLIBPATH)"!=""
3281EXTRALIBPATHS7+=-L$(SOLAR_STLLIBPATH)
3282.ENDIF
3283.ENDIF              # "$(SHL7NOCHECK)"!=""
3284.ENDIF
3285#+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
3286#+++++++++++    version object      ++++++++++++++++++++++++++++++++++++++++
3287#+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
3288
3289.IF "$(L10N_framework)"==""
3290.IF "$(VERSIONOBJ)"!=""
3291SHL7VERSIONOBJ:=$(VERSIONOBJ:d){$(subst,$(DLLPOSTFIX),_dflt $(SHL7TARGET))}$(VERSIONOBJ:f)
3292USE_VERSIONH:=$(INCCOM)/$(SHL7VERSIONOBJ:b).h
3293.IF "$(GUI)" == "UNX"
3294SHL7VERSIONOBJDEP:=$(VERSIONOBJ:d){$(subst,$(DLLPOSTFIX),_dflt $(SHL7TARGET))}$(VERSIONOBJ:f:s/.o/.obj/)
3295.ELSE           # "$(GUI)" == "UNX"
3296SHL7VERSIONOBJDEP:=$(VERSIONOBJ:d){$(subst,$(DLLPOSTFIX),_dflt $(SHL7TARGET))}$(VERSIONOBJ:f)
3297.ENDIF          # "$(GUI)" == "UNX"
3298$(MISC)/$(SHL7VERSIONOBJ:b).c : $(SOLARENV)/src/version.c $(INCCOM)/$(SHL7VERSIONOBJ:b).h
3299#    $(COPY) $(SOLARENV)/src/version.c $@
3300    $(COMMAND_ECHO)$(TYPE) $(SOLARENV)/src/version.c | $(SED) s/_version.h/$(SHL7VERSIONOBJ:b).h/ > $@
3301
3302.INIT : $(SHL7VERSIONOBJDEP)
3303.ENDIF          # "$(VERSIONOBJ)"!=""
3304.ENDIF
3305
3306.IF "$(GUI)" != "UNX"
3307.IF "$(GUI)" == "WNT" || "$(GUI)" == "OS2"
3308.IF "$(SHL7IMPLIB)" == ""
3309SHL7IMPLIB=i$(TARGET)_t7
3310.ENDIF          # "$(SHL7IMPLIB)" == ""
3311.IF "$(COM)" != "GCC"
3312USE_7IMPLIB=-implib:$(LB)/$(SHL7IMPLIB).lib
3313.ENDIF          # "$(COM)" != "GCC"
3314SHL7IMPLIBN=$(LB)/$(SHL7IMPLIB).lib
3315ALLTAR : $(SHL7IMPLIBN)
3316
3317.IF "$(USE_DEFFILE)"==""
3318USE_7IMPLIB_DEPS=$(LB)/$(SHL7IMPLIB).lib
3319.ENDIF          # "$(USE_DEFFILE)"==""
3320.ENDIF          # "$(GUI)" == "WNT" || "$(GUI)" == "OS2"
3321USE_SHL7DEF=$(SHL7DEF)
3322.ELSE           # "$(GUI)" != "UNX"
3323USE_SHL7DEF=
3324SHL7DEPN+:=$(SHL7DEPNU)
3325
3326.IF "$(SHL7VERSIONMAP)"==""
3327# to activate vmaps remove "#"
3328USE_SHL7VERSIONMAP=$(MISC)/$(SHL7TARGET).vmap
3329.ENDIF          # "$(SHL7VERSIONMAP)"==""
3330
3331.IF "$(USE_SHL7VERSIONMAP)"!=""
3332
3333.IF "$(SHL7FILTERFILE)"!=""
3334.IF "$(SHL7VERSIONMAP)"!=""
3335#eine von beiden ist zuviel
3336USE_SHL7VERSIONMAP=$(MISC)/$(SHL7TARGET).vmap
3337$(USE_SHL7VERSIONMAP) .PHONY:
3338    @echo -----------------------------
3339    @echo you should only use versionmap OR exportfile
3340    @echo -----------------------------
3341#   force_dmake_to_error
3342
3343.ENDIF          # "$(SHL7VERSIONMAP)"!=""
3344
3345SHL7VERSIONMAPPARA=$(LINKVERSIONMAPFLAG) $(USE_SHL7VERSIONMAP)
3346
3347$(USE_SHL7VERSIONMAP): \
3348                    $(SHL7OBJS)\
3349                    $(SHL7LIBS)\
3350                    $(SHL7FILTERFILE)
3351    @$(RM) $@.dump
3352.IF "$(SHL7OBJS)"!=""
3353# dump remaining objects on the fly
3354.IF "$(OS)"=="MACOSX"
3355    @-nm $(SHL7OBJS:s/.obj/.o/) > $@.dump
3356.ELSE
3357    @nm $(SHL7OBJS:s/.obj/.o/) > $@.dump
3358.ENDIF
3359.ENDIF          # "$(SHL7OBJS)!"=""
3360    @$(TYPE) /dev/null $(SHL7LIBS:s/.lib/.dump/) >> $@.dump
3361    $(COMMAND_ECHO) $(PERL) $(SOLARENV)/bin/mapgen.pl -d $@.dump -s $(SHL7INTERFACE) -f $(SHL7FILTERFILE) -m $@
3362
3363.ELSE           # "$(SHL7FILTERFILE)"!=""
3364USE_SHL7VERSIONMAP=$(MISC)/$(SHL7TARGET).vmap
3365$(USE_SHL7VERSIONMAP) :
3366.IF "$(VERBOSE)" == "TRUE"
3367    @echo -----------------------------
3368    @echo SHL7FILTERFILE not set!
3369    @echo -----------------------------
3370    @$(TOUCH) $@
3371    @echo dummy file to keep the dependencies for later use.
3372.ELSE
3373    @$(TOUCH) $@
3374.ENDIF
3375#   force_dmake_to_error
3376.ENDIF          # "$(SHL7FILTERFILE)"!=""
3377.ELSE           # "$(USE_SHL7VERSIONMAP)"!=""
3378
3379#and now for the plain non-generic way...
3380.IF "$(SHL7VERSIONMAP)"!=""
3381USE_SHL7VERSIONMAP=$(MISC)/$(SHL7VERSIONMAP:b)_$(SHL7TARGET)$(SHL7VERSIONMAP:e)
3382SHL7VERSIONMAPPARA=$(LINKVERSIONMAPFLAG) $(USE_SHL7VERSIONMAP)
3383
3384.IF "$(OS)"=="MACOSX"
3385$(USE_SHL7VERSIONMAP): $(SHL7OBJS) $(SHL7LIBS)
3386.ENDIF
3387
3388# .ERRREMOVE is needed as a recipe line like "$(AWK) ... > $@" would create $@
3389# even if the $(AWK) part fails:
3390$(USE_SHL7VERSIONMAP) .ERRREMOVE: $(SHL7VERSIONMAP)
3391    @@-$(RM) -f $@
3392# The following files will only be generated and needed on Mac OS X as temporary files
3393# in order to generate exported symbols list out of Linux/Solaris map files
3394.IF "$(OS)"=="MACOSX"
3395    @-$(RM) -f $@.symregexp >& $(NULLDEV)
3396    @-$(RM) -f $@.expsymlist >& $(NULLDEV)
3397.ENDIF
3398# Its questionable if the following condition '.IF "$(COMID)"=="gcc3"' makes sense and what
3399# happens if somebody will change it in the future
3400.IF "$(COMID)"=="gcc3"
3401    $(COMMAND_ECHO) tr -d "\015" < $(SHL7VERSIONMAP) | $(AWK) -f $(SOLARENV)/bin/addsym.awk > $@
3402.ELIF "$(COMNAME)"=="sunpro5"
3403    $(COMMAND_ECHO) tr -d "\015" < $(SHL7VERSIONMAP) | $(GREP) -v $(IGNORE_SYMBOLS) > $@
3404.ELSE           # "$(COMID)"=="gcc3"
3405    $(COMMAND_ECHO) tr -d "\015" < $(SHL7VERSIONMAP) > $@
3406.ENDIF          # "$(COMID)"=="gcc3"
3407    @chmod a+w $@
3408# Mac OS X post-processing generate an exported symbols list from the generated map file
3409# for details on exported symbols list see man ld on Mac OS X
3410.IF "$(OS)"=="MACOSX"
3411    @-cat $@ | $(AWK) -f $(SOLARENV)/bin/unxmap-to-macosx-explist.awk | grep -v "\*\|?" > $@.exported-symbols
3412    @-cat $@ | $(AWK) -f $(SOLARENV)/bin/unxmap-to-macosx-explist.awk | grep "\*\|?" > $@.symbols-regexp
3413# Shared libraries will be build out of the *.obj files specified in SHL?OBJS and SHL?LIBS
3414# Extract RTTI symbols from all the objects that will be used to build a shared library
3415.IF "$(SHL7OBJS)"!=""
3416    -echo $(foreach,i,$(SHL7OBJS:s/.obj/.o/) $i) | xargs -n1 nm -gx | $(SOLARENV)/bin/addsym-macosx.sh $@.symbols-regexp $@.symbols-regexp.tmp >> $@.exported-symbols
3417.ENDIF
3418.IF "$(SHL7LIBS)"!=""
3419    $(COMMAND_ECHO)-$(TYPE) $(foreach,j,$(SHL7LIBS) $j) | $(SED) s\#$(ROUT)\#$(PRJ)/$(ROUT)\#g | xargs -n1 nm -gx | $(SOLARENV)/bin/addsym-macosx.sh $@.symbols-regexp $@.symbols-regexp.tmp >> $@.exported-symbols
3420.ENDIF
3421# overwrite the map file generate into the local output tree with the generated
3422# exported symbols list
3423    cp $@.exported-symbols $@
3424.ENDIF # .IF "$(OS)"=="MACOSX"
3425.ENDIF          # "$(SHL7VERSIONMAP)"!=""
3426.ENDIF          # "$(USE_SHL7VERSIONMAP)"!=""
3427.ENDIF          # "$(GUI)" != "UNX"
3428
3429.IF "$(UNIXVERSIONNAMES)"!=""
3430.IF "$(OS)"!="MACOSX"
3431.IF "$(GUI)"=="UNX"
3432SHL7SONAME=\"$(SONAME_SWITCH)$(SHL7TARGETN:f)\"
3433.ENDIF          # "$(GUI)"!="UNX"
3434.ENDIF          # "$(OS)"!="MACOSX"
3435.ENDIF          # "$(UNIXVERSIONNAMES)"!=""
3436
3437.IF "$(SHL7RES)"!=""
3438SHL7ALLRES+=$(SHL7RES)
3439SHL7LINKRES*=$(MISC)/$(SHL7TARGET).res
3440SHL7LINKRESO*=$(MISC)/$(SHL7TARGET)_res.o
3441.ENDIF          # "$(SHL7RES)"!=""
3442
3443.IF "$(SHL7DEFAULTRES)$(use_shl_versions)"!=""
3444SHL7DEFAULTRES*=$(MISC)/$(SHL7TARGET)_def.res
3445SHL7ALLRES+=$(SHL7DEFAULTRES)
3446SHL7LINKRES*=$(MISC)/$(SHL7TARGET).res
3447SHL7LINKRESO*=$(MISC)/$(SHL7TARGET)_res.o
3448.ENDIF          # "$(SHL7DEFAULTRES)$(use_shl_versions)"!=""
3449
3450#.IF "$(SHL7TARGETN)"!=""
3451
3452.IF "$(linkinc)"!=""
3453.IF "$(GUI)"=="WNT" || "$(GUI)" == "OS2"
3454.IF "$(SHL7LIBS)"!=""
3455$(MISC)/$(SHL7TARGET)_linkinc.ls .PHONY:
3456    @@-$(RM) $@
3457    $(COMMAND_ECHO)$(SED) -f $(SOLARENV)/bin/chrel.sed $(foreach,i,$(SHL7LIBS) $(i:s/.lib/.lin/)) >> $@
3458.ENDIF          # "$(SHL7LIBS)"!=""
3459.ENDIF
3460
3461LINKINCTARGETS+=$(MISC)/$(SHL7TARGETN:b)_linkinc.ls
3462$(SHL7TARGETN) : $(LINKINCTARGETS)
3463
3464.ELSE
3465.IF "$(SHL7USE_EXPORTS)"=="name"
3466.IF "$(GUI)"=="WNT" || "$(GUI)" == "OS2"
3467.IF "$(COM)"!="GCC"
3468.IF "$(SHL7LIBS)"!=""
3469SHL7LINKLIST=$(MISC)/$(SHL7TARGET)_link.lst
3470SHL7LINKLISTPARAM=@$(SHL7LINKLIST)
3471$(SHL7LINKLIST) : $(SHL7LIBS)
3472    @@-$(RM) $@
3473    $(COMMAND_ECHO)$(SED) -f $(SOLARENV)/bin/chrel.sed $(foreach,i,$(SHL7LIBS) $(i:s/.lib/.lin/)) >> $@
3474.ENDIF          # "$(SHL7LIBS)"!=""
3475.ENDIF          # "$(COM)"!="GCC"
3476.ENDIF
3477.ENDIF          # "$(SHL7USE_EXPORTS)"=="name"
3478
3479$(MISC)/%linkinc.ls:
3480    @echo . > $@
3481.ENDIF          # "$(linkinc)"!=""
3482
3483.IF "$(GUI)" == "OS2"
3484#21/02/2006 YD dll names must be 8.3, invoke fix script
3485#check osl/os2/module.c/osl_loadModule()
3486SHL7TARGET8=$(shell @fix_shl.cmd $(SHL7TARGET))
3487.ENDIF
3488
3489
3490$(SHL7TARGETN) : \
3491                    $(SHL7OBJS)\
3492                    $(SHL7LIBS)\
3493                    $(USE_7IMPLIB_DEPS)\
3494                    $(USE_SHL7DEF)\
3495                    $(USE_SHL7VERSIONMAP)\
3496                    $(SHL7RES)\
3497                    $(SHL7DEPN) \
3498                    $(SHL7LINKLIST)
3499    @echo "Making:   " $(@:f)
3500.IF "$(GUI)" == "WNT"
3501.IF "$(SHL7DEFAULTRES)"!=""
3502    @@-$(RM) $(MISC)/$(SHL7DEFAULTRES:b).rc
3503.IF "$(SHL7ICON)" != ""
3504    @echo 1 ICON $(SHL7ICON) >> $(MISC)/$(SHL7DEFAULTRES:b).rc
3505.ENDIF
3506.IF "$(use_shl_versions)" != ""
3507.IF "$(SHL7ADD_VERINFO)"!=""
3508    @echo $(EMQ)#include $(EMQ)"$(SHL7ADD_VERINFO)$(EMQ)" >> $(MISC)/$(SHL7DEFAULTRES:b).rc
3509.ELSE           # "$(SHL7ADD_VERINFO)"!=""
3510    @echo $(EMQ)#define ADDITIONAL_VERINFO1 >> $(MISC)/$(SHL7DEFAULTRES:b).rc
3511    @echo $(EMQ)#define ADDITIONAL_VERINFO2 >> $(MISC)/$(SHL7DEFAULTRES:b).rc
3512    @echo $(EMQ)#define ADDITIONAL_VERINFO3 >> $(MISC)/$(SHL7DEFAULTRES:b).rc
3513.ENDIF          # "$(SHL7ADD_VERINFO)"!=""
3514    @echo $(EMQ)#define VERVARIANT  $(BUILD) >> $(MISC)/$(SHL7DEFAULTRES:b).rc
3515    @echo $(EMQ)#define ORG_NAME    $(SHL7TARGET)$(DLLPOST) >> $(MISC)/$(SHL7DEFAULTRES:b).rc
3516    @echo $(EMQ)#define INTERNAL_NAME $(SHL7TARGET:b) >> $(MISC)/$(SHL7DEFAULTRES:b).rc
3517    @echo $(EMQ)#include $(EMQ)"shlinfo.rc$(EMQ)" >> $(MISC)/$(SHL7DEFAULTRES:b).rc
3518.ENDIF          # "$(use_shl_versions)" != ""
3519    $(COMMAND_ECHO)$(RC) -DWIN32 $(INCLUDE) $(RCLINKFLAGS) $(MISC)/$(SHL7DEFAULTRES:b).rc
3520.ENDIF          # "$(SHL7DEFAULTRES)"!=""
3521.IF "$(SHL7ALLRES)"!=""
3522    $(COMMAND_ECHO)$(TYPE) $(SHL7ALLRES) > $(SHL7LINKRES)
3523.IF "$(COM)"=="GCC"
3524    windres $(SHL7LINKRES) $(SHL7LINKRESO)
3525.ENDIF          # "$(COM)"=="GCC"
3526.ENDIF          # "$(SHL7ALLRES)"!=""
3527.IF "$(COM)"=="GCC" # always have to call dlltool explicitly as ld cannot handle # comment in .def
3528    @echo dlltool --dllname $(SHL7TARGET)$(DLLPOST) \
3529        --kill-at \\ > $(MISC)/$(TARGET).$(@:b)_7.cmd
3530    @noop $(assign ALL7OBJLIST:=$(STDOBJ) $(SHL7OBJS) $(SHL7LINKRESO) $(shell $(TYPE) /dev/null $(SHL7LIBS) | $(SED) s?$(ROUT)?$(PRJ)/$(ROUT)?g))
3531.IF "$(DEFLIB7NAME)"!=""    # do not have to include objs
3532    @noop $(assign DEF7OBJLIST:=$(shell $(TYPE) $(foreach,i,$(DEFLIB7NAME) $(SLB)/$(i).lib) | sed s?$(ROUT)?$(PRJ)/$(ROUT)?g))
3533    @noop $(foreach,i,$(DEF7OBJLIST) $(assign ALL7OBJLIST:=$(ALL7OBJLIST:s?$i??)))
3534.ENDIF          # "$(DEFLIB7NAME)"!=""
3535    @echo   --output-exp $(MISC)/$(@:b)_exp.o \\ >> $(MISC)/$(TARGET).$(@:b)_7.cmd
3536.IF "$(SHL7DEF)"!=""
3537    @echo   --input-def $(SHL7DEF) \\ >> $(MISC)/$(TARGET).$(@:b)_7.cmd
3538.ELSE
3539    @echo   $(SHL7VERSIONOBJ) $(SHL7DESCRIPTIONOBJ) \\ >> $(MISC)/$(TARGET).$(@:b)_7.cmd
3540.ENDIF
3541    @echo   $(ALL7OBJLIST) >> $(MISC)/$(TARGET).$(@:b)_7.cmd
3542    @echo $(LINK) $(LINKFLAGS) $(LINKFLAGSSHL) $(MINGWSSTDOBJ) -o $@ \
3543        $(STDOBJ) $(SHL7VERSIONOBJ) $(SHL7DESCRIPTIONOBJ) $(SHL7OBJS) $(SHL7LINKRESO) \
3544        `$(TYPE) /dev/null $(SHL7LIBS) | $(SED) s\#$(ROUT)\#$(PRJ)/$(ROUT)\#g` \
3545        -Wl,--exclude-libs,ALL,--start-group $(SHL7STDLIBS) -Wl,--end-group \
3546        $(SHL7STDSHL) $(STDSHL7) $(MISC)/$(@:b)_exp.o $(MINGWSSTDENDOBJ) \
3547        -Wl,-Map,$(MISC)/$(@:b).map >> $(MISC)/$(TARGET).$(@:b)_7.cmd
3548  .IF "$(VERBOSE)" == "TRUE"
3549    @$(TYPE)  $(MISC)/$(TARGET).$(@:b)_7.cmd
3550  .ENDIF
3551    @+source $(MISC)/$(TARGET).$(@:b)_7.cmd
3552.ELSE
3553.IF "$(linkinc)"==""
3554.IF "$(SHL7USE_EXPORTS)"!="name"
3555.IF "$(USE_DEFFILE)"!=""
3556    $(COMMAND_ECHO)$(SHL7LINKER) @$(mktmp \
3557        $(SHL7LINKFLAGS) \
3558        $(LINKFLAGSSHL) \
3559        $(SHL7STACK) $(SHL7BASEX)   \
3560        -out:$@ \
3561        -map:$(MISC)/$(@:b).map \
3562        -def:$(SHL7DEF) \
3563        $(USE_7IMPLIB) \
3564        $(STDOBJ) \
3565        $(SHL7VERSIONOBJ) $(SHL7OBJS) \
3566        $(SHL7LIBS) \
3567        $(SHL7STDLIBS) \
3568        $(SHL7STDSHL) $(STDSHL7) \
3569        $(SHL7LINKRES) \
3570    )
3571# double check if target was really written... still making sense?
3572    @@$(LS) $@
3573    @echo linking $@.manifest ...
3574.IF "$(VISTA_MANIFEST)"!=""
3575    $(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(MT) $(MTFLAGS) -manifest $@.manifest -manifest $(TRUSTED_MANIFEST_LOCATION)/trustedinfo.manifest -out:$@.tmanifest$(EMQ) $(FI)
3576    $(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(MT) $(MTFLAGS) -manifest $@.tmanifest -outputresource:$@$(EMQ);2 $(FI)
3577.ELSE
3578    $(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(MT) $(MTFLAGS) -manifest $@.manifest -outputresource:$@$(EMQ);2 $(FI)
3579.ENDIF # "$(VISTA_MANIFEST)"!=""
3580    $(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(RM:s/+//) $@.manifest $(FI)
3581    $(COMMAND_ECHO)$(IFEXIST) $@.tmanifest $(THEN) $(RM:s/+//) $@.tmanifest $(FI)
3582.ELSE           # "$(USE_DEFFILE)"!=""
3583    $(COMMAND_ECHO)$(SHL7LINKER) @$(mktmp   $(SHL7LINKFLAGS)            \
3584        $(LINKFLAGSSHL) $(SHL7BASEX)        \
3585        $(SHL7STACK) -out:$(SHL7TARGETN)    \
3586        -map:$(MISC)/$(@:B).map             \
3587        $(LB)/$(SHL7IMPLIB).exp             \
3588        $(STDOBJ)                           \
3589        $(SHL7OBJS) $(SHL7VERSIONOBJ) \
3590        $(SHL7LIBS)                         \
3591        $(SHL7STDLIBS)                      \
3592        $(SHL7STDSHL) $(STDSHL7)                           \
3593        $(SHL7LINKRES) \
3594    )
3595# double check if target was really written... still making sense?
3596    @@$(LS) $@
3597    @echo linking $@.manifest ...
3598.IF "$(VISTA_MANIFEST)"!=""
3599    $(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(MT) $(MTFLAGS) -manifest $@.manifest -manifest $(TRUSTED_MANIFEST_LOCATION)/trustedinfo.manifest -out:$@.tmanifest$(EMQ) $(FI)
3600    $(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(MT) $(MTFLAGS) -manifest $@.tmanifest -outputresource:$@$(EMQ);2 $(FI)
3601.ELSE
3602    $(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(MT) $(MTFLAGS) -manifest $@.manifest -outputresource:$@$(EMQ);2 $(FI)
3603.ENDIF # "$(VISTA_MANIFEST)"!=""
3604    $(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(RM:s/+//) $@.manifest $(FI)
3605    $(COMMAND_ECHO)$(IFEXIST) $@.tmanifest $(THEN) $(RM:s/+//) $@.tmanifest $(FI)
3606.ENDIF          # "$(USE_DEFFILE)"!=""
3607.ELSE           # "$(SHL7USE_EXPORTS)"!="name"
3608    $(COMMAND_ECHO)$(SHL7LINKER) @$(mktmp   $(SHL7LINKFLAGS)            \
3609        $(LINKFLAGSSHL) $(SHL7BASEX)        \
3610        $(SHL7STACK) -out:$(SHL7TARGETN)    \
3611        -map:$(MISC)/$(@:B).map             \
3612        $(USE_7IMPLIB) \
3613        $(STDOBJ)                           \
3614        $(SHL7OBJS) $(SHL7VERSIONOBJ))   \
3615        $(SHL7LINKLISTPARAM) \
3616        @$(mktmp $(SHL7STDLIBS)                      \
3617        $(SHL7STDSHL) $(STDSHL7)                           \
3618        $(SHL7LINKRES) \
3619    )
3620    @echo linking $@.manifest ...
3621.IF "$(VISTA_MANIFEST)"!=""
3622    $(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(MT) $(MTFLAGS) -manifest $@.manifest -manifest $(TRUSTED_MANIFEST_LOCATION)/trustedinfo.manifest -out:$@.tmanifest$(EMQ) $(FI)
3623    $(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(MT) $(MTFLAGS) -manifest $@.tmanifest -outputresource:$@$(EMQ);2 $(FI)
3624.ELSE
3625    $(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(MT) $(MTFLAGS) -manifest $@.manifest -outputresource:$@$(EMQ);2 $(FI)
3626.ENDIF # "$(VISTA_MANIFEST)"!=""
3627    $(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(RM:s/+//) $@.manifest $(FI)
3628    $(COMMAND_ECHO)$(IFEXIST) $@.tmanifest $(THEN) $(RM:s/+//) $@.tmanifest $(FI)
3629.ENDIF          # "$(SHL7USE_EXPORTS)"!="name"
3630.ELSE           # "$(linkinc)"==""
3631        $(COMMAND_ECHO)-$(RM) del $(MISC)/$(SHL7TARGET).lnk
3632        $(COMMAND_ECHO)-$(RM) $(MISC)/$(SHL7TARGET).lst
3633        $(COMMAND_ECHO)$(TYPE) $(mktmp \
3634        $(SHL7LINKFLAGS) \
3635        $(LINKFLAGSSHL) $(SHL7BASEX) \
3636        $(SHL7STACK) $(MAPFILE) \
3637        -out:$@ \
3638        $(LB)/$(SHL7IMPLIB).exp \
3639        $(STDOBJ) \
3640        $(SHL7OBJS) \
3641        $(SHL7STDLIBS) \
3642        $(SHL7STDSHL) $(STDSHL7) \
3643        $(SHL7LINKRES) \
3644        ) >> $(MISC)/$(SHL7TARGET).lnk
3645        $(COMMAND_ECHO)$(TYPE) $(MISC)/$(SHL7TARGETN:b)_linkinc.ls  >> $(MISC)/$(SHL7TARGET).lnk
3646        $(COMMAND_ECHO)$(SHL7LINKER) @$(MISC)/$(SHL7TARGET).lnk
3647        @echo linking $@.manifest ...
3648.IF "$(VISTA_MANIFEST)"!=""
3649        $(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(MT) $(MTFLAGS) -manifest $@.manifest -manifest $(TRUSTED_MANIFEST_LOCATION)/trustedinfo.manifest -out:$@.tmanifest$(EMQ) $(FI)
3650        $(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(MT) $(MTFLAGS) -manifest $@.tmanifest -outputresource:$@$(EMQ);2 $(FI)
3651.ELSE
3652        $(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(MT) $(MTFLAGS) -manifest $@.manifest -outputresource:$@$(EMQ);2 $(FI)
3653.ENDIF # "$(VISTA_MANIFEST)"!=""
3654        $(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(RM:s/+//) $@.manifest $(FI)
3655        $(COMMAND_ECHO)$(IFEXIST) $@.tmanifest $(THEN) $(RM:s/+//) $@.tmanifest $(FI)
3656.ENDIF          # "$(linkinc)"==""
3657.ENDIF          # "$(COM)"=="GCC"
3658.ENDIF          # "$(GUI)" == "WNT"
3659.IF "$(GUI)"=="UNX"
3660.IF "$(OS)"=="MACOSX"
3661    @-$(RM) $(MISC)/$(@:b).list
3662    @-$(RM) $(MISC)/$(TARGET).$(@:b)_7.cmd
3663    @echo $(STDSLO) $(SHL7OBJS:s/.obj/.o/) \
3664    $(SHL7VERSIONOBJ) \
3665    `cat /dev/null $(SHL7LIBS) | sed s\#$(ROUT)\#$(PRJ)/$(ROUT)\#g` | tr -s " " "\n" > $(MISC)/$(@:b).list
3666    @echo -n $(SHL7LINKER) $(SHL7LINKFLAGS) $(SHL7VERSIONMAPPARA) $(LINKFLAGSSHL) -L$(PRJ)/$(ROUT)/lib $(SOLARLIB) -o $@ \
3667    $(SHL7STDLIBS) $(SHL7ARCHIVES) $(SHL7STDSHL) $(STDSHL7) -filelist $(MISC)/$(@:b).list $(LINKOUTPUT_FILTER) > $(MISC)/$(TARGET).$(@:b)_7.cmd
3668    @$(PERL) $(SOLARENV)/bin/macosx-dylib-link-list.pl \
3669        `cat $(MISC)/$(TARGET).$(@:b)_7.cmd` \
3670        >> $(MISC)/$(TARGET).$(@:b)_7.cmd
3671  .IF "$(VERBOSE)" == "TRUE"
3672    @cat $(MISC)/$(TARGET).$(@:b)_7.cmd
3673  .ENDIF
3674    @+source $(MISC)/$(TARGET).$(@:b)_7.cmd
3675    @$(PERL) $(SOLARENV)/bin/macosx-change-install-names.pl \
3676        shl $(SHL7RPATH) $@
3677.IF "$(SHL7CREATEJNILIB)"!=""
3678    @echo "Making:   " $(@:f).jnilib
3679    @macosx-create-bundle $@
3680.ENDIF          # "$(SHL7CREATEJNILIB)"!=""
3681.IF "$(UPDATER)"=="YES"
3682.IF "$(SHL7NOCHECK)"==""
3683    $(SOLARENV)/bin/checkdll.sh -L$(LB) -L$(SOLARLIBDIR) $(EXTRALIBPATHS7) $(SHL7TARGETN)
3684.ENDIF              # "$(SHL7NOCHECK)"!=""
3685.ENDIF
3686.ELSE           # "$(OS)"=="MACOSX"
3687    @-$(RM) $(MISC)/$(TARGET).$(@:b)_7.cmd
3688    @echo $(SHL7LINKER) $(SHL7LINKFLAGS) $(SHL7SONAME) $(LINKFLAGSSHL) $(SHL7VERSIONMAPPARA) -L$(PRJ)/$(ROUT)/lib $(SOLARLIB) $(STDSLO) $(SHL7OBJS:s/.obj/.o/) \
3689    $(SHL7VERSIONOBJ) -o $@ \
3690    `cat /dev/null $(SHL7LIBS) | tr -s " " "\n" | $(SED) s\#$(ROUT)\#$(PRJ)/$(ROUT)\#g` \
3691    $(SHL7STDLIBS) $(SHL7ARCHIVES) $(SHL7STDSHL) $(STDSHL7) $(LINKOUTPUT_FILTER) > $(MISC)/$(TARGET).$(@:b)_7.cmd
3692  .IF "$(VERBOSE)" == "TRUE"
3693    @cat $(MISC)/$(TARGET).$(@:b)_7.cmd
3694  .ENDIF
3695    @+source $(MISC)/$(TARGET).$(@:b)_7.cmd
3696.IF "$(UPDATER)"=="YES"
3697.IF "$(SHL7NOCHECK)"==""
3698    $(COMMAND_ECHO)-$(RM) $(SHL7TARGETN:d)check_$(SHL7TARGETN:f)
3699    $(COMMAND_ECHO)$(RENAME) $(SHL7TARGETN) $(SHL7TARGETN:d)check_$(SHL7TARGETN:f)
3700.IF "$(VERBOSE)"=="TRUE"
3701    $(COMMAND_ECHO)$(SOLARENV)/bin/checkdll.sh -L$(LB) -L$(SOLARLIBDIR) $(EXTRALIBPATHS7) $(SHL7TARGETN:d)check_$(SHL7TARGETN:f)
3702.ELSE
3703    $(COMMAND_ECHO)$(SOLARENV)/bin/checkdll.sh -L$(LB) -L$(SOLARLIBDIR) $(EXTRALIBPATHS7) -- -s $(SHL7TARGETN:d)check_$(SHL7TARGETN:f)
3704.ENDIF
3705.ENDIF              # "$(SHL7NOCHECK)"!=""
3706.ENDIF          # "$(UPDATER)"=="YES"
3707.ENDIF          # "$(OS)"=="MACOSX"
3708.IF "$(UNIXVERSIONNAMES)"!=""
3709    $(COMMAND_ECHO)$(RM) $(LB)/$(SHL7TARGETN:b)
3710    $(COMMAND_ECHO)cd $(LB) && ln -s $(SHL7TARGETN:f) $(SHL7TARGETN:b)
3711.ENDIF          # "$(UNIXVERSIONNAMES)"!=""
3712.IF "$(VERBOSE)" == "TRUE"
3713    @ls -l $@
3714.ENDIF
3715.ENDIF          # "$(GUI)" == "UNX"
3716
3717.IF "$(GUI)" == "OS2"
3718
3719.IF "$(SHL7DEFAULTRES)"!=""
3720    @+-$(RM) $(MISC)/$(SHL7DEFAULTRES:b).rc > $(NULLDEV)
3721.IF "$(SHL7ICON)" != ""
3722    @-+echo 1 ICON $(SHL7ICON) >> $(MISC)/$(SHL7DEFAULTRES:b).rc
3723.ENDIF
3724.IF "$(use_shl_versions)" != ""
3725.IF "$(SHL7ADD_VERINFO)"!=""
3726    @-+echo $(EMQ)#include $(EMQ)"$(SHL7ADD_VERINFO)$(EMQ)" >> $(MISC)/$(SHL7DEFAULTRES:b).rc
3727.ENDIF          # "$(SHL7ADD_VERINFO)"!=""
3728    @-+echo MENU 1 BEGIN END >> $(MISC)/$(SHL7DEFAULTRES:b).rc
3729#   @-+echo $(EMQ)RCDATA 1 { "Build string here" }$(EMQ) >> $(MISC)/$(SHL7DEFAULTRES:b).rc
3730.ENDIF          # "$(use_shl_versions)" != ""
3731# YD 04/07/06 seems null, confuses rc cli: -i $(SOLARTESDIR)
3732    $(COMMAND_ECHO)$(RC) -r -DOS2 $(INCLUDE) $(RCLINKFLAGS) $(MISC)/$(SHL7DEFAULTRES:b).rc
3733.ENDIF          # "$(SHL7DEFAULTRES)"!=""
3734
3735.IF "$(SHL7ALLRES)"!=""
3736    $(COMMAND_ECHO)+$(TYPE) $(SHL7ALLRES) > $(SHL7LINKRES)
3737.ENDIF          # "$(SHL7ALLRES)"!=""
3738
3739.IF "$(USE_DEFFILE)"!=""
3740
3741    $(COMMAND_ECHO)$(SHL7LINKER) $(SHL7LINKFLAGS) $(LINKFLAGSSHL) -o $@ \
3742        $(SHL7DEF) \
3743        $(STDOBJ) \
3744        -L$(LB) \
3745        -L$(SOLARVERSION)/$(INPATH)/lib \
3746        $(SHL7OBJS) $(SHL7VERSIONOBJ) \
3747        $(SHL7LIBS) \
3748        $(SHL7LINKRES) \
3749        $(SHL7STDLIBS) \
3750        $(SHL7STDSHL) $(STDSHL7)
3751
3752.ELSE           # "$(USE_DEFFILE)"!=""
3753
3754    $(COMMAND_ECHO)$(SHL7LINKER) $(SHL7LINKFLAGS)           \
3755        $(LINKFLAGSSHL) $(SHL7BASEX)        \
3756        $(SHL7STACK) -o $(SHL7TARGETN)  \
3757        $(SHL7DEF) \
3758        $(STDOBJ)                           \
3759        -L$(LB) \
3760        -L$(SOLARVERSION)/$(INPATH)/lib \
3761        $(SHL7OBJS) $(SHL7VERSIONOBJ) \
3762        $(SHL7LIBS) \
3763        $(SHL7LINKRES) \
3764        $(SHL7STDLIBS) \
3765        $(SHL7STDSHL) $(STDSHL7)
3766
3767.ENDIF          # "$(USE_DEFFILE)"!=""
3768
3769    $(COMMAND_ECHO)+$(IMPLIB) -p256 $(IMPLIBFLAGS) $(SHL7IMPLIBN) $@
3770    $(COMMAND_ECHO)+$(IMPLIB) -p256 $(IMPLIBFLAGS) $(LB)/$(SHL7TARGET).lib $@
3771
3772.IF "$(SHL7TARGET8)" != "$(SHL7TARGET)"
3773    $(COMMAND_ECHO)+$(COPY) $@ $(@:d)$(SHL7TARGET8).dll
3774.ENDIF
3775
3776.ENDIF          # "$(GUI)" == "OS2"
3777
3778.ENDIF          # "$(SHL7TARGETN)"!=""
3779
3780# unroll begin
3781
3782.IF "$(SHL8TARGETN)"!=""
3783
3784.IF "$(OS)"=="AIX"
3785SHL8STDLIBS=
3786.ENDIF
3787
3788.IF "$(SHLLINKARCONLY)" != ""
3789SHL8STDLIBS=
3790STDSHL=
3791.ELSE
3792SHL8ARCHIVES=
3793.ENDIF
3794
3795# decide how to link
3796.IF "$(SHL8CODETYPE)"=="C"
3797SHL8LINKER=$(LINKC)
3798SHL8STDSHL=$(subst,CPPRUNTIME, $(STDSHL))
3799SHL8LINKFLAGS+=$(LINKCFLAGS)
3800.ELSE           # "$(SHL8CODETYPE)"=="C"
3801SHL8LINKER=$(LINK)
3802SHL8STDSHL=$(subst,CPPRUNTIME,$(STDLIBCPP) $(STDSHL))
3803SHL8LINKFLAGS+=$(LINKFLAGS)
3804.ENDIF          # "$(SHL8CODETYPE)"=="C"
3805
3806SHL8RPATH*=OOO
3807LINKFLAGSRUNPATH_$(SHL8RPATH)*=/ERROR:/Bad_SHL8RPATH_value
3808SHL8LINKFLAGS+=$(LINKFLAGSRUNPATH_$(SHL8RPATH))
3809
3810.IF "$(SHL8USE_EXPORTS)"==""
3811SHL8DEF*=$(MISC)/$(SHL8TARGET).def
3812.ENDIF          # "$(SHL8USE_EXPORTS)"==""
3813
3814EXTRALIBPATHS8=$(EXTRALIBPATHS)
3815.IF "$(UPDATER)"=="YES"
3816.IF "$(SHL8NOCHECK)"==""
3817.IF "$(SOLAR_STLLIBPATH)"!=""
3818EXTRALIBPATHS8+=-L$(SOLAR_STLLIBPATH)
3819.ENDIF
3820.ENDIF              # "$(SHL8NOCHECK)"!=""
3821.ENDIF
3822#+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
3823#+++++++++++    version object      ++++++++++++++++++++++++++++++++++++++++
3824#+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
3825
3826.IF "$(L10N_framework)"==""
3827.IF "$(VERSIONOBJ)"!=""
3828SHL8VERSIONOBJ:=$(VERSIONOBJ:d){$(subst,$(DLLPOSTFIX),_dflt $(SHL8TARGET))}$(VERSIONOBJ:f)
3829USE_VERSIONH:=$(INCCOM)/$(SHL8VERSIONOBJ:b).h
3830.IF "$(GUI)" == "UNX"
3831SHL8VERSIONOBJDEP:=$(VERSIONOBJ:d){$(subst,$(DLLPOSTFIX),_dflt $(SHL8TARGET))}$(VERSIONOBJ:f:s/.o/.obj/)
3832.ELSE           # "$(GUI)" == "UNX"
3833SHL8VERSIONOBJDEP:=$(VERSIONOBJ:d){$(subst,$(DLLPOSTFIX),_dflt $(SHL8TARGET))}$(VERSIONOBJ:f)
3834.ENDIF          # "$(GUI)" == "UNX"
3835$(MISC)/$(SHL8VERSIONOBJ:b).c : $(SOLARENV)/src/version.c $(INCCOM)/$(SHL8VERSIONOBJ:b).h
3836#    $(COPY) $(SOLARENV)/src/version.c $@
3837    $(COMMAND_ECHO)$(TYPE) $(SOLARENV)/src/version.c | $(SED) s/_version.h/$(SHL8VERSIONOBJ:b).h/ > $@
3838
3839.INIT : $(SHL8VERSIONOBJDEP)
3840.ENDIF          # "$(VERSIONOBJ)"!=""
3841.ENDIF
3842
3843.IF "$(GUI)" != "UNX"
3844.IF "$(GUI)" == "WNT" || "$(GUI)" == "OS2"
3845.IF "$(SHL8IMPLIB)" == ""
3846SHL8IMPLIB=i$(TARGET)_t8
3847.ENDIF          # "$(SHL8IMPLIB)" == ""
3848.IF "$(COM)" != "GCC"
3849USE_8IMPLIB=-implib:$(LB)/$(SHL8IMPLIB).lib
3850.ENDIF          # "$(COM)" != "GCC"
3851SHL8IMPLIBN=$(LB)/$(SHL8IMPLIB).lib
3852ALLTAR : $(SHL8IMPLIBN)
3853
3854.IF "$(USE_DEFFILE)"==""
3855USE_8IMPLIB_DEPS=$(LB)/$(SHL8IMPLIB).lib
3856.ENDIF          # "$(USE_DEFFILE)"==""
3857.ENDIF          # "$(GUI)" == "WNT" || "$(GUI)" == "OS2"
3858USE_SHL8DEF=$(SHL8DEF)
3859.ELSE           # "$(GUI)" != "UNX"
3860USE_SHL8DEF=
3861SHL8DEPN+:=$(SHL8DEPNU)
3862
3863.IF "$(SHL8VERSIONMAP)"==""
3864# to activate vmaps remove "#"
3865USE_SHL8VERSIONMAP=$(MISC)/$(SHL8TARGET).vmap
3866.ENDIF          # "$(SHL8VERSIONMAP)"==""
3867
3868.IF "$(USE_SHL8VERSIONMAP)"!=""
3869
3870.IF "$(SHL8FILTERFILE)"!=""
3871.IF "$(SHL8VERSIONMAP)"!=""
3872#eine von beiden ist zuviel
3873USE_SHL8VERSIONMAP=$(MISC)/$(SHL8TARGET).vmap
3874$(USE_SHL8VERSIONMAP) .PHONY:
3875    @echo -----------------------------
3876    @echo you should only use versionmap OR exportfile
3877    @echo -----------------------------
3878#   force_dmake_to_error
3879
3880.ENDIF          # "$(SHL8VERSIONMAP)"!=""
3881
3882SHL8VERSIONMAPPARA=$(LINKVERSIONMAPFLAG) $(USE_SHL8VERSIONMAP)
3883
3884$(USE_SHL8VERSIONMAP): \
3885                    $(SHL8OBJS)\
3886                    $(SHL8LIBS)\
3887                    $(SHL8FILTERFILE)
3888    @$(RM) $@.dump
3889.IF "$(SHL8OBJS)"!=""
3890# dump remaining objects on the fly
3891.IF "$(OS)"=="MACOSX"
3892    @-nm $(SHL8OBJS:s/.obj/.o/) > $@.dump
3893.ELSE
3894    @nm $(SHL8OBJS:s/.obj/.o/) > $@.dump
3895.ENDIF
3896.ENDIF          # "$(SHL8OBJS)!"=""
3897    @$(TYPE) /dev/null $(SHL8LIBS:s/.lib/.dump/) >> $@.dump
3898    $(COMMAND_ECHO) $(PERL) $(SOLARENV)/bin/mapgen.pl -d $@.dump -s $(SHL8INTERFACE) -f $(SHL8FILTERFILE) -m $@
3899
3900.ELSE           # "$(SHL8FILTERFILE)"!=""
3901USE_SHL8VERSIONMAP=$(MISC)/$(SHL8TARGET).vmap
3902$(USE_SHL8VERSIONMAP) :
3903.IF "$(VERBOSE)" == "TRUE"
3904    @echo -----------------------------
3905    @echo SHL8FILTERFILE not set!
3906    @echo -----------------------------
3907    @$(TOUCH) $@
3908    @echo dummy file to keep the dependencies for later use.
3909.ELSE
3910    @$(TOUCH) $@
3911.ENDIF
3912#   force_dmake_to_error
3913.ENDIF          # "$(SHL8FILTERFILE)"!=""
3914.ELSE           # "$(USE_SHL8VERSIONMAP)"!=""
3915
3916#and now for the plain non-generic way...
3917.IF "$(SHL8VERSIONMAP)"!=""
3918USE_SHL8VERSIONMAP=$(MISC)/$(SHL8VERSIONMAP:b)_$(SHL8TARGET)$(SHL8VERSIONMAP:e)
3919SHL8VERSIONMAPPARA=$(LINKVERSIONMAPFLAG) $(USE_SHL8VERSIONMAP)
3920
3921.IF "$(OS)"=="MACOSX"
3922$(USE_SHL8VERSIONMAP): $(SHL8OBJS) $(SHL8LIBS)
3923.ENDIF
3924
3925# .ERRREMOVE is needed as a recipe line like "$(AWK) ... > $@" would create $@
3926# even if the $(AWK) part fails:
3927$(USE_SHL8VERSIONMAP) .ERRREMOVE: $(SHL8VERSIONMAP)
3928    @@-$(RM) -f $@
3929# The following files will only be generated and needed on Mac OS X as temporary files
3930# in order to generate exported symbols list out of Linux/Solaris map files
3931.IF "$(OS)"=="MACOSX"
3932    @-$(RM) -f $@.symregexp >& $(NULLDEV)
3933    @-$(RM) -f $@.expsymlist >& $(NULLDEV)
3934.ENDIF
3935# Its questionable if the following condition '.IF "$(COMID)"=="gcc3"' makes sense and what
3936# happens if somebody will change it in the future
3937.IF "$(COMID)"=="gcc3"
3938    $(COMMAND_ECHO) tr -d "\015" < $(SHL8VERSIONMAP) | $(AWK) -f $(SOLARENV)/bin/addsym.awk > $@
3939.ELIF "$(COMNAME)"=="sunpro5"
3940    $(COMMAND_ECHO) tr -d "\015" < $(SHL8VERSIONMAP) | $(GREP) -v $(IGNORE_SYMBOLS) > $@
3941.ELSE           # "$(COMID)"=="gcc3"
3942    $(COMMAND_ECHO) tr -d "\015" < $(SHL8VERSIONMAP) > $@
3943.ENDIF          # "$(COMID)"=="gcc3"
3944    @chmod a+w $@
3945# Mac OS X post-processing generate an exported symbols list from the generated map file
3946# for details on exported symbols list see man ld on Mac OS X
3947.IF "$(OS)"=="MACOSX"
3948    @-cat $@ | $(AWK) -f $(SOLARENV)/bin/unxmap-to-macosx-explist.awk | grep -v "\*\|?" > $@.exported-symbols
3949    @-cat $@ | $(AWK) -f $(SOLARENV)/bin/unxmap-to-macosx-explist.awk | grep "\*\|?" > $@.symbols-regexp
3950# Shared libraries will be build out of the *.obj files specified in SHL?OBJS and SHL?LIBS
3951# Extract RTTI symbols from all the objects that will be used to build a shared library
3952.IF "$(SHL8OBJS)"!=""
3953    -echo $(foreach,i,$(SHL8OBJS:s/.obj/.o/) $i) | xargs -n1 nm -gx | $(SOLARENV)/bin/addsym-macosx.sh $@.symbols-regexp $@.symbols-regexp.tmp >> $@.exported-symbols
3954.ENDIF
3955.IF "$(SHL8LIBS)"!=""
3956    $(COMMAND_ECHO)-$(TYPE) $(foreach,j,$(SHL8LIBS) $j) | $(SED) s\#$(ROUT)\#$(PRJ)/$(ROUT)\#g | xargs -n1 nm -gx | $(SOLARENV)/bin/addsym-macosx.sh $@.symbols-regexp $@.symbols-regexp.tmp >> $@.exported-symbols
3957.ENDIF
3958# overwrite the map file generate into the local output tree with the generated
3959# exported symbols list
3960    cp $@.exported-symbols $@
3961.ENDIF # .IF "$(OS)"=="MACOSX"
3962.ENDIF          # "$(SHL8VERSIONMAP)"!=""
3963.ENDIF          # "$(USE_SHL8VERSIONMAP)"!=""
3964.ENDIF          # "$(GUI)" != "UNX"
3965
3966.IF "$(UNIXVERSIONNAMES)"!=""
3967.IF "$(OS)"!="MACOSX"
3968.IF "$(GUI)"=="UNX"
3969SHL8SONAME=\"$(SONAME_SWITCH)$(SHL8TARGETN:f)\"
3970.ENDIF          # "$(GUI)"!="UNX"
3971.ENDIF          # "$(OS)"!="MACOSX"
3972.ENDIF          # "$(UNIXVERSIONNAMES)"!=""
3973
3974.IF "$(SHL8RES)"!=""
3975SHL8ALLRES+=$(SHL8RES)
3976SHL8LINKRES*=$(MISC)/$(SHL8TARGET).res
3977SHL8LINKRESO*=$(MISC)/$(SHL8TARGET)_res.o
3978.ENDIF          # "$(SHL8RES)"!=""
3979
3980.IF "$(SHL8DEFAULTRES)$(use_shl_versions)"!=""
3981SHL8DEFAULTRES*=$(MISC)/$(SHL8TARGET)_def.res
3982SHL8ALLRES+=$(SHL8DEFAULTRES)
3983SHL8LINKRES*=$(MISC)/$(SHL8TARGET).res
3984SHL8LINKRESO*=$(MISC)/$(SHL8TARGET)_res.o
3985.ENDIF          # "$(SHL8DEFAULTRES)$(use_shl_versions)"!=""
3986
3987#.IF "$(SHL8TARGETN)"!=""
3988
3989.IF "$(linkinc)"!=""
3990.IF "$(GUI)"=="WNT" || "$(GUI)" == "OS2"
3991.IF "$(SHL8LIBS)"!=""
3992$(MISC)/$(SHL8TARGET)_linkinc.ls .PHONY:
3993    @@-$(RM) $@
3994    $(COMMAND_ECHO)$(SED) -f $(SOLARENV)/bin/chrel.sed $(foreach,i,$(SHL8LIBS) $(i:s/.lib/.lin/)) >> $@
3995.ENDIF          # "$(SHL8LIBS)"!=""
3996.ENDIF
3997
3998LINKINCTARGETS+=$(MISC)/$(SHL8TARGETN:b)_linkinc.ls
3999$(SHL8TARGETN) : $(LINKINCTARGETS)
4000
4001.ELSE
4002.IF "$(SHL8USE_EXPORTS)"=="name"
4003.IF "$(GUI)"=="WNT" || "$(GUI)" == "OS2"
4004.IF "$(COM)"!="GCC"
4005.IF "$(SHL8LIBS)"!=""
4006SHL8LINKLIST=$(MISC)/$(SHL8TARGET)_link.lst
4007SHL8LINKLISTPARAM=@$(SHL8LINKLIST)
4008$(SHL8LINKLIST) : $(SHL8LIBS)
4009    @@-$(RM) $@
4010    $(COMMAND_ECHO)$(SED) -f $(SOLARENV)/bin/chrel.sed $(foreach,i,$(SHL8LIBS) $(i:s/.lib/.lin/)) >> $@
4011.ENDIF          # "$(SHL8LIBS)"!=""
4012.ENDIF          # "$(COM)"!="GCC"
4013.ENDIF
4014.ENDIF          # "$(SHL8USE_EXPORTS)"=="name"
4015
4016$(MISC)/%linkinc.ls:
4017    @echo . > $@
4018.ENDIF          # "$(linkinc)"!=""
4019
4020.IF "$(GUI)" == "OS2"
4021#21/02/2006 YD dll names must be 8.3, invoke fix script
4022#check osl/os2/module.c/osl_loadModule()
4023SHL8TARGET8=$(shell @fix_shl.cmd $(SHL8TARGET))
4024.ENDIF
4025
4026
4027$(SHL8TARGETN) : \
4028                    $(SHL8OBJS)\
4029                    $(SHL8LIBS)\
4030                    $(USE_8IMPLIB_DEPS)\
4031                    $(USE_SHL8DEF)\
4032                    $(USE_SHL8VERSIONMAP)\
4033                    $(SHL8RES)\
4034                    $(SHL8DEPN) \
4035                    $(SHL8LINKLIST)
4036    @echo "Making:   " $(@:f)
4037.IF "$(GUI)" == "WNT"
4038.IF "$(SHL8DEFAULTRES)"!=""
4039    @@-$(RM) $(MISC)/$(SHL8DEFAULTRES:b).rc
4040.IF "$(SHL8ICON)" != ""
4041    @echo 1 ICON $(SHL8ICON) >> $(MISC)/$(SHL8DEFAULTRES:b).rc
4042.ENDIF
4043.IF "$(use_shl_versions)" != ""
4044.IF "$(SHL8ADD_VERINFO)"!=""
4045    @echo $(EMQ)#include $(EMQ)"$(SHL8ADD_VERINFO)$(EMQ)" >> $(MISC)/$(SHL8DEFAULTRES:b).rc
4046.ELSE           # "$(SHL8ADD_VERINFO)"!=""
4047    @echo $(EMQ)#define ADDITIONAL_VERINFO1 >> $(MISC)/$(SHL8DEFAULTRES:b).rc
4048    @echo $(EMQ)#define ADDITIONAL_VERINFO2 >> $(MISC)/$(SHL8DEFAULTRES:b).rc
4049    @echo $(EMQ)#define ADDITIONAL_VERINFO3 >> $(MISC)/$(SHL8DEFAULTRES:b).rc
4050.ENDIF          # "$(SHL8ADD_VERINFO)"!=""
4051    @echo $(EMQ)#define VERVARIANT  $(BUILD) >> $(MISC)/$(SHL8DEFAULTRES:b).rc
4052    @echo $(EMQ)#define ORG_NAME    $(SHL8TARGET)$(DLLPOST) >> $(MISC)/$(SHL8DEFAULTRES:b).rc
4053    @echo $(EMQ)#define INTERNAL_NAME $(SHL8TARGET:b) >> $(MISC)/$(SHL8DEFAULTRES:b).rc
4054    @echo $(EMQ)#include $(EMQ)"shlinfo.rc$(EMQ)" >> $(MISC)/$(SHL8DEFAULTRES:b).rc
4055.ENDIF          # "$(use_shl_versions)" != ""
4056    $(COMMAND_ECHO)$(RC) -DWIN32 $(INCLUDE) $(RCLINKFLAGS) $(MISC)/$(SHL8DEFAULTRES:b).rc
4057.ENDIF          # "$(SHL8DEFAULTRES)"!=""
4058.IF "$(SHL8ALLRES)"!=""
4059    $(COMMAND_ECHO)$(TYPE) $(SHL8ALLRES) > $(SHL8LINKRES)
4060.IF "$(COM)"=="GCC"
4061    windres $(SHL8LINKRES) $(SHL8LINKRESO)
4062.ENDIF          # "$(COM)"=="GCC"
4063.ENDIF          # "$(SHL8ALLRES)"!=""
4064.IF "$(COM)"=="GCC" # always have to call dlltool explicitly as ld cannot handle # comment in .def
4065    @echo dlltool --dllname $(SHL8TARGET)$(DLLPOST) \
4066        --kill-at \\ > $(MISC)/$(TARGET).$(@:b)_8.cmd
4067    @noop $(assign ALL8OBJLIST:=$(STDOBJ) $(SHL8OBJS) $(SHL8LINKRESO) $(shell $(TYPE) /dev/null $(SHL8LIBS) | $(SED) s?$(ROUT)?$(PRJ)/$(ROUT)?g))
4068.IF "$(DEFLIB8NAME)"!=""    # do not have to include objs
4069    @noop $(assign DEF8OBJLIST:=$(shell $(TYPE) $(foreach,i,$(DEFLIB8NAME) $(SLB)/$(i).lib) | sed s?$(ROUT)?$(PRJ)/$(ROUT)?g))
4070    @noop $(foreach,i,$(DEF8OBJLIST) $(assign ALL8OBJLIST:=$(ALL8OBJLIST:s?$i??)))
4071.ENDIF          # "$(DEFLIB8NAME)"!=""
4072    @echo   --output-exp $(MISC)/$(@:b)_exp.o \\ >> $(MISC)/$(TARGET).$(@:b)_8.cmd
4073.IF "$(SHL8DEF)"!=""
4074    @echo   --input-def $(SHL8DEF) \\ >> $(MISC)/$(TARGET).$(@:b)_8.cmd
4075.ELSE
4076    @echo   $(SHL8VERSIONOBJ) $(SHL8DESCRIPTIONOBJ) \\ >> $(MISC)/$(TARGET).$(@:b)_8.cmd
4077.ENDIF
4078    @echo   $(ALL8OBJLIST) >> $(MISC)/$(TARGET).$(@:b)_8.cmd
4079    @echo $(LINK) $(LINKFLAGS) $(LINKFLAGSSHL) $(MINGWSSTDOBJ) -o $@ \
4080        $(STDOBJ) $(SHL8VERSIONOBJ) $(SHL8DESCRIPTIONOBJ) $(SHL8OBJS) $(SHL8LINKRESO) \
4081        `$(TYPE) /dev/null $(SHL8LIBS) | $(SED) s\#$(ROUT)\#$(PRJ)/$(ROUT)\#g` \
4082        -Wl,--exclude-libs,ALL,--start-group $(SHL8STDLIBS) -Wl,--end-group \
4083        $(SHL8STDSHL) $(STDSHL8) $(MISC)/$(@:b)_exp.o $(MINGWSSTDENDOBJ) \
4084        -Wl,-Map,$(MISC)/$(@:b).map >> $(MISC)/$(TARGET).$(@:b)_8.cmd
4085  .IF "$(VERBOSE)" == "TRUE"
4086    @$(TYPE)  $(MISC)/$(TARGET).$(@:b)_8.cmd
4087  .ENDIF
4088    @+source $(MISC)/$(TARGET).$(@:b)_8.cmd
4089.ELSE
4090.IF "$(linkinc)"==""
4091.IF "$(SHL8USE_EXPORTS)"!="name"
4092.IF "$(USE_DEFFILE)"!=""
4093    $(COMMAND_ECHO)$(SHL8LINKER) @$(mktmp \
4094        $(SHL8LINKFLAGS) \
4095        $(LINKFLAGSSHL) \
4096        $(SHL8STACK) $(SHL8BASEX)   \
4097        -out:$@ \
4098        -map:$(MISC)/$(@:b).map \
4099        -def:$(SHL8DEF) \
4100        $(USE_8IMPLIB) \
4101        $(STDOBJ) \
4102        $(SHL8VERSIONOBJ) $(SHL8OBJS) \
4103        $(SHL8LIBS) \
4104        $(SHL8STDLIBS) \
4105        $(SHL8STDSHL) $(STDSHL8) \
4106        $(SHL8LINKRES) \
4107    )
4108# double check if target was really written... still making sense?
4109    @@$(LS) $@
4110    @echo linking $@.manifest ...
4111.IF "$(VISTA_MANIFEST)"!=""
4112    $(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(MT) $(MTFLAGS) -manifest $@.manifest -manifest $(TRUSTED_MANIFEST_LOCATION)/trustedinfo.manifest -out:$@.tmanifest$(EMQ) $(FI)
4113    $(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(MT) $(MTFLAGS) -manifest $@.tmanifest -outputresource:$@$(EMQ);2 $(FI)
4114.ELSE
4115    $(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(MT) $(MTFLAGS) -manifest $@.manifest -outputresource:$@$(EMQ);2 $(FI)
4116.ENDIF # "$(VISTA_MANIFEST)"!=""
4117    $(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(RM:s/+//) $@.manifest $(FI)
4118    $(COMMAND_ECHO)$(IFEXIST) $@.tmanifest $(THEN) $(RM:s/+//) $@.tmanifest $(FI)
4119.ELSE           # "$(USE_DEFFILE)"!=""
4120    $(COMMAND_ECHO)$(SHL8LINKER) @$(mktmp   $(SHL8LINKFLAGS)            \
4121        $(LINKFLAGSSHL) $(SHL8BASEX)        \
4122        $(SHL8STACK) -out:$(SHL8TARGETN)    \
4123        -map:$(MISC)/$(@:B).map             \
4124        $(LB)/$(SHL8IMPLIB).exp             \
4125        $(STDOBJ)                           \
4126        $(SHL8OBJS) $(SHL8VERSIONOBJ) \
4127        $(SHL8LIBS)                         \
4128        $(SHL8STDLIBS)                      \
4129        $(SHL8STDSHL) $(STDSHL8)                           \
4130        $(SHL8LINKRES) \
4131    )
4132# double check if target was really written... still making sense?
4133    @@$(LS) $@
4134    @echo linking $@.manifest ...
4135.IF "$(VISTA_MANIFEST)"!=""
4136    $(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(MT) $(MTFLAGS) -manifest $@.manifest -manifest $(TRUSTED_MANIFEST_LOCATION)/trustedinfo.manifest -out:$@.tmanifest$(EMQ) $(FI)
4137    $(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(MT) $(MTFLAGS) -manifest $@.tmanifest -outputresource:$@$(EMQ);2 $(FI)
4138.ELSE
4139    $(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(MT) $(MTFLAGS) -manifest $@.manifest -outputresource:$@$(EMQ);2 $(FI)
4140.ENDIF # "$(VISTA_MANIFEST)"!=""
4141    $(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(RM:s/+//) $@.manifest $(FI)
4142    $(COMMAND_ECHO)$(IFEXIST) $@.tmanifest $(THEN) $(RM:s/+//) $@.tmanifest $(FI)
4143.ENDIF          # "$(USE_DEFFILE)"!=""
4144.ELSE           # "$(SHL8USE_EXPORTS)"!="name"
4145    $(COMMAND_ECHO)$(SHL8LINKER) @$(mktmp   $(SHL8LINKFLAGS)            \
4146        $(LINKFLAGSSHL) $(SHL8BASEX)        \
4147        $(SHL8STACK) -out:$(SHL8TARGETN)    \
4148        -map:$(MISC)/$(@:B).map             \
4149        $(USE_8IMPLIB) \
4150        $(STDOBJ)                           \
4151        $(SHL8OBJS) $(SHL8VERSIONOBJ))   \
4152        $(SHL8LINKLISTPARAM) \
4153        @$(mktmp $(SHL8STDLIBS)                      \
4154        $(SHL8STDSHL) $(STDSHL8)                           \
4155        $(SHL8LINKRES) \
4156    )
4157    @echo linking $@.manifest ...
4158.IF "$(VISTA_MANIFEST)"!=""
4159    $(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(MT) $(MTFLAGS) -manifest $@.manifest -manifest $(TRUSTED_MANIFEST_LOCATION)/trustedinfo.manifest -out:$@.tmanifest$(EMQ) $(FI)
4160    $(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(MT) $(MTFLAGS) -manifest $@.tmanifest -outputresource:$@$(EMQ);2 $(FI)
4161.ELSE
4162    $(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(MT) $(MTFLAGS) -manifest $@.manifest -outputresource:$@$(EMQ);2 $(FI)
4163.ENDIF # "$(VISTA_MANIFEST)"!=""
4164    $(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(RM:s/+//) $@.manifest $(FI)
4165    $(COMMAND_ECHO)$(IFEXIST) $@.tmanifest $(THEN) $(RM:s/+//) $@.tmanifest $(FI)
4166.ENDIF          # "$(SHL8USE_EXPORTS)"!="name"
4167.ELSE           # "$(linkinc)"==""
4168        $(COMMAND_ECHO)-$(RM) del $(MISC)/$(SHL8TARGET).lnk
4169        $(COMMAND_ECHO)-$(RM) $(MISC)/$(SHL8TARGET).lst
4170        $(COMMAND_ECHO)$(TYPE) $(mktmp \
4171        $(SHL8LINKFLAGS) \
4172        $(LINKFLAGSSHL) $(SHL8BASEX) \
4173        $(SHL8STACK) $(MAPFILE) \
4174        -out:$@ \
4175        $(LB)/$(SHL8IMPLIB).exp \
4176        $(STDOBJ) \
4177        $(SHL8OBJS) \
4178        $(SHL8STDLIBS) \
4179        $(SHL8STDSHL) $(STDSHL8) \
4180        $(SHL8LINKRES) \
4181        ) >> $(MISC)/$(SHL8TARGET).lnk
4182        $(COMMAND_ECHO)$(TYPE) $(MISC)/$(SHL8TARGETN:b)_linkinc.ls  >> $(MISC)/$(SHL8TARGET).lnk
4183        $(COMMAND_ECHO)$(SHL8LINKER) @$(MISC)/$(SHL8TARGET).lnk
4184        @echo linking $@.manifest ...
4185.IF "$(VISTA_MANIFEST)"!=""
4186        $(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(MT) $(MTFLAGS) -manifest $@.manifest -manifest $(TRUSTED_MANIFEST_LOCATION)/trustedinfo.manifest -out:$@.tmanifest$(EMQ) $(FI)
4187        $(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(MT) $(MTFLAGS) -manifest $@.tmanifest -outputresource:$@$(EMQ);2 $(FI)
4188.ELSE
4189        $(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(MT) $(MTFLAGS) -manifest $@.manifest -outputresource:$@$(EMQ);2 $(FI)
4190.ENDIF # "$(VISTA_MANIFEST)"!=""
4191        $(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(RM:s/+//) $@.manifest $(FI)
4192        $(COMMAND_ECHO)$(IFEXIST) $@.tmanifest $(THEN) $(RM:s/+//) $@.tmanifest $(FI)
4193.ENDIF          # "$(linkinc)"==""
4194.ENDIF          # "$(COM)"=="GCC"
4195.ENDIF          # "$(GUI)" == "WNT"
4196.IF "$(GUI)"=="UNX"
4197.IF "$(OS)"=="MACOSX"
4198    @-$(RM) $(MISC)/$(@:b).list
4199    @-$(RM) $(MISC)/$(TARGET).$(@:b)_8.cmd
4200    @echo $(STDSLO) $(SHL8OBJS:s/.obj/.o/) \
4201    $(SHL8VERSIONOBJ) \
4202    `cat /dev/null $(SHL8LIBS) | sed s\#$(ROUT)\#$(PRJ)/$(ROUT)\#g` | tr -s " " "\n" > $(MISC)/$(@:b).list
4203    @echo -n $(SHL8LINKER) $(SHL8LINKFLAGS) $(SHL8VERSIONMAPPARA) $(LINKFLAGSSHL) -L$(PRJ)/$(ROUT)/lib $(SOLARLIB) -o $@ \
4204    $(SHL8STDLIBS) $(SHL8ARCHIVES) $(SHL8STDSHL) $(STDSHL8) -filelist $(MISC)/$(@:b).list $(LINKOUTPUT_FILTER) > $(MISC)/$(TARGET).$(@:b)_8.cmd
4205    @$(PERL) $(SOLARENV)/bin/macosx-dylib-link-list.pl \
4206        `cat $(MISC)/$(TARGET).$(@:b)_8.cmd` \
4207        >> $(MISC)/$(TARGET).$(@:b)_8.cmd
4208  .IF "$(VERBOSE)" == "TRUE"
4209    @cat $(MISC)/$(TARGET).$(@:b)_8.cmd
4210  .ENDIF
4211    @+source $(MISC)/$(TARGET).$(@:b)_8.cmd
4212    @$(PERL) $(SOLARENV)/bin/macosx-change-install-names.pl \
4213        shl $(SHL8RPATH) $@
4214.IF "$(SHL8CREATEJNILIB)"!=""
4215    @echo "Making:   " $(@:f).jnilib
4216    @macosx-create-bundle $@
4217.ENDIF          # "$(SHL8CREATEJNILIB)"!=""
4218.IF "$(UPDATER)"=="YES"
4219.IF "$(SHL8NOCHECK)"==""
4220    $(SOLARENV)/bin/checkdll.sh -L$(LB) -L$(SOLARLIBDIR) $(EXTRALIBPATHS8) $(SHL8TARGETN)
4221.ENDIF              # "$(SHL8NOCHECK)"!=""
4222.ENDIF
4223.ELSE           # "$(OS)"=="MACOSX"
4224    @-$(RM) $(MISC)/$(TARGET).$(@:b)_8.cmd
4225    @echo $(SHL8LINKER) $(SHL8LINKFLAGS) $(SHL8SONAME) $(LINKFLAGSSHL) $(SHL8VERSIONMAPPARA) -L$(PRJ)/$(ROUT)/lib $(SOLARLIB) $(STDSLO) $(SHL8OBJS:s/.obj/.o/) \
4226    $(SHL8VERSIONOBJ) -o $@ \
4227    `cat /dev/null $(SHL8LIBS) | tr -s " " "\n" | $(SED) s\#$(ROUT)\#$(PRJ)/$(ROUT)\#g` \
4228    $(SHL8STDLIBS) $(SHL8ARCHIVES) $(SHL8STDSHL) $(STDSHL8) $(LINKOUTPUT_FILTER) > $(MISC)/$(TARGET).$(@:b)_8.cmd
4229  .IF "$(VERBOSE)" == "TRUE"
4230    @cat $(MISC)/$(TARGET).$(@:b)_8.cmd
4231  .ENDIF
4232    @+source $(MISC)/$(TARGET).$(@:b)_8.cmd
4233.IF "$(UPDATER)"=="YES"
4234.IF "$(SHL8NOCHECK)"==""
4235    $(COMMAND_ECHO)-$(RM) $(SHL8TARGETN:d)check_$(SHL8TARGETN:f)
4236    $(COMMAND_ECHO)$(RENAME) $(SHL8TARGETN) $(SHL8TARGETN:d)check_$(SHL8TARGETN:f)
4237.IF "$(VERBOSE)"=="TRUE"
4238    $(COMMAND_ECHO)$(SOLARENV)/bin/checkdll.sh -L$(LB) -L$(SOLARLIBDIR) $(EXTRALIBPATHS8) $(SHL8TARGETN:d)check_$(SHL8TARGETN:f)
4239.ELSE
4240    $(COMMAND_ECHO)$(SOLARENV)/bin/checkdll.sh -L$(LB) -L$(SOLARLIBDIR) $(EXTRALIBPATHS8) -- -s $(SHL8TARGETN:d)check_$(SHL8TARGETN:f)
4241.ENDIF
4242.ENDIF              # "$(SHL8NOCHECK)"!=""
4243.ENDIF          # "$(UPDATER)"=="YES"
4244.ENDIF          # "$(OS)"=="MACOSX"
4245.IF "$(UNIXVERSIONNAMES)"!=""
4246    $(COMMAND_ECHO)$(RM) $(LB)/$(SHL8TARGETN:b)
4247    $(COMMAND_ECHO)cd $(LB) && ln -s $(SHL8TARGETN:f) $(SHL8TARGETN:b)
4248.ENDIF          # "$(UNIXVERSIONNAMES)"!=""
4249.IF "$(VERBOSE)" == "TRUE"
4250    @ls -l $@
4251.ENDIF
4252.ENDIF          # "$(GUI)" == "UNX"
4253
4254.IF "$(GUI)" == "OS2"
4255
4256.IF "$(SHL8DEFAULTRES)"!=""
4257    @+-$(RM) $(MISC)/$(SHL8DEFAULTRES:b).rc > $(NULLDEV)
4258.IF "$(SHL8ICON)" != ""
4259    @-+echo 1 ICON $(SHL8ICON) >> $(MISC)/$(SHL8DEFAULTRES:b).rc
4260.ENDIF
4261.IF "$(use_shl_versions)" != ""
4262.IF "$(SHL8ADD_VERINFO)"!=""
4263    @-+echo $(EMQ)#include $(EMQ)"$(SHL8ADD_VERINFO)$(EMQ)" >> $(MISC)/$(SHL8DEFAULTRES:b).rc
4264.ENDIF          # "$(SHL8ADD_VERINFO)"!=""
4265    @-+echo MENU 1 BEGIN END >> $(MISC)/$(SHL8DEFAULTRES:b).rc
4266#   @-+echo $(EMQ)RCDATA 1 { "Build string here" }$(EMQ) >> $(MISC)/$(SHL8DEFAULTRES:b).rc
4267.ENDIF          # "$(use_shl_versions)" != ""
4268# YD 04/07/06 seems null, confuses rc cli: -i $(SOLARTESDIR)
4269    $(COMMAND_ECHO)$(RC) -r -DOS2 $(INCLUDE) $(RCLINKFLAGS) $(MISC)/$(SHL8DEFAULTRES:b).rc
4270.ENDIF          # "$(SHL8DEFAULTRES)"!=""
4271
4272.IF "$(SHL8ALLRES)"!=""
4273    $(COMMAND_ECHO)+$(TYPE) $(SHL8ALLRES) > $(SHL8LINKRES)
4274.ENDIF          # "$(SHL8ALLRES)"!=""
4275
4276.IF "$(USE_DEFFILE)"!=""
4277
4278    $(COMMAND_ECHO)$(SHL8LINKER) $(SHL8LINKFLAGS) $(LINKFLAGSSHL) -o $@ \
4279        $(SHL8DEF) \
4280        $(STDOBJ) \
4281        -L$(LB) \
4282        -L$(SOLARVERSION)/$(INPATH)/lib \
4283        $(SHL8OBJS) $(SHL8VERSIONOBJ) \
4284        $(SHL8LIBS) \
4285        $(SHL8LINKRES) \
4286        $(SHL8STDLIBS) \
4287        $(SHL8STDSHL) $(STDSHL8)
4288
4289.ELSE           # "$(USE_DEFFILE)"!=""
4290
4291    $(COMMAND_ECHO)$(SHL8LINKER) $(SHL8LINKFLAGS)           \
4292        $(LINKFLAGSSHL) $(SHL8BASEX)        \
4293        $(SHL8STACK) -o $(SHL8TARGETN)  \
4294        $(SHL8DEF) \
4295        $(STDOBJ)                           \
4296        -L$(LB) \
4297        -L$(SOLARVERSION)/$(INPATH)/lib \
4298        $(SHL8OBJS) $(SHL8VERSIONOBJ) \
4299        $(SHL8LIBS) \
4300        $(SHL8LINKRES) \
4301        $(SHL8STDLIBS) \
4302        $(SHL8STDSHL) $(STDSHL8)
4303
4304.ENDIF          # "$(USE_DEFFILE)"!=""
4305
4306    $(COMMAND_ECHO)+$(IMPLIB) -p256 $(IMPLIBFLAGS) $(SHL8IMPLIBN) $@
4307    $(COMMAND_ECHO)+$(IMPLIB) -p256 $(IMPLIBFLAGS) $(LB)/$(SHL8TARGET).lib $@
4308
4309.IF "$(SHL8TARGET8)" != "$(SHL8TARGET)"
4310    $(COMMAND_ECHO)+$(COPY) $@ $(@:d)$(SHL8TARGET8).dll
4311.ENDIF
4312
4313.ENDIF          # "$(GUI)" == "OS2"
4314
4315.ENDIF          # "$(SHL8TARGETN)"!=""
4316
4317# unroll begin
4318
4319.IF "$(SHL9TARGETN)"!=""
4320
4321.IF "$(OS)"=="AIX"
4322SHL9STDLIBS=
4323.ENDIF
4324
4325.IF "$(SHLLINKARCONLY)" != ""
4326SHL9STDLIBS=
4327STDSHL=
4328.ELSE
4329SHL9ARCHIVES=
4330.ENDIF
4331
4332# decide how to link
4333.IF "$(SHL9CODETYPE)"=="C"
4334SHL9LINKER=$(LINKC)
4335SHL9STDSHL=$(subst,CPPRUNTIME, $(STDSHL))
4336SHL9LINKFLAGS+=$(LINKCFLAGS)
4337.ELSE           # "$(SHL9CODETYPE)"=="C"
4338SHL9LINKER=$(LINK)
4339SHL9STDSHL=$(subst,CPPRUNTIME,$(STDLIBCPP) $(STDSHL))
4340SHL9LINKFLAGS+=$(LINKFLAGS)
4341.ENDIF          # "$(SHL9CODETYPE)"=="C"
4342
4343SHL9RPATH*=OOO
4344LINKFLAGSRUNPATH_$(SHL9RPATH)*=/ERROR:/Bad_SHL9RPATH_value
4345SHL9LINKFLAGS+=$(LINKFLAGSRUNPATH_$(SHL9RPATH))
4346
4347.IF "$(SHL9USE_EXPORTS)"==""
4348SHL9DEF*=$(MISC)/$(SHL9TARGET).def
4349.ENDIF          # "$(SHL9USE_EXPORTS)"==""
4350
4351EXTRALIBPATHS9=$(EXTRALIBPATHS)
4352.IF "$(UPDATER)"=="YES"
4353.IF "$(SHL9NOCHECK)"==""
4354.IF "$(SOLAR_STLLIBPATH)"!=""
4355EXTRALIBPATHS9+=-L$(SOLAR_STLLIBPATH)
4356.ENDIF
4357.ENDIF              # "$(SHL9NOCHECK)"!=""
4358.ENDIF
4359#+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
4360#+++++++++++    version object      ++++++++++++++++++++++++++++++++++++++++
4361#+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
4362
4363.IF "$(L10N_framework)"==""
4364.IF "$(VERSIONOBJ)"!=""
4365SHL9VERSIONOBJ:=$(VERSIONOBJ:d){$(subst,$(DLLPOSTFIX),_dflt $(SHL9TARGET))}$(VERSIONOBJ:f)
4366USE_VERSIONH:=$(INCCOM)/$(SHL9VERSIONOBJ:b).h
4367.IF "$(GUI)" == "UNX"
4368SHL9VERSIONOBJDEP:=$(VERSIONOBJ:d){$(subst,$(DLLPOSTFIX),_dflt $(SHL9TARGET))}$(VERSIONOBJ:f:s/.o/.obj/)
4369.ELSE           # "$(GUI)" == "UNX"
4370SHL9VERSIONOBJDEP:=$(VERSIONOBJ:d){$(subst,$(DLLPOSTFIX),_dflt $(SHL9TARGET))}$(VERSIONOBJ:f)
4371.ENDIF          # "$(GUI)" == "UNX"
4372$(MISC)/$(SHL9VERSIONOBJ:b).c : $(SOLARENV)/src/version.c $(INCCOM)/$(SHL9VERSIONOBJ:b).h
4373#    $(COPY) $(SOLARENV)/src/version.c $@
4374    $(COMMAND_ECHO)$(TYPE) $(SOLARENV)/src/version.c | $(SED) s/_version.h/$(SHL9VERSIONOBJ:b).h/ > $@
4375
4376.INIT : $(SHL9VERSIONOBJDEP)
4377.ENDIF          # "$(VERSIONOBJ)"!=""
4378.ENDIF
4379
4380.IF "$(GUI)" != "UNX"
4381.IF "$(GUI)" == "WNT" || "$(GUI)" == "OS2"
4382.IF "$(SHL9IMPLIB)" == ""
4383SHL9IMPLIB=i$(TARGET)_t9
4384.ENDIF          # "$(SHL9IMPLIB)" == ""
4385.IF "$(COM)" != "GCC"
4386USE_9IMPLIB=-implib:$(LB)/$(SHL9IMPLIB).lib
4387.ENDIF          # "$(COM)" != "GCC"
4388SHL9IMPLIBN=$(LB)/$(SHL9IMPLIB).lib
4389ALLTAR : $(SHL9IMPLIBN)
4390
4391.IF "$(USE_DEFFILE)"==""
4392USE_9IMPLIB_DEPS=$(LB)/$(SHL9IMPLIB).lib
4393.ENDIF          # "$(USE_DEFFILE)"==""
4394.ENDIF          # "$(GUI)" == "WNT" || "$(GUI)" == "OS2"
4395USE_SHL9DEF=$(SHL9DEF)
4396.ELSE           # "$(GUI)" != "UNX"
4397USE_SHL9DEF=
4398SHL9DEPN+:=$(SHL9DEPNU)
4399
4400.IF "$(SHL9VERSIONMAP)"==""
4401# to activate vmaps remove "#"
4402USE_SHL9VERSIONMAP=$(MISC)/$(SHL9TARGET).vmap
4403.ENDIF          # "$(SHL9VERSIONMAP)"==""
4404
4405.IF "$(USE_SHL9VERSIONMAP)"!=""
4406
4407.IF "$(SHL9FILTERFILE)"!=""
4408.IF "$(SHL9VERSIONMAP)"!=""
4409#eine von beiden ist zuviel
4410USE_SHL9VERSIONMAP=$(MISC)/$(SHL9TARGET).vmap
4411$(USE_SHL9VERSIONMAP) .PHONY:
4412    @echo -----------------------------
4413    @echo you should only use versionmap OR exportfile
4414    @echo -----------------------------
4415#   force_dmake_to_error
4416
4417.ENDIF          # "$(SHL9VERSIONMAP)"!=""
4418
4419SHL9VERSIONMAPPARA=$(LINKVERSIONMAPFLAG) $(USE_SHL9VERSIONMAP)
4420
4421$(USE_SHL9VERSIONMAP): \
4422                    $(SHL9OBJS)\
4423                    $(SHL9LIBS)\
4424                    $(SHL9FILTERFILE)
4425    @$(RM) $@.dump
4426.IF "$(SHL9OBJS)"!=""
4427# dump remaining objects on the fly
4428.IF "$(OS)"=="MACOSX"
4429    @-nm $(SHL9OBJS:s/.obj/.o/) > $@.dump
4430.ELSE
4431    @nm $(SHL9OBJS:s/.obj/.o/) > $@.dump
4432.ENDIF
4433.ENDIF          # "$(SHL9OBJS)!"=""
4434    @$(TYPE) /dev/null $(SHL9LIBS:s/.lib/.dump/) >> $@.dump
4435    $(COMMAND_ECHO) $(PERL) $(SOLARENV)/bin/mapgen.pl -d $@.dump -s $(SHL9INTERFACE) -f $(SHL9FILTERFILE) -m $@
4436
4437.ELSE           # "$(SHL9FILTERFILE)"!=""
4438USE_SHL9VERSIONMAP=$(MISC)/$(SHL9TARGET).vmap
4439$(USE_SHL9VERSIONMAP) :
4440.IF "$(VERBOSE)" == "TRUE"
4441    @echo -----------------------------
4442    @echo SHL9FILTERFILE not set!
4443    @echo -----------------------------
4444    @$(TOUCH) $@
4445    @echo dummy file to keep the dependencies for later use.
4446.ELSE
4447    @$(TOUCH) $@
4448.ENDIF
4449#   force_dmake_to_error
4450.ENDIF          # "$(SHL9FILTERFILE)"!=""
4451.ELSE           # "$(USE_SHL9VERSIONMAP)"!=""
4452
4453#and now for the plain non-generic way...
4454.IF "$(SHL9VERSIONMAP)"!=""
4455USE_SHL9VERSIONMAP=$(MISC)/$(SHL9VERSIONMAP:b)_$(SHL9TARGET)$(SHL9VERSIONMAP:e)
4456SHL9VERSIONMAPPARA=$(LINKVERSIONMAPFLAG) $(USE_SHL9VERSIONMAP)
4457
4458.IF "$(OS)"=="MACOSX"
4459$(USE_SHL9VERSIONMAP): $(SHL9OBJS) $(SHL9LIBS)
4460.ENDIF
4461
4462# .ERRREMOVE is needed as a recipe line like "$(AWK) ... > $@" would create $@
4463# even if the $(AWK) part fails:
4464$(USE_SHL9VERSIONMAP) .ERRREMOVE: $(SHL9VERSIONMAP)
4465    @@-$(RM) -f $@
4466# The following files will only be generated and needed on Mac OS X as temporary files
4467# in order to generate exported symbols list out of Linux/Solaris map files
4468.IF "$(OS)"=="MACOSX"
4469    @-$(RM) -f $@.symregexp >& $(NULLDEV)
4470    @-$(RM) -f $@.expsymlist >& $(NULLDEV)
4471.ENDIF
4472# Its questionable if the following condition '.IF "$(COMID)"=="gcc3"' makes sense and what
4473# happens if somebody will change it in the future
4474.IF "$(COMID)"=="gcc3"
4475    $(COMMAND_ECHO) tr -d "\015" < $(SHL9VERSIONMAP) | $(AWK) -f $(SOLARENV)/bin/addsym.awk > $@
4476.ELIF "$(COMNAME)"=="sunpro5"
4477    $(COMMAND_ECHO) tr -d "\015" < $(SHL9VERSIONMAP) | $(GREP) -v $(IGNORE_SYMBOLS) > $@
4478.ELSE           # "$(COMID)"=="gcc3"
4479    $(COMMAND_ECHO) tr -d "\015" < $(SHL9VERSIONMAP) > $@
4480.ENDIF          # "$(COMID)"=="gcc3"
4481    @chmod a+w $@
4482# Mac OS X post-processing generate an exported symbols list from the generated map file
4483# for details on exported symbols list see man ld on Mac OS X
4484.IF "$(OS)"=="MACOSX"
4485    @-cat $@ | $(AWK) -f $(SOLARENV)/bin/unxmap-to-macosx-explist.awk | grep -v "\*\|?" > $@.exported-symbols
4486    @-cat $@ | $(AWK) -f $(SOLARENV)/bin/unxmap-to-macosx-explist.awk | grep "\*\|?" > $@.symbols-regexp
4487# Shared libraries will be build out of the *.obj files specified in SHL?OBJS and SHL?LIBS
4488# Extract RTTI symbols from all the objects that will be used to build a shared library
4489.IF "$(SHL9OBJS)"!=""
4490    -echo $(foreach,i,$(SHL9OBJS:s/.obj/.o/) $i) | xargs -n1 nm -gx | $(SOLARENV)/bin/addsym-macosx.sh $@.symbols-regexp $@.symbols-regexp.tmp >> $@.exported-symbols
4491.ENDIF
4492.IF "$(SHL9LIBS)"!=""
4493    $(COMMAND_ECHO)-$(TYPE) $(foreach,j,$(SHL9LIBS) $j) | $(SED) s\#$(ROUT)\#$(PRJ)/$(ROUT)\#g | xargs -n1 nm -gx | $(SOLARENV)/bin/addsym-macosx.sh $@.symbols-regexp $@.symbols-regexp.tmp >> $@.exported-symbols
4494.ENDIF
4495# overwrite the map file generate into the local output tree with the generated
4496# exported symbols list
4497    cp $@.exported-symbols $@
4498.ENDIF # .IF "$(OS)"=="MACOSX"
4499.ENDIF          # "$(SHL9VERSIONMAP)"!=""
4500.ENDIF          # "$(USE_SHL9VERSIONMAP)"!=""
4501.ENDIF          # "$(GUI)" != "UNX"
4502
4503.IF "$(UNIXVERSIONNAMES)"!=""
4504.IF "$(OS)"!="MACOSX"
4505.IF "$(GUI)"=="UNX"
4506SHL9SONAME=\"$(SONAME_SWITCH)$(SHL9TARGETN:f)\"
4507.ENDIF          # "$(GUI)"!="UNX"
4508.ENDIF          # "$(OS)"!="MACOSX"
4509.ENDIF          # "$(UNIXVERSIONNAMES)"!=""
4510
4511.IF "$(SHL9RES)"!=""
4512SHL9ALLRES+=$(SHL9RES)
4513SHL9LINKRES*=$(MISC)/$(SHL9TARGET).res
4514SHL9LINKRESO*=$(MISC)/$(SHL9TARGET)_res.o
4515.ENDIF          # "$(SHL9RES)"!=""
4516
4517.IF "$(SHL9DEFAULTRES)$(use_shl_versions)"!=""
4518SHL9DEFAULTRES*=$(MISC)/$(SHL9TARGET)_def.res
4519SHL9ALLRES+=$(SHL9DEFAULTRES)
4520SHL9LINKRES*=$(MISC)/$(SHL9TARGET).res
4521SHL9LINKRESO*=$(MISC)/$(SHL9TARGET)_res.o
4522.ENDIF          # "$(SHL9DEFAULTRES)$(use_shl_versions)"!=""
4523
4524#.IF "$(SHL9TARGETN)"!=""
4525
4526.IF "$(linkinc)"!=""
4527.IF "$(GUI)"=="WNT" || "$(GUI)" == "OS2"
4528.IF "$(SHL9LIBS)"!=""
4529$(MISC)/$(SHL9TARGET)_linkinc.ls .PHONY:
4530    @@-$(RM) $@
4531    $(COMMAND_ECHO)$(SED) -f $(SOLARENV)/bin/chrel.sed $(foreach,i,$(SHL9LIBS) $(i:s/.lib/.lin/)) >> $@
4532.ENDIF          # "$(SHL9LIBS)"!=""
4533.ENDIF
4534
4535LINKINCTARGETS+=$(MISC)/$(SHL9TARGETN:b)_linkinc.ls
4536$(SHL9TARGETN) : $(LINKINCTARGETS)
4537
4538.ELSE
4539.IF "$(SHL9USE_EXPORTS)"=="name"
4540.IF "$(GUI)"=="WNT" || "$(GUI)" == "OS2"
4541.IF "$(COM)"!="GCC"
4542.IF "$(SHL9LIBS)"!=""
4543SHL9LINKLIST=$(MISC)/$(SHL9TARGET)_link.lst
4544SHL9LINKLISTPARAM=@$(SHL9LINKLIST)
4545$(SHL9LINKLIST) : $(SHL9LIBS)
4546    @@-$(RM) $@
4547    $(COMMAND_ECHO)$(SED) -f $(SOLARENV)/bin/chrel.sed $(foreach,i,$(SHL9LIBS) $(i:s/.lib/.lin/)) >> $@
4548.ENDIF          # "$(SHL9LIBS)"!=""
4549.ENDIF          # "$(COM)"!="GCC"
4550.ENDIF
4551.ENDIF          # "$(SHL9USE_EXPORTS)"=="name"
4552
4553$(MISC)/%linkinc.ls:
4554    @echo . > $@
4555.ENDIF          # "$(linkinc)"!=""
4556
4557.IF "$(GUI)" == "OS2"
4558#21/02/2006 YD dll names must be 8.3, invoke fix script
4559#check osl/os2/module.c/osl_loadModule()
4560SHL9TARGET8=$(shell @fix_shl.cmd $(SHL9TARGET))
4561.ENDIF
4562
4563
4564$(SHL9TARGETN) : \
4565                    $(SHL9OBJS)\
4566                    $(SHL9LIBS)\
4567                    $(USE_9IMPLIB_DEPS)\
4568                    $(USE_SHL9DEF)\
4569                    $(USE_SHL9VERSIONMAP)\
4570                    $(SHL9RES)\
4571                    $(SHL9DEPN) \
4572                    $(SHL9LINKLIST)
4573    @echo "Making:   " $(@:f)
4574.IF "$(GUI)" == "WNT"
4575.IF "$(SHL9DEFAULTRES)"!=""
4576    @@-$(RM) $(MISC)/$(SHL9DEFAULTRES:b).rc
4577.IF "$(SHL9ICON)" != ""
4578    @echo 1 ICON $(SHL9ICON) >> $(MISC)/$(SHL9DEFAULTRES:b).rc
4579.ENDIF
4580.IF "$(use_shl_versions)" != ""
4581.IF "$(SHL9ADD_VERINFO)"!=""
4582    @echo $(EMQ)#include $(EMQ)"$(SHL9ADD_VERINFO)$(EMQ)" >> $(MISC)/$(SHL9DEFAULTRES:b).rc
4583.ELSE           # "$(SHL9ADD_VERINFO)"!=""
4584    @echo $(EMQ)#define ADDITIONAL_VERINFO1 >> $(MISC)/$(SHL9DEFAULTRES:b).rc
4585    @echo $(EMQ)#define ADDITIONAL_VERINFO2 >> $(MISC)/$(SHL9DEFAULTRES:b).rc
4586    @echo $(EMQ)#define ADDITIONAL_VERINFO3 >> $(MISC)/$(SHL9DEFAULTRES:b).rc
4587.ENDIF          # "$(SHL9ADD_VERINFO)"!=""
4588    @echo $(EMQ)#define VERVARIANT  $(BUILD) >> $(MISC)/$(SHL9DEFAULTRES:b).rc
4589    @echo $(EMQ)#define ORG_NAME    $(SHL9TARGET)$(DLLPOST) >> $(MISC)/$(SHL9DEFAULTRES:b).rc
4590    @echo $(EMQ)#define INTERNAL_NAME $(SHL9TARGET:b) >> $(MISC)/$(SHL9DEFAULTRES:b).rc
4591    @echo $(EMQ)#include $(EMQ)"shlinfo.rc$(EMQ)" >> $(MISC)/$(SHL9DEFAULTRES:b).rc
4592.ENDIF          # "$(use_shl_versions)" != ""
4593    $(COMMAND_ECHO)$(RC) -DWIN32 $(INCLUDE) $(RCLINKFLAGS) $(MISC)/$(SHL9DEFAULTRES:b).rc
4594.ENDIF          # "$(SHL9DEFAULTRES)"!=""
4595.IF "$(SHL9ALLRES)"!=""
4596    $(COMMAND_ECHO)$(TYPE) $(SHL9ALLRES) > $(SHL9LINKRES)
4597.IF "$(COM)"=="GCC"
4598    windres $(SHL9LINKRES) $(SHL9LINKRESO)
4599.ENDIF          # "$(COM)"=="GCC"
4600.ENDIF          # "$(SHL9ALLRES)"!=""
4601.IF "$(COM)"=="GCC" # always have to call dlltool explicitly as ld cannot handle # comment in .def
4602    @echo dlltool --dllname $(SHL9TARGET)$(DLLPOST) \
4603        --kill-at \\ > $(MISC)/$(TARGET).$(@:b)_9.cmd
4604    @noop $(assign ALL9OBJLIST:=$(STDOBJ) $(SHL9OBJS) $(SHL9LINKRESO) $(shell $(TYPE) /dev/null $(SHL9LIBS) | $(SED) s?$(ROUT)?$(PRJ)/$(ROUT)?g))
4605.IF "$(DEFLIB9NAME)"!=""    # do not have to include objs
4606    @noop $(assign DEF9OBJLIST:=$(shell $(TYPE) $(foreach,i,$(DEFLIB9NAME) $(SLB)/$(i).lib) | sed s?$(ROUT)?$(PRJ)/$(ROUT)?g))
4607    @noop $(foreach,i,$(DEF9OBJLIST) $(assign ALL9OBJLIST:=$(ALL9OBJLIST:s?$i??)))
4608.ENDIF          # "$(DEFLIB9NAME)"!=""
4609    @echo   --output-exp $(MISC)/$(@:b)_exp.o \\ >> $(MISC)/$(TARGET).$(@:b)_9.cmd
4610.IF "$(SHL9DEF)"!=""
4611    @echo   --input-def $(SHL9DEF) \\ >> $(MISC)/$(TARGET).$(@:b)_9.cmd
4612.ELSE
4613    @echo   $(SHL9VERSIONOBJ) $(SHL9DESCRIPTIONOBJ) \\ >> $(MISC)/$(TARGET).$(@:b)_9.cmd
4614.ENDIF
4615    @echo   $(ALL9OBJLIST) >> $(MISC)/$(TARGET).$(@:b)_9.cmd
4616    @echo $(LINK) $(LINKFLAGS) $(LINKFLAGSSHL) $(MINGWSSTDOBJ) -o $@ \
4617        $(STDOBJ) $(SHL9VERSIONOBJ) $(SHL9DESCRIPTIONOBJ) $(SHL9OBJS) $(SHL9LINKRESO) \
4618        `$(TYPE) /dev/null $(SHL9LIBS) | $(SED) s\#$(ROUT)\#$(PRJ)/$(ROUT)\#g` \
4619        -Wl,--exclude-libs,ALL,--start-group $(SHL9STDLIBS) -Wl,--end-group \
4620        $(SHL9STDSHL) $(STDSHL9) $(MISC)/$(@:b)_exp.o $(MINGWSSTDENDOBJ) \
4621        -Wl,-Map,$(MISC)/$(@:b).map >> $(MISC)/$(TARGET).$(@:b)_9.cmd
4622  .IF "$(VERBOSE)" == "TRUE"
4623    @$(TYPE)  $(MISC)/$(TARGET).$(@:b)_9.cmd
4624  .ENDIF
4625    @+source $(MISC)/$(TARGET).$(@:b)_9.cmd
4626.ELSE
4627.IF "$(linkinc)"==""
4628.IF "$(SHL9USE_EXPORTS)"!="name"
4629.IF "$(USE_DEFFILE)"!=""
4630    $(COMMAND_ECHO)$(SHL9LINKER) @$(mktmp \
4631        $(SHL9LINKFLAGS) \
4632        $(LINKFLAGSSHL) \
4633        $(SHL9STACK) $(SHL9BASEX)   \
4634        -out:$@ \
4635        -map:$(MISC)/$(@:b).map \
4636        -def:$(SHL9DEF) \
4637        $(USE_9IMPLIB) \
4638        $(STDOBJ) \
4639        $(SHL9VERSIONOBJ) $(SHL9OBJS) \
4640        $(SHL9LIBS) \
4641        $(SHL9STDLIBS) \
4642        $(SHL9STDSHL) $(STDSHL9) \
4643        $(SHL9LINKRES) \
4644    )
4645# double check if target was really written... still making sense?
4646    @@$(LS) $@
4647    @echo linking $@.manifest ...
4648.IF "$(VISTA_MANIFEST)"!=""
4649    $(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(MT) $(MTFLAGS) -manifest $@.manifest -manifest $(TRUSTED_MANIFEST_LOCATION)/trustedinfo.manifest -out:$@.tmanifest$(EMQ) $(FI)
4650    $(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(MT) $(MTFLAGS) -manifest $@.tmanifest -outputresource:$@$(EMQ);2 $(FI)
4651.ELSE
4652    $(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(MT) $(MTFLAGS) -manifest $@.manifest -outputresource:$@$(EMQ);2 $(FI)
4653.ENDIF # "$(VISTA_MANIFEST)"!=""
4654    $(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(RM:s/+//) $@.manifest $(FI)
4655    $(COMMAND_ECHO)$(IFEXIST) $@.tmanifest $(THEN) $(RM:s/+//) $@.tmanifest $(FI)
4656.ELSE           # "$(USE_DEFFILE)"!=""
4657    $(COMMAND_ECHO)$(SHL9LINKER) @$(mktmp   $(SHL9LINKFLAGS)            \
4658        $(LINKFLAGSSHL) $(SHL9BASEX)        \
4659        $(SHL9STACK) -out:$(SHL9TARGETN)    \
4660        -map:$(MISC)/$(@:B).map             \
4661        $(LB)/$(SHL9IMPLIB).exp             \
4662        $(STDOBJ)                           \
4663        $(SHL9OBJS) $(SHL9VERSIONOBJ) \
4664        $(SHL9LIBS)                         \
4665        $(SHL9STDLIBS)                      \
4666        $(SHL9STDSHL) $(STDSHL9)                           \
4667        $(SHL9LINKRES) \
4668    )
4669# double check if target was really written... still making sense?
4670    @@$(LS) $@
4671    @echo linking $@.manifest ...
4672.IF "$(VISTA_MANIFEST)"!=""
4673    $(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(MT) $(MTFLAGS) -manifest $@.manifest -manifest $(TRUSTED_MANIFEST_LOCATION)/trustedinfo.manifest -out:$@.tmanifest$(EMQ) $(FI)
4674    $(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(MT) $(MTFLAGS) -manifest $@.tmanifest -outputresource:$@$(EMQ);2 $(FI)
4675.ELSE
4676    $(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(MT) $(MTFLAGS) -manifest $@.manifest -outputresource:$@$(EMQ);2 $(FI)
4677.ENDIF # "$(VISTA_MANIFEST)"!=""
4678    $(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(RM:s/+//) $@.manifest $(FI)
4679    $(COMMAND_ECHO)$(IFEXIST) $@.tmanifest $(THEN) $(RM:s/+//) $@.tmanifest $(FI)
4680.ENDIF          # "$(USE_DEFFILE)"!=""
4681.ELSE           # "$(SHL9USE_EXPORTS)"!="name"
4682    $(COMMAND_ECHO)$(SHL9LINKER) @$(mktmp   $(SHL9LINKFLAGS)            \
4683        $(LINKFLAGSSHL) $(SHL9BASEX)        \
4684        $(SHL9STACK) -out:$(SHL9TARGETN)    \
4685        -map:$(MISC)/$(@:B).map             \
4686        $(USE_9IMPLIB) \
4687        $(STDOBJ)                           \
4688        $(SHL9OBJS) $(SHL9VERSIONOBJ))   \
4689        $(SHL9LINKLISTPARAM) \
4690        @$(mktmp $(SHL9STDLIBS)                      \
4691        $(SHL9STDSHL) $(STDSHL9)                           \
4692        $(SHL9LINKRES) \
4693    )
4694    @echo linking $@.manifest ...
4695.IF "$(VISTA_MANIFEST)"!=""
4696    $(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(MT) $(MTFLAGS) -manifest $@.manifest -manifest $(TRUSTED_MANIFEST_LOCATION)/trustedinfo.manifest -out:$@.tmanifest$(EMQ) $(FI)
4697    $(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(MT) $(MTFLAGS) -manifest $@.tmanifest -outputresource:$@$(EMQ);2 $(FI)
4698.ELSE
4699    $(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(MT) $(MTFLAGS) -manifest $@.manifest -outputresource:$@$(EMQ);2 $(FI)
4700.ENDIF # "$(VISTA_MANIFEST)"!=""
4701    $(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(RM:s/+//) $@.manifest $(FI)
4702    $(COMMAND_ECHO)$(IFEXIST) $@.tmanifest $(THEN) $(RM:s/+//) $@.tmanifest $(FI)
4703.ENDIF          # "$(SHL9USE_EXPORTS)"!="name"
4704.ELSE           # "$(linkinc)"==""
4705        $(COMMAND_ECHO)-$(RM) del $(MISC)/$(SHL9TARGET).lnk
4706        $(COMMAND_ECHO)-$(RM) $(MISC)/$(SHL9TARGET).lst
4707        $(COMMAND_ECHO)$(TYPE) $(mktmp \
4708        $(SHL9LINKFLAGS) \
4709        $(LINKFLAGSSHL) $(SHL9BASEX) \
4710        $(SHL9STACK) $(MAPFILE) \
4711        -out:$@ \
4712        $(LB)/$(SHL9IMPLIB).exp \
4713        $(STDOBJ) \
4714        $(SHL9OBJS) \
4715        $(SHL9STDLIBS) \
4716        $(SHL9STDSHL) $(STDSHL9) \
4717        $(SHL9LINKRES) \
4718        ) >> $(MISC)/$(SHL9TARGET).lnk
4719        $(COMMAND_ECHO)$(TYPE) $(MISC)/$(SHL9TARGETN:b)_linkinc.ls  >> $(MISC)/$(SHL9TARGET).lnk
4720        $(COMMAND_ECHO)$(SHL9LINKER) @$(MISC)/$(SHL9TARGET).lnk
4721        @echo linking $@.manifest ...
4722.IF "$(VISTA_MANIFEST)"!=""
4723        $(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(MT) $(MTFLAGS) -manifest $@.manifest -manifest $(TRUSTED_MANIFEST_LOCATION)/trustedinfo.manifest -out:$@.tmanifest$(EMQ) $(FI)
4724        $(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(MT) $(MTFLAGS) -manifest $@.tmanifest -outputresource:$@$(EMQ);2 $(FI)
4725.ELSE
4726        $(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(MT) $(MTFLAGS) -manifest $@.manifest -outputresource:$@$(EMQ);2 $(FI)
4727.ENDIF # "$(VISTA_MANIFEST)"!=""
4728        $(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(RM:s/+//) $@.manifest $(FI)
4729        $(COMMAND_ECHO)$(IFEXIST) $@.tmanifest $(THEN) $(RM:s/+//) $@.tmanifest $(FI)
4730.ENDIF          # "$(linkinc)"==""
4731.ENDIF          # "$(COM)"=="GCC"
4732.ENDIF          # "$(GUI)" == "WNT"
4733.IF "$(GUI)"=="UNX"
4734.IF "$(OS)"=="MACOSX"
4735    @-$(RM) $(MISC)/$(@:b).list
4736    @-$(RM) $(MISC)/$(TARGET).$(@:b)_9.cmd
4737    @echo $(STDSLO) $(SHL9OBJS:s/.obj/.o/) \
4738    $(SHL9VERSIONOBJ) \
4739    `cat /dev/null $(SHL9LIBS) | sed s\#$(ROUT)\#$(PRJ)/$(ROUT)\#g` | tr -s " " "\n" > $(MISC)/$(@:b).list
4740    @echo -n $(SHL9LINKER) $(SHL9LINKFLAGS) $(SHL9VERSIONMAPPARA) $(LINKFLAGSSHL) -L$(PRJ)/$(ROUT)/lib $(SOLARLIB) -o $@ \
4741    $(SHL9STDLIBS) $(SHL9ARCHIVES) $(SHL9STDSHL) $(STDSHL9) -filelist $(MISC)/$(@:b).list $(LINKOUTPUT_FILTER) > $(MISC)/$(TARGET).$(@:b)_9.cmd
4742    @$(PERL) $(SOLARENV)/bin/macosx-dylib-link-list.pl \
4743        `cat $(MISC)/$(TARGET).$(@:b)_9.cmd` \
4744        >> $(MISC)/$(TARGET).$(@:b)_9.cmd
4745  .IF "$(VERBOSE)" == "TRUE"
4746    @cat $(MISC)/$(TARGET).$(@:b)_9.cmd
4747  .ENDIF
4748    @+source $(MISC)/$(TARGET).$(@:b)_9.cmd
4749    @$(PERL) $(SOLARENV)/bin/macosx-change-install-names.pl \
4750        shl $(SHL9RPATH) $@
4751.IF "$(SHL9CREATEJNILIB)"!=""
4752    @echo "Making:   " $(@:f).jnilib
4753    @macosx-create-bundle $@
4754.ENDIF          # "$(SHL9CREATEJNILIB)"!=""
4755.IF "$(UPDATER)"=="YES"
4756.IF "$(SHL9NOCHECK)"==""
4757    $(SOLARENV)/bin/checkdll.sh -L$(LB) -L$(SOLARLIBDIR) $(EXTRALIBPATHS9) $(SHL9TARGETN)
4758.ENDIF              # "$(SHL9NOCHECK)"!=""
4759.ENDIF
4760.ELSE           # "$(OS)"=="MACOSX"
4761    @-$(RM) $(MISC)/$(TARGET).$(@:b)_9.cmd
4762    @echo $(SHL9LINKER) $(SHL9LINKFLAGS) $(SHL9SONAME) $(LINKFLAGSSHL) $(SHL9VERSIONMAPPARA) -L$(PRJ)/$(ROUT)/lib $(SOLARLIB) $(STDSLO) $(SHL9OBJS:s/.obj/.o/) \
4763    $(SHL9VERSIONOBJ) -o $@ \
4764    `cat /dev/null $(SHL9LIBS) | tr -s " " "\n" | $(SED) s\#$(ROUT)\#$(PRJ)/$(ROUT)\#g` \
4765    $(SHL9STDLIBS) $(SHL9ARCHIVES) $(SHL9STDSHL) $(STDSHL9) $(LINKOUTPUT_FILTER) > $(MISC)/$(TARGET).$(@:b)_9.cmd
4766  .IF "$(VERBOSE)" == "TRUE"
4767    @cat $(MISC)/$(TARGET).$(@:b)_9.cmd
4768  .ENDIF
4769    @+source $(MISC)/$(TARGET).$(@:b)_9.cmd
4770.IF "$(UPDATER)"=="YES"
4771.IF "$(SHL9NOCHECK)"==""
4772    $(COMMAND_ECHO)-$(RM) $(SHL9TARGETN:d)check_$(SHL9TARGETN:f)
4773    $(COMMAND_ECHO)$(RENAME) $(SHL9TARGETN) $(SHL9TARGETN:d)check_$(SHL9TARGETN:f)
4774.IF "$(VERBOSE)"=="TRUE"
4775    $(COMMAND_ECHO)$(SOLARENV)/bin/checkdll.sh -L$(LB) -L$(SOLARLIBDIR) $(EXTRALIBPATHS9) $(SHL9TARGETN:d)check_$(SHL9TARGETN:f)
4776.ELSE
4777    $(COMMAND_ECHO)$(SOLARENV)/bin/checkdll.sh -L$(LB) -L$(SOLARLIBDIR) $(EXTRALIBPATHS9) -- -s $(SHL9TARGETN:d)check_$(SHL9TARGETN:f)
4778.ENDIF
4779.ENDIF              # "$(SHL9NOCHECK)"!=""
4780.ENDIF          # "$(UPDATER)"=="YES"
4781.ENDIF          # "$(OS)"=="MACOSX"
4782.IF "$(UNIXVERSIONNAMES)"!=""
4783    $(COMMAND_ECHO)$(RM) $(LB)/$(SHL9TARGETN:b)
4784    $(COMMAND_ECHO)cd $(LB) && ln -s $(SHL9TARGETN:f) $(SHL9TARGETN:b)
4785.ENDIF          # "$(UNIXVERSIONNAMES)"!=""
4786.IF "$(VERBOSE)" == "TRUE"
4787    @ls -l $@
4788.ENDIF
4789.ENDIF          # "$(GUI)" == "UNX"
4790
4791.IF "$(GUI)" == "OS2"
4792
4793.IF "$(SHL9DEFAULTRES)"!=""
4794    @+-$(RM) $(MISC)/$(SHL9DEFAULTRES:b).rc > $(NULLDEV)
4795.IF "$(SHL9ICON)" != ""
4796    @-+echo 1 ICON $(SHL9ICON) >> $(MISC)/$(SHL9DEFAULTRES:b).rc
4797.ENDIF
4798.IF "$(use_shl_versions)" != ""
4799.IF "$(SHL9ADD_VERINFO)"!=""
4800    @-+echo $(EMQ)#include $(EMQ)"$(SHL9ADD_VERINFO)$(EMQ)" >> $(MISC)/$(SHL9DEFAULTRES:b).rc
4801.ENDIF          # "$(SHL9ADD_VERINFO)"!=""
4802    @-+echo MENU 1 BEGIN END >> $(MISC)/$(SHL9DEFAULTRES:b).rc
4803#   @-+echo $(EMQ)RCDATA 1 { "Build string here" }$(EMQ) >> $(MISC)/$(SHL9DEFAULTRES:b).rc
4804.ENDIF          # "$(use_shl_versions)" != ""
4805# YD 04/07/06 seems null, confuses rc cli: -i $(SOLARTESDIR)
4806    $(COMMAND_ECHO)$(RC) -r -DOS2 $(INCLUDE) $(RCLINKFLAGS) $(MISC)/$(SHL9DEFAULTRES:b).rc
4807.ENDIF          # "$(SHL9DEFAULTRES)"!=""
4808
4809.IF "$(SHL9ALLRES)"!=""
4810    $(COMMAND_ECHO)+$(TYPE) $(SHL9ALLRES) > $(SHL9LINKRES)
4811.ENDIF          # "$(SHL9ALLRES)"!=""
4812
4813.IF "$(USE_DEFFILE)"!=""
4814
4815    $(COMMAND_ECHO)$(SHL9LINKER) $(SHL9LINKFLAGS) $(LINKFLAGSSHL) -o $@ \
4816        $(SHL9DEF) \
4817        $(STDOBJ) \
4818        -L$(LB) \
4819        -L$(SOLARVERSION)/$(INPATH)/lib \
4820        $(SHL9OBJS) $(SHL9VERSIONOBJ) \
4821        $(SHL9LIBS) \
4822        $(SHL9LINKRES) \
4823        $(SHL9STDLIBS) \
4824        $(SHL9STDSHL) $(STDSHL9)
4825
4826.ELSE           # "$(USE_DEFFILE)"!=""
4827
4828    $(COMMAND_ECHO)$(SHL9LINKER) $(SHL9LINKFLAGS)           \
4829        $(LINKFLAGSSHL) $(SHL9BASEX)        \
4830        $(SHL9STACK) -o $(SHL9TARGETN)  \
4831        $(SHL9DEF) \
4832        $(STDOBJ)                           \
4833        -L$(LB) \
4834        -L$(SOLARVERSION)/$(INPATH)/lib \
4835        $(SHL9OBJS) $(SHL9VERSIONOBJ) \
4836        $(SHL9LIBS) \
4837        $(SHL9LINKRES) \
4838        $(SHL9STDLIBS) \
4839        $(SHL9STDSHL) $(STDSHL9)
4840
4841.ENDIF          # "$(USE_DEFFILE)"!=""
4842
4843    $(COMMAND_ECHO)+$(IMPLIB) -p256 $(IMPLIBFLAGS) $(SHL9IMPLIBN) $@
4844    $(COMMAND_ECHO)+$(IMPLIB) -p256 $(IMPLIBFLAGS) $(LB)/$(SHL9TARGET).lib $@
4845
4846.IF "$(SHL9TARGET8)" != "$(SHL9TARGET)"
4847    $(COMMAND_ECHO)+$(COPY) $@ $(@:d)$(SHL9TARGET8).dll
4848.ENDIF
4849
4850.ENDIF          # "$(GUI)" == "OS2"
4851
4852.ENDIF          # "$(SHL9TARGETN)"!=""
4853
4854# unroll begin
4855
4856.IF "$(SHL10TARGETN)"!=""
4857
4858.IF "$(OS)"=="AIX"
4859SHL10STDLIBS=
4860.ENDIF
4861
4862.IF "$(SHLLINKARCONLY)" != ""
4863SHL10STDLIBS=
4864STDSHL=
4865.ELSE
4866SHL10ARCHIVES=
4867.ENDIF
4868
4869# decide how to link
4870.IF "$(SHL10CODETYPE)"=="C"
4871SHL10LINKER=$(LINKC)
4872SHL10STDSHL=$(subst,CPPRUNTIME, $(STDSHL))
4873SHL10LINKFLAGS+=$(LINKCFLAGS)
4874.ELSE           # "$(SHL10CODETYPE)"=="C"
4875SHL10LINKER=$(LINK)
4876SHL10STDSHL=$(subst,CPPRUNTIME,$(STDLIBCPP) $(STDSHL))
4877SHL10LINKFLAGS+=$(LINKFLAGS)
4878.ENDIF          # "$(SHL10CODETYPE)"=="C"
4879
4880SHL10RPATH*=OOO
4881LINKFLAGSRUNPATH_$(SHL10RPATH)*=/ERROR:/Bad_SHL10RPATH_value
4882SHL10LINKFLAGS+=$(LINKFLAGSRUNPATH_$(SHL10RPATH))
4883
4884.IF "$(SHL10USE_EXPORTS)"==""
4885SHL10DEF*=$(MISC)/$(SHL10TARGET).def
4886.ENDIF          # "$(SHL10USE_EXPORTS)"==""
4887
4888EXTRALIBPATHS10=$(EXTRALIBPATHS)
4889.IF "$(UPDATER)"=="YES"
4890.IF "$(SHL10NOCHECK)"==""
4891.IF "$(SOLAR_STLLIBPATH)"!=""
4892EXTRALIBPATHS10+=-L$(SOLAR_STLLIBPATH)
4893.ENDIF
4894.ENDIF              # "$(SHL10NOCHECK)"!=""
4895.ENDIF
4896#+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
4897#+++++++++++    version object      ++++++++++++++++++++++++++++++++++++++++
4898#+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
4899
4900.IF "$(L10N_framework)"==""
4901.IF "$(VERSIONOBJ)"!=""
4902SHL10VERSIONOBJ:=$(VERSIONOBJ:d){$(subst,$(DLLPOSTFIX),_dflt $(SHL10TARGET))}$(VERSIONOBJ:f)
4903USE_VERSIONH:=$(INCCOM)/$(SHL10VERSIONOBJ:b).h
4904.IF "$(GUI)" == "UNX"
4905SHL10VERSIONOBJDEP:=$(VERSIONOBJ:d){$(subst,$(DLLPOSTFIX),_dflt $(SHL10TARGET))}$(VERSIONOBJ:f:s/.o/.obj/)
4906.ELSE           # "$(GUI)" == "UNX"
4907SHL10VERSIONOBJDEP:=$(VERSIONOBJ:d){$(subst,$(DLLPOSTFIX),_dflt $(SHL10TARGET))}$(VERSIONOBJ:f)
4908.ENDIF          # "$(GUI)" == "UNX"
4909$(MISC)/$(SHL10VERSIONOBJ:b).c : $(SOLARENV)/src/version.c $(INCCOM)/$(SHL10VERSIONOBJ:b).h
4910#    $(COPY) $(SOLARENV)/src/version.c $@
4911    $(COMMAND_ECHO)$(TYPE) $(SOLARENV)/src/version.c | $(SED) s/_version.h/$(SHL10VERSIONOBJ:b).h/ > $@
4912
4913.INIT : $(SHL10VERSIONOBJDEP)
4914.ENDIF          # "$(VERSIONOBJ)"!=""
4915.ENDIF
4916
4917.IF "$(GUI)" != "UNX"
4918.IF "$(GUI)" == "WNT" || "$(GUI)" == "OS2"
4919.IF "$(SHL10IMPLIB)" == ""
4920SHL10IMPLIB=i$(TARGET)_t10
4921.ENDIF          # "$(SHL10IMPLIB)" == ""
4922.IF "$(COM)" != "GCC"
4923USE_10IMPLIB=-implib:$(LB)/$(SHL10IMPLIB).lib
4924.ENDIF          # "$(COM)" != "GCC"
4925SHL10IMPLIBN=$(LB)/$(SHL10IMPLIB).lib
4926ALLTAR : $(SHL10IMPLIBN)
4927
4928.IF "$(USE_DEFFILE)"==""
4929USE_10IMPLIB_DEPS=$(LB)/$(SHL10IMPLIB).lib
4930.ENDIF          # "$(USE_DEFFILE)"==""
4931.ENDIF          # "$(GUI)" == "WNT" || "$(GUI)" == "OS2"
4932USE_SHL10DEF=$(SHL10DEF)
4933.ELSE           # "$(GUI)" != "UNX"
4934USE_SHL10DEF=
4935SHL10DEPN+:=$(SHL10DEPNU)
4936
4937.IF "$(SHL10VERSIONMAP)"==""
4938# to activate vmaps remove "#"
4939USE_SHL10VERSIONMAP=$(MISC)/$(SHL10TARGET).vmap
4940.ENDIF          # "$(SHL10VERSIONMAP)"==""
4941
4942.IF "$(USE_SHL10VERSIONMAP)"!=""
4943
4944.IF "$(SHL10FILTERFILE)"!=""
4945.IF "$(SHL10VERSIONMAP)"!=""
4946#eine von beiden ist zuviel
4947USE_SHL10VERSIONMAP=$(MISC)/$(SHL10TARGET).vmap
4948$(USE_SHL10VERSIONMAP) .PHONY:
4949    @echo -----------------------------
4950    @echo you should only use versionmap OR exportfile
4951    @echo -----------------------------
4952#   force_dmake_to_error
4953
4954.ENDIF          # "$(SHL10VERSIONMAP)"!=""
4955
4956SHL10VERSIONMAPPARA=$(LINKVERSIONMAPFLAG) $(USE_SHL10VERSIONMAP)
4957
4958$(USE_SHL10VERSIONMAP): \
4959                    $(SHL10OBJS)\
4960                    $(SHL10LIBS)\
4961                    $(SHL10FILTERFILE)
4962    @$(RM) $@.dump
4963.IF "$(SHL10OBJS)"!=""
4964# dump remaining objects on the fly
4965.IF "$(OS)"=="MACOSX"
4966    @-nm $(SHL10OBJS:s/.obj/.o/) > $@.dump
4967.ELSE
4968    @nm $(SHL10OBJS:s/.obj/.o/) > $@.dump
4969.ENDIF
4970.ENDIF          # "$(SHL10OBJS)!"=""
4971    @$(TYPE) /dev/null $(SHL10LIBS:s/.lib/.dump/) >> $@.dump
4972    $(COMMAND_ECHO) $(PERL) $(SOLARENV)/bin/mapgen.pl -d $@.dump -s $(SHL10INTERFACE) -f $(SHL10FILTERFILE) -m $@
4973
4974.ELSE           # "$(SHL10FILTERFILE)"!=""
4975USE_SHL10VERSIONMAP=$(MISC)/$(SHL10TARGET).vmap
4976$(USE_SHL10VERSIONMAP) :
4977.IF "$(VERBOSE)" == "TRUE"
4978    @echo -----------------------------
4979    @echo SHL10FILTERFILE not set!
4980    @echo -----------------------------
4981    @$(TOUCH) $@
4982    @echo dummy file to keep the dependencies for later use.
4983.ELSE
4984    @$(TOUCH) $@
4985.ENDIF
4986#   force_dmake_to_error
4987.ENDIF          # "$(SHL10FILTERFILE)"!=""
4988.ELSE           # "$(USE_SHL10VERSIONMAP)"!=""
4989
4990#and now for the plain non-generic way...
4991.IF "$(SHL10VERSIONMAP)"!=""
4992USE_SHL10VERSIONMAP=$(MISC)/$(SHL10VERSIONMAP:b)_$(SHL10TARGET)$(SHL10VERSIONMAP:e)
4993SHL10VERSIONMAPPARA=$(LINKVERSIONMAPFLAG) $(USE_SHL10VERSIONMAP)
4994
4995.IF "$(OS)"=="MACOSX"
4996$(USE_SHL10VERSIONMAP): $(SHL10OBJS) $(SHL10LIBS)
4997.ENDIF
4998
4999# .ERRREMOVE is needed as a recipe line like "$(AWK) ... > $@" would create $@
5000# even if the $(AWK) part fails:
5001$(USE_SHL10VERSIONMAP) .ERRREMOVE: $(SHL10VERSIONMAP)
5002    @@-$(RM) -f $@
5003# The following files will only be generated and needed on Mac OS X as temporary files
5004# in order to generate exported symbols list out of Linux/Solaris map files
5005.IF "$(OS)"=="MACOSX"
5006    @-$(RM) -f $@.symregexp >& $(NULLDEV)
5007    @-$(RM) -f $@.expsymlist >& $(NULLDEV)
5008.ENDIF
5009# Its questionable if the following condition '.IF "$(COMID)"=="gcc3"' makes sense and what
5010# happens if somebody will change it in the future
5011.IF "$(COMID)"=="gcc3"
5012    $(COMMAND_ECHO) tr -d "\015" < $(SHL10VERSIONMAP) | $(AWK) -f $(SOLARENV)/bin/addsym.awk > $@
5013.ELIF "$(COMNAME)"=="sunpro5"
5014    $(COMMAND_ECHO) tr -d "\015" < $(SHL10VERSIONMAP) | $(GREP) -v $(IGNORE_SYMBOLS) > $@
5015.ELSE           # "$(COMID)"=="gcc3"
5016    $(COMMAND_ECHO) tr -d "\015" < $(SHL10VERSIONMAP) > $@
5017.ENDIF          # "$(COMID)"=="gcc3"
5018    @chmod a+w $@
5019# Mac OS X post-processing generate an exported symbols list from the generated map file
5020# for details on exported symbols list see man ld on Mac OS X
5021.IF "$(OS)"=="MACOSX"
5022    @-cat $@ | $(AWK) -f $(SOLARENV)/bin/unxmap-to-macosx-explist.awk | grep -v "\*\|?" > $@.exported-symbols
5023    @-cat $@ | $(AWK) -f $(SOLARENV)/bin/unxmap-to-macosx-explist.awk | grep "\*\|?" > $@.symbols-regexp
5024# Shared libraries will be build out of the *.obj files specified in SHL?OBJS and SHL?LIBS
5025# Extract RTTI symbols from all the objects that will be used to build a shared library
5026.IF "$(SHL10OBJS)"!=""
5027    -echo $(foreach,i,$(SHL10OBJS:s/.obj/.o/) $i) | xargs -n1 nm -gx | $(SOLARENV)/bin/addsym-macosx.sh $@.symbols-regexp $@.symbols-regexp.tmp >> $@.exported-symbols
5028.ENDIF
5029.IF "$(SHL10LIBS)"!=""
5030    $(COMMAND_ECHO)-$(TYPE) $(foreach,j,$(SHL10LIBS) $j) | $(SED) s\#$(ROUT)\#$(PRJ)/$(ROUT)\#g | xargs -n1 nm -gx | $(SOLARENV)/bin/addsym-macosx.sh $@.symbols-regexp $@.symbols-regexp.tmp >> $@.exported-symbols
5031.ENDIF
5032# overwrite the map file generate into the local output tree with the generated
5033# exported symbols list
5034    cp $@.exported-symbols $@
5035.ENDIF # .IF "$(OS)"=="MACOSX"
5036.ENDIF          # "$(SHL10VERSIONMAP)"!=""
5037.ENDIF          # "$(USE_SHL10VERSIONMAP)"!=""
5038.ENDIF          # "$(GUI)" != "UNX"
5039
5040.IF "$(UNIXVERSIONNAMES)"!=""
5041.IF "$(OS)"!="MACOSX"
5042.IF "$(GUI)"=="UNX"
5043SHL10SONAME=\"$(SONAME_SWITCH)$(SHL10TARGETN:f)\"
5044.ENDIF          # "$(GUI)"!="UNX"
5045.ENDIF          # "$(OS)"!="MACOSX"
5046.ENDIF          # "$(UNIXVERSIONNAMES)"!=""
5047
5048.IF "$(SHL10RES)"!=""
5049SHL10ALLRES+=$(SHL10RES)
5050SHL10LINKRES*=$(MISC)/$(SHL10TARGET).res
5051SHL10LINKRESO*=$(MISC)/$(SHL10TARGET)_res.o
5052.ENDIF          # "$(SHL10RES)"!=""
5053
5054.IF "$(SHL10DEFAULTRES)$(use_shl_versions)"!=""
5055SHL10DEFAULTRES*=$(MISC)/$(SHL10TARGET)_def.res
5056SHL10ALLRES+=$(SHL10DEFAULTRES)
5057SHL10LINKRES*=$(MISC)/$(SHL10TARGET).res
5058SHL10LINKRESO*=$(MISC)/$(SHL10TARGET)_res.o
5059.ENDIF          # "$(SHL10DEFAULTRES)$(use_shl_versions)"!=""
5060
5061#.IF "$(SHL10TARGETN)"!=""
5062
5063.IF "$(linkinc)"!=""
5064.IF "$(GUI)"=="WNT" || "$(GUI)" == "OS2"
5065.IF "$(SHL10LIBS)"!=""
5066$(MISC)/$(SHL10TARGET)_linkinc.ls .PHONY:
5067    @@-$(RM) $@
5068    $(COMMAND_ECHO)$(SED) -f $(SOLARENV)/bin/chrel.sed $(foreach,i,$(SHL10LIBS) $(i:s/.lib/.lin/)) >> $@
5069.ENDIF          # "$(SHL10LIBS)"!=""
5070.ENDIF
5071
5072LINKINCTARGETS+=$(MISC)/$(SHL10TARGETN:b)_linkinc.ls
5073$(SHL10TARGETN) : $(LINKINCTARGETS)
5074
5075.ELSE
5076.IF "$(SHL10USE_EXPORTS)"=="name"
5077.IF "$(GUI)"=="WNT" || "$(GUI)" == "OS2"
5078.IF "$(COM)"!="GCC"
5079.IF "$(SHL10LIBS)"!=""
5080SHL10LINKLIST=$(MISC)/$(SHL10TARGET)_link.lst
5081SHL10LINKLISTPARAM=@$(SHL10LINKLIST)
5082$(SHL10LINKLIST) : $(SHL10LIBS)
5083    @@-$(RM) $@
5084    $(COMMAND_ECHO)$(SED) -f $(SOLARENV)/bin/chrel.sed $(foreach,i,$(SHL10LIBS) $(i:s/.lib/.lin/)) >> $@
5085.ENDIF          # "$(SHL10LIBS)"!=""
5086.ENDIF          # "$(COM)"!="GCC"
5087.ENDIF
5088.ENDIF          # "$(SHL10USE_EXPORTS)"=="name"
5089
5090$(MISC)/%linkinc.ls:
5091    @echo . > $@
5092.ENDIF          # "$(linkinc)"!=""
5093
5094.IF "$(GUI)" == "OS2"
5095#21/02/2006 YD dll names must be 8.3, invoke fix script
5096#check osl/os2/module.c/osl_loadModule()
5097SHL10TARGET8=$(shell @fix_shl.cmd $(SHL10TARGET))
5098.ENDIF
5099
5100
5101$(SHL10TARGETN) : \
5102                    $(SHL10OBJS)\
5103                    $(SHL10LIBS)\
5104                    $(USE_10IMPLIB_DEPS)\
5105                    $(USE_SHL10DEF)\
5106                    $(USE_SHL10VERSIONMAP)\
5107                    $(SHL10RES)\
5108                    $(SHL10DEPN) \
5109                    $(SHL10LINKLIST)
5110    @echo "Making:   " $(@:f)
5111.IF "$(GUI)" == "WNT"
5112.IF "$(SHL10DEFAULTRES)"!=""
5113    @@-$(RM) $(MISC)/$(SHL10DEFAULTRES:b).rc
5114.IF "$(SHL10ICON)" != ""
5115    @echo 1 ICON $(SHL10ICON) >> $(MISC)/$(SHL10DEFAULTRES:b).rc
5116.ENDIF
5117.IF "$(use_shl_versions)" != ""
5118.IF "$(SHL10ADD_VERINFO)"!=""
5119    @echo $(EMQ)#include $(EMQ)"$(SHL10ADD_VERINFO)$(EMQ)" >> $(MISC)/$(SHL10DEFAULTRES:b).rc
5120.ELSE           # "$(SHL10ADD_VERINFO)"!=""
5121    @echo $(EMQ)#define ADDITIONAL_VERINFO1 >> $(MISC)/$(SHL10DEFAULTRES:b).rc
5122    @echo $(EMQ)#define ADDITIONAL_VERINFO2 >> $(MISC)/$(SHL10DEFAULTRES:b).rc
5123    @echo $(EMQ)#define ADDITIONAL_VERINFO3 >> $(MISC)/$(SHL10DEFAULTRES:b).rc
5124.ENDIF          # "$(SHL10ADD_VERINFO)"!=""
5125    @echo $(EMQ)#define VERVARIANT  $(BUILD) >> $(MISC)/$(SHL10DEFAULTRES:b).rc
5126    @echo $(EMQ)#define ORG_NAME    $(SHL10TARGET)$(DLLPOST) >> $(MISC)/$(SHL10DEFAULTRES:b).rc
5127    @echo $(EMQ)#define INTERNAL_NAME $(SHL10TARGET:b) >> $(MISC)/$(SHL10DEFAULTRES:b).rc
5128    @echo $(EMQ)#include $(EMQ)"shlinfo.rc$(EMQ)" >> $(MISC)/$(SHL10DEFAULTRES:b).rc
5129.ENDIF          # "$(use_shl_versions)" != ""
5130    $(COMMAND_ECHO)$(RC) -DWIN32 $(INCLUDE) $(RCLINKFLAGS) $(MISC)/$(SHL10DEFAULTRES:b).rc
5131.ENDIF          # "$(SHL10DEFAULTRES)"!=""
5132.IF "$(SHL10ALLRES)"!=""
5133    $(COMMAND_ECHO)$(TYPE) $(SHL10ALLRES) > $(SHL10LINKRES)
5134.IF "$(COM)"=="GCC"
5135    windres $(SHL10LINKRES) $(SHL10LINKRESO)
5136.ENDIF          # "$(COM)"=="GCC"
5137.ENDIF          # "$(SHL10ALLRES)"!=""
5138.IF "$(COM)"=="GCC" # always have to call dlltool explicitly as ld cannot handle # comment in .def
5139    @echo dlltool --dllname $(SHL10TARGET)$(DLLPOST) \
5140        --kill-at \\ > $(MISC)/$(TARGET).$(@:b)_10.cmd
5141    @noop $(assign ALL10OBJLIST:=$(STDOBJ) $(SHL10OBJS) $(SHL10LINKRESO) $(shell $(TYPE) /dev/null $(SHL10LIBS) | $(SED) s?$(ROUT)?$(PRJ)/$(ROUT)?g))
5142.IF "$(DEFLIB10NAME)"!=""   # do not have to include objs
5143    @noop $(assign DEF10OBJLIST:=$(shell $(TYPE) $(foreach,i,$(DEFLIB10NAME) $(SLB)/$(i).lib) | sed s?$(ROUT)?$(PRJ)/$(ROUT)?g))
5144    @noop $(foreach,i,$(DEF10OBJLIST) $(assign ALL10OBJLIST:=$(ALL10OBJLIST:s?$i??)))
5145.ENDIF          # "$(DEFLIB10NAME)"!=""
5146    @echo   --output-exp $(MISC)/$(@:b)_exp.o \\ >> $(MISC)/$(TARGET).$(@:b)_10.cmd
5147.IF "$(SHL10DEF)"!=""
5148    @echo   --input-def $(SHL10DEF) \\ >> $(MISC)/$(TARGET).$(@:b)_10.cmd
5149.ELSE
5150    @echo   $(SHL10VERSIONOBJ) $(SHL10DESCRIPTIONOBJ) \\ >> $(MISC)/$(TARGET).$(@:b)_10.cmd
5151.ENDIF
5152    @echo   $(ALL10OBJLIST) >> $(MISC)/$(TARGET).$(@:b)_10.cmd
5153    @echo $(LINK) $(LINKFLAGS) $(LINKFLAGSSHL) $(MINGWSSTDOBJ) -o $@ \
5154        $(STDOBJ) $(SHL10VERSIONOBJ) $(SHL10DESCRIPTIONOBJ) $(SHL10OBJS) $(SHL10LINKRESO) \
5155        `$(TYPE) /dev/null $(SHL10LIBS) | $(SED) s\#$(ROUT)\#$(PRJ)/$(ROUT)\#g` \
5156        -Wl,--exclude-libs,ALL,--start-group $(SHL10STDLIBS) -Wl,--end-group \
5157        $(SHL10STDSHL) $(STDSHL10) $(MISC)/$(@:b)_exp.o $(MINGWSSTDENDOBJ) \
5158        -Wl,-Map,$(MISC)/$(@:b).map >> $(MISC)/$(TARGET).$(@:b)_10.cmd
5159  .IF "$(VERBOSE)" == "TRUE"
5160    @$(TYPE)  $(MISC)/$(TARGET).$(@:b)_10.cmd
5161  .ENDIF
5162    @+source $(MISC)/$(TARGET).$(@:b)_10.cmd
5163.ELSE
5164.IF "$(linkinc)"==""
5165.IF "$(SHL10USE_EXPORTS)"!="name"
5166.IF "$(USE_DEFFILE)"!=""
5167    $(COMMAND_ECHO)$(SHL10LINKER) @$(mktmp \
5168        $(SHL10LINKFLAGS) \
5169        $(LINKFLAGSSHL) \
5170        $(SHL10STACK) $(SHL10BASEX) \
5171        -out:$@ \
5172        -map:$(MISC)/$(@:b).map \
5173        -def:$(SHL10DEF) \
5174        $(USE_10IMPLIB) \
5175        $(STDOBJ) \
5176        $(SHL10VERSIONOBJ) $(SHL10OBJS) \
5177        $(SHL10LIBS) \
5178        $(SHL10STDLIBS) \
5179        $(SHL10STDSHL) $(STDSHL10) \
5180        $(SHL10LINKRES) \
5181    )
5182# double check if target was really written... still making sense?
5183    @@$(LS) $@
5184    @echo linking $@.manifest ...
5185.IF "$(VISTA_MANIFEST)"!=""
5186    $(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(MT) $(MTFLAGS) -manifest $@.manifest -manifest $(TRUSTED_MANIFEST_LOCATION)/trustedinfo.manifest -out:$@.tmanifest$(EMQ) $(FI)
5187    $(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(MT) $(MTFLAGS) -manifest $@.tmanifest -outputresource:$@$(EMQ);2 $(FI)
5188.ELSE
5189    $(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(MT) $(MTFLAGS) -manifest $@.manifest -outputresource:$@$(EMQ);2 $(FI)
5190.ENDIF # "$(VISTA_MANIFEST)"!=""
5191    $(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(RM:s/+//) $@.manifest $(FI)
5192    $(COMMAND_ECHO)$(IFEXIST) $@.tmanifest $(THEN) $(RM:s/+//) $@.tmanifest $(FI)
5193.ELSE           # "$(USE_DEFFILE)"!=""
5194    $(COMMAND_ECHO)$(SHL10LINKER) @$(mktmp  $(SHL10LINKFLAGS)           \
5195        $(LINKFLAGSSHL) $(SHL10BASEX)       \
5196        $(SHL10STACK) -out:$(SHL10TARGETN)  \
5197        -map:$(MISC)/$(@:B).map             \
5198        $(LB)/$(SHL10IMPLIB).exp                \
5199        $(STDOBJ)                           \
5200        $(SHL10OBJS) $(SHL10VERSIONOBJ) \
5201        $(SHL10LIBS)                         \
5202        $(SHL10STDLIBS)                      \
5203        $(SHL10STDSHL) $(STDSHL10)                           \
5204        $(SHL10LINKRES) \
5205    )
5206# double check if target was really written... still making sense?
5207    @@$(LS) $@
5208    @echo linking $@.manifest ...
5209.IF "$(VISTA_MANIFEST)"!=""
5210    $(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(MT) $(MTFLAGS) -manifest $@.manifest -manifest $(TRUSTED_MANIFEST_LOCATION)/trustedinfo.manifest -out:$@.tmanifest$(EMQ) $(FI)
5211    $(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(MT) $(MTFLAGS) -manifest $@.tmanifest -outputresource:$@$(EMQ);2 $(FI)
5212.ELSE
5213    $(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(MT) $(MTFLAGS) -manifest $@.manifest -outputresource:$@$(EMQ);2 $(FI)
5214.ENDIF # "$(VISTA_MANIFEST)"!=""
5215    $(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(RM:s/+//) $@.manifest $(FI)
5216    $(COMMAND_ECHO)$(IFEXIST) $@.tmanifest $(THEN) $(RM:s/+//) $@.tmanifest $(FI)
5217.ENDIF          # "$(USE_DEFFILE)"!=""
5218.ELSE           # "$(SHL10USE_EXPORTS)"!="name"
5219    $(COMMAND_ECHO)$(SHL10LINKER) @$(mktmp  $(SHL10LINKFLAGS)           \
5220        $(LINKFLAGSSHL) $(SHL10BASEX)       \
5221        $(SHL10STACK) -out:$(SHL10TARGETN)  \
5222        -map:$(MISC)/$(@:B).map             \
5223        $(USE_10IMPLIB) \
5224        $(STDOBJ)                           \
5225        $(SHL10OBJS) $(SHL10VERSIONOBJ))   \
5226        $(SHL10LINKLISTPARAM) \
5227        @$(mktmp $(SHL10STDLIBS)                      \
5228        $(SHL10STDSHL) $(STDSHL10)                           \
5229        $(SHL10LINKRES) \
5230    )
5231    @echo linking $@.manifest ...
5232.IF "$(VISTA_MANIFEST)"!=""
5233    $(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(MT) $(MTFLAGS) -manifest $@.manifest -manifest $(TRUSTED_MANIFEST_LOCATION)/trustedinfo.manifest -out:$@.tmanifest$(EMQ) $(FI)
5234    $(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(MT) $(MTFLAGS) -manifest $@.tmanifest -outputresource:$@$(EMQ);2 $(FI)
5235.ELSE
5236    $(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(MT) $(MTFLAGS) -manifest $@.manifest -outputresource:$@$(EMQ);2 $(FI)
5237.ENDIF # "$(VISTA_MANIFEST)"!=""
5238    $(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(RM:s/+//) $@.manifest $(FI)
5239    $(COMMAND_ECHO)$(IFEXIST) $@.tmanifest $(THEN) $(RM:s/+//) $@.tmanifest $(FI)
5240.ENDIF          # "$(SHL10USE_EXPORTS)"!="name"
5241.ELSE           # "$(linkinc)"==""
5242        $(COMMAND_ECHO)-$(RM) del $(MISC)/$(SHL10TARGET).lnk
5243        $(COMMAND_ECHO)-$(RM) $(MISC)/$(SHL10TARGET).lst
5244        $(COMMAND_ECHO)$(TYPE) $(mktmp \
5245        $(SHL10LINKFLAGS) \
5246        $(LINKFLAGSSHL) $(SHL10BASEX) \
5247        $(SHL10STACK) $(MAPFILE) \
5248        -out:$@ \
5249        $(LB)/$(SHL10IMPLIB).exp \
5250        $(STDOBJ) \
5251        $(SHL10OBJS) \
5252        $(SHL10STDLIBS) \
5253        $(SHL10STDSHL) $(STDSHL10) \
5254        $(SHL10LINKRES) \
5255        ) >> $(MISC)/$(SHL10TARGET).lnk
5256        $(COMMAND_ECHO)$(TYPE) $(MISC)/$(SHL10TARGETN:b)_linkinc.ls  >> $(MISC)/$(SHL10TARGET).lnk
5257        $(COMMAND_ECHO)$(SHL10LINKER) @$(MISC)/$(SHL10TARGET).lnk
5258        @echo linking $@.manifest ...
5259.IF "$(VISTA_MANIFEST)"!=""
5260        $(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(MT) $(MTFLAGS) -manifest $@.manifest -manifest $(TRUSTED_MANIFEST_LOCATION)/trustedinfo.manifest -out:$@.tmanifest$(EMQ) $(FI)
5261        $(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(MT) $(MTFLAGS) -manifest $@.tmanifest -outputresource:$@$(EMQ);2 $(FI)
5262.ELSE
5263        $(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(MT) $(MTFLAGS) -manifest $@.manifest -outputresource:$@$(EMQ);2 $(FI)
5264.ENDIF # "$(VISTA_MANIFEST)"!=""
5265        $(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(RM:s/+//) $@.manifest $(FI)
5266        $(COMMAND_ECHO)$(IFEXIST) $@.tmanifest $(THEN) $(RM:s/+//) $@.tmanifest $(FI)
5267.ENDIF          # "$(linkinc)"==""
5268.ENDIF          # "$(COM)"=="GCC"
5269.ENDIF          # "$(GUI)" == "WNT"
5270.IF "$(GUI)"=="UNX"
5271.IF "$(OS)"=="MACOSX"
5272    @-$(RM) $(MISC)/$(@:b).list
5273    @-$(RM) $(MISC)/$(TARGET).$(@:b)_10.cmd
5274    @echo $(STDSLO) $(SHL10OBJS:s/.obj/.o/) \
5275    $(SHL10VERSIONOBJ) \
5276    `cat /dev/null $(SHL10LIBS) | sed s\#$(ROUT)\#$(PRJ)/$(ROUT)\#g` | tr -s " " "\n" > $(MISC)/$(@:b).list
5277    @echo -n $(SHL10LINKER) $(SHL10LINKFLAGS) $(SHL10VERSIONMAPPARA) $(LINKFLAGSSHL) -L$(PRJ)/$(ROUT)/lib $(SOLARLIB) -o $@ \
5278    $(SHL10STDLIBS) $(SHL10ARCHIVES) $(SHL10STDSHL) $(STDSHL10) -filelist $(MISC)/$(@:b).list $(LINKOUTPUT_FILTER) > $(MISC)/$(TARGET).$(@:b)_10.cmd
5279    @$(PERL) $(SOLARENV)/bin/macosx-dylib-link-list.pl \
5280        `cat $(MISC)/$(TARGET).$(@:b)_10.cmd` \
5281        >> $(MISC)/$(TARGET).$(@:b)_10.cmd
5282  .IF "$(VERBOSE)" == "TRUE"
5283    @cat $(MISC)/$(TARGET).$(@:b)_10.cmd
5284  .ENDIF
5285    @+source $(MISC)/$(TARGET).$(@:b)_10.cmd
5286    @$(PERL) $(SOLARENV)/bin/macosx-change-install-names.pl \
5287        shl $(SHL10RPATH) $@
5288.IF "$(SHL10CREATEJNILIB)"!=""
5289    @echo "Making:   " $(@:f).jnilib
5290    @macosx-create-bundle $@
5291.ENDIF          # "$(SHL10CREATEJNILIB)"!=""
5292.IF "$(UPDATER)"=="YES"
5293.IF "$(SHL10NOCHECK)"==""
5294    $(SOLARENV)/bin/checkdll.sh -L$(LB) -L$(SOLARLIBDIR) $(EXTRALIBPATHS10) $(SHL10TARGETN)
5295.ENDIF              # "$(SHL10NOCHECK)"!=""
5296.ENDIF
5297.ELSE           # "$(OS)"=="MACOSX"
5298    @-$(RM) $(MISC)/$(TARGET).$(@:b)_10.cmd
5299    @echo $(SHL10LINKER) $(SHL10LINKFLAGS) $(SHL10SONAME) $(LINKFLAGSSHL) $(SHL10VERSIONMAPPARA) -L$(PRJ)/$(ROUT)/lib $(SOLARLIB) $(STDSLO) $(SHL10OBJS:s/.obj/.o/) \
5300    $(SHL10VERSIONOBJ) -o $@ \
5301    `cat /dev/null $(SHL10LIBS) | tr -s " " "\n" | $(SED) s\#$(ROUT)\#$(PRJ)/$(ROUT)\#g` \
5302    $(SHL10STDLIBS) $(SHL10ARCHIVES) $(SHL10STDSHL) $(STDSHL10) $(LINKOUTPUT_FILTER) > $(MISC)/$(TARGET).$(@:b)_10.cmd
5303  .IF "$(VERBOSE)" == "TRUE"
5304    @cat $(MISC)/$(TARGET).$(@:b)_10.cmd
5305  .ENDIF
5306    @+source $(MISC)/$(TARGET).$(@:b)_10.cmd
5307.IF "$(UPDATER)"=="YES"
5308.IF "$(SHL10NOCHECK)"==""
5309    $(COMMAND_ECHO)-$(RM) $(SHL10TARGETN:d)check_$(SHL10TARGETN:f)
5310    $(COMMAND_ECHO)$(RENAME) $(SHL10TARGETN) $(SHL10TARGETN:d)check_$(SHL10TARGETN:f)
5311.IF "$(VERBOSE)"=="TRUE"
5312    $(COMMAND_ECHO)$(SOLARENV)/bin/checkdll.sh -L$(LB) -L$(SOLARLIBDIR) $(EXTRALIBPATHS10) $(SHL10TARGETN:d)check_$(SHL10TARGETN:f)
5313.ELSE
5314    $(COMMAND_ECHO)$(SOLARENV)/bin/checkdll.sh -L$(LB) -L$(SOLARLIBDIR) $(EXTRALIBPATHS10) -- -s $(SHL10TARGETN:d)check_$(SHL10TARGETN:f)
5315.ENDIF
5316.ENDIF              # "$(SHL10NOCHECK)"!=""
5317.ENDIF          # "$(UPDATER)"=="YES"
5318.ENDIF          # "$(OS)"=="MACOSX"
5319.IF "$(UNIXVERSIONNAMES)"!=""
5320    $(COMMAND_ECHO)$(RM) $(LB)/$(SHL10TARGETN:b)
5321    $(COMMAND_ECHO)cd $(LB) && ln -s $(SHL10TARGETN:f) $(SHL10TARGETN:b)
5322.ENDIF          # "$(UNIXVERSIONNAMES)"!=""
5323.IF "$(VERBOSE)" == "TRUE"
5324    @ls -l $@
5325.ENDIF
5326.ENDIF          # "$(GUI)" == "UNX"
5327
5328.IF "$(GUI)" == "OS2"
5329
5330.IF "$(SHL10DEFAULTRES)"!=""
5331    @+-$(RM) $(MISC)/$(SHL10DEFAULTRES:b).rc > $(NULLDEV)
5332.IF "$(SHL10ICON)" != ""
5333    @-+echo 1 ICON $(SHL10ICON) >> $(MISC)/$(SHL10DEFAULTRES:b).rc
5334.ENDIF
5335.IF "$(use_shl_versions)" != ""
5336.IF "$(SHL10ADD_VERINFO)"!=""
5337    @-+echo $(EMQ)#include $(EMQ)"$(SHL10ADD_VERINFO)$(EMQ)" >> $(MISC)/$(SHL10DEFAULTRES:b).rc
5338.ENDIF          # "$(SHL10ADD_VERINFO)"!=""
5339    @-+echo MENU 1 BEGIN END >> $(MISC)/$(SHL10DEFAULTRES:b).rc
5340#   @-+echo $(EMQ)RCDATA 1 { "Build string here" }$(EMQ) >> $(MISC)/$(SHL10DEFAULTRES:b).rc
5341.ENDIF          # "$(use_shl_versions)" != ""
5342# YD 04/07/06 seems null, confuses rc cli: -i $(SOLARTESDIR)
5343    $(COMMAND_ECHO)$(RC) -r -DOS2 $(INCLUDE) $(RCLINKFLAGS) $(MISC)/$(SHL10DEFAULTRES:b).rc
5344.ENDIF          # "$(SHL10DEFAULTRES)"!=""
5345
5346.IF "$(SHL10ALLRES)"!=""
5347    $(COMMAND_ECHO)+$(TYPE) $(SHL10ALLRES) > $(SHL10LINKRES)
5348.ENDIF          # "$(SHL10ALLRES)"!=""
5349
5350.IF "$(USE_DEFFILE)"!=""
5351
5352    $(COMMAND_ECHO)$(SHL10LINKER) $(SHL10LINKFLAGS) $(LINKFLAGSSHL) -o $@ \
5353        $(SHL10DEF) \
5354        $(STDOBJ) \
5355        -L$(LB) \
5356        -L$(SOLARVERSION)/$(INPATH)/lib \
5357        $(SHL10OBJS) $(SHL10VERSIONOBJ) \
5358        $(SHL10LIBS) \
5359        $(SHL10LINKRES) \
5360        $(SHL10STDLIBS) \
5361        $(SHL10STDSHL) $(STDSHL10)
5362
5363.ELSE           # "$(USE_DEFFILE)"!=""
5364
5365    $(COMMAND_ECHO)$(SHL10LINKER) $(SHL10LINKFLAGS)         \
5366        $(LINKFLAGSSHL) $(SHL10BASEX)       \
5367        $(SHL10STACK) -o $(SHL10TARGETN)    \
5368        $(SHL10DEF) \
5369        $(STDOBJ)                           \
5370        -L$(LB) \
5371        -L$(SOLARVERSION)/$(INPATH)/lib \
5372        $(SHL10OBJS) $(SHL10VERSIONOBJ) \
5373        $(SHL10LIBS) \
5374        $(SHL10LINKRES) \
5375        $(SHL10STDLIBS) \
5376        $(SHL10STDSHL) $(STDSHL10)
5377
5378.ENDIF          # "$(USE_DEFFILE)"!=""
5379
5380    $(COMMAND_ECHO)+$(IMPLIB) -p256 $(IMPLIBFLAGS) $(SHL10IMPLIBN) $@
5381    $(COMMAND_ECHO)+$(IMPLIB) -p256 $(IMPLIBFLAGS) $(LB)/$(SHL10TARGET).lib $@
5382
5383.IF "$(SHL10TARGET8)" != "$(SHL10TARGET)"
5384    $(COMMAND_ECHO)+$(COPY) $@ $(@:d)$(SHL10TARGET8).dll
5385.ENDIF
5386
5387.ENDIF          # "$(GUI)" == "OS2"
5388
5389.ENDIF          # "$(SHL10TARGETN)"!=""
5390
5391# unroll begin
5392
5393.IF "$(SHL1IMPLIBN)" != ""
5394
5395.IF "$(UPDATER)"=="YES"
5396USELIB1DEPN+=$(SHL1LIBS)
5397.ELSE
5398.ENDIF
5399
5400.IF "$(USE_DEFFILE)"!=""
5401USE_SHL1TARGET=$(SHL1TARGETN)
5402.ENDIF
5403
5404.IF "$(GUI)" != "UNX"
5405$(SHL1IMPLIBN): \
5406                    $(SHL1DEF) \
5407                    $(USE_SHL1TARGET) \
5408                    $(USELIB1DEPN) \
5409                    $(USELIBDEPN)
5410.ELSE
5411$(SHL1IMPLIBN): \
5412                    $(SHL1LIBS)
5413.ENDIF
5414    @echo "Making:   " $(@:f)
5415.IF "$(GUI)" == "WNT"
5416.IF "$(COM)"=="GCC"
5417    @echo no ImportLibs on mingw
5418    @-$(RM) $@
5419    @$(TOUCH) $@
5420.ELSE           # "$(COM)=="GCC"
5421# bei use_deffile implib von linker erstellt
5422.IF "$(USE_DEFFILE)"==""
5423    $(IMPLIB) $(IMPLIBFLAGS) @$(mktmp -out:$(SHL1IMPLIBN) \
5424    -def:$(SHL1DEF) )
5425.ELSE           # "$(USE_DEFFILE)==""
5426    @echo build of $(SHL1TARGETN) creates $@
5427    @$(TOUCH) $@
5428.ENDIF          # "$(USE_DEFFILE)==""
5429.ENDIF          # "$(COM)"=="GCC"
5430
5431.ELIF "$(GUI)" == "OS2"
5432
5433# touch creates an empty file, but this is not good for emxomfar, so
5434# create a dummy lib here
5435    $(COMMAND_ECHO)-$(LIBMGR) $(LIBFLAGS) $@ $(SHL1VERSIONOBJ)
5436    +@echo build of $(SHL1TARGETN) creates $@
5437
5438.ELSE
5439    @echo no ImportLibs on Mac and *ix
5440    @-$(RM) $@
5441    @$(TOUCH) $@
5442.ENDIF
5443.ENDIF
5444
5445# unroll begin
5446
5447.IF "$(SHL2IMPLIBN)" != ""
5448
5449.IF "$(UPDATER)"=="YES"
5450USELIB2DEPN+=$(SHL2LIBS)
5451.ELSE
5452.ENDIF
5453
5454.IF "$(USE_DEFFILE)"!=""
5455USE_SHL2TARGET=$(SHL2TARGETN)
5456.ENDIF
5457
5458.IF "$(GUI)" != "UNX"
5459$(SHL2IMPLIBN): \
5460                    $(SHL2DEF) \
5461                    $(USE_SHL2TARGET) \
5462                    $(USELIB2DEPN) \
5463                    $(USELIBDEPN)
5464.ELSE
5465$(SHL2IMPLIBN): \
5466                    $(SHL2LIBS)
5467.ENDIF
5468    @echo "Making:   " $(@:f)
5469.IF "$(GUI)" == "WNT"
5470.IF "$(COM)"=="GCC"
5471    @echo no ImportLibs on mingw
5472    @-$(RM) $@
5473    @$(TOUCH) $@
5474.ELSE           # "$(COM)=="GCC"
5475# bei use_deffile implib von linker erstellt
5476.IF "$(USE_DEFFILE)"==""
5477    $(IMPLIB) $(IMPLIBFLAGS) @$(mktmp -out:$(SHL2IMPLIBN) \
5478    -def:$(SHL2DEF) )
5479.ELSE           # "$(USE_DEFFILE)==""
5480    @echo build of $(SHL2TARGETN) creates $@
5481    @$(TOUCH) $@
5482.ENDIF          # "$(USE_DEFFILE)==""
5483.ENDIF          # "$(COM)"=="GCC"
5484
5485.ELIF "$(GUI)" == "OS2"
5486
5487# touch creates an empty file, but this is not good for emxomfar, so
5488# create a dummy lib here
5489    $(COMMAND_ECHO)-$(LIBMGR) $(LIBFLAGS) $@ $(SHL2VERSIONOBJ)
5490    +@echo build of $(SHL2TARGETN) creates $@
5491
5492.ELSE
5493    @echo no ImportLibs on Mac and *ix
5494    @-$(RM) $@
5495    @$(TOUCH) $@
5496.ENDIF
5497.ENDIF
5498
5499# unroll begin
5500
5501.IF "$(SHL3IMPLIBN)" != ""
5502
5503.IF "$(UPDATER)"=="YES"
5504USELIB3DEPN+=$(SHL3LIBS)
5505.ELSE
5506.ENDIF
5507
5508.IF "$(USE_DEFFILE)"!=""
5509USE_SHL3TARGET=$(SHL3TARGETN)
5510.ENDIF
5511
5512.IF "$(GUI)" != "UNX"
5513$(SHL3IMPLIBN): \
5514                    $(SHL3DEF) \
5515                    $(USE_SHL3TARGET) \
5516                    $(USELIB3DEPN) \
5517                    $(USELIBDEPN)
5518.ELSE
5519$(SHL3IMPLIBN): \
5520                    $(SHL3LIBS)
5521.ENDIF
5522    @echo "Making:   " $(@:f)
5523.IF "$(GUI)" == "WNT"
5524.IF "$(COM)"=="GCC"
5525    @echo no ImportLibs on mingw
5526    @-$(RM) $@
5527    @$(TOUCH) $@
5528.ELSE           # "$(COM)=="GCC"
5529# bei use_deffile implib von linker erstellt
5530.IF "$(USE_DEFFILE)"==""
5531    $(IMPLIB) $(IMPLIBFLAGS) @$(mktmp -out:$(SHL3IMPLIBN) \
5532    -def:$(SHL3DEF) )
5533.ELSE           # "$(USE_DEFFILE)==""
5534    @echo build of $(SHL3TARGETN) creates $@
5535    @$(TOUCH) $@
5536.ENDIF          # "$(USE_DEFFILE)==""
5537.ENDIF          # "$(COM)"=="GCC"
5538
5539.ELIF "$(GUI)" == "OS2"
5540
5541# touch creates an empty file, but this is not good for emxomfar, so
5542# create a dummy lib here
5543    $(COMMAND_ECHO)-$(LIBMGR) $(LIBFLAGS) $@ $(SHL3VERSIONOBJ)
5544    +@echo build of $(SHL3TARGETN) creates $@
5545
5546.ELSE
5547    @echo no ImportLibs on Mac and *ix
5548    @-$(RM) $@
5549    @$(TOUCH) $@
5550.ENDIF
5551.ENDIF
5552
5553# unroll begin
5554
5555.IF "$(SHL4IMPLIBN)" != ""
5556
5557.IF "$(UPDATER)"=="YES"
5558USELIB4DEPN+=$(SHL4LIBS)
5559.ELSE
5560.ENDIF
5561
5562.IF "$(USE_DEFFILE)"!=""
5563USE_SHL4TARGET=$(SHL4TARGETN)
5564.ENDIF
5565
5566.IF "$(GUI)" != "UNX"
5567$(SHL4IMPLIBN): \
5568                    $(SHL4DEF) \
5569                    $(USE_SHL4TARGET) \
5570                    $(USELIB4DEPN) \
5571                    $(USELIBDEPN)
5572.ELSE
5573$(SHL4IMPLIBN): \
5574                    $(SHL4LIBS)
5575.ENDIF
5576    @echo "Making:   " $(@:f)
5577.IF "$(GUI)" == "WNT"
5578.IF "$(COM)"=="GCC"
5579    @echo no ImportLibs on mingw
5580    @-$(RM) $@
5581    @$(TOUCH) $@
5582.ELSE           # "$(COM)=="GCC"
5583# bei use_deffile implib von linker erstellt
5584.IF "$(USE_DEFFILE)"==""
5585    $(IMPLIB) $(IMPLIBFLAGS) @$(mktmp -out:$(SHL4IMPLIBN) \
5586    -def:$(SHL4DEF) )
5587.ELSE           # "$(USE_DEFFILE)==""
5588    @echo build of $(SHL4TARGETN) creates $@
5589    @$(TOUCH) $@
5590.ENDIF          # "$(USE_DEFFILE)==""
5591.ENDIF          # "$(COM)"=="GCC"
5592
5593.ELIF "$(GUI)" == "OS2"
5594
5595# touch creates an empty file, but this is not good for emxomfar, so
5596# create a dummy lib here
5597    $(COMMAND_ECHO)-$(LIBMGR) $(LIBFLAGS) $@ $(SHL4VERSIONOBJ)
5598    +@echo build of $(SHL4TARGETN) creates $@
5599
5600.ELSE
5601    @echo no ImportLibs on Mac and *ix
5602    @-$(RM) $@
5603    @$(TOUCH) $@
5604.ENDIF
5605.ENDIF
5606
5607# unroll begin
5608
5609.IF "$(SHL5IMPLIBN)" != ""
5610
5611.IF "$(UPDATER)"=="YES"
5612USELIB5DEPN+=$(SHL5LIBS)
5613.ELSE
5614.ENDIF
5615
5616.IF "$(USE_DEFFILE)"!=""
5617USE_SHL5TARGET=$(SHL5TARGETN)
5618.ENDIF
5619
5620.IF "$(GUI)" != "UNX"
5621$(SHL5IMPLIBN): \
5622                    $(SHL5DEF) \
5623                    $(USE_SHL5TARGET) \
5624                    $(USELIB5DEPN) \
5625                    $(USELIBDEPN)
5626.ELSE
5627$(SHL5IMPLIBN): \
5628                    $(SHL5LIBS)
5629.ENDIF
5630    @echo "Making:   " $(@:f)
5631.IF "$(GUI)" == "WNT"
5632.IF "$(COM)"=="GCC"
5633    @echo no ImportLibs on mingw
5634    @-$(RM) $@
5635    @$(TOUCH) $@
5636.ELSE           # "$(COM)=="GCC"
5637# bei use_deffile implib von linker erstellt
5638.IF "$(USE_DEFFILE)"==""
5639    $(IMPLIB) $(IMPLIBFLAGS) @$(mktmp -out:$(SHL5IMPLIBN) \
5640    -def:$(SHL5DEF) )
5641.ELSE           # "$(USE_DEFFILE)==""
5642    @echo build of $(SHL5TARGETN) creates $@
5643    @$(TOUCH) $@
5644.ENDIF          # "$(USE_DEFFILE)==""
5645.ENDIF          # "$(COM)"=="GCC"
5646
5647.ELIF "$(GUI)" == "OS2"
5648
5649# touch creates an empty file, but this is not good for emxomfar, so
5650# create a dummy lib here
5651    $(COMMAND_ECHO)-$(LIBMGR) $(LIBFLAGS) $@ $(SHL5VERSIONOBJ)
5652    +@echo build of $(SHL5TARGETN) creates $@
5653
5654.ELSE
5655    @echo no ImportLibs on Mac and *ix
5656    @-$(RM) $@
5657    @$(TOUCH) $@
5658.ENDIF
5659.ENDIF
5660
5661# unroll begin
5662
5663.IF "$(SHL6IMPLIBN)" != ""
5664
5665.IF "$(UPDATER)"=="YES"
5666USELIB6DEPN+=$(SHL6LIBS)
5667.ELSE
5668.ENDIF
5669
5670.IF "$(USE_DEFFILE)"!=""
5671USE_SHL6TARGET=$(SHL6TARGETN)
5672.ENDIF
5673
5674.IF "$(GUI)" != "UNX"
5675$(SHL6IMPLIBN): \
5676                    $(SHL6DEF) \
5677                    $(USE_SHL6TARGET) \
5678                    $(USELIB6DEPN) \
5679                    $(USELIBDEPN)
5680.ELSE
5681$(SHL6IMPLIBN): \
5682                    $(SHL6LIBS)
5683.ENDIF
5684    @echo "Making:   " $(@:f)
5685.IF "$(GUI)" == "WNT"
5686.IF "$(COM)"=="GCC"
5687    @echo no ImportLibs on mingw
5688    @-$(RM) $@
5689    @$(TOUCH) $@
5690.ELSE           # "$(COM)=="GCC"
5691# bei use_deffile implib von linker erstellt
5692.IF "$(USE_DEFFILE)"==""
5693    $(IMPLIB) $(IMPLIBFLAGS) @$(mktmp -out:$(SHL6IMPLIBN) \
5694    -def:$(SHL6DEF) )
5695.ELSE           # "$(USE_DEFFILE)==""
5696    @echo build of $(SHL6TARGETN) creates $@
5697    @$(TOUCH) $@
5698.ENDIF          # "$(USE_DEFFILE)==""
5699.ENDIF          # "$(COM)"=="GCC"
5700
5701.ELIF "$(GUI)" == "OS2"
5702
5703# touch creates an empty file, but this is not good for emxomfar, so
5704# create a dummy lib here
5705    $(COMMAND_ECHO)-$(LIBMGR) $(LIBFLAGS) $@ $(SHL6VERSIONOBJ)
5706    +@echo build of $(SHL6TARGETN) creates $@
5707
5708.ELSE
5709    @echo no ImportLibs on Mac and *ix
5710    @-$(RM) $@
5711    @$(TOUCH) $@
5712.ENDIF
5713.ENDIF
5714
5715# unroll begin
5716
5717.IF "$(SHL7IMPLIBN)" != ""
5718
5719.IF "$(UPDATER)"=="YES"
5720USELIB7DEPN+=$(SHL7LIBS)
5721.ELSE
5722.ENDIF
5723
5724.IF "$(USE_DEFFILE)"!=""
5725USE_SHL7TARGET=$(SHL7TARGETN)
5726.ENDIF
5727
5728.IF "$(GUI)" != "UNX"
5729$(SHL7IMPLIBN): \
5730                    $(SHL7DEF) \
5731                    $(USE_SHL7TARGET) \
5732                    $(USELIB7DEPN) \
5733                    $(USELIBDEPN)
5734.ELSE
5735$(SHL7IMPLIBN): \
5736                    $(SHL7LIBS)
5737.ENDIF
5738    @echo "Making:   " $(@:f)
5739.IF "$(GUI)" == "WNT"
5740.IF "$(COM)"=="GCC"
5741    @echo no ImportLibs on mingw
5742    @-$(RM) $@
5743    @$(TOUCH) $@
5744.ELSE           # "$(COM)=="GCC"
5745# bei use_deffile implib von linker erstellt
5746.IF "$(USE_DEFFILE)"==""
5747    $(IMPLIB) $(IMPLIBFLAGS) @$(mktmp -out:$(SHL7IMPLIBN) \
5748    -def:$(SHL7DEF) )
5749.ELSE           # "$(USE_DEFFILE)==""
5750    @echo build of $(SHL7TARGETN) creates $@
5751    @$(TOUCH) $@
5752.ENDIF          # "$(USE_DEFFILE)==""
5753.ENDIF          # "$(COM)"=="GCC"
5754
5755.ELIF "$(GUI)" == "OS2"
5756
5757# touch creates an empty file, but this is not good for emxomfar, so
5758# create a dummy lib here
5759    $(COMMAND_ECHO)-$(LIBMGR) $(LIBFLAGS) $@ $(SHL7VERSIONOBJ)
5760    +@echo build of $(SHL7TARGETN) creates $@
5761
5762.ELSE
5763    @echo no ImportLibs on Mac and *ix
5764    @-$(RM) $@
5765    @$(TOUCH) $@
5766.ENDIF
5767.ENDIF
5768
5769# unroll begin
5770
5771.IF "$(SHL8IMPLIBN)" != ""
5772
5773.IF "$(UPDATER)"=="YES"
5774USELIB8DEPN+=$(SHL8LIBS)
5775.ELSE
5776.ENDIF
5777
5778.IF "$(USE_DEFFILE)"!=""
5779USE_SHL8TARGET=$(SHL8TARGETN)
5780.ENDIF
5781
5782.IF "$(GUI)" != "UNX"
5783$(SHL8IMPLIBN): \
5784                    $(SHL8DEF) \
5785                    $(USE_SHL8TARGET) \
5786                    $(USELIB8DEPN) \
5787                    $(USELIBDEPN)
5788.ELSE
5789$(SHL8IMPLIBN): \
5790                    $(SHL8LIBS)
5791.ENDIF
5792    @echo "Making:   " $(@:f)
5793.IF "$(GUI)" == "WNT"
5794.IF "$(COM)"=="GCC"
5795    @echo no ImportLibs on mingw
5796    @-$(RM) $@
5797    @$(TOUCH) $@
5798.ELSE           # "$(COM)=="GCC"
5799# bei use_deffile implib von linker erstellt
5800.IF "$(USE_DEFFILE)"==""
5801    $(IMPLIB) $(IMPLIBFLAGS) @$(mktmp -out:$(SHL8IMPLIBN) \
5802    -def:$(SHL8DEF) )
5803.ELSE           # "$(USE_DEFFILE)==""
5804    @echo build of $(SHL8TARGETN) creates $@
5805    @$(TOUCH) $@
5806.ENDIF          # "$(USE_DEFFILE)==""
5807.ENDIF          # "$(COM)"=="GCC"
5808
5809.ELIF "$(GUI)" == "OS2"
5810
5811# touch creates an empty file, but this is not good for emxomfar, so
5812# create a dummy lib here
5813    $(COMMAND_ECHO)-$(LIBMGR) $(LIBFLAGS) $@ $(SHL8VERSIONOBJ)
5814    +@echo build of $(SHL8TARGETN) creates $@
5815
5816.ELSE
5817    @echo no ImportLibs on Mac and *ix
5818    @-$(RM) $@
5819    @$(TOUCH) $@
5820.ENDIF
5821.ENDIF
5822
5823# unroll begin
5824
5825.IF "$(SHL9IMPLIBN)" != ""
5826
5827.IF "$(UPDATER)"=="YES"
5828USELIB9DEPN+=$(SHL9LIBS)
5829.ELSE
5830.ENDIF
5831
5832.IF "$(USE_DEFFILE)"!=""
5833USE_SHL9TARGET=$(SHL9TARGETN)
5834.ENDIF
5835
5836.IF "$(GUI)" != "UNX"
5837$(SHL9IMPLIBN): \
5838                    $(SHL9DEF) \
5839                    $(USE_SHL9TARGET) \
5840                    $(USELIB9DEPN) \
5841                    $(USELIBDEPN)
5842.ELSE
5843$(SHL9IMPLIBN): \
5844                    $(SHL9LIBS)
5845.ENDIF
5846    @echo "Making:   " $(@:f)
5847.IF "$(GUI)" == "WNT"
5848.IF "$(COM)"=="GCC"
5849    @echo no ImportLibs on mingw
5850    @-$(RM) $@
5851    @$(TOUCH) $@
5852.ELSE           # "$(COM)=="GCC"
5853# bei use_deffile implib von linker erstellt
5854.IF "$(USE_DEFFILE)"==""
5855    $(IMPLIB) $(IMPLIBFLAGS) @$(mktmp -out:$(SHL9IMPLIBN) \
5856    -def:$(SHL9DEF) )
5857.ELSE           # "$(USE_DEFFILE)==""
5858    @echo build of $(SHL9TARGETN) creates $@
5859    @$(TOUCH) $@
5860.ENDIF          # "$(USE_DEFFILE)==""
5861.ENDIF          # "$(COM)"=="GCC"
5862
5863.ELIF "$(GUI)" == "OS2"
5864
5865# touch creates an empty file, but this is not good for emxomfar, so
5866# create a dummy lib here
5867    $(COMMAND_ECHO)-$(LIBMGR) $(LIBFLAGS) $@ $(SHL9VERSIONOBJ)
5868    +@echo build of $(SHL9TARGETN) creates $@
5869
5870.ELSE
5871    @echo no ImportLibs on Mac and *ix
5872    @-$(RM) $@
5873    @$(TOUCH) $@
5874.ENDIF
5875.ENDIF
5876
5877# unroll begin
5878
5879.IF "$(SHL10IMPLIBN)" != ""
5880
5881.IF "$(UPDATER)"=="YES"
5882USELIB10DEPN+=$(SHL10LIBS)
5883.ELSE
5884.ENDIF
5885
5886.IF "$(USE_DEFFILE)"!=""
5887USE_SHL10TARGET=$(SHL10TARGETN)
5888.ENDIF
5889
5890.IF "$(GUI)" != "UNX"
5891$(SHL10IMPLIBN):    \
5892                    $(SHL10DEF) \
5893                    $(USE_SHL10TARGET) \
5894                    $(USELIB10DEPN) \
5895                    $(USELIBDEPN)
5896.ELSE
5897$(SHL10IMPLIBN):    \
5898                    $(SHL10LIBS)
5899.ENDIF
5900    @echo "Making:   " $(@:f)
5901.IF "$(GUI)" == "WNT"
5902.IF "$(COM)"=="GCC"
5903    @echo no ImportLibs on mingw
5904    @-$(RM) $@
5905    @$(TOUCH) $@
5906.ELSE           # "$(COM)=="GCC"
5907# bei use_deffile implib von linker erstellt
5908.IF "$(USE_DEFFILE)"==""
5909    $(IMPLIB) $(IMPLIBFLAGS) @$(mktmp -out:$(SHL10IMPLIBN) \
5910    -def:$(SHL10DEF) )
5911.ELSE           # "$(USE_DEFFILE)==""
5912    @echo build of $(SHL10TARGETN) creates $@
5913    @$(TOUCH) $@
5914.ENDIF          # "$(USE_DEFFILE)==""
5915.ENDIF          # "$(COM)"=="GCC"
5916
5917.ELIF "$(GUI)" == "OS2"
5918
5919# touch creates an empty file, but this is not good for emxomfar, so
5920# create a dummy lib here
5921    $(COMMAND_ECHO)-$(LIBMGR) $(LIBFLAGS) $@ $(SHL10VERSIONOBJ)
5922    +@echo build of $(SHL10TARGETN) creates $@
5923
5924.ELSE
5925    @echo no ImportLibs on Mac and *ix
5926    @-$(RM) $@
5927    @$(TOUCH) $@
5928.ENDIF
5929.ENDIF
5930
5931