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