xref: /trunk/main/solenv/inc/_tg_app.mk (revision 8951e3903fc35cf6524a84577b8a63037b1223ff)
1# unroll begin
2
3.IF "$(GUI)" == "OS2" && "$(TARGETTYPE)" == "GUI"
4APP1DEF = $(MISC)/$(APP1TARGET).def
5.ENDIF
6
7.IF "$(APP1LINKTYPE)" != ""
8#must be either STATIC or SHARED
9APP1LINKTYPEFLAG=$(APPLINK$(APP1LINKTYPE))
10.ENDIF
11
12# decide how to link
13.IF "$(APP1CODETYPE)"=="C"
14APP1LINKER=$(LINKC)
15APP1STDLIB=$(subst,CPPRUNTIME, $(STDLIB))
16APP1LINKFLAGS+=$(LINKCFLAGS)
17.ELSE           # "$(APP1CODETYPE)"=="C"
18APP1LINKER=$(LINK)
19APP1STDLIB=$(subst,CPPRUNTIME,$(STDLIBCPP) $(STDLIB))
20APP1LINKFLAGS+=$(LINKFLAGS)
21.ENDIF          # "$(APP1CODETYPE)"=="C"
22
23APP1RPATH*=OOO
24LINKFLAGSRUNPATH_$(APP1RPATH)*=/ERROR:/Bad_APP1RPATH_value
25.IF "$(OS)" != "MACOSX"
26APP1LINKFLAGS+=$(LINKFLAGSRUNPATH_$(APP1RPATH))
27.ENDIF
28
29.IF "$(APP1STACK)" != ""
30.IF "$(LINKFLAGSTACK)" != ""
31APP1STACKN=$(LINKFLAGSTACK)$(APP1STACK)
32.ENDIF
33.ELSE
34APP1STACKN=
35.ENDIF
36
37.IF "$(APP1NOSAL)"==""
38.IF "$(TARGETTYPE)" == "GUI"
39APP1OBJS+= $(STDOBJVCL)
40.ENDIF
41.ENDIF
42
43.IF "$(GUI)$(COM)" == "WNTGCC"
44APP1RESO=
45.IF "$(APP1LINKRES)" != "" || "$(APP1RES)" != ""
46APP1RESO=$(MISC)/$(APP1TARGET:b)_res.o
47.ENDIF
48.ENDIF
49
50.IF "$(GUI)" == "UNX"
51APP1DEPN+:=$(APP1DEPNU)
52USE_APP1DEF=
53.ENDIF
54
55.IF "$(APP1TARGETN)"!=""
56
57.IF "$(APP1PRODUCTNAME)"!=""
58APP1PRODUCTDEF+:=-DPRODUCT_NAME=\"$(APP1PRODUCTNAME)\"
59.ENDIF          # "$(APP1PRODUCTNAME)"!=""
60
61.IF "$(linkinc)"!=""
62.IF "$(GUI)"=="WNT" || "$(GUI)"=="OS2"
63.IF "$(APP1LIBS)"!=""
64$(MISC)/$(APP1TARGET)_linkinc.ls .PHONY:
65    @@-$(RM) $@
66    sed -f $(SOLARENV)/bin/chrel.sed $(foreach,i,$(APP1LIBS) $(i:s/.lib/.lin/)) >> $@
67.ENDIF          #"$(APP1LIBS)"!=""
68.ENDIF
69
70LINKINCTARGETS+=$(MISC)/$(APP1TARGETN:b)_linkinc.ls
71$(APP1TARGETN) : $(LINKINCTARGETS)
72.ENDIF          # "$(linkinc)"!=""
73
74# Allow for target specific LIBSALCPPRT override
75APP1LIBSALCPPRT*=$(LIBSALCPPRT)
76
77$(APP1TARGETN): $(APP1OBJS) $(APP1LIBS) \
78    $(APP1RES) \
79    $(APP1ICON) $(APP1DEPN) $(USE_APP1DEF)
80    @echo "Making:   " $(@:f)
81.IF "$(GUI)"=="UNX"
82.IF "$(OS)"=="MACOSX"
83    @echo unx
84    @-$(RM) $(MISC)/$(@:b).list
85    @-$(RM) $(MISC)/$(TARGET).$(@:b)_1.cmd
86    @-$(RM) $(MISC)/$(@:b).strip
87    @echo $(STDSLO) $(APP1OBJS:s/.obj/.o/) \
88    `cat /dev/null $(APP1LIBS) | sed s\#$(ROUT)\#$(OUT)\#g` | tr -s " " "\n" > $(MISC)/$(@:b).list
89    @echo -n $(APP1LINKER) $(APP1LINKFLAGS) $(LINKFLAGSAPP) -L$(PRJ)/$(INPATH)/lib $(SOLARLIB) -o $@ \
90    $(APP1LINKTYPEFLAG) $(APP1STDLIBS) $(APP1STDLIB) $(STDLIB1) -filelist $(MISC)/$(@:b).list > $(MISC)/$(TARGET).$(@:b)_1.cmd
91    @$(PERL) $(SOLARENV)/bin/macosx-dylib-link-list.pl \
92        `cat $(MISC)/$(TARGET).$(@:b)_1.cmd` \
93        >> $(MISC)/$(TARGET).$(@:b)_1.cmd
94  .IF "$(VERBOSE)" == "TRUE"
95    @cat $(MISC)/$(TARGET).$(@:b)_1.cmd
96  .ENDIF
97    @+source $(MISC)/$(TARGET).$(@:b)_1.cmd
98# Need to strip __objcInit symbol to avoid duplicate symbols when loading
99# libraries at runtime
100    @-nm $@ | grep -v ' U ' | $(AWK) '{ print $$NF }' | grep -F -x '__objcInit' > $(MISC)/$(@:b).strip
101    @strip -i -R $(MISC)/$(@:b).strip -X $@
102    @ls -l $@
103    @$(PERL) $(SOLARENV)/bin/macosx-change-install-names.pl \
104        app $(APP1RPATH) $@
105.IF "$(TARGETTYPE)"=="GUI"
106    @echo "Making:   " $(@:f).app
107    @macosx-create-bundle $@
108.ENDIF      # "$(TARGETTYPE)"=="GUI"
109.ELSE       # "$(OS)"=="MACOSX"
110    @echo unx
111    @-$(RM) $(MISC)/$(TARGET).$(@:b)_1.cmd
112    @echo $(APP1LINKER) $(APP1LINKFLAGS) $(LINKFLAGSAPP) -L$(PRJ)/$(INPATH)/lib $(SOLARLIB) $(STDSLO) \
113    $(APP1OBJS:s/.obj/.o/) '\' >  $(MISC)/$(TARGET).$(@:b)_1.cmd
114    @cat $(mktmp /dev/null $(APP1LIBS)) | xargs -n 1 cat | sed s\#$(ROUT)\#$(OUT)\#g | sed 's#$$# \\#'  >> $(MISC)/$(TARGET).$(@:b)_1.cmd
115    @echo $(APP1LINKTYPEFLAG) $(APP1LIBSALCPPRT) $(APP1STDLIBS) $(APP1STDLIB) $(STDLIB1) -o $@ >> $(MISC)/$(TARGET).$(@:b)_1.cmd
116  .IF "$(VERBOSE)" == "TRUE"
117    @cat $(MISC)/$(TARGET).$(@:b)_1.cmd
118  .ENDIF
119    @+source $(MISC)/$(TARGET).$(@:b)_1.cmd
120  .IF "$(VERBOSE)" == "TRUE"
121    @ls -l $@
122  .ENDIF
123.ENDIF      # "$(OS)"=="MACOSX"
124.ENDIF
125.IF "$(GUI)" == "WNT"
126    @@-$(MKDIR) $(@:d:d)
127.IF "$(APP1LINKRES)" != ""
128    @@-$(RM) $(MISC)/$(APP1LINKRES:b).rc
129.IF "$(APP1ICON)" != ""
130    @-echo 1 ICON $(EMQ)"$(APP1ICON:s/\/\\/)$(EMQ)" >> $(MISC)/$(APP1LINKRES:b).rc
131.ENDIF      # "$(APP1ICON)" != ""
132.IF "$(APP1VERINFO)" != ""
133    @-echo $(EMQ)#define VERVARIANT $(BUILD) >> $(MISC)/$(APP1LINKRES:b).rc
134    @-echo $(EMQ)#include  $(EMQ)"$(APP1VERINFO)$(EMQ)" >> $(MISC)/$(APP1LINKRES:b).rc
135.ENDIF      # "$(APP1VERINFO)" != ""
136    $(COMMAND_ECHO)$(RC) -DWIN32 $(APP1PRODUCTDEF) -I$(SOLARRESDIR) $(INCLUDE) $(RCLINKFLAGS) $(MISC)/$(APP1LINKRES:b).rc
137.ENDIF          # "$(APP1LINKRES)" != ""
138.IF "$(COM)" == "GCC"
139    @echo mingw
140.IF "$(APP1LINKRES)" != "" || "$(APP1RES)" != ""
141    @cat $(APP1LINKRES) $(subst,/res/,/res{$(subst,$(BIN), $(@:d))} $(APP1RES)) >  $(MISC)/$(@:b)_all.res
142    windres $(MISC)/$(@:b)_all.res $(APP1RESO)
143.ENDIF
144    @echo $(LINK) $(LINKFLAGS) $(LINKFLAGSAPP) $(MINGWSSTDOBJ) -L$(PRJ)/$(INPATH)/lib $(SOLARLIB) $(STDSLO) \
145        $(APP1BASEX) $(APP1STACKN) -o $@ $(APP1OBJS) \
146        -Wl,-Map,$(MISC)/$(@:b).map $(STDOBJ) $(APP1RESO) \
147        `$(TYPE) /dev/null $(APP1LIBS) | sed s#$(ROUT)#$(OUT)#g` \
148        $(APP_LINKTYPE) $(APP1LIBSALCPPRT) \
149        -Wl,--start-group $(APP1STDLIBS) -Wl,--end-group $(APP1STDLIB) \
150        $(STDLIB1) $(MINGWSSTDENDOBJ) > $(MISC)/$(TARGET).$(@:b)_1.cmd
151  # need this empty line, else dmake somehow gets confused by the .IFs and .ENDIFs
152  .IF "$(VERBOSE)" == "TRUE"
153    @$(TYPE)  $(MISC)/$(TARGET).$(@:b)_1.cmd
154  .ENDIF
155    @+source $(MISC)/$(TARGET).$(@:b)_1.cmd
156    @ls -l $@
157.ELSE   # "$(COM)" == "GCC"
158.IF "$(linkinc)" == ""
159    $(COMMAND_ECHO)$(APP1LINKER) @$(mktmp \
160        $(APP1LINKFLAGS) \
161        $(LINKFLAGSAPP) $(APP1BASEX) \
162        $(APP1STACKN) \
163        -out:$@ \
164        -map:$(MISC)/{$(subst,/,_ $(APP1TARGET)).map} \
165        $(STDOBJ) \
166        $(APP1LINKRES) \
167        $(APP1RES) \
168        $(APP1OBJS) \
169        $(APP1LIBS) \
170        $(APP1STDLIBS) \
171        $(APP1STDLIB) $(STDLIB1) \
172        )
173    @-echo linking $@.manifest ...
174.IF "$(VISTA_MANIFEST)"!=""
175    $(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(MT) $(MTFLAGS) -manifest $@.manifest -manifest $(TRUSTED_MANIFEST_LOCATION)/trustedinfo.manifest -out:$@.tmanifest$(EMQ) $(FI)
176    $(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(MT) $(MTFLAGS) -manifest $@.tmanifest -outputresource:$@$(EMQ);1 $(FI)
177.ELSE
178    $(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(MT) $(MTFLAGS) -manifest $@.manifest -outputresource:$@$(EMQ);1 $(FI)
179.ENDIF # "$(VISTA_MANIFEST)"!=""
180    $(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(RM:s/+//) $@.manifest $(FI)
181    $(COMMAND_ECHO)$(IFEXIST) $@.tmanifest $(THEN) $(RM:s/+//) $@.tmanifest $(FI)
182.ELSE
183        $(COMMAND_ECHO)-$(RM) $(MISC)\$(APP1TARGET).lnk
184        $(COMMAND_ECHO)-$(RM) $(MISC)\$(APP1TARGET).lst
185        $(COMMAND_ECHO)-$(RM) $(MISC)\linkobj.lst
186        for %_i in ($(MISC)\*.obj) do type %_i >> $(MISC)\linkobj.lst
187    type $(mktmp,$(MISC)\$(APP1TARGET).lst
188        $(APP1LINKFLAGS) \
189        $(LINKFLAGSAPP) $(APP1BASEX) \
190        $(APP1STACKN) \
191        -out:$@ \
192        $(STDOBJ) \
193        $(APP1LINKRES) \
194        $(APP1RES) \
195        $(APP1OBJS) \
196        $(APP1LIBS) \
197        $(APP1STDLIBS) \
198        $(APP1STDLIB) $(STDLIB1))
199        $(COMMAND_ECHO)$(SED)$(SED) -e 's/\(\.\.\\\)\{2,4\}/..\\/g' $(MISC)\$(APP1TARGETN:b)_linkobj.lst >> $(MISC)\$(APP1TARGET).lst
200        $(COMMAND_ECHO)$(SED)$(IFEXIST) $(MISC)/$(APP1TARGET).lst $(THEN) type $(MISC)/$(APP1TARGET).lst  >> $(MISC)/$(APP1TARGET).lnk $(FI)
201        $(COMMAND_ECHO)$(SED)$(APP1LINKER) @$(MISC)\$(APP1TARGET).lnk
202.ENDIF      # "$(linkinc)" == ""
203.ENDIF      # "$(COM)" == "GCC"
204.IF "$(APP1TARGET)" == "loader"
205    $(COMMAND_ECHO)$(PERL) loader.pl $@
206    $(COMMAND_ECHO)$(TYPE) $(@) $(@:d)unloader.exe > $(@:d)_new.exe
207    $(COMMAND_ECHO)$(RM) $@
208    $(COMMAND_ECHO)$(RENAME) $(@:d)_new.exe $(@:d)loader.exe
209.ENDIF          # "$(TARGET)" == "setup"
210
211.ENDIF          # "$(GUI)" == "WNT"
212
213.IF "$(GUI)" == "OS2"
214    @+-$(MKDIR) $(@:d:d) > $(NULLDEV)
215.IF "$(APP1LINKRES)" != ""
216    @+-$(RM) $(MISC)/$(APP1LINKRES:b).rc > $(NULLDEV)
217.IF "$(APP1ICON)" != ""
218    @-+echo ICON 1 $(EMQ)"$(APP1ICON:s#/#\\\\#)$(EMQ)" >> $(MISC)$/$(APP1LINKRES:b).rc
219.ENDIF      # "$(APP1ICON)" != ""
220.IF "$(APP1VERINFO)" != ""
221    @-+echo $(EMQ)#define VERVARIANT    $(BUILD) >> $(MISC)/$(APP1LINKRES:b).rc
222    @-+echo $(EMQ)#include  $(EMQ)"$(APP1VERINFO)$(EMQ)" >> $(MISC)/$(APP1LINKRES:b).rc
223.ENDIF      # "$(APP1VERINFO)" != ""
224    $(COMMAND_ECHO)$(RC) -r -DOS2 $(APP1PRODUCTDEF) -I$(SOLARRESDIR) $(INCLUDE) $(RCLINKFLAGS) $(MISC)/$(APP1LINKRES:b).rc
225.ENDIF          # "$(APP1LINKRES)" != ""
226
227.IF "$(TARGETTYPE)" == "GUI"
228    @echo NAME $(APP1TARGET) WINDOWAPI > $(MISC)/$(APP1TARGET).def
229.ENDIF
230
231    $(COMMAND_ECHO)$(APP1LINKER) -v \
232        $(APP1LINKFLAGS) \
233        $(LINKFLAGSAPP) $(APP1BASEX) \
234        $(APP1STACKN) \
235        -o $@ \
236        -Zmap -L$(LB) \
237        -L$(SOLARVERSION)/$(INPATH)/lib \
238        $(STDOBJ) \
239        $(APP1LINKRES) \
240        $(APP1RES) \
241        $(APP1DEF) \
242        $(APP1OBJS) \
243        $(APP1LIBS) \
244        $(APP1STDLIBS) \
245        $(APP1STDLIB) $(STDLIB1)
246
247
248.IF "$(APP1TARGET)" == "loader"
249    $(COMMAND_ECHO)+$(PERL) loader.pl $@
250    $(COMMAND_ECHO)+$(TYPE) $(@) $(@:d)unloader.exe > $(@:d)_new.exe
251    $(COMMAND_ECHO)+$(RM) $@
252    $(COMMAND_ECHO)+$(RENAME) $(@:d)_new.exe $(@:d)loader.exe
253.ENDIF          # "$(TARGET)" == "setup"
254
255.ENDIF          # "$(GUI)" == "OS2"
256
257.ENDIF          # "$(APP1TARGETN)"!=""
258
259
260# Instruction for linking
261# unroll begin
262
263.IF "$(GUI)" == "OS2" && "$(TARGETTYPE)" == "GUI"
264APP2DEF = $(MISC)/$(APP2TARGET).def
265.ENDIF
266
267.IF "$(APP2LINKTYPE)" != ""
268#must be either STATIC or SHARED
269APP2LINKTYPEFLAG=$(APPLINK$(APP2LINKTYPE))
270.ENDIF
271
272# decide how to link
273.IF "$(APP2CODETYPE)"=="C"
274APP2LINKER=$(LINKC)
275APP2STDLIB=$(subst,CPPRUNTIME, $(STDLIB))
276APP2LINKFLAGS+=$(LINKCFLAGS)
277.ELSE           # "$(APP2CODETYPE)"=="C"
278APP2LINKER=$(LINK)
279APP2STDLIB=$(subst,CPPRUNTIME,$(STDLIBCPP) $(STDLIB))
280APP2LINKFLAGS+=$(LINKFLAGS)
281.ENDIF          # "$(APP2CODETYPE)"=="C"
282
283APP2RPATH*=OOO
284LINKFLAGSRUNPATH_$(APP2RPATH)*=/ERROR:/Bad_APP2RPATH_value
285.IF "$(OS)" != "MACOSX"
286APP2LINKFLAGS+=$(LINKFLAGSRUNPATH_$(APP2RPATH))
287.ENDIF
288
289.IF "$(APP2STACK)" != ""
290.IF "$(LINKFLAGSTACK)" != ""
291APP2STACKN=$(LINKFLAGSTACK)$(APP2STACK)
292.ENDIF
293.ELSE
294APP2STACKN=
295.ENDIF
296
297.IF "$(APP2NOSAL)"==""
298.IF "$(TARGETTYPE)" == "GUI"
299APP2OBJS+= $(STDOBJVCL)
300.ENDIF
301.ENDIF
302
303.IF "$(GUI)$(COM)" == "WNTGCC"
304APP2RESO=
305.IF "$(APP2LINKRES)" != "" || "$(APP2RES)" != ""
306APP2RESO=$(MISC)/$(APP2TARGET:b)_res.o
307.ENDIF
308.ENDIF
309
310.IF "$(GUI)" == "UNX"
311APP2DEPN+:=$(APP2DEPNU)
312USE_APP2DEF=
313.ENDIF
314
315.IF "$(APP2TARGETN)"!=""
316
317.IF "$(APP2PRODUCTNAME)"!=""
318APP2PRODUCTDEF+:=-DPRODUCT_NAME=\"$(APP2PRODUCTNAME)\"
319.ENDIF          # "$(APP2PRODUCTNAME)"!=""
320
321.IF "$(linkinc)"!=""
322.IF "$(GUI)"=="WNT" || "$(GUI)"=="OS2"
323.IF "$(APP2LIBS)"!=""
324$(MISC)/$(APP2TARGET)_linkinc.ls .PHONY:
325    @@-$(RM) $@
326    sed -f $(SOLARENV)/bin/chrel.sed $(foreach,i,$(APP2LIBS) $(i:s/.lib/.lin/)) >> $@
327.ENDIF          #"$(APP2LIBS)"!=""
328.ENDIF
329
330LINKINCTARGETS+=$(MISC)/$(APP2TARGETN:b)_linkinc.ls
331$(APP2TARGETN) : $(LINKINCTARGETS)
332.ENDIF          # "$(linkinc)"!=""
333
334# Allow for target specific LIBSALCPPRT override
335APP2LIBSALCPPRT*=$(LIBSALCPPRT)
336
337$(APP2TARGETN): $(APP2OBJS) $(APP2LIBS) \
338    $(APP2RES) \
339    $(APP2ICON) $(APP2DEPN) $(USE_APP2DEF)
340    @echo "Making:   " $(@:f)
341.IF "$(GUI)"=="UNX"
342.IF "$(OS)"=="MACOSX"
343    @echo unx
344    @-$(RM) $(MISC)/$(@:b).list
345    @-$(RM) $(MISC)/$(TARGET).$(@:b)_2.cmd
346    @-$(RM) $(MISC)/$(@:b).strip
347    @echo $(STDSLO) $(APP2OBJS:s/.obj/.o/) \
348    `cat /dev/null $(APP2LIBS) | sed s\#$(ROUT)\#$(OUT)\#g` | tr -s " " "\n" > $(MISC)/$(@:b).list
349    @echo -n $(APP2LINKER) $(APP2LINKFLAGS) $(LINKFLAGSAPP) -L$(PRJ)/$(INPATH)/lib $(SOLARLIB) -o $@ \
350    $(APP2LINKTYPEFLAG) $(APP2STDLIBS) $(APP2STDLIB) $(STDLIB2) -filelist $(MISC)/$(@:b).list > $(MISC)/$(TARGET).$(@:b)_2.cmd
351    @$(PERL) $(SOLARENV)/bin/macosx-dylib-link-list.pl \
352        `cat $(MISC)/$(TARGET).$(@:b)_2.cmd` \
353        >> $(MISC)/$(TARGET).$(@:b)_2.cmd
354  .IF "$(VERBOSE)" == "TRUE"
355    @cat $(MISC)/$(TARGET).$(@:b)_2.cmd
356  .ENDIF
357    @+source $(MISC)/$(TARGET).$(@:b)_2.cmd
358# Need to strip __objcInit symbol to avoid duplicate symbols when loading
359# libraries at runtime
360    @-nm $@ | grep -v ' U ' | $(AWK) '{ print $$NF }' | grep -F -x '__objcInit' > $(MISC)/$(@:b).strip
361    @strip -i -R $(MISC)/$(@:b).strip -X $@
362    @ls -l $@
363    @$(PERL) $(SOLARENV)/bin/macosx-change-install-names.pl \
364        app $(APP2RPATH) $@
365.IF "$(TARGETTYPE)"=="GUI"
366    @echo "Making:   " $(@:f).app
367    @macosx-create-bundle $@
368.ENDIF      # "$(TARGETTYPE)"=="GUI"
369.ELSE       # "$(OS)"=="MACOSX"
370    @echo unx
371    @-$(RM) $(MISC)/$(TARGET).$(@:b)_2.cmd
372    @echo $(APP2LINKER) $(APP2LINKFLAGS) $(LINKFLAGSAPP) -L$(PRJ)/$(INPATH)/lib $(SOLARLIB) $(STDSLO) \
373    $(APP2OBJS:s/.obj/.o/) '\' >  $(MISC)/$(TARGET).$(@:b)_2.cmd
374    @cat $(mktmp /dev/null $(APP2LIBS)) | xargs -n 1 cat | sed s\#$(ROUT)\#$(OUT)\#g | sed 's#$$# \\#'  >> $(MISC)/$(TARGET).$(@:b)_2.cmd
375    @echo $(APP2LINKTYPEFLAG) $(APP2LIBSALCPPRT) $(APP2STDLIBS) $(APP2STDLIB) $(STDLIB2) -o $@ >> $(MISC)/$(TARGET).$(@:b)_2.cmd
376  .IF "$(VERBOSE)" == "TRUE"
377    @cat $(MISC)/$(TARGET).$(@:b)_2.cmd
378  .ENDIF
379    @+source $(MISC)/$(TARGET).$(@:b)_2.cmd
380  .IF "$(VERBOSE)" == "TRUE"
381    @ls -l $@
382  .ENDIF
383.ENDIF      # "$(OS)"=="MACOSX"
384.ENDIF
385.IF "$(GUI)" == "WNT"
386    @@-$(MKDIR) $(@:d:d)
387.IF "$(APP2LINKRES)" != ""
388    @@-$(RM) $(MISC)/$(APP2LINKRES:b).rc
389.IF "$(APP2ICON)" != ""
390    @-echo 1 ICON $(EMQ)"$(APP2ICON:s/\/\\/)$(EMQ)" >> $(MISC)/$(APP2LINKRES:b).rc
391.ENDIF      # "$(APP2ICON)" != ""
392.IF "$(APP2VERINFO)" != ""
393    @-echo $(EMQ)#define VERVARIANT $(BUILD) >> $(MISC)/$(APP2LINKRES:b).rc
394    @-echo $(EMQ)#include  $(EMQ)"$(APP2VERINFO)$(EMQ)" >> $(MISC)/$(APP2LINKRES:b).rc
395.ENDIF      # "$(APP2VERINFO)" != ""
396    $(COMMAND_ECHO)$(RC) -DWIN32 $(APP2PRODUCTDEF) -I$(SOLARRESDIR) $(INCLUDE) $(RCLINKFLAGS) $(MISC)/$(APP2LINKRES:b).rc
397.ENDIF          # "$(APP2LINKRES)" != ""
398.IF "$(COM)" == "GCC"
399    @echo mingw
400.IF "$(APP2LINKRES)" != "" || "$(APP2RES)" != ""
401    @cat $(APP2LINKRES) $(subst,/res/,/res{$(subst,$(BIN), $(@:d))} $(APP2RES)) >  $(MISC)/$(@:b)_all.res
402    windres $(MISC)/$(@:b)_all.res $(APP2RESO)
403.ENDIF
404    @echo $(LINK) $(LINKFLAGS) $(LINKFLAGSAPP) $(MINGWSSTDOBJ) -L$(PRJ)/$(INPATH)/lib $(SOLARLIB) $(STDSLO) \
405        $(APP2BASEX) $(APP2STACKN) -o $@ $(APP2OBJS) \
406        -Wl,-Map,$(MISC)/$(@:b).map $(STDOBJ) $(APP2RESO) \
407        `$(TYPE) /dev/null $(APP2LIBS) | sed s#$(ROUT)#$(OUT)#g` \
408        $(APP_LINKTYPE) $(APP2LIBSALCPPRT) \
409        -Wl,--start-group $(APP2STDLIBS) -Wl,--end-group $(APP2STDLIB) \
410        $(STDLIB2) $(MINGWSSTDENDOBJ) > $(MISC)/$(TARGET).$(@:b)_2.cmd
411  # need this empty line, else dmake somehow gets confused by the .IFs and .ENDIFs
412  .IF "$(VERBOSE)" == "TRUE"
413    @$(TYPE)  $(MISC)/$(TARGET).$(@:b)_2.cmd
414  .ENDIF
415    @+source $(MISC)/$(TARGET).$(@:b)_2.cmd
416    @ls -l $@
417.ELSE   # "$(COM)" == "GCC"
418.IF "$(linkinc)" == ""
419    $(COMMAND_ECHO)$(APP2LINKER) @$(mktmp \
420        $(APP2LINKFLAGS) \
421        $(LINKFLAGSAPP) $(APP2BASEX) \
422        $(APP2STACKN) \
423        -out:$@ \
424        -map:$(MISC)/{$(subst,/,_ $(APP2TARGET)).map} \
425        $(STDOBJ) \
426        $(APP2LINKRES) \
427        $(APP2RES) \
428        $(APP2OBJS) \
429        $(APP2LIBS) \
430        $(APP2STDLIBS) \
431        $(APP2STDLIB) $(STDLIB2) \
432        )
433    @-echo linking $@.manifest ...
434.IF "$(VISTA_MANIFEST)"!=""
435    $(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(MT) $(MTFLAGS) -manifest $@.manifest -manifest $(TRUSTED_MANIFEST_LOCATION)/trustedinfo.manifest -out:$@.tmanifest$(EMQ) $(FI)
436    $(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(MT) $(MTFLAGS) -manifest $@.tmanifest -outputresource:$@$(EMQ);1 $(FI)
437.ELSE
438    $(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(MT) $(MTFLAGS) -manifest $@.manifest -outputresource:$@$(EMQ);1 $(FI)
439.ENDIF # "$(VISTA_MANIFEST)"!=""
440    $(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(RM:s/+//) $@.manifest $(FI)
441    $(COMMAND_ECHO)$(IFEXIST) $@.tmanifest $(THEN) $(RM:s/+//) $@.tmanifest $(FI)
442.ELSE
443        $(COMMAND_ECHO)-$(RM) $(MISC)\$(APP2TARGET).lnk
444        $(COMMAND_ECHO)-$(RM) $(MISC)\$(APP2TARGET).lst
445        $(COMMAND_ECHO)-$(RM) $(MISC)\linkobj.lst
446        for %_i in ($(MISC)\*.obj) do type %_i >> $(MISC)\linkobj.lst
447    type $(mktmp,$(MISC)\$(APP2TARGET).lst
448        $(APP2LINKFLAGS) \
449        $(LINKFLAGSAPP) $(APP2BASEX) \
450        $(APP2STACKN) \
451        -out:$@ \
452        $(STDOBJ) \
453        $(APP2LINKRES) \
454        $(APP2RES) \
455        $(APP2OBJS) \
456        $(APP2LIBS) \
457        $(APP2STDLIBS) \
458        $(APP2STDLIB) $(STDLIB2))
459        $(COMMAND_ECHO)$(SED)$(SED) -e 's/\(\.\.\\\)\{2,4\}/..\\/g' $(MISC)\$(APP2TARGETN:b)_linkobj.lst >> $(MISC)\$(APP2TARGET).lst
460        $(COMMAND_ECHO)$(SED)$(IFEXIST) $(MISC)/$(APP2TARGET).lst $(THEN) type $(MISC)/$(APP2TARGET).lst  >> $(MISC)/$(APP2TARGET).lnk $(FI)
461        $(COMMAND_ECHO)$(SED)$(APP2LINKER) @$(MISC)\$(APP2TARGET).lnk
462.ENDIF      # "$(linkinc)" == ""
463.ENDIF      # "$(COM)" == "GCC"
464.IF "$(APP2TARGET)" == "loader"
465    $(COMMAND_ECHO)$(PERL) loader.pl $@
466    $(COMMAND_ECHO)$(TYPE) $(@) $(@:d)unloader.exe > $(@:d)_new.exe
467    $(COMMAND_ECHO)$(RM) $@
468    $(COMMAND_ECHO)$(RENAME) $(@:d)_new.exe $(@:d)loader.exe
469.ENDIF          # "$(TARGET)" == "setup"
470
471.ENDIF          # "$(GUI)" == "WNT"
472
473.IF "$(GUI)" == "OS2"
474    @+-$(MKDIR) $(@:d:d) > $(NULLDEV)
475.IF "$(APP2LINKRES)" != ""
476    @+-$(RM) $(MISC)/$(APP2LINKRES:b).rc > $(NULLDEV)
477.IF "$(APP2ICON)" != ""
478    @-+echo ICON 1 $(EMQ)"$(APP2ICON:s#/#\\\\#)$(EMQ)" >> $(MISC)$/$(APP2LINKRES:b).rc
479.ENDIF      # "$(APP2ICON)" != ""
480.IF "$(APP2VERINFO)" != ""
481    @-+echo $(EMQ)#define VERVARIANT    $(BUILD) >> $(MISC)/$(APP2LINKRES:b).rc
482    @-+echo $(EMQ)#include  $(EMQ)"$(APP2VERINFO)$(EMQ)" >> $(MISC)/$(APP2LINKRES:b).rc
483.ENDIF      # "$(APP2VERINFO)" != ""
484    $(COMMAND_ECHO)$(RC) -r -DOS2 $(APP2PRODUCTDEF) -I$(SOLARRESDIR) $(INCLUDE) $(RCLINKFLAGS) $(MISC)/$(APP2LINKRES:b).rc
485.ENDIF          # "$(APP2LINKRES)" != ""
486
487.IF "$(TARGETTYPE)" == "GUI"
488    @echo NAME $(APP2TARGET) WINDOWAPI > $(MISC)/$(APP2TARGET).def
489.ENDIF
490
491    $(COMMAND_ECHO)$(APP2LINKER) -v \
492        $(APP2LINKFLAGS) \
493        $(LINKFLAGSAPP) $(APP2BASEX) \
494        $(APP2STACKN) \
495        -o $@ \
496        -Zmap -L$(LB) \
497        -L$(SOLARVERSION)/$(INPATH)/lib \
498        $(STDOBJ) \
499        $(APP2LINKRES) \
500        $(APP2RES) \
501        $(APP2DEF) \
502        $(APP2OBJS) \
503        $(APP2LIBS) \
504        $(APP2STDLIBS) \
505        $(APP2STDLIB) $(STDLIB2)
506
507
508.IF "$(APP2TARGET)" == "loader"
509    $(COMMAND_ECHO)+$(PERL) loader.pl $@
510    $(COMMAND_ECHO)+$(TYPE) $(@) $(@:d)unloader.exe > $(@:d)_new.exe
511    $(COMMAND_ECHO)+$(RM) $@
512    $(COMMAND_ECHO)+$(RENAME) $(@:d)_new.exe $(@:d)loader.exe
513.ENDIF          # "$(TARGET)" == "setup"
514
515.ENDIF          # "$(GUI)" == "OS2"
516
517.ENDIF          # "$(APP2TARGETN)"!=""
518
519
520# Instruction for linking
521# unroll begin
522
523.IF "$(GUI)" == "OS2" && "$(TARGETTYPE)" == "GUI"
524APP3DEF = $(MISC)/$(APP3TARGET).def
525.ENDIF
526
527.IF "$(APP3LINKTYPE)" != ""
528#must be either STATIC or SHARED
529APP3LINKTYPEFLAG=$(APPLINK$(APP3LINKTYPE))
530.ENDIF
531
532# decide how to link
533.IF "$(APP3CODETYPE)"=="C"
534APP3LINKER=$(LINKC)
535APP3STDLIB=$(subst,CPPRUNTIME, $(STDLIB))
536APP3LINKFLAGS+=$(LINKCFLAGS)
537.ELSE           # "$(APP3CODETYPE)"=="C"
538APP3LINKER=$(LINK)
539APP3STDLIB=$(subst,CPPRUNTIME,$(STDLIBCPP) $(STDLIB))
540APP3LINKFLAGS+=$(LINKFLAGS)
541.ENDIF          # "$(APP3CODETYPE)"=="C"
542
543APP3RPATH*=OOO
544LINKFLAGSRUNPATH_$(APP3RPATH)*=/ERROR:/Bad_APP3RPATH_value
545.IF "$(OS)" != "MACOSX"
546APP3LINKFLAGS+=$(LINKFLAGSRUNPATH_$(APP3RPATH))
547.ENDIF
548
549.IF "$(APP3STACK)" != ""
550.IF "$(LINKFLAGSTACK)" != ""
551APP3STACKN=$(LINKFLAGSTACK)$(APP3STACK)
552.ENDIF
553.ELSE
554APP3STACKN=
555.ENDIF
556
557.IF "$(APP3NOSAL)"==""
558.IF "$(TARGETTYPE)" == "GUI"
559APP3OBJS+= $(STDOBJVCL)
560.ENDIF
561.ENDIF
562
563.IF "$(GUI)$(COM)" == "WNTGCC"
564APP3RESO=
565.IF "$(APP3LINKRES)" != "" || "$(APP3RES)" != ""
566APP3RESO=$(MISC)/$(APP3TARGET:b)_res.o
567.ENDIF
568.ENDIF
569
570.IF "$(GUI)" == "UNX"
571APP3DEPN+:=$(APP3DEPNU)
572USE_APP3DEF=
573.ENDIF
574
575.IF "$(APP3TARGETN)"!=""
576
577.IF "$(APP3PRODUCTNAME)"!=""
578APP3PRODUCTDEF+:=-DPRODUCT_NAME=\"$(APP3PRODUCTNAME)\"
579.ENDIF          # "$(APP3PRODUCTNAME)"!=""
580
581.IF "$(linkinc)"!=""
582.IF "$(GUI)"=="WNT" || "$(GUI)"=="OS2"
583.IF "$(APP3LIBS)"!=""
584$(MISC)/$(APP3TARGET)_linkinc.ls .PHONY:
585    @@-$(RM) $@
586    sed -f $(SOLARENV)/bin/chrel.sed $(foreach,i,$(APP3LIBS) $(i:s/.lib/.lin/)) >> $@
587.ENDIF          #"$(APP3LIBS)"!=""
588.ENDIF
589
590LINKINCTARGETS+=$(MISC)/$(APP3TARGETN:b)_linkinc.ls
591$(APP3TARGETN) : $(LINKINCTARGETS)
592.ENDIF          # "$(linkinc)"!=""
593
594# Allow for target specific LIBSALCPPRT override
595APP3LIBSALCPPRT*=$(LIBSALCPPRT)
596
597$(APP3TARGETN): $(APP3OBJS) $(APP3LIBS) \
598    $(APP3RES) \
599    $(APP3ICON) $(APP3DEPN) $(USE_APP3DEF)
600    @echo "Making:   " $(@:f)
601.IF "$(GUI)"=="UNX"
602.IF "$(OS)"=="MACOSX"
603    @echo unx
604    @-$(RM) $(MISC)/$(@:b).list
605    @-$(RM) $(MISC)/$(TARGET).$(@:b)_3.cmd
606    @-$(RM) $(MISC)/$(@:b).strip
607    @echo $(STDSLO) $(APP3OBJS:s/.obj/.o/) \
608    `cat /dev/null $(APP3LIBS) | sed s\#$(ROUT)\#$(OUT)\#g` | tr -s " " "\n" > $(MISC)/$(@:b).list
609    @echo -n $(APP3LINKER) $(APP3LINKFLAGS) $(LINKFLAGSAPP) -L$(PRJ)/$(INPATH)/lib $(SOLARLIB) -o $@ \
610    $(APP3LINKTYPEFLAG) $(APP3STDLIBS) $(APP3STDLIB) $(STDLIB3) -filelist $(MISC)/$(@:b).list > $(MISC)/$(TARGET).$(@:b)_3.cmd
611    @$(PERL) $(SOLARENV)/bin/macosx-dylib-link-list.pl \
612        `cat $(MISC)/$(TARGET).$(@:b)_3.cmd` \
613        >> $(MISC)/$(TARGET).$(@:b)_3.cmd
614  .IF "$(VERBOSE)" == "TRUE"
615    @cat $(MISC)/$(TARGET).$(@:b)_3.cmd
616  .ENDIF
617    @+source $(MISC)/$(TARGET).$(@:b)_3.cmd
618# Need to strip __objcInit symbol to avoid duplicate symbols when loading
619# libraries at runtime
620    @-nm $@ | grep -v ' U ' | $(AWK) '{ print $$NF }' | grep -F -x '__objcInit' > $(MISC)/$(@:b).strip
621    @strip -i -R $(MISC)/$(@:b).strip -X $@
622    @ls -l $@
623    @$(PERL) $(SOLARENV)/bin/macosx-change-install-names.pl \
624        app $(APP3RPATH) $@
625.IF "$(TARGETTYPE)"=="GUI"
626    @echo "Making:   " $(@:f).app
627    @macosx-create-bundle $@
628.ENDIF      # "$(TARGETTYPE)"=="GUI"
629.ELSE       # "$(OS)"=="MACOSX"
630    @echo unx
631    @-$(RM) $(MISC)/$(TARGET).$(@:b)_3.cmd
632    @echo $(APP3LINKER) $(APP3LINKFLAGS) $(LINKFLAGSAPP) -L$(PRJ)/$(INPATH)/lib $(SOLARLIB) $(STDSLO) \
633    $(APP3OBJS:s/.obj/.o/) '\' >  $(MISC)/$(TARGET).$(@:b)_3.cmd
634    @cat $(mktmp /dev/null $(APP3LIBS)) | xargs -n 1 cat | sed s\#$(ROUT)\#$(OUT)\#g | sed 's#$$# \\#'  >> $(MISC)/$(TARGET).$(@:b)_3.cmd
635    @echo $(APP3LINKTYPEFLAG) $(APP3LIBSALCPPRT) $(APP3STDLIBS) $(APP3STDLIB) $(STDLIB3) -o $@ >> $(MISC)/$(TARGET).$(@:b)_3.cmd
636  .IF "$(VERBOSE)" == "TRUE"
637    @cat $(MISC)/$(TARGET).$(@:b)_3.cmd
638  .ENDIF
639    @+source $(MISC)/$(TARGET).$(@:b)_3.cmd
640  .IF "$(VERBOSE)" == "TRUE"
641    @ls -l $@
642  .ENDIF
643.ENDIF      # "$(OS)"=="MACOSX"
644.ENDIF
645.IF "$(GUI)" == "WNT"
646    @@-$(MKDIR) $(@:d:d)
647.IF "$(APP3LINKRES)" != ""
648    @@-$(RM) $(MISC)/$(APP3LINKRES:b).rc
649.IF "$(APP3ICON)" != ""
650    @-echo 1 ICON $(EMQ)"$(APP3ICON:s/\/\\/)$(EMQ)" >> $(MISC)/$(APP3LINKRES:b).rc
651.ENDIF      # "$(APP3ICON)" != ""
652.IF "$(APP3VERINFO)" != ""
653    @-echo $(EMQ)#define VERVARIANT $(BUILD) >> $(MISC)/$(APP3LINKRES:b).rc
654    @-echo $(EMQ)#include  $(EMQ)"$(APP3VERINFO)$(EMQ)" >> $(MISC)/$(APP3LINKRES:b).rc
655.ENDIF      # "$(APP3VERINFO)" != ""
656    $(COMMAND_ECHO)$(RC) -DWIN32 $(APP3PRODUCTDEF) -I$(SOLARRESDIR) $(INCLUDE) $(RCLINKFLAGS) $(MISC)/$(APP3LINKRES:b).rc
657.ENDIF          # "$(APP3LINKRES)" != ""
658.IF "$(COM)" == "GCC"
659    @echo mingw
660.IF "$(APP3LINKRES)" != "" || "$(APP3RES)" != ""
661    @cat $(APP3LINKRES) $(subst,/res/,/res{$(subst,$(BIN), $(@:d))} $(APP3RES)) >  $(MISC)/$(@:b)_all.res
662    windres $(MISC)/$(@:b)_all.res $(APP3RESO)
663.ENDIF
664    @echo $(LINK) $(LINKFLAGS) $(LINKFLAGSAPP) $(MINGWSSTDOBJ) -L$(PRJ)/$(INPATH)/lib $(SOLARLIB) $(STDSLO) \
665        $(APP3BASEX) $(APP3STACKN) -o $@ $(APP3OBJS) \
666        -Wl,-Map,$(MISC)/$(@:b).map $(STDOBJ) $(APP3RESO) \
667        `$(TYPE) /dev/null $(APP3LIBS) | sed s#$(ROUT)#$(OUT)#g` \
668        $(APP_LINKTYPE) $(APP3LIBSALCPPRT) \
669        -Wl,--start-group $(APP3STDLIBS) -Wl,--end-group $(APP3STDLIB) \
670        $(STDLIB3) $(MINGWSSTDENDOBJ) > $(MISC)/$(TARGET).$(@:b)_3.cmd
671  # need this empty line, else dmake somehow gets confused by the .IFs and .ENDIFs
672  .IF "$(VERBOSE)" == "TRUE"
673    @$(TYPE)  $(MISC)/$(TARGET).$(@:b)_3.cmd
674  .ENDIF
675    @+source $(MISC)/$(TARGET).$(@:b)_3.cmd
676    @ls -l $@
677.ELSE   # "$(COM)" == "GCC"
678.IF "$(linkinc)" == ""
679    $(COMMAND_ECHO)$(APP3LINKER) @$(mktmp \
680        $(APP3LINKFLAGS) \
681        $(LINKFLAGSAPP) $(APP3BASEX) \
682        $(APP3STACKN) \
683        -out:$@ \
684        -map:$(MISC)/{$(subst,/,_ $(APP3TARGET)).map} \
685        $(STDOBJ) \
686        $(APP3LINKRES) \
687        $(APP3RES) \
688        $(APP3OBJS) \
689        $(APP3LIBS) \
690        $(APP3STDLIBS) \
691        $(APP3STDLIB) $(STDLIB3) \
692        )
693    @-echo linking $@.manifest ...
694.IF "$(VISTA_MANIFEST)"!=""
695    $(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(MT) $(MTFLAGS) -manifest $@.manifest -manifest $(TRUSTED_MANIFEST_LOCATION)/trustedinfo.manifest -out:$@.tmanifest$(EMQ) $(FI)
696    $(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(MT) $(MTFLAGS) -manifest $@.tmanifest -outputresource:$@$(EMQ);1 $(FI)
697.ELSE
698    $(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(MT) $(MTFLAGS) -manifest $@.manifest -outputresource:$@$(EMQ);1 $(FI)
699.ENDIF # "$(VISTA_MANIFEST)"!=""
700    $(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(RM:s/+//) $@.manifest $(FI)
701    $(COMMAND_ECHO)$(IFEXIST) $@.tmanifest $(THEN) $(RM:s/+//) $@.tmanifest $(FI)
702.ELSE
703        $(COMMAND_ECHO)-$(RM) $(MISC)\$(APP3TARGET).lnk
704        $(COMMAND_ECHO)-$(RM) $(MISC)\$(APP3TARGET).lst
705        $(COMMAND_ECHO)-$(RM) $(MISC)\linkobj.lst
706        for %_i in ($(MISC)\*.obj) do type %_i >> $(MISC)\linkobj.lst
707    type $(mktmp,$(MISC)\$(APP3TARGET).lst
708        $(APP3LINKFLAGS) \
709        $(LINKFLAGSAPP) $(APP3BASEX) \
710        $(APP3STACKN) \
711        -out:$@ \
712        $(STDOBJ) \
713        $(APP3LINKRES) \
714        $(APP3RES) \
715        $(APP3OBJS) \
716        $(APP3LIBS) \
717        $(APP3STDLIBS) \
718        $(APP3STDLIB) $(STDLIB3))
719        $(COMMAND_ECHO)$(SED)$(SED) -e 's/\(\.\.\\\)\{2,4\}/..\\/g' $(MISC)\$(APP3TARGETN:b)_linkobj.lst >> $(MISC)\$(APP3TARGET).lst
720        $(COMMAND_ECHO)$(SED)$(IFEXIST) $(MISC)/$(APP3TARGET).lst $(THEN) type $(MISC)/$(APP3TARGET).lst  >> $(MISC)/$(APP3TARGET).lnk $(FI)
721        $(COMMAND_ECHO)$(SED)$(APP3LINKER) @$(MISC)\$(APP3TARGET).lnk
722.ENDIF      # "$(linkinc)" == ""
723.ENDIF      # "$(COM)" == "GCC"
724.IF "$(APP3TARGET)" == "loader"
725    $(COMMAND_ECHO)$(PERL) loader.pl $@
726    $(COMMAND_ECHO)$(TYPE) $(@) $(@:d)unloader.exe > $(@:d)_new.exe
727    $(COMMAND_ECHO)$(RM) $@
728    $(COMMAND_ECHO)$(RENAME) $(@:d)_new.exe $(@:d)loader.exe
729.ENDIF          # "$(TARGET)" == "setup"
730
731.ENDIF          # "$(GUI)" == "WNT"
732
733.IF "$(GUI)" == "OS2"
734    @+-$(MKDIR) $(@:d:d) > $(NULLDEV)
735.IF "$(APP3LINKRES)" != ""
736    @+-$(RM) $(MISC)/$(APP3LINKRES:b).rc > $(NULLDEV)
737.IF "$(APP3ICON)" != ""
738    @-+echo ICON 1 $(EMQ)"$(APP3ICON:s#/#\\\\#)$(EMQ)" >> $(MISC)$/$(APP3LINKRES:b).rc
739.ENDIF      # "$(APP3ICON)" != ""
740.IF "$(APP3VERINFO)" != ""
741    @-+echo $(EMQ)#define VERVARIANT    $(BUILD) >> $(MISC)/$(APP3LINKRES:b).rc
742    @-+echo $(EMQ)#include  $(EMQ)"$(APP3VERINFO)$(EMQ)" >> $(MISC)/$(APP3LINKRES:b).rc
743.ENDIF      # "$(APP3VERINFO)" != ""
744    $(COMMAND_ECHO)$(RC) -r -DOS2 $(APP3PRODUCTDEF) -I$(SOLARRESDIR) $(INCLUDE) $(RCLINKFLAGS) $(MISC)/$(APP3LINKRES:b).rc
745.ENDIF          # "$(APP3LINKRES)" != ""
746
747.IF "$(TARGETTYPE)" == "GUI"
748    @echo NAME $(APP3TARGET) WINDOWAPI > $(MISC)/$(APP3TARGET).def
749.ENDIF
750
751    $(COMMAND_ECHO)$(APP3LINKER) -v \
752        $(APP3LINKFLAGS) \
753        $(LINKFLAGSAPP) $(APP3BASEX) \
754        $(APP3STACKN) \
755        -o $@ \
756        -Zmap -L$(LB) \
757        -L$(SOLARVERSION)/$(INPATH)/lib \
758        $(STDOBJ) \
759        $(APP3LINKRES) \
760        $(APP3RES) \
761        $(APP3DEF) \
762        $(APP3OBJS) \
763        $(APP3LIBS) \
764        $(APP3STDLIBS) \
765        $(APP3STDLIB) $(STDLIB3)
766
767
768.IF "$(APP3TARGET)" == "loader"
769    $(COMMAND_ECHO)+$(PERL) loader.pl $@
770    $(COMMAND_ECHO)+$(TYPE) $(@) $(@:d)unloader.exe > $(@:d)_new.exe
771    $(COMMAND_ECHO)+$(RM) $@
772    $(COMMAND_ECHO)+$(RENAME) $(@:d)_new.exe $(@:d)loader.exe
773.ENDIF          # "$(TARGET)" == "setup"
774
775.ENDIF          # "$(GUI)" == "OS2"
776
777.ENDIF          # "$(APP3TARGETN)"!=""
778
779
780# Instruction for linking
781# unroll begin
782
783.IF "$(GUI)" == "OS2" && "$(TARGETTYPE)" == "GUI"
784APP4DEF = $(MISC)/$(APP4TARGET).def
785.ENDIF
786
787.IF "$(APP4LINKTYPE)" != ""
788#must be either STATIC or SHARED
789APP4LINKTYPEFLAG=$(APPLINK$(APP4LINKTYPE))
790.ENDIF
791
792# decide how to link
793.IF "$(APP4CODETYPE)"=="C"
794APP4LINKER=$(LINKC)
795APP4STDLIB=$(subst,CPPRUNTIME, $(STDLIB))
796APP4LINKFLAGS+=$(LINKCFLAGS)
797.ELSE           # "$(APP4CODETYPE)"=="C"
798APP4LINKER=$(LINK)
799APP4STDLIB=$(subst,CPPRUNTIME,$(STDLIBCPP) $(STDLIB))
800APP4LINKFLAGS+=$(LINKFLAGS)
801.ENDIF          # "$(APP4CODETYPE)"=="C"
802
803APP4RPATH*=OOO
804LINKFLAGSRUNPATH_$(APP4RPATH)*=/ERROR:/Bad_APP4RPATH_value
805.IF "$(OS)" != "MACOSX"
806APP4LINKFLAGS+=$(LINKFLAGSRUNPATH_$(APP4RPATH))
807.ENDIF
808
809.IF "$(APP4STACK)" != ""
810.IF "$(LINKFLAGSTACK)" != ""
811APP4STACKN=$(LINKFLAGSTACK)$(APP4STACK)
812.ENDIF
813.ELSE
814APP4STACKN=
815.ENDIF
816
817.IF "$(APP4NOSAL)"==""
818.IF "$(TARGETTYPE)" == "GUI"
819APP4OBJS+= $(STDOBJVCL)
820.ENDIF
821.ENDIF
822
823.IF "$(GUI)$(COM)" == "WNTGCC"
824APP4RESO=
825.IF "$(APP4LINKRES)" != "" || "$(APP4RES)" != ""
826APP4RESO=$(MISC)/$(APP4TARGET:b)_res.o
827.ENDIF
828.ENDIF
829
830.IF "$(GUI)" == "UNX"
831APP4DEPN+:=$(APP4DEPNU)
832USE_APP4DEF=
833.ENDIF
834
835.IF "$(APP4TARGETN)"!=""
836
837.IF "$(APP4PRODUCTNAME)"!=""
838APP4PRODUCTDEF+:=-DPRODUCT_NAME=\"$(APP4PRODUCTNAME)\"
839.ENDIF          # "$(APP4PRODUCTNAME)"!=""
840
841.IF "$(linkinc)"!=""
842.IF "$(GUI)"=="WNT" || "$(GUI)"=="OS2"
843.IF "$(APP4LIBS)"!=""
844$(MISC)/$(APP4TARGET)_linkinc.ls .PHONY:
845    @@-$(RM) $@
846    sed -f $(SOLARENV)/bin/chrel.sed $(foreach,i,$(APP4LIBS) $(i:s/.lib/.lin/)) >> $@
847.ENDIF          #"$(APP4LIBS)"!=""
848.ENDIF
849
850LINKINCTARGETS+=$(MISC)/$(APP4TARGETN:b)_linkinc.ls
851$(APP4TARGETN) : $(LINKINCTARGETS)
852.ENDIF          # "$(linkinc)"!=""
853
854# Allow for target specific LIBSALCPPRT override
855APP4LIBSALCPPRT*=$(LIBSALCPPRT)
856
857$(APP4TARGETN): $(APP4OBJS) $(APP4LIBS) \
858    $(APP4RES) \
859    $(APP4ICON) $(APP4DEPN) $(USE_APP4DEF)
860    @echo "Making:   " $(@:f)
861.IF "$(GUI)"=="UNX"
862.IF "$(OS)"=="MACOSX"
863    @echo unx
864    @-$(RM) $(MISC)/$(@:b).list
865    @-$(RM) $(MISC)/$(TARGET).$(@:b)_4.cmd
866    @-$(RM) $(MISC)/$(@:b).strip
867    @echo $(STDSLO) $(APP4OBJS:s/.obj/.o/) \
868    `cat /dev/null $(APP4LIBS) | sed s\#$(ROUT)\#$(OUT)\#g` | tr -s " " "\n" > $(MISC)/$(@:b).list
869    @echo -n $(APP4LINKER) $(APP4LINKFLAGS) $(LINKFLAGSAPP) -L$(PRJ)/$(INPATH)/lib $(SOLARLIB) -o $@ \
870    $(APP4LINKTYPEFLAG) $(APP4STDLIBS) $(APP4STDLIB) $(STDLIB4) -filelist $(MISC)/$(@:b).list > $(MISC)/$(TARGET).$(@:b)_4.cmd
871    @$(PERL) $(SOLARENV)/bin/macosx-dylib-link-list.pl \
872        `cat $(MISC)/$(TARGET).$(@:b)_4.cmd` \
873        >> $(MISC)/$(TARGET).$(@:b)_4.cmd
874  .IF "$(VERBOSE)" == "TRUE"
875    @cat $(MISC)/$(TARGET).$(@:b)_4.cmd
876  .ENDIF
877    @+source $(MISC)/$(TARGET).$(@:b)_4.cmd
878# Need to strip __objcInit symbol to avoid duplicate symbols when loading
879# libraries at runtime
880    @-nm $@ | grep -v ' U ' | $(AWK) '{ print $$NF }' | grep -F -x '__objcInit' > $(MISC)/$(@:b).strip
881    @strip -i -R $(MISC)/$(@:b).strip -X $@
882    @ls -l $@
883    @$(PERL) $(SOLARENV)/bin/macosx-change-install-names.pl \
884        app $(APP4RPATH) $@
885.IF "$(TARGETTYPE)"=="GUI"
886    @echo "Making:   " $(@:f).app
887    @macosx-create-bundle $@
888.ENDIF      # "$(TARGETTYPE)"=="GUI"
889.ELSE       # "$(OS)"=="MACOSX"
890    @echo unx
891    @-$(RM) $(MISC)/$(TARGET).$(@:b)_4.cmd
892    @echo $(APP4LINKER) $(APP4LINKFLAGS) $(LINKFLAGSAPP) -L$(PRJ)/$(INPATH)/lib $(SOLARLIB) $(STDSLO) \
893    $(APP4OBJS:s/.obj/.o/) '\' >  $(MISC)/$(TARGET).$(@:b)_4.cmd
894    @cat $(mktmp /dev/null $(APP4LIBS)) | xargs -n 1 cat | sed s\#$(ROUT)\#$(OUT)\#g | sed 's#$$# \\#'  >> $(MISC)/$(TARGET).$(@:b)_4.cmd
895    @echo $(APP4LINKTYPEFLAG) $(APP4LIBSALCPPRT) $(APP4STDLIBS) $(APP4STDLIB) $(STDLIB4) -o $@ >> $(MISC)/$(TARGET).$(@:b)_4.cmd
896  .IF "$(VERBOSE)" == "TRUE"
897    @cat $(MISC)/$(TARGET).$(@:b)_4.cmd
898  .ENDIF
899    @+source $(MISC)/$(TARGET).$(@:b)_4.cmd
900  .IF "$(VERBOSE)" == "TRUE"
901    @ls -l $@
902  .ENDIF
903.ENDIF      # "$(OS)"=="MACOSX"
904.ENDIF
905.IF "$(GUI)" == "WNT"
906    @@-$(MKDIR) $(@:d:d)
907.IF "$(APP4LINKRES)" != ""
908    @@-$(RM) $(MISC)/$(APP4LINKRES:b).rc
909.IF "$(APP4ICON)" != ""
910    @-echo 1 ICON $(EMQ)"$(APP4ICON:s/\/\\/)$(EMQ)" >> $(MISC)/$(APP4LINKRES:b).rc
911.ENDIF      # "$(APP4ICON)" != ""
912.IF "$(APP4VERINFO)" != ""
913    @-echo $(EMQ)#define VERVARIANT $(BUILD) >> $(MISC)/$(APP4LINKRES:b).rc
914    @-echo $(EMQ)#include  $(EMQ)"$(APP4VERINFO)$(EMQ)" >> $(MISC)/$(APP4LINKRES:b).rc
915.ENDIF      # "$(APP4VERINFO)" != ""
916    $(COMMAND_ECHO)$(RC) -DWIN32 $(APP4PRODUCTDEF) -I$(SOLARRESDIR) $(INCLUDE) $(RCLINKFLAGS) $(MISC)/$(APP4LINKRES:b).rc
917.ENDIF          # "$(APP4LINKRES)" != ""
918.IF "$(COM)" == "GCC"
919    @echo mingw
920.IF "$(APP4LINKRES)" != "" || "$(APP4RES)" != ""
921    @cat $(APP4LINKRES) $(subst,/res/,/res{$(subst,$(BIN), $(@:d))} $(APP4RES)) >  $(MISC)/$(@:b)_all.res
922    windres $(MISC)/$(@:b)_all.res $(APP4RESO)
923.ENDIF
924    @echo $(LINK) $(LINKFLAGS) $(LINKFLAGSAPP) $(MINGWSSTDOBJ) -L$(PRJ)/$(INPATH)/lib $(SOLARLIB) $(STDSLO) \
925        $(APP4BASEX) $(APP4STACKN) -o $@ $(APP4OBJS) \
926        -Wl,-Map,$(MISC)/$(@:b).map $(STDOBJ) $(APP4RESO) \
927        `$(TYPE) /dev/null $(APP4LIBS) | sed s#$(ROUT)#$(OUT)#g` \
928        $(APP_LINKTYPE) $(APP4LIBSALCPPRT) \
929        -Wl,--start-group $(APP4STDLIBS) -Wl,--end-group $(APP4STDLIB) \
930        $(STDLIB4) $(MINGWSSTDENDOBJ) > $(MISC)/$(TARGET).$(@:b)_4.cmd
931  # need this empty line, else dmake somehow gets confused by the .IFs and .ENDIFs
932  .IF "$(VERBOSE)" == "TRUE"
933    @$(TYPE)  $(MISC)/$(TARGET).$(@:b)_4.cmd
934  .ENDIF
935    @+source $(MISC)/$(TARGET).$(@:b)_4.cmd
936    @ls -l $@
937.ELSE   # "$(COM)" == "GCC"
938.IF "$(linkinc)" == ""
939    $(COMMAND_ECHO)$(APP4LINKER) @$(mktmp \
940        $(APP4LINKFLAGS) \
941        $(LINKFLAGSAPP) $(APP4BASEX) \
942        $(APP4STACKN) \
943        -out:$@ \
944        -map:$(MISC)/{$(subst,/,_ $(APP4TARGET)).map} \
945        $(STDOBJ) \
946        $(APP4LINKRES) \
947        $(APP4RES) \
948        $(APP4OBJS) \
949        $(APP4LIBS) \
950        $(APP4STDLIBS) \
951        $(APP4STDLIB) $(STDLIB4) \
952        )
953    @-echo linking $@.manifest ...
954.IF "$(VISTA_MANIFEST)"!=""
955    $(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(MT) $(MTFLAGS) -manifest $@.manifest -manifest $(TRUSTED_MANIFEST_LOCATION)/trustedinfo.manifest -out:$@.tmanifest$(EMQ) $(FI)
956    $(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(MT) $(MTFLAGS) -manifest $@.tmanifest -outputresource:$@$(EMQ);1 $(FI)
957.ELSE
958    $(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(MT) $(MTFLAGS) -manifest $@.manifest -outputresource:$@$(EMQ);1 $(FI)
959.ENDIF # "$(VISTA_MANIFEST)"!=""
960    $(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(RM:s/+//) $@.manifest $(FI)
961    $(COMMAND_ECHO)$(IFEXIST) $@.tmanifest $(THEN) $(RM:s/+//) $@.tmanifest $(FI)
962.ELSE
963        $(COMMAND_ECHO)-$(RM) $(MISC)\$(APP4TARGET).lnk
964        $(COMMAND_ECHO)-$(RM) $(MISC)\$(APP4TARGET).lst
965        $(COMMAND_ECHO)-$(RM) $(MISC)\linkobj.lst
966        for %_i in ($(MISC)\*.obj) do type %_i >> $(MISC)\linkobj.lst
967    type $(mktmp,$(MISC)\$(APP4TARGET).lst
968        $(APP4LINKFLAGS) \
969        $(LINKFLAGSAPP) $(APP4BASEX) \
970        $(APP4STACKN) \
971        -out:$@ \
972        $(STDOBJ) \
973        $(APP4LINKRES) \
974        $(APP4RES) \
975        $(APP4OBJS) \
976        $(APP4LIBS) \
977        $(APP4STDLIBS) \
978        $(APP4STDLIB) $(STDLIB4))
979        $(COMMAND_ECHO)$(SED)$(SED) -e 's/\(\.\.\\\)\{2,4\}/..\\/g' $(MISC)\$(APP4TARGETN:b)_linkobj.lst >> $(MISC)\$(APP4TARGET).lst
980        $(COMMAND_ECHO)$(SED)$(IFEXIST) $(MISC)/$(APP4TARGET).lst $(THEN) type $(MISC)/$(APP4TARGET).lst  >> $(MISC)/$(APP4TARGET).lnk $(FI)
981        $(COMMAND_ECHO)$(SED)$(APP4LINKER) @$(MISC)\$(APP4TARGET).lnk
982.ENDIF      # "$(linkinc)" == ""
983.ENDIF      # "$(COM)" == "GCC"
984.IF "$(APP4TARGET)" == "loader"
985    $(COMMAND_ECHO)$(PERL) loader.pl $@
986    $(COMMAND_ECHO)$(TYPE) $(@) $(@:d)unloader.exe > $(@:d)_new.exe
987    $(COMMAND_ECHO)$(RM) $@
988    $(COMMAND_ECHO)$(RENAME) $(@:d)_new.exe $(@:d)loader.exe
989.ENDIF          # "$(TARGET)" == "setup"
990
991.ENDIF          # "$(GUI)" == "WNT"
992
993.IF "$(GUI)" == "OS2"
994    @+-$(MKDIR) $(@:d:d) > $(NULLDEV)
995.IF "$(APP4LINKRES)" != ""
996    @+-$(RM) $(MISC)/$(APP4LINKRES:b).rc > $(NULLDEV)
997.IF "$(APP4ICON)" != ""
998    @-+echo ICON 1 $(EMQ)"$(APP4ICON:s#/#\\\\#)$(EMQ)" >> $(MISC)$/$(APP4LINKRES:b).rc
999.ENDIF      # "$(APP4ICON)" != ""
1000.IF "$(APP4VERINFO)" != ""
1001    @-+echo $(EMQ)#define VERVARIANT    $(BUILD) >> $(MISC)/$(APP4LINKRES:b).rc
1002    @-+echo $(EMQ)#include  $(EMQ)"$(APP4VERINFO)$(EMQ)" >> $(MISC)/$(APP4LINKRES:b).rc
1003.ENDIF      # "$(APP4VERINFO)" != ""
1004    $(COMMAND_ECHO)$(RC) -r -DOS2 $(APP4PRODUCTDEF) -I$(SOLARRESDIR) $(INCLUDE) $(RCLINKFLAGS) $(MISC)/$(APP4LINKRES:b).rc
1005.ENDIF          # "$(APP4LINKRES)" != ""
1006
1007.IF "$(TARGETTYPE)" == "GUI"
1008    @echo NAME $(APP4TARGET) WINDOWAPI > $(MISC)/$(APP4TARGET).def
1009.ENDIF
1010
1011    $(COMMAND_ECHO)$(APP4LINKER) -v \
1012        $(APP4LINKFLAGS) \
1013        $(LINKFLAGSAPP) $(APP4BASEX) \
1014        $(APP4STACKN) \
1015        -o $@ \
1016        -Zmap -L$(LB) \
1017        -L$(SOLARVERSION)/$(INPATH)/lib \
1018        $(STDOBJ) \
1019        $(APP4LINKRES) \
1020        $(APP4RES) \
1021        $(APP4DEF) \
1022        $(APP4OBJS) \
1023        $(APP4LIBS) \
1024        $(APP4STDLIBS) \
1025        $(APP4STDLIB) $(STDLIB4)
1026
1027
1028.IF "$(APP4TARGET)" == "loader"
1029    $(COMMAND_ECHO)+$(PERL) loader.pl $@
1030    $(COMMAND_ECHO)+$(TYPE) $(@) $(@:d)unloader.exe > $(@:d)_new.exe
1031    $(COMMAND_ECHO)+$(RM) $@
1032    $(COMMAND_ECHO)+$(RENAME) $(@:d)_new.exe $(@:d)loader.exe
1033.ENDIF          # "$(TARGET)" == "setup"
1034
1035.ENDIF          # "$(GUI)" == "OS2"
1036
1037.ENDIF          # "$(APP4TARGETN)"!=""
1038
1039
1040# Instruction for linking
1041# unroll begin
1042
1043.IF "$(GUI)" == "OS2" && "$(TARGETTYPE)" == "GUI"
1044APP5DEF = $(MISC)/$(APP5TARGET).def
1045.ENDIF
1046
1047.IF "$(APP5LINKTYPE)" != ""
1048#must be either STATIC or SHARED
1049APP5LINKTYPEFLAG=$(APPLINK$(APP5LINKTYPE))
1050.ENDIF
1051
1052# decide how to link
1053.IF "$(APP5CODETYPE)"=="C"
1054APP5LINKER=$(LINKC)
1055APP5STDLIB=$(subst,CPPRUNTIME, $(STDLIB))
1056APP5LINKFLAGS+=$(LINKCFLAGS)
1057.ELSE           # "$(APP5CODETYPE)"=="C"
1058APP5LINKER=$(LINK)
1059APP5STDLIB=$(subst,CPPRUNTIME,$(STDLIBCPP) $(STDLIB))
1060APP5LINKFLAGS+=$(LINKFLAGS)
1061.ENDIF          # "$(APP5CODETYPE)"=="C"
1062
1063APP5RPATH*=OOO
1064LINKFLAGSRUNPATH_$(APP5RPATH)*=/ERROR:/Bad_APP5RPATH_value
1065.IF "$(OS)" != "MACOSX"
1066APP5LINKFLAGS+=$(LINKFLAGSRUNPATH_$(APP5RPATH))
1067.ENDIF
1068
1069.IF "$(APP5STACK)" != ""
1070.IF "$(LINKFLAGSTACK)" != ""
1071APP5STACKN=$(LINKFLAGSTACK)$(APP5STACK)
1072.ENDIF
1073.ELSE
1074APP5STACKN=
1075.ENDIF
1076
1077.IF "$(APP5NOSAL)"==""
1078.IF "$(TARGETTYPE)" == "GUI"
1079APP5OBJS+= $(STDOBJVCL)
1080.ENDIF
1081.ENDIF
1082
1083.IF "$(GUI)$(COM)" == "WNTGCC"
1084APP5RESO=
1085.IF "$(APP5LINKRES)" != "" || "$(APP5RES)" != ""
1086APP5RESO=$(MISC)/$(APP5TARGET:b)_res.o
1087.ENDIF
1088.ENDIF
1089
1090.IF "$(GUI)" == "UNX"
1091APP5DEPN+:=$(APP5DEPNU)
1092USE_APP5DEF=
1093.ENDIF
1094
1095.IF "$(APP5TARGETN)"!=""
1096
1097.IF "$(APP5PRODUCTNAME)"!=""
1098APP5PRODUCTDEF+:=-DPRODUCT_NAME=\"$(APP5PRODUCTNAME)\"
1099.ENDIF          # "$(APP5PRODUCTNAME)"!=""
1100
1101.IF "$(linkinc)"!=""
1102.IF "$(GUI)"=="WNT" || "$(GUI)"=="OS2"
1103.IF "$(APP5LIBS)"!=""
1104$(MISC)/$(APP5TARGET)_linkinc.ls .PHONY:
1105    @@-$(RM) $@
1106    sed -f $(SOLARENV)/bin/chrel.sed $(foreach,i,$(APP5LIBS) $(i:s/.lib/.lin/)) >> $@
1107.ENDIF          #"$(APP5LIBS)"!=""
1108.ENDIF
1109
1110LINKINCTARGETS+=$(MISC)/$(APP5TARGETN:b)_linkinc.ls
1111$(APP5TARGETN) : $(LINKINCTARGETS)
1112.ENDIF          # "$(linkinc)"!=""
1113
1114# Allow for target specific LIBSALCPPRT override
1115APP5LIBSALCPPRT*=$(LIBSALCPPRT)
1116
1117$(APP5TARGETN): $(APP5OBJS) $(APP5LIBS) \
1118    $(APP5RES) \
1119    $(APP5ICON) $(APP5DEPN) $(USE_APP5DEF)
1120    @echo "Making:   " $(@:f)
1121.IF "$(GUI)"=="UNX"
1122.IF "$(OS)"=="MACOSX"
1123    @echo unx
1124    @-$(RM) $(MISC)/$(@:b).list
1125    @-$(RM) $(MISC)/$(TARGET).$(@:b)_5.cmd
1126    @-$(RM) $(MISC)/$(@:b).strip
1127    @echo $(STDSLO) $(APP5OBJS:s/.obj/.o/) \
1128    `cat /dev/null $(APP5LIBS) | sed s\#$(ROUT)\#$(OUT)\#g` | tr -s " " "\n" > $(MISC)/$(@:b).list
1129    @echo -n $(APP5LINKER) $(APP5LINKFLAGS) $(LINKFLAGSAPP) -L$(PRJ)/$(INPATH)/lib $(SOLARLIB) -o $@ \
1130    $(APP5LINKTYPEFLAG) $(APP5STDLIBS) $(APP5STDLIB) $(STDLIB5) -filelist $(MISC)/$(@:b).list > $(MISC)/$(TARGET).$(@:b)_5.cmd
1131    @$(PERL) $(SOLARENV)/bin/macosx-dylib-link-list.pl \
1132        `cat $(MISC)/$(TARGET).$(@:b)_5.cmd` \
1133        >> $(MISC)/$(TARGET).$(@:b)_5.cmd
1134  .IF "$(VERBOSE)" == "TRUE"
1135    @cat $(MISC)/$(TARGET).$(@:b)_5.cmd
1136  .ENDIF
1137    @+source $(MISC)/$(TARGET).$(@:b)_5.cmd
1138# Need to strip __objcInit symbol to avoid duplicate symbols when loading
1139# libraries at runtime
1140    @-nm $@ | grep -v ' U ' | $(AWK) '{ print $$NF }' | grep -F -x '__objcInit' > $(MISC)/$(@:b).strip
1141    @strip -i -R $(MISC)/$(@:b).strip -X $@
1142    @ls -l $@
1143    @$(PERL) $(SOLARENV)/bin/macosx-change-install-names.pl \
1144        app $(APP5RPATH) $@
1145.IF "$(TARGETTYPE)"=="GUI"
1146    @echo "Making:   " $(@:f).app
1147    @macosx-create-bundle $@
1148.ENDIF      # "$(TARGETTYPE)"=="GUI"
1149.ELSE       # "$(OS)"=="MACOSX"
1150    @echo unx
1151    @-$(RM) $(MISC)/$(TARGET).$(@:b)_5.cmd
1152    @echo $(APP5LINKER) $(APP5LINKFLAGS) $(LINKFLAGSAPP) -L$(PRJ)/$(INPATH)/lib $(SOLARLIB) $(STDSLO) \
1153    $(APP5OBJS:s/.obj/.o/) '\' >  $(MISC)/$(TARGET).$(@:b)_5.cmd
1154    @cat $(mktmp /dev/null $(APP5LIBS)) | xargs -n 1 cat | sed s\#$(ROUT)\#$(OUT)\#g | sed 's#$$# \\#'  >> $(MISC)/$(TARGET).$(@:b)_5.cmd
1155    @echo $(APP5LINKTYPEFLAG) $(APP5LIBSALCPPRT) $(APP5STDLIBS) $(APP5STDLIB) $(STDLIB5) -o $@ >> $(MISC)/$(TARGET).$(@:b)_5.cmd
1156  .IF "$(VERBOSE)" == "TRUE"
1157    @cat $(MISC)/$(TARGET).$(@:b)_5.cmd
1158  .ENDIF
1159    @+source $(MISC)/$(TARGET).$(@:b)_5.cmd
1160  .IF "$(VERBOSE)" == "TRUE"
1161    @ls -l $@
1162  .ENDIF
1163.ENDIF      # "$(OS)"=="MACOSX"
1164.ENDIF
1165.IF "$(GUI)" == "WNT"
1166    @@-$(MKDIR) $(@:d:d)
1167.IF "$(APP5LINKRES)" != ""
1168    @@-$(RM) $(MISC)/$(APP5LINKRES:b).rc
1169.IF "$(APP5ICON)" != ""
1170    @-echo 1 ICON $(EMQ)"$(APP5ICON:s/\/\\/)$(EMQ)" >> $(MISC)/$(APP5LINKRES:b).rc
1171.ENDIF      # "$(APP5ICON)" != ""
1172.IF "$(APP5VERINFO)" != ""
1173    @-echo $(EMQ)#define VERVARIANT $(BUILD) >> $(MISC)/$(APP5LINKRES:b).rc
1174    @-echo $(EMQ)#include  $(EMQ)"$(APP5VERINFO)$(EMQ)" >> $(MISC)/$(APP5LINKRES:b).rc
1175.ENDIF      # "$(APP5VERINFO)" != ""
1176    $(COMMAND_ECHO)$(RC) -DWIN32 $(APP5PRODUCTDEF) -I$(SOLARRESDIR) $(INCLUDE) $(RCLINKFLAGS) $(MISC)/$(APP5LINKRES:b).rc
1177.ENDIF          # "$(APP5LINKRES)" != ""
1178.IF "$(COM)" == "GCC"
1179    @echo mingw
1180.IF "$(APP5LINKRES)" != "" || "$(APP5RES)" != ""
1181    @cat $(APP5LINKRES) $(subst,/res/,/res{$(subst,$(BIN), $(@:d))} $(APP5RES)) >  $(MISC)/$(@:b)_all.res
1182    windres $(MISC)/$(@:b)_all.res $(APP5RESO)
1183.ENDIF
1184    @echo $(LINK) $(LINKFLAGS) $(LINKFLAGSAPP) $(MINGWSSTDOBJ) -L$(PRJ)/$(INPATH)/lib $(SOLARLIB) $(STDSLO) \
1185        $(APP5BASEX) $(APP5STACKN) -o $@ $(APP5OBJS) \
1186        -Wl,-Map,$(MISC)/$(@:b).map $(STDOBJ) $(APP5RESO) \
1187        `$(TYPE) /dev/null $(APP5LIBS) | sed s#$(ROUT)#$(OUT)#g` \
1188        $(APP_LINKTYPE) $(APP5LIBSALCPPRT) \
1189        -Wl,--start-group $(APP5STDLIBS) -Wl,--end-group $(APP5STDLIB) \
1190        $(STDLIB5) $(MINGWSSTDENDOBJ) > $(MISC)/$(TARGET).$(@:b)_5.cmd
1191  # need this empty line, else dmake somehow gets confused by the .IFs and .ENDIFs
1192  .IF "$(VERBOSE)" == "TRUE"
1193    @$(TYPE)  $(MISC)/$(TARGET).$(@:b)_5.cmd
1194  .ENDIF
1195    @+source $(MISC)/$(TARGET).$(@:b)_5.cmd
1196    @ls -l $@
1197.ELSE   # "$(COM)" == "GCC"
1198.IF "$(linkinc)" == ""
1199    $(COMMAND_ECHO)$(APP5LINKER) @$(mktmp \
1200        $(APP5LINKFLAGS) \
1201        $(LINKFLAGSAPP) $(APP5BASEX) \
1202        $(APP5STACKN) \
1203        -out:$@ \
1204        -map:$(MISC)/{$(subst,/,_ $(APP5TARGET)).map} \
1205        $(STDOBJ) \
1206        $(APP5LINKRES) \
1207        $(APP5RES) \
1208        $(APP5OBJS) \
1209        $(APP5LIBS) \
1210        $(APP5STDLIBS) \
1211        $(APP5STDLIB) $(STDLIB5) \
1212        )
1213    @-echo linking $@.manifest ...
1214.IF "$(VISTA_MANIFEST)"!=""
1215    $(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(MT) $(MTFLAGS) -manifest $@.manifest -manifest $(TRUSTED_MANIFEST_LOCATION)/trustedinfo.manifest -out:$@.tmanifest$(EMQ) $(FI)
1216    $(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(MT) $(MTFLAGS) -manifest $@.tmanifest -outputresource:$@$(EMQ);1 $(FI)
1217.ELSE
1218    $(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(MT) $(MTFLAGS) -manifest $@.manifest -outputresource:$@$(EMQ);1 $(FI)
1219.ENDIF # "$(VISTA_MANIFEST)"!=""
1220    $(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(RM:s/+//) $@.manifest $(FI)
1221    $(COMMAND_ECHO)$(IFEXIST) $@.tmanifest $(THEN) $(RM:s/+//) $@.tmanifest $(FI)
1222.ELSE
1223        $(COMMAND_ECHO)-$(RM) $(MISC)\$(APP5TARGET).lnk
1224        $(COMMAND_ECHO)-$(RM) $(MISC)\$(APP5TARGET).lst
1225        $(COMMAND_ECHO)-$(RM) $(MISC)\linkobj.lst
1226        for %_i in ($(MISC)\*.obj) do type %_i >> $(MISC)\linkobj.lst
1227    type $(mktmp,$(MISC)\$(APP5TARGET).lst
1228        $(APP5LINKFLAGS) \
1229        $(LINKFLAGSAPP) $(APP5BASEX) \
1230        $(APP5STACKN) \
1231        -out:$@ \
1232        $(STDOBJ) \
1233        $(APP5LINKRES) \
1234        $(APP5RES) \
1235        $(APP5OBJS) \
1236        $(APP5LIBS) \
1237        $(APP5STDLIBS) \
1238        $(APP5STDLIB) $(STDLIB5))
1239        $(COMMAND_ECHO)$(SED)$(SED) -e 's/\(\.\.\\\)\{2,4\}/..\\/g' $(MISC)\$(APP5TARGETN:b)_linkobj.lst >> $(MISC)\$(APP5TARGET).lst
1240        $(COMMAND_ECHO)$(SED)$(IFEXIST) $(MISC)/$(APP5TARGET).lst $(THEN) type $(MISC)/$(APP5TARGET).lst  >> $(MISC)/$(APP5TARGET).lnk $(FI)
1241        $(COMMAND_ECHO)$(SED)$(APP5LINKER) @$(MISC)\$(APP5TARGET).lnk
1242.ENDIF      # "$(linkinc)" == ""
1243.ENDIF      # "$(COM)" == "GCC"
1244.IF "$(APP5TARGET)" == "loader"
1245    $(COMMAND_ECHO)$(PERL) loader.pl $@
1246    $(COMMAND_ECHO)$(TYPE) $(@) $(@:d)unloader.exe > $(@:d)_new.exe
1247    $(COMMAND_ECHO)$(RM) $@
1248    $(COMMAND_ECHO)$(RENAME) $(@:d)_new.exe $(@:d)loader.exe
1249.ENDIF          # "$(TARGET)" == "setup"
1250
1251.ENDIF          # "$(GUI)" == "WNT"
1252
1253.IF "$(GUI)" == "OS2"
1254    @+-$(MKDIR) $(@:d:d) > $(NULLDEV)
1255.IF "$(APP5LINKRES)" != ""
1256    @+-$(RM) $(MISC)/$(APP5LINKRES:b).rc > $(NULLDEV)
1257.IF "$(APP5ICON)" != ""
1258    @-+echo ICON 1 $(EMQ)"$(APP5ICON:s#/#\\\\#)$(EMQ)" >> $(MISC)$/$(APP5LINKRES:b).rc
1259.ENDIF      # "$(APP5ICON)" != ""
1260.IF "$(APP5VERINFO)" != ""
1261    @-+echo $(EMQ)#define VERVARIANT    $(BUILD) >> $(MISC)/$(APP5LINKRES:b).rc
1262    @-+echo $(EMQ)#include  $(EMQ)"$(APP5VERINFO)$(EMQ)" >> $(MISC)/$(APP5LINKRES:b).rc
1263.ENDIF      # "$(APP5VERINFO)" != ""
1264    $(COMMAND_ECHO)$(RC) -r -DOS2 $(APP5PRODUCTDEF) -I$(SOLARRESDIR) $(INCLUDE) $(RCLINKFLAGS) $(MISC)/$(APP5LINKRES:b).rc
1265.ENDIF          # "$(APP5LINKRES)" != ""
1266
1267.IF "$(TARGETTYPE)" == "GUI"
1268    @echo NAME $(APP5TARGET) WINDOWAPI > $(MISC)/$(APP5TARGET).def
1269.ENDIF
1270
1271    $(COMMAND_ECHO)$(APP5LINKER) -v \
1272        $(APP5LINKFLAGS) \
1273        $(LINKFLAGSAPP) $(APP5BASEX) \
1274        $(APP5STACKN) \
1275        -o $@ \
1276        -Zmap -L$(LB) \
1277        -L$(SOLARVERSION)/$(INPATH)/lib \
1278        $(STDOBJ) \
1279        $(APP5LINKRES) \
1280        $(APP5RES) \
1281        $(APP5DEF) \
1282        $(APP5OBJS) \
1283        $(APP5LIBS) \
1284        $(APP5STDLIBS) \
1285        $(APP5STDLIB) $(STDLIB5)
1286
1287
1288.IF "$(APP5TARGET)" == "loader"
1289    $(COMMAND_ECHO)+$(PERL) loader.pl $@
1290    $(COMMAND_ECHO)+$(TYPE) $(@) $(@:d)unloader.exe > $(@:d)_new.exe
1291    $(COMMAND_ECHO)+$(RM) $@
1292    $(COMMAND_ECHO)+$(RENAME) $(@:d)_new.exe $(@:d)loader.exe
1293.ENDIF          # "$(TARGET)" == "setup"
1294
1295.ENDIF          # "$(GUI)" == "OS2"
1296
1297.ENDIF          # "$(APP5TARGETN)"!=""
1298
1299
1300# Instruction for linking
1301# unroll begin
1302
1303.IF "$(GUI)" == "OS2" && "$(TARGETTYPE)" == "GUI"
1304APP6DEF = $(MISC)/$(APP6TARGET).def
1305.ENDIF
1306
1307.IF "$(APP6LINKTYPE)" != ""
1308#must be either STATIC or SHARED
1309APP6LINKTYPEFLAG=$(APPLINK$(APP6LINKTYPE))
1310.ENDIF
1311
1312# decide how to link
1313.IF "$(APP6CODETYPE)"=="C"
1314APP6LINKER=$(LINKC)
1315APP6STDLIB=$(subst,CPPRUNTIME, $(STDLIB))
1316APP6LINKFLAGS+=$(LINKCFLAGS)
1317.ELSE           # "$(APP6CODETYPE)"=="C"
1318APP6LINKER=$(LINK)
1319APP6STDLIB=$(subst,CPPRUNTIME,$(STDLIBCPP) $(STDLIB))
1320APP6LINKFLAGS+=$(LINKFLAGS)
1321.ENDIF          # "$(APP6CODETYPE)"=="C"
1322
1323APP6RPATH*=OOO
1324LINKFLAGSRUNPATH_$(APP6RPATH)*=/ERROR:/Bad_APP6RPATH_value
1325.IF "$(OS)" != "MACOSX"
1326APP6LINKFLAGS+=$(LINKFLAGSRUNPATH_$(APP6RPATH))
1327.ENDIF
1328
1329.IF "$(APP6STACK)" != ""
1330.IF "$(LINKFLAGSTACK)" != ""
1331APP6STACKN=$(LINKFLAGSTACK)$(APP6STACK)
1332.ENDIF
1333.ELSE
1334APP6STACKN=
1335.ENDIF
1336
1337.IF "$(APP6NOSAL)"==""
1338.IF "$(TARGETTYPE)" == "GUI"
1339APP6OBJS+= $(STDOBJVCL)
1340.ENDIF
1341.ENDIF
1342
1343.IF "$(GUI)$(COM)" == "WNTGCC"
1344APP6RESO=
1345.IF "$(APP6LINKRES)" != "" || "$(APP6RES)" != ""
1346APP6RESO=$(MISC)/$(APP6TARGET:b)_res.o
1347.ENDIF
1348.ENDIF
1349
1350.IF "$(GUI)" == "UNX"
1351APP6DEPN+:=$(APP6DEPNU)
1352USE_APP6DEF=
1353.ENDIF
1354
1355.IF "$(APP6TARGETN)"!=""
1356
1357.IF "$(APP6PRODUCTNAME)"!=""
1358APP6PRODUCTDEF+:=-DPRODUCT_NAME=\"$(APP6PRODUCTNAME)\"
1359.ENDIF          # "$(APP6PRODUCTNAME)"!=""
1360
1361.IF "$(linkinc)"!=""
1362.IF "$(GUI)"=="WNT" || "$(GUI)"=="OS2"
1363.IF "$(APP6LIBS)"!=""
1364$(MISC)/$(APP6TARGET)_linkinc.ls .PHONY:
1365    @@-$(RM) $@
1366    sed -f $(SOLARENV)/bin/chrel.sed $(foreach,i,$(APP6LIBS) $(i:s/.lib/.lin/)) >> $@
1367.ENDIF          #"$(APP6LIBS)"!=""
1368.ENDIF
1369
1370LINKINCTARGETS+=$(MISC)/$(APP6TARGETN:b)_linkinc.ls
1371$(APP6TARGETN) : $(LINKINCTARGETS)
1372.ENDIF          # "$(linkinc)"!=""
1373
1374# Allow for target specific LIBSALCPPRT override
1375APP6LIBSALCPPRT*=$(LIBSALCPPRT)
1376
1377$(APP6TARGETN): $(APP6OBJS) $(APP6LIBS) \
1378    $(APP6RES) \
1379    $(APP6ICON) $(APP6DEPN) $(USE_APP6DEF)
1380    @echo "Making:   " $(@:f)
1381.IF "$(GUI)"=="UNX"
1382.IF "$(OS)"=="MACOSX"
1383    @echo unx
1384    @-$(RM) $(MISC)/$(@:b).list
1385    @-$(RM) $(MISC)/$(TARGET).$(@:b)_6.cmd
1386    @-$(RM) $(MISC)/$(@:b).strip
1387    @echo $(STDSLO) $(APP6OBJS:s/.obj/.o/) \
1388    `cat /dev/null $(APP6LIBS) | sed s\#$(ROUT)\#$(OUT)\#g` | tr -s " " "\n" > $(MISC)/$(@:b).list
1389    @echo -n $(APP6LINKER) $(APP6LINKFLAGS) $(LINKFLAGSAPP) -L$(PRJ)/$(INPATH)/lib $(SOLARLIB) -o $@ \
1390    $(APP6LINKTYPEFLAG) $(APP6STDLIBS) $(APP6STDLIB) $(STDLIB6) -filelist $(MISC)/$(@:b).list > $(MISC)/$(TARGET).$(@:b)_6.cmd
1391    @$(PERL) $(SOLARENV)/bin/macosx-dylib-link-list.pl \
1392        `cat $(MISC)/$(TARGET).$(@:b)_6.cmd` \
1393        >> $(MISC)/$(TARGET).$(@:b)_6.cmd
1394  .IF "$(VERBOSE)" == "TRUE"
1395    @cat $(MISC)/$(TARGET).$(@:b)_6.cmd
1396  .ENDIF
1397    @+source $(MISC)/$(TARGET).$(@:b)_6.cmd
1398# Need to strip __objcInit symbol to avoid duplicate symbols when loading
1399# libraries at runtime
1400    @-nm $@ | grep -v ' U ' | $(AWK) '{ print $$NF }' | grep -F -x '__objcInit' > $(MISC)/$(@:b).strip
1401    @strip -i -R $(MISC)/$(@:b).strip -X $@
1402    @ls -l $@
1403    @$(PERL) $(SOLARENV)/bin/macosx-change-install-names.pl \
1404        app $(APP6RPATH) $@
1405.IF "$(TARGETTYPE)"=="GUI"
1406    @echo "Making:   " $(@:f).app
1407    @macosx-create-bundle $@
1408.ENDIF      # "$(TARGETTYPE)"=="GUI"
1409.ELSE       # "$(OS)"=="MACOSX"
1410    @echo unx
1411    @-$(RM) $(MISC)/$(TARGET).$(@:b)_6.cmd
1412    @echo $(APP6LINKER) $(APP6LINKFLAGS) $(LINKFLAGSAPP) -L$(PRJ)/$(INPATH)/lib $(SOLARLIB) $(STDSLO) \
1413    $(APP6OBJS:s/.obj/.o/) '\' >  $(MISC)/$(TARGET).$(@:b)_6.cmd
1414    @cat $(mktmp /dev/null $(APP6LIBS)) | xargs -n 1 cat | sed s\#$(ROUT)\#$(OUT)\#g | sed 's#$$# \\#'  >> $(MISC)/$(TARGET).$(@:b)_6.cmd
1415    @echo $(APP6LINKTYPEFLAG) $(APP6LIBSALCPPRT) $(APP6STDLIBS) $(APP6STDLIB) $(STDLIB6) -o $@ >> $(MISC)/$(TARGET).$(@:b)_6.cmd
1416  .IF "$(VERBOSE)" == "TRUE"
1417    @cat $(MISC)/$(TARGET).$(@:b)_6.cmd
1418  .ENDIF
1419    @+source $(MISC)/$(TARGET).$(@:b)_6.cmd
1420  .IF "$(VERBOSE)" == "TRUE"
1421    @ls -l $@
1422  .ENDIF
1423.ENDIF      # "$(OS)"=="MACOSX"
1424.ENDIF
1425.IF "$(GUI)" == "WNT"
1426    @@-$(MKDIR) $(@:d:d)
1427.IF "$(APP6LINKRES)" != ""
1428    @@-$(RM) $(MISC)/$(APP6LINKRES:b).rc
1429.IF "$(APP6ICON)" != ""
1430    @-echo 1 ICON $(EMQ)"$(APP6ICON:s/\/\\/)$(EMQ)" >> $(MISC)/$(APP6LINKRES:b).rc
1431.ENDIF      # "$(APP6ICON)" != ""
1432.IF "$(APP6VERINFO)" != ""
1433    @-echo $(EMQ)#define VERVARIANT $(BUILD) >> $(MISC)/$(APP6LINKRES:b).rc
1434    @-echo $(EMQ)#include  $(EMQ)"$(APP6VERINFO)$(EMQ)" >> $(MISC)/$(APP6LINKRES:b).rc
1435.ENDIF      # "$(APP6VERINFO)" != ""
1436    $(COMMAND_ECHO)$(RC) -DWIN32 $(APP6PRODUCTDEF) -I$(SOLARRESDIR) $(INCLUDE) $(RCLINKFLAGS) $(MISC)/$(APP6LINKRES:b).rc
1437.ENDIF          # "$(APP6LINKRES)" != ""
1438.IF "$(COM)" == "GCC"
1439    @echo mingw
1440.IF "$(APP6LINKRES)" != "" || "$(APP6RES)" != ""
1441    @cat $(APP6LINKRES) $(subst,/res/,/res{$(subst,$(BIN), $(@:d))} $(APP6RES)) >  $(MISC)/$(@:b)_all.res
1442    windres $(MISC)/$(@:b)_all.res $(APP6RESO)
1443.ENDIF
1444    @echo $(LINK) $(LINKFLAGS) $(LINKFLAGSAPP) $(MINGWSSTDOBJ) -L$(PRJ)/$(INPATH)/lib $(SOLARLIB) $(STDSLO) \
1445        $(APP6BASEX) $(APP6STACKN) -o $@ $(APP6OBJS) \
1446        -Wl,-Map,$(MISC)/$(@:b).map $(STDOBJ) $(APP6RESO) \
1447        `$(TYPE) /dev/null $(APP6LIBS) | sed s#$(ROUT)#$(OUT)#g` \
1448        $(APP_LINKTYPE) $(APP6LIBSALCPPRT) \
1449        -Wl,--start-group $(APP6STDLIBS) -Wl,--end-group $(APP6STDLIB) \
1450        $(STDLIB6) $(MINGWSSTDENDOBJ) > $(MISC)/$(TARGET).$(@:b)_6.cmd
1451  # need this empty line, else dmake somehow gets confused by the .IFs and .ENDIFs
1452  .IF "$(VERBOSE)" == "TRUE"
1453    @$(TYPE)  $(MISC)/$(TARGET).$(@:b)_6.cmd
1454  .ENDIF
1455    @+source $(MISC)/$(TARGET).$(@:b)_6.cmd
1456    @ls -l $@
1457.ELSE   # "$(COM)" == "GCC"
1458.IF "$(linkinc)" == ""
1459    $(COMMAND_ECHO)$(APP6LINKER) @$(mktmp \
1460        $(APP6LINKFLAGS) \
1461        $(LINKFLAGSAPP) $(APP6BASEX) \
1462        $(APP6STACKN) \
1463        -out:$@ \
1464        -map:$(MISC)/{$(subst,/,_ $(APP6TARGET)).map} \
1465        $(STDOBJ) \
1466        $(APP6LINKRES) \
1467        $(APP6RES) \
1468        $(APP6OBJS) \
1469        $(APP6LIBS) \
1470        $(APP6STDLIBS) \
1471        $(APP6STDLIB) $(STDLIB6) \
1472        )
1473    @-echo linking $@.manifest ...
1474.IF "$(VISTA_MANIFEST)"!=""
1475    $(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(MT) $(MTFLAGS) -manifest $@.manifest -manifest $(TRUSTED_MANIFEST_LOCATION)/trustedinfo.manifest -out:$@.tmanifest$(EMQ) $(FI)
1476    $(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(MT) $(MTFLAGS) -manifest $@.tmanifest -outputresource:$@$(EMQ);1 $(FI)
1477.ELSE
1478    $(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(MT) $(MTFLAGS) -manifest $@.manifest -outputresource:$@$(EMQ);1 $(FI)
1479.ENDIF # "$(VISTA_MANIFEST)"!=""
1480    $(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(RM:s/+//) $@.manifest $(FI)
1481    $(COMMAND_ECHO)$(IFEXIST) $@.tmanifest $(THEN) $(RM:s/+//) $@.tmanifest $(FI)
1482.ELSE
1483        $(COMMAND_ECHO)-$(RM) $(MISC)\$(APP6TARGET).lnk
1484        $(COMMAND_ECHO)-$(RM) $(MISC)\$(APP6TARGET).lst
1485        $(COMMAND_ECHO)-$(RM) $(MISC)\linkobj.lst
1486        for %_i in ($(MISC)\*.obj) do type %_i >> $(MISC)\linkobj.lst
1487    type $(mktmp,$(MISC)\$(APP6TARGET).lst
1488        $(APP6LINKFLAGS) \
1489        $(LINKFLAGSAPP) $(APP6BASEX) \
1490        $(APP6STACKN) \
1491        -out:$@ \
1492        $(STDOBJ) \
1493        $(APP6LINKRES) \
1494        $(APP6RES) \
1495        $(APP6OBJS) \
1496        $(APP6LIBS) \
1497        $(APP6STDLIBS) \
1498        $(APP6STDLIB) $(STDLIB6))
1499        $(COMMAND_ECHO)$(SED)$(SED) -e 's/\(\.\.\\\)\{2,4\}/..\\/g' $(MISC)\$(APP6TARGETN:b)_linkobj.lst >> $(MISC)\$(APP6TARGET).lst
1500        $(COMMAND_ECHO)$(SED)$(IFEXIST) $(MISC)/$(APP6TARGET).lst $(THEN) type $(MISC)/$(APP6TARGET).lst  >> $(MISC)/$(APP6TARGET).lnk $(FI)
1501        $(COMMAND_ECHO)$(SED)$(APP6LINKER) @$(MISC)\$(APP6TARGET).lnk
1502.ENDIF      # "$(linkinc)" == ""
1503.ENDIF      # "$(COM)" == "GCC"
1504.IF "$(APP6TARGET)" == "loader"
1505    $(COMMAND_ECHO)$(PERL) loader.pl $@
1506    $(COMMAND_ECHO)$(TYPE) $(@) $(@:d)unloader.exe > $(@:d)_new.exe
1507    $(COMMAND_ECHO)$(RM) $@
1508    $(COMMAND_ECHO)$(RENAME) $(@:d)_new.exe $(@:d)loader.exe
1509.ENDIF          # "$(TARGET)" == "setup"
1510
1511.ENDIF          # "$(GUI)" == "WNT"
1512
1513.IF "$(GUI)" == "OS2"
1514    @+-$(MKDIR) $(@:d:d) > $(NULLDEV)
1515.IF "$(APP6LINKRES)" != ""
1516    @+-$(RM) $(MISC)/$(APP6LINKRES:b).rc > $(NULLDEV)
1517.IF "$(APP6ICON)" != ""
1518    @-+echo ICON 1 $(EMQ)"$(APP6ICON:s#/#\\\\#)$(EMQ)" >> $(MISC)$/$(APP6LINKRES:b).rc
1519.ENDIF      # "$(APP6ICON)" != ""
1520.IF "$(APP6VERINFO)" != ""
1521    @-+echo $(EMQ)#define VERVARIANT    $(BUILD) >> $(MISC)/$(APP6LINKRES:b).rc
1522    @-+echo $(EMQ)#include  $(EMQ)"$(APP6VERINFO)$(EMQ)" >> $(MISC)/$(APP6LINKRES:b).rc
1523.ENDIF      # "$(APP6VERINFO)" != ""
1524    $(COMMAND_ECHO)$(RC) -r -DOS2 $(APP6PRODUCTDEF) -I$(SOLARRESDIR) $(INCLUDE) $(RCLINKFLAGS) $(MISC)/$(APP6LINKRES:b).rc
1525.ENDIF          # "$(APP6LINKRES)" != ""
1526
1527.IF "$(TARGETTYPE)" == "GUI"
1528    @echo NAME $(APP6TARGET) WINDOWAPI > $(MISC)/$(APP6TARGET).def
1529.ENDIF
1530
1531    $(COMMAND_ECHO)$(APP6LINKER) -v \
1532        $(APP6LINKFLAGS) \
1533        $(LINKFLAGSAPP) $(APP6BASEX) \
1534        $(APP6STACKN) \
1535        -o $@ \
1536        -Zmap -L$(LB) \
1537        -L$(SOLARVERSION)/$(INPATH)/lib \
1538        $(STDOBJ) \
1539        $(APP6LINKRES) \
1540        $(APP6RES) \
1541        $(APP6DEF) \
1542        $(APP6OBJS) \
1543        $(APP6LIBS) \
1544        $(APP6STDLIBS) \
1545        $(APP6STDLIB) $(STDLIB6)
1546
1547
1548.IF "$(APP6TARGET)" == "loader"
1549    $(COMMAND_ECHO)+$(PERL) loader.pl $@
1550    $(COMMAND_ECHO)+$(TYPE) $(@) $(@:d)unloader.exe > $(@:d)_new.exe
1551    $(COMMAND_ECHO)+$(RM) $@
1552    $(COMMAND_ECHO)+$(RENAME) $(@:d)_new.exe $(@:d)loader.exe
1553.ENDIF          # "$(TARGET)" == "setup"
1554
1555.ENDIF          # "$(GUI)" == "OS2"
1556
1557.ENDIF          # "$(APP6TARGETN)"!=""
1558
1559
1560# Instruction for linking
1561# unroll begin
1562
1563.IF "$(GUI)" == "OS2" && "$(TARGETTYPE)" == "GUI"
1564APP7DEF = $(MISC)/$(APP7TARGET).def
1565.ENDIF
1566
1567.IF "$(APP7LINKTYPE)" != ""
1568#must be either STATIC or SHARED
1569APP7LINKTYPEFLAG=$(APPLINK$(APP7LINKTYPE))
1570.ENDIF
1571
1572# decide how to link
1573.IF "$(APP7CODETYPE)"=="C"
1574APP7LINKER=$(LINKC)
1575APP7STDLIB=$(subst,CPPRUNTIME, $(STDLIB))
1576APP7LINKFLAGS+=$(LINKCFLAGS)
1577.ELSE           # "$(APP7CODETYPE)"=="C"
1578APP7LINKER=$(LINK)
1579APP7STDLIB=$(subst,CPPRUNTIME,$(STDLIBCPP) $(STDLIB))
1580APP7LINKFLAGS+=$(LINKFLAGS)
1581.ENDIF          # "$(APP7CODETYPE)"=="C"
1582
1583APP7RPATH*=OOO
1584LINKFLAGSRUNPATH_$(APP7RPATH)*=/ERROR:/Bad_APP7RPATH_value
1585.IF "$(OS)" != "MACOSX"
1586APP7LINKFLAGS+=$(LINKFLAGSRUNPATH_$(APP7RPATH))
1587.ENDIF
1588
1589.IF "$(APP7STACK)" != ""
1590.IF "$(LINKFLAGSTACK)" != ""
1591APP7STACKN=$(LINKFLAGSTACK)$(APP7STACK)
1592.ENDIF
1593.ELSE
1594APP7STACKN=
1595.ENDIF
1596
1597.IF "$(APP7NOSAL)"==""
1598.IF "$(TARGETTYPE)" == "GUI"
1599APP7OBJS+= $(STDOBJVCL)
1600.ENDIF
1601.ENDIF
1602
1603.IF "$(GUI)$(COM)" == "WNTGCC"
1604APP7RESO=
1605.IF "$(APP7LINKRES)" != "" || "$(APP7RES)" != ""
1606APP7RESO=$(MISC)/$(APP7TARGET:b)_res.o
1607.ENDIF
1608.ENDIF
1609
1610.IF "$(GUI)" == "UNX"
1611APP7DEPN+:=$(APP7DEPNU)
1612USE_APP7DEF=
1613.ENDIF
1614
1615.IF "$(APP7TARGETN)"!=""
1616
1617.IF "$(APP7PRODUCTNAME)"!=""
1618APP7PRODUCTDEF+:=-DPRODUCT_NAME=\"$(APP7PRODUCTNAME)\"
1619.ENDIF          # "$(APP7PRODUCTNAME)"!=""
1620
1621.IF "$(linkinc)"!=""
1622.IF "$(GUI)"=="WNT" || "$(GUI)"=="OS2"
1623.IF "$(APP7LIBS)"!=""
1624$(MISC)/$(APP7TARGET)_linkinc.ls .PHONY:
1625    @@-$(RM) $@
1626    sed -f $(SOLARENV)/bin/chrel.sed $(foreach,i,$(APP7LIBS) $(i:s/.lib/.lin/)) >> $@
1627.ENDIF          #"$(APP7LIBS)"!=""
1628.ENDIF
1629
1630LINKINCTARGETS+=$(MISC)/$(APP7TARGETN:b)_linkinc.ls
1631$(APP7TARGETN) : $(LINKINCTARGETS)
1632.ENDIF          # "$(linkinc)"!=""
1633
1634# Allow for target specific LIBSALCPPRT override
1635APP7LIBSALCPPRT*=$(LIBSALCPPRT)
1636
1637$(APP7TARGETN): $(APP7OBJS) $(APP7LIBS) \
1638    $(APP7RES) \
1639    $(APP7ICON) $(APP7DEPN) $(USE_APP7DEF)
1640    @echo "Making:   " $(@:f)
1641.IF "$(GUI)"=="UNX"
1642.IF "$(OS)"=="MACOSX"
1643    @echo unx
1644    @-$(RM) $(MISC)/$(@:b).list
1645    @-$(RM) $(MISC)/$(TARGET).$(@:b)_7.cmd
1646    @-$(RM) $(MISC)/$(@:b).strip
1647    @echo $(STDSLO) $(APP7OBJS:s/.obj/.o/) \
1648    `cat /dev/null $(APP7LIBS) | sed s\#$(ROUT)\#$(OUT)\#g` | tr -s " " "\n" > $(MISC)/$(@:b).list
1649    @echo -n $(APP7LINKER) $(APP7LINKFLAGS) $(LINKFLAGSAPP) -L$(PRJ)/$(INPATH)/lib $(SOLARLIB) -o $@ \
1650    $(APP7LINKTYPEFLAG) $(APP7STDLIBS) $(APP7STDLIB) $(STDLIB7) -filelist $(MISC)/$(@:b).list > $(MISC)/$(TARGET).$(@:b)_7.cmd
1651    @$(PERL) $(SOLARENV)/bin/macosx-dylib-link-list.pl \
1652        `cat $(MISC)/$(TARGET).$(@:b)_7.cmd` \
1653        >> $(MISC)/$(TARGET).$(@:b)_7.cmd
1654  .IF "$(VERBOSE)" == "TRUE"
1655    @cat $(MISC)/$(TARGET).$(@:b)_7.cmd
1656  .ENDIF
1657    @+source $(MISC)/$(TARGET).$(@:b)_7.cmd
1658# Need to strip __objcInit symbol to avoid duplicate symbols when loading
1659# libraries at runtime
1660    @-nm $@ | grep -v ' U ' | $(AWK) '{ print $$NF }' | grep -F -x '__objcInit' > $(MISC)/$(@:b).strip
1661    @strip -i -R $(MISC)/$(@:b).strip -X $@
1662    @ls -l $@
1663    @$(PERL) $(SOLARENV)/bin/macosx-change-install-names.pl \
1664        app $(APP7RPATH) $@
1665.IF "$(TARGETTYPE)"=="GUI"
1666    @echo "Making:   " $(@:f).app
1667    @macosx-create-bundle $@
1668.ENDIF      # "$(TARGETTYPE)"=="GUI"
1669.ELSE       # "$(OS)"=="MACOSX"
1670    @echo unx
1671    @-$(RM) $(MISC)/$(TARGET).$(@:b)_7.cmd
1672    @echo $(APP7LINKER) $(APP7LINKFLAGS) $(LINKFLAGSAPP) -L$(PRJ)/$(INPATH)/lib $(SOLARLIB) $(STDSLO) \
1673    $(APP7OBJS:s/.obj/.o/) '\' >  $(MISC)/$(TARGET).$(@:b)_7.cmd
1674    @cat $(mktmp /dev/null $(APP7LIBS)) | xargs -n 1 cat | sed s\#$(ROUT)\#$(OUT)\#g | sed 's#$$# \\#'  >> $(MISC)/$(TARGET).$(@:b)_7.cmd
1675    @echo $(APP7LINKTYPEFLAG) $(APP7LIBSALCPPRT) $(APP7STDLIBS) $(APP7STDLIB) $(STDLIB7) -o $@ >> $(MISC)/$(TARGET).$(@:b)_7.cmd
1676  .IF "$(VERBOSE)" == "TRUE"
1677    @cat $(MISC)/$(TARGET).$(@:b)_7.cmd
1678  .ENDIF
1679    @+source $(MISC)/$(TARGET).$(@:b)_7.cmd
1680  .IF "$(VERBOSE)" == "TRUE"
1681    @ls -l $@
1682  .ENDIF
1683.ENDIF      # "$(OS)"=="MACOSX"
1684.ENDIF
1685.IF "$(GUI)" == "WNT"
1686    @@-$(MKDIR) $(@:d:d)
1687.IF "$(APP7LINKRES)" != ""
1688    @@-$(RM) $(MISC)/$(APP7LINKRES:b).rc
1689.IF "$(APP7ICON)" != ""
1690    @-echo 1 ICON $(EMQ)"$(APP7ICON:s/\/\\/)$(EMQ)" >> $(MISC)/$(APP7LINKRES:b).rc
1691.ENDIF      # "$(APP7ICON)" != ""
1692.IF "$(APP7VERINFO)" != ""
1693    @-echo $(EMQ)#define VERVARIANT $(BUILD) >> $(MISC)/$(APP7LINKRES:b).rc
1694    @-echo $(EMQ)#include  $(EMQ)"$(APP7VERINFO)$(EMQ)" >> $(MISC)/$(APP7LINKRES:b).rc
1695.ENDIF      # "$(APP7VERINFO)" != ""
1696    $(COMMAND_ECHO)$(RC) -DWIN32 $(APP7PRODUCTDEF) -I$(SOLARRESDIR) $(INCLUDE) $(RCLINKFLAGS) $(MISC)/$(APP7LINKRES:b).rc
1697.ENDIF          # "$(APP7LINKRES)" != ""
1698.IF "$(COM)" == "GCC"
1699    @echo mingw
1700.IF "$(APP7LINKRES)" != "" || "$(APP7RES)" != ""
1701    @cat $(APP7LINKRES) $(subst,/res/,/res{$(subst,$(BIN), $(@:d))} $(APP7RES)) >  $(MISC)/$(@:b)_all.res
1702    windres $(MISC)/$(@:b)_all.res $(APP7RESO)
1703.ENDIF
1704    @echo $(LINK) $(LINKFLAGS) $(LINKFLAGSAPP) $(MINGWSSTDOBJ) -L$(PRJ)/$(INPATH)/lib $(SOLARLIB) $(STDSLO) \
1705        $(APP7BASEX) $(APP7STACKN) -o $@ $(APP7OBJS) \
1706        -Wl,-Map,$(MISC)/$(@:b).map $(STDOBJ) $(APP7RESO) \
1707        `$(TYPE) /dev/null $(APP7LIBS) | sed s#$(ROUT)#$(OUT)#g` \
1708        $(APP_LINKTYPE) $(APP7LIBSALCPPRT) \
1709        -Wl,--start-group $(APP7STDLIBS) -Wl,--end-group $(APP7STDLIB) \
1710        $(STDLIB7) $(MINGWSSTDENDOBJ) > $(MISC)/$(TARGET).$(@:b)_7.cmd
1711  # need this empty line, else dmake somehow gets confused by the .IFs and .ENDIFs
1712  .IF "$(VERBOSE)" == "TRUE"
1713    @$(TYPE)  $(MISC)/$(TARGET).$(@:b)_7.cmd
1714  .ENDIF
1715    @+source $(MISC)/$(TARGET).$(@:b)_7.cmd
1716    @ls -l $@
1717.ELSE   # "$(COM)" == "GCC"
1718.IF "$(linkinc)" == ""
1719    $(COMMAND_ECHO)$(APP7LINKER) @$(mktmp \
1720        $(APP7LINKFLAGS) \
1721        $(LINKFLAGSAPP) $(APP7BASEX) \
1722        $(APP7STACKN) \
1723        -out:$@ \
1724        -map:$(MISC)/{$(subst,/,_ $(APP7TARGET)).map} \
1725        $(STDOBJ) \
1726        $(APP7LINKRES) \
1727        $(APP7RES) \
1728        $(APP7OBJS) \
1729        $(APP7LIBS) \
1730        $(APP7STDLIBS) \
1731        $(APP7STDLIB) $(STDLIB7) \
1732        )
1733    @-echo linking $@.manifest ...
1734.IF "$(VISTA_MANIFEST)"!=""
1735    $(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(MT) $(MTFLAGS) -manifest $@.manifest -manifest $(TRUSTED_MANIFEST_LOCATION)/trustedinfo.manifest -out:$@.tmanifest$(EMQ) $(FI)
1736    $(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(MT) $(MTFLAGS) -manifest $@.tmanifest -outputresource:$@$(EMQ);1 $(FI)
1737.ELSE
1738    $(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(MT) $(MTFLAGS) -manifest $@.manifest -outputresource:$@$(EMQ);1 $(FI)
1739.ENDIF # "$(VISTA_MANIFEST)"!=""
1740    $(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(RM:s/+//) $@.manifest $(FI)
1741    $(COMMAND_ECHO)$(IFEXIST) $@.tmanifest $(THEN) $(RM:s/+//) $@.tmanifest $(FI)
1742.ELSE
1743        $(COMMAND_ECHO)-$(RM) $(MISC)\$(APP7TARGET).lnk
1744        $(COMMAND_ECHO)-$(RM) $(MISC)\$(APP7TARGET).lst
1745        $(COMMAND_ECHO)-$(RM) $(MISC)\linkobj.lst
1746        for %_i in ($(MISC)\*.obj) do type %_i >> $(MISC)\linkobj.lst
1747    type $(mktmp,$(MISC)\$(APP7TARGET).lst
1748        $(APP7LINKFLAGS) \
1749        $(LINKFLAGSAPP) $(APP7BASEX) \
1750        $(APP7STACKN) \
1751        -out:$@ \
1752        $(STDOBJ) \
1753        $(APP7LINKRES) \
1754        $(APP7RES) \
1755        $(APP7OBJS) \
1756        $(APP7LIBS) \
1757        $(APP7STDLIBS) \
1758        $(APP7STDLIB) $(STDLIB7))
1759        $(COMMAND_ECHO)$(SED)$(SED) -e 's/\(\.\.\\\)\{2,4\}/..\\/g' $(MISC)\$(APP7TARGETN:b)_linkobj.lst >> $(MISC)\$(APP7TARGET).lst
1760        $(COMMAND_ECHO)$(SED)$(IFEXIST) $(MISC)/$(APP7TARGET).lst $(THEN) type $(MISC)/$(APP7TARGET).lst  >> $(MISC)/$(APP7TARGET).lnk $(FI)
1761        $(COMMAND_ECHO)$(SED)$(APP7LINKER) @$(MISC)\$(APP7TARGET).lnk
1762.ENDIF      # "$(linkinc)" == ""
1763.ENDIF      # "$(COM)" == "GCC"
1764.IF "$(APP7TARGET)" == "loader"
1765    $(COMMAND_ECHO)$(PERL) loader.pl $@
1766    $(COMMAND_ECHO)$(TYPE) $(@) $(@:d)unloader.exe > $(@:d)_new.exe
1767    $(COMMAND_ECHO)$(RM) $@
1768    $(COMMAND_ECHO)$(RENAME) $(@:d)_new.exe $(@:d)loader.exe
1769.ENDIF          # "$(TARGET)" == "setup"
1770
1771.ENDIF          # "$(GUI)" == "WNT"
1772
1773.IF "$(GUI)" == "OS2"
1774    @+-$(MKDIR) $(@:d:d) > $(NULLDEV)
1775.IF "$(APP7LINKRES)" != ""
1776    @+-$(RM) $(MISC)/$(APP7LINKRES:b).rc > $(NULLDEV)
1777.IF "$(APP7ICON)" != ""
1778    @-+echo ICON 1 $(EMQ)"$(APP7ICON:s#/#\\\\#)$(EMQ)" >> $(MISC)$/$(APP7LINKRES:b).rc
1779.ENDIF      # "$(APP7ICON)" != ""
1780.IF "$(APP7VERINFO)" != ""
1781    @-+echo $(EMQ)#define VERVARIANT    $(BUILD) >> $(MISC)/$(APP7LINKRES:b).rc
1782    @-+echo $(EMQ)#include  $(EMQ)"$(APP7VERINFO)$(EMQ)" >> $(MISC)/$(APP7LINKRES:b).rc
1783.ENDIF      # "$(APP7VERINFO)" != ""
1784    $(COMMAND_ECHO)$(RC) -r -DOS2 $(APP7PRODUCTDEF) -I$(SOLARRESDIR) $(INCLUDE) $(RCLINKFLAGS) $(MISC)/$(APP7LINKRES:b).rc
1785.ENDIF          # "$(APP7LINKRES)" != ""
1786
1787.IF "$(TARGETTYPE)" == "GUI"
1788    @echo NAME $(APP7TARGET) WINDOWAPI > $(MISC)/$(APP7TARGET).def
1789.ENDIF
1790
1791    $(COMMAND_ECHO)$(APP7LINKER) -v \
1792        $(APP7LINKFLAGS) \
1793        $(LINKFLAGSAPP) $(APP7BASEX) \
1794        $(APP7STACKN) \
1795        -o $@ \
1796        -Zmap -L$(LB) \
1797        -L$(SOLARVERSION)/$(INPATH)/lib \
1798        $(STDOBJ) \
1799        $(APP7LINKRES) \
1800        $(APP7RES) \
1801        $(APP7DEF) \
1802        $(APP7OBJS) \
1803        $(APP7LIBS) \
1804        $(APP7STDLIBS) \
1805        $(APP7STDLIB) $(STDLIB7)
1806
1807
1808.IF "$(APP7TARGET)" == "loader"
1809    $(COMMAND_ECHO)+$(PERL) loader.pl $@
1810    $(COMMAND_ECHO)+$(TYPE) $(@) $(@:d)unloader.exe > $(@:d)_new.exe
1811    $(COMMAND_ECHO)+$(RM) $@
1812    $(COMMAND_ECHO)+$(RENAME) $(@:d)_new.exe $(@:d)loader.exe
1813.ENDIF          # "$(TARGET)" == "setup"
1814
1815.ENDIF          # "$(GUI)" == "OS2"
1816
1817.ENDIF          # "$(APP7TARGETN)"!=""
1818
1819
1820# Instruction for linking
1821# unroll begin
1822
1823.IF "$(GUI)" == "OS2" && "$(TARGETTYPE)" == "GUI"
1824APP8DEF = $(MISC)/$(APP8TARGET).def
1825.ENDIF
1826
1827.IF "$(APP8LINKTYPE)" != ""
1828#must be either STATIC or SHARED
1829APP8LINKTYPEFLAG=$(APPLINK$(APP8LINKTYPE))
1830.ENDIF
1831
1832# decide how to link
1833.IF "$(APP8CODETYPE)"=="C"
1834APP8LINKER=$(LINKC)
1835APP8STDLIB=$(subst,CPPRUNTIME, $(STDLIB))
1836APP8LINKFLAGS+=$(LINKCFLAGS)
1837.ELSE           # "$(APP8CODETYPE)"=="C"
1838APP8LINKER=$(LINK)
1839APP8STDLIB=$(subst,CPPRUNTIME,$(STDLIBCPP) $(STDLIB))
1840APP8LINKFLAGS+=$(LINKFLAGS)
1841.ENDIF          # "$(APP8CODETYPE)"=="C"
1842
1843APP8RPATH*=OOO
1844LINKFLAGSRUNPATH_$(APP8RPATH)*=/ERROR:/Bad_APP8RPATH_value
1845.IF "$(OS)" != "MACOSX"
1846APP8LINKFLAGS+=$(LINKFLAGSRUNPATH_$(APP8RPATH))
1847.ENDIF
1848
1849.IF "$(APP8STACK)" != ""
1850.IF "$(LINKFLAGSTACK)" != ""
1851APP8STACKN=$(LINKFLAGSTACK)$(APP8STACK)
1852.ENDIF
1853.ELSE
1854APP8STACKN=
1855.ENDIF
1856
1857.IF "$(APP8NOSAL)"==""
1858.IF "$(TARGETTYPE)" == "GUI"
1859APP8OBJS+= $(STDOBJVCL)
1860.ENDIF
1861.ENDIF
1862
1863.IF "$(GUI)$(COM)" == "WNTGCC"
1864APP8RESO=
1865.IF "$(APP8LINKRES)" != "" || "$(APP8RES)" != ""
1866APP8RESO=$(MISC)/$(APP8TARGET:b)_res.o
1867.ENDIF
1868.ENDIF
1869
1870.IF "$(GUI)" == "UNX"
1871APP8DEPN+:=$(APP8DEPNU)
1872USE_APP8DEF=
1873.ENDIF
1874
1875.IF "$(APP8TARGETN)"!=""
1876
1877.IF "$(APP8PRODUCTNAME)"!=""
1878APP8PRODUCTDEF+:=-DPRODUCT_NAME=\"$(APP8PRODUCTNAME)\"
1879.ENDIF          # "$(APP8PRODUCTNAME)"!=""
1880
1881.IF "$(linkinc)"!=""
1882.IF "$(GUI)"=="WNT" || "$(GUI)"=="OS2"
1883.IF "$(APP8LIBS)"!=""
1884$(MISC)/$(APP8TARGET)_linkinc.ls .PHONY:
1885    @@-$(RM) $@
1886    sed -f $(SOLARENV)/bin/chrel.sed $(foreach,i,$(APP8LIBS) $(i:s/.lib/.lin/)) >> $@
1887.ENDIF          #"$(APP8LIBS)"!=""
1888.ENDIF
1889
1890LINKINCTARGETS+=$(MISC)/$(APP8TARGETN:b)_linkinc.ls
1891$(APP8TARGETN) : $(LINKINCTARGETS)
1892.ENDIF          # "$(linkinc)"!=""
1893
1894# Allow for target specific LIBSALCPPRT override
1895APP8LIBSALCPPRT*=$(LIBSALCPPRT)
1896
1897$(APP8TARGETN): $(APP8OBJS) $(APP8LIBS) \
1898    $(APP8RES) \
1899    $(APP8ICON) $(APP8DEPN) $(USE_APP8DEF)
1900    @echo "Making:   " $(@:f)
1901.IF "$(GUI)"=="UNX"
1902.IF "$(OS)"=="MACOSX"
1903    @echo unx
1904    @-$(RM) $(MISC)/$(@:b).list
1905    @-$(RM) $(MISC)/$(TARGET).$(@:b)_8.cmd
1906    @-$(RM) $(MISC)/$(@:b).strip
1907    @echo $(STDSLO) $(APP8OBJS:s/.obj/.o/) \
1908    `cat /dev/null $(APP8LIBS) | sed s\#$(ROUT)\#$(OUT)\#g` | tr -s " " "\n" > $(MISC)/$(@:b).list
1909    @echo -n $(APP8LINKER) $(APP8LINKFLAGS) $(LINKFLAGSAPP) -L$(PRJ)/$(INPATH)/lib $(SOLARLIB) -o $@ \
1910    $(APP8LINKTYPEFLAG) $(APP8STDLIBS) $(APP8STDLIB) $(STDLIB8) -filelist $(MISC)/$(@:b).list > $(MISC)/$(TARGET).$(@:b)_8.cmd
1911    @$(PERL) $(SOLARENV)/bin/macosx-dylib-link-list.pl \
1912        `cat $(MISC)/$(TARGET).$(@:b)_8.cmd` \
1913        >> $(MISC)/$(TARGET).$(@:b)_8.cmd
1914  .IF "$(VERBOSE)" == "TRUE"
1915    @cat $(MISC)/$(TARGET).$(@:b)_8.cmd
1916  .ENDIF
1917    @+source $(MISC)/$(TARGET).$(@:b)_8.cmd
1918# Need to strip __objcInit symbol to avoid duplicate symbols when loading
1919# libraries at runtime
1920    @-nm $@ | grep -v ' U ' | $(AWK) '{ print $$NF }' | grep -F -x '__objcInit' > $(MISC)/$(@:b).strip
1921    @strip -i -R $(MISC)/$(@:b).strip -X $@
1922    @ls -l $@
1923    @$(PERL) $(SOLARENV)/bin/macosx-change-install-names.pl \
1924        app $(APP8RPATH) $@
1925.IF "$(TARGETTYPE)"=="GUI"
1926    @echo "Making:   " $(@:f).app
1927    @macosx-create-bundle $@
1928.ENDIF      # "$(TARGETTYPE)"=="GUI"
1929.ELSE       # "$(OS)"=="MACOSX"
1930    @echo unx
1931    @-$(RM) $(MISC)/$(TARGET).$(@:b)_8.cmd
1932    @echo $(APP8LINKER) $(APP8LINKFLAGS) $(LINKFLAGSAPP) -L$(PRJ)/$(INPATH)/lib $(SOLARLIB) $(STDSLO) \
1933    $(APP8OBJS:s/.obj/.o/) '\' >  $(MISC)/$(TARGET).$(@:b)_8.cmd
1934    @cat $(mktmp /dev/null $(APP8LIBS)) | xargs -n 1 cat | sed s\#$(ROUT)\#$(OUT)\#g | sed 's#$$# \\#'  >> $(MISC)/$(TARGET).$(@:b)_8.cmd
1935    @echo $(APP8LINKTYPEFLAG) $(APP8LIBSALCPPRT) $(APP8STDLIBS) $(APP8STDLIB) $(STDLIB8) -o $@ >> $(MISC)/$(TARGET).$(@:b)_8.cmd
1936  .IF "$(VERBOSE)" == "TRUE"
1937    @cat $(MISC)/$(TARGET).$(@:b)_8.cmd
1938  .ENDIF
1939    @+source $(MISC)/$(TARGET).$(@:b)_8.cmd
1940  .IF "$(VERBOSE)" == "TRUE"
1941    @ls -l $@
1942  .ENDIF
1943.ENDIF      # "$(OS)"=="MACOSX"
1944.ENDIF
1945.IF "$(GUI)" == "WNT"
1946    @@-$(MKDIR) $(@:d:d)
1947.IF "$(APP8LINKRES)" != ""
1948    @@-$(RM) $(MISC)/$(APP8LINKRES:b).rc
1949.IF "$(APP8ICON)" != ""
1950    @-echo 1 ICON $(EMQ)"$(APP8ICON:s/\/\\/)$(EMQ)" >> $(MISC)/$(APP8LINKRES:b).rc
1951.ENDIF      # "$(APP8ICON)" != ""
1952.IF "$(APP8VERINFO)" != ""
1953    @-echo $(EMQ)#define VERVARIANT $(BUILD) >> $(MISC)/$(APP8LINKRES:b).rc
1954    @-echo $(EMQ)#include  $(EMQ)"$(APP8VERINFO)$(EMQ)" >> $(MISC)/$(APP8LINKRES:b).rc
1955.ENDIF      # "$(APP8VERINFO)" != ""
1956    $(COMMAND_ECHO)$(RC) -DWIN32 $(APP8PRODUCTDEF) -I$(SOLARRESDIR) $(INCLUDE) $(RCLINKFLAGS) $(MISC)/$(APP8LINKRES:b).rc
1957.ENDIF          # "$(APP8LINKRES)" != ""
1958.IF "$(COM)" == "GCC"
1959    @echo mingw
1960.IF "$(APP8LINKRES)" != "" || "$(APP8RES)" != ""
1961    @cat $(APP8LINKRES) $(subst,/res/,/res{$(subst,$(BIN), $(@:d))} $(APP8RES)) >  $(MISC)/$(@:b)_all.res
1962    windres $(MISC)/$(@:b)_all.res $(APP8RESO)
1963.ENDIF
1964    @echo $(LINK) $(LINKFLAGS) $(LINKFLAGSAPP) $(MINGWSSTDOBJ) -L$(PRJ)/$(INPATH)/lib $(SOLARLIB) $(STDSLO) \
1965        $(APP8BASEX) $(APP8STACKN) -o $@ $(APP8OBJS) \
1966        -Wl,-Map,$(MISC)/$(@:b).map $(STDOBJ) $(APP8RESO) \
1967        `$(TYPE) /dev/null $(APP8LIBS) | sed s#$(ROUT)#$(OUT)#g` \
1968        $(APP_LINKTYPE) $(APP8LIBSALCPPRT) \
1969        -Wl,--start-group $(APP8STDLIBS) -Wl,--end-group $(APP8STDLIB) \
1970        $(STDLIB8) $(MINGWSSTDENDOBJ) > $(MISC)/$(TARGET).$(@:b)_8.cmd
1971  # need this empty line, else dmake somehow gets confused by the .IFs and .ENDIFs
1972  .IF "$(VERBOSE)" == "TRUE"
1973    @$(TYPE)  $(MISC)/$(TARGET).$(@:b)_8.cmd
1974  .ENDIF
1975    @+source $(MISC)/$(TARGET).$(@:b)_8.cmd
1976    @ls -l $@
1977.ELSE   # "$(COM)" == "GCC"
1978.IF "$(linkinc)" == ""
1979    $(COMMAND_ECHO)$(APP8LINKER) @$(mktmp \
1980        $(APP8LINKFLAGS) \
1981        $(LINKFLAGSAPP) $(APP8BASEX) \
1982        $(APP8STACKN) \
1983        -out:$@ \
1984        -map:$(MISC)/{$(subst,/,_ $(APP8TARGET)).map} \
1985        $(STDOBJ) \
1986        $(APP8LINKRES) \
1987        $(APP8RES) \
1988        $(APP8OBJS) \
1989        $(APP8LIBS) \
1990        $(APP8STDLIBS) \
1991        $(APP8STDLIB) $(STDLIB8) \
1992        )
1993    @-echo linking $@.manifest ...
1994.IF "$(VISTA_MANIFEST)"!=""
1995    $(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(MT) $(MTFLAGS) -manifest $@.manifest -manifest $(TRUSTED_MANIFEST_LOCATION)/trustedinfo.manifest -out:$@.tmanifest$(EMQ) $(FI)
1996    $(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(MT) $(MTFLAGS) -manifest $@.tmanifest -outputresource:$@$(EMQ);1 $(FI)
1997.ELSE
1998    $(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(MT) $(MTFLAGS) -manifest $@.manifest -outputresource:$@$(EMQ);1 $(FI)
1999.ENDIF # "$(VISTA_MANIFEST)"!=""
2000    $(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(RM:s/+//) $@.manifest $(FI)
2001    $(COMMAND_ECHO)$(IFEXIST) $@.tmanifest $(THEN) $(RM:s/+//) $@.tmanifest $(FI)
2002.ELSE
2003        $(COMMAND_ECHO)-$(RM) $(MISC)\$(APP8TARGET).lnk
2004        $(COMMAND_ECHO)-$(RM) $(MISC)\$(APP8TARGET).lst
2005        $(COMMAND_ECHO)-$(RM) $(MISC)\linkobj.lst
2006        for %_i in ($(MISC)\*.obj) do type %_i >> $(MISC)\linkobj.lst
2007    type $(mktmp,$(MISC)\$(APP8TARGET).lst
2008        $(APP8LINKFLAGS) \
2009        $(LINKFLAGSAPP) $(APP8BASEX) \
2010        $(APP8STACKN) \
2011        -out:$@ \
2012        $(STDOBJ) \
2013        $(APP8LINKRES) \
2014        $(APP8RES) \
2015        $(APP8OBJS) \
2016        $(APP8LIBS) \
2017        $(APP8STDLIBS) \
2018        $(APP8STDLIB) $(STDLIB8))
2019        $(COMMAND_ECHO)$(SED)$(SED) -e 's/\(\.\.\\\)\{2,4\}/..\\/g' $(MISC)\$(APP8TARGETN:b)_linkobj.lst >> $(MISC)\$(APP8TARGET).lst
2020        $(COMMAND_ECHO)$(SED)$(IFEXIST) $(MISC)/$(APP8TARGET).lst $(THEN) type $(MISC)/$(APP8TARGET).lst  >> $(MISC)/$(APP8TARGET).lnk $(FI)
2021        $(COMMAND_ECHO)$(SED)$(APP8LINKER) @$(MISC)\$(APP8TARGET).lnk
2022.ENDIF      # "$(linkinc)" == ""
2023.ENDIF      # "$(COM)" == "GCC"
2024.IF "$(APP8TARGET)" == "loader"
2025    $(COMMAND_ECHO)$(PERL) loader.pl $@
2026    $(COMMAND_ECHO)$(TYPE) $(@) $(@:d)unloader.exe > $(@:d)_new.exe
2027    $(COMMAND_ECHO)$(RM) $@
2028    $(COMMAND_ECHO)$(RENAME) $(@:d)_new.exe $(@:d)loader.exe
2029.ENDIF          # "$(TARGET)" == "setup"
2030
2031.ENDIF          # "$(GUI)" == "WNT"
2032
2033.IF "$(GUI)" == "OS2"
2034    @+-$(MKDIR) $(@:d:d) > $(NULLDEV)
2035.IF "$(APP8LINKRES)" != ""
2036    @+-$(RM) $(MISC)/$(APP8LINKRES:b).rc > $(NULLDEV)
2037.IF "$(APP8ICON)" != ""
2038    @-+echo ICON 1 $(EMQ)"$(APP8ICON:s#/#\\\\#)$(EMQ)" >> $(MISC)$/$(APP8LINKRES:b).rc
2039.ENDIF      # "$(APP8ICON)" != ""
2040.IF "$(APP8VERINFO)" != ""
2041    @-+echo $(EMQ)#define VERVARIANT    $(BUILD) >> $(MISC)/$(APP8LINKRES:b).rc
2042    @-+echo $(EMQ)#include  $(EMQ)"$(APP8VERINFO)$(EMQ)" >> $(MISC)/$(APP8LINKRES:b).rc
2043.ENDIF      # "$(APP8VERINFO)" != ""
2044    $(COMMAND_ECHO)$(RC) -r -DOS2 $(APP8PRODUCTDEF) -I$(SOLARRESDIR) $(INCLUDE) $(RCLINKFLAGS) $(MISC)/$(APP8LINKRES:b).rc
2045.ENDIF          # "$(APP8LINKRES)" != ""
2046
2047.IF "$(TARGETTYPE)" == "GUI"
2048    @echo NAME $(APP8TARGET) WINDOWAPI > $(MISC)/$(APP8TARGET).def
2049.ENDIF
2050
2051    $(COMMAND_ECHO)$(APP8LINKER) -v \
2052        $(APP8LINKFLAGS) \
2053        $(LINKFLAGSAPP) $(APP8BASEX) \
2054        $(APP8STACKN) \
2055        -o $@ \
2056        -Zmap -L$(LB) \
2057        -L$(SOLARVERSION)/$(INPATH)/lib \
2058        $(STDOBJ) \
2059        $(APP8LINKRES) \
2060        $(APP8RES) \
2061        $(APP8DEF) \
2062        $(APP8OBJS) \
2063        $(APP8LIBS) \
2064        $(APP8STDLIBS) \
2065        $(APP8STDLIB) $(STDLIB8)
2066
2067
2068.IF "$(APP8TARGET)" == "loader"
2069    $(COMMAND_ECHO)+$(PERL) loader.pl $@
2070    $(COMMAND_ECHO)+$(TYPE) $(@) $(@:d)unloader.exe > $(@:d)_new.exe
2071    $(COMMAND_ECHO)+$(RM) $@
2072    $(COMMAND_ECHO)+$(RENAME) $(@:d)_new.exe $(@:d)loader.exe
2073.ENDIF          # "$(TARGET)" == "setup"
2074
2075.ENDIF          # "$(GUI)" == "OS2"
2076
2077.ENDIF          # "$(APP8TARGETN)"!=""
2078
2079
2080# Instruction for linking
2081# unroll begin
2082
2083.IF "$(GUI)" == "OS2" && "$(TARGETTYPE)" == "GUI"
2084APP9DEF = $(MISC)/$(APP9TARGET).def
2085.ENDIF
2086
2087.IF "$(APP9LINKTYPE)" != ""
2088#must be either STATIC or SHARED
2089APP9LINKTYPEFLAG=$(APPLINK$(APP9LINKTYPE))
2090.ENDIF
2091
2092# decide how to link
2093.IF "$(APP9CODETYPE)"=="C"
2094APP9LINKER=$(LINKC)
2095APP9STDLIB=$(subst,CPPRUNTIME, $(STDLIB))
2096APP9LINKFLAGS+=$(LINKCFLAGS)
2097.ELSE           # "$(APP9CODETYPE)"=="C"
2098APP9LINKER=$(LINK)
2099APP9STDLIB=$(subst,CPPRUNTIME,$(STDLIBCPP) $(STDLIB))
2100APP9LINKFLAGS+=$(LINKFLAGS)
2101.ENDIF          # "$(APP9CODETYPE)"=="C"
2102
2103APP9RPATH*=OOO
2104LINKFLAGSRUNPATH_$(APP9RPATH)*=/ERROR:/Bad_APP9RPATH_value
2105.IF "$(OS)" != "MACOSX"
2106APP9LINKFLAGS+=$(LINKFLAGSRUNPATH_$(APP9RPATH))
2107.ENDIF
2108
2109.IF "$(APP9STACK)" != ""
2110.IF "$(LINKFLAGSTACK)" != ""
2111APP9STACKN=$(LINKFLAGSTACK)$(APP9STACK)
2112.ENDIF
2113.ELSE
2114APP9STACKN=
2115.ENDIF
2116
2117.IF "$(APP9NOSAL)"==""
2118.IF "$(TARGETTYPE)" == "GUI"
2119APP9OBJS+= $(STDOBJVCL)
2120.ENDIF
2121.ENDIF
2122
2123.IF "$(GUI)$(COM)" == "WNTGCC"
2124APP9RESO=
2125.IF "$(APP9LINKRES)" != "" || "$(APP9RES)" != ""
2126APP9RESO=$(MISC)/$(APP9TARGET:b)_res.o
2127.ENDIF
2128.ENDIF
2129
2130.IF "$(GUI)" == "UNX"
2131APP9DEPN+:=$(APP9DEPNU)
2132USE_APP9DEF=
2133.ENDIF
2134
2135.IF "$(APP9TARGETN)"!=""
2136
2137.IF "$(APP9PRODUCTNAME)"!=""
2138APP9PRODUCTDEF+:=-DPRODUCT_NAME=\"$(APP9PRODUCTNAME)\"
2139.ENDIF          # "$(APP9PRODUCTNAME)"!=""
2140
2141.IF "$(linkinc)"!=""
2142.IF "$(GUI)"=="WNT" || "$(GUI)"=="OS2"
2143.IF "$(APP9LIBS)"!=""
2144$(MISC)/$(APP9TARGET)_linkinc.ls .PHONY:
2145    @@-$(RM) $@
2146    sed -f $(SOLARENV)/bin/chrel.sed $(foreach,i,$(APP9LIBS) $(i:s/.lib/.lin/)) >> $@
2147.ENDIF          #"$(APP9LIBS)"!=""
2148.ENDIF
2149
2150LINKINCTARGETS+=$(MISC)/$(APP9TARGETN:b)_linkinc.ls
2151$(APP9TARGETN) : $(LINKINCTARGETS)
2152.ENDIF          # "$(linkinc)"!=""
2153
2154# Allow for target specific LIBSALCPPRT override
2155APP9LIBSALCPPRT*=$(LIBSALCPPRT)
2156
2157$(APP9TARGETN): $(APP9OBJS) $(APP9LIBS) \
2158    $(APP9RES) \
2159    $(APP9ICON) $(APP9DEPN) $(USE_APP9DEF)
2160    @echo "Making:   " $(@:f)
2161.IF "$(GUI)"=="UNX"
2162.IF "$(OS)"=="MACOSX"
2163    @echo unx
2164    @-$(RM) $(MISC)/$(@:b).list
2165    @-$(RM) $(MISC)/$(TARGET).$(@:b)_9.cmd
2166    @-$(RM) $(MISC)/$(@:b).strip
2167    @echo $(STDSLO) $(APP9OBJS:s/.obj/.o/) \
2168    `cat /dev/null $(APP9LIBS) | sed s\#$(ROUT)\#$(OUT)\#g` | tr -s " " "\n" > $(MISC)/$(@:b).list
2169    @echo -n $(APP9LINKER) $(APP9LINKFLAGS) $(LINKFLAGSAPP) -L$(PRJ)/$(INPATH)/lib $(SOLARLIB) -o $@ \
2170    $(APP9LINKTYPEFLAG) $(APP9STDLIBS) $(APP9STDLIB) $(STDLIB9) -filelist $(MISC)/$(@:b).list > $(MISC)/$(TARGET).$(@:b)_9.cmd
2171    @$(PERL) $(SOLARENV)/bin/macosx-dylib-link-list.pl \
2172        `cat $(MISC)/$(TARGET).$(@:b)_9.cmd` \
2173        >> $(MISC)/$(TARGET).$(@:b)_9.cmd
2174  .IF "$(VERBOSE)" == "TRUE"
2175    @cat $(MISC)/$(TARGET).$(@:b)_9.cmd
2176  .ENDIF
2177    @+source $(MISC)/$(TARGET).$(@:b)_9.cmd
2178# Need to strip __objcInit symbol to avoid duplicate symbols when loading
2179# libraries at runtime
2180    @-nm $@ | grep -v ' U ' | $(AWK) '{ print $$NF }' | grep -F -x '__objcInit' > $(MISC)/$(@:b).strip
2181    @strip -i -R $(MISC)/$(@:b).strip -X $@
2182    @ls -l $@
2183    @$(PERL) $(SOLARENV)/bin/macosx-change-install-names.pl \
2184        app $(APP9RPATH) $@
2185.IF "$(TARGETTYPE)"=="GUI"
2186    @echo "Making:   " $(@:f).app
2187    @macosx-create-bundle $@
2188.ENDIF      # "$(TARGETTYPE)"=="GUI"
2189.ELSE       # "$(OS)"=="MACOSX"
2190    @echo unx
2191    @-$(RM) $(MISC)/$(TARGET).$(@:b)_9.cmd
2192    @echo $(APP9LINKER) $(APP9LINKFLAGS) $(LINKFLAGSAPP) -L$(PRJ)/$(INPATH)/lib $(SOLARLIB) $(STDSLO) \
2193    $(APP9OBJS:s/.obj/.o/) '\' >  $(MISC)/$(TARGET).$(@:b)_9.cmd
2194    @cat $(mktmp /dev/null $(APP9LIBS)) | xargs -n 1 cat | sed s\#$(ROUT)\#$(OUT)\#g | sed 's#$$# \\#'  >> $(MISC)/$(TARGET).$(@:b)_9.cmd
2195    @echo $(APP9LINKTYPEFLAG) $(APP9LIBSALCPPRT) $(APP9STDLIBS) $(APP9STDLIB) $(STDLIB9) -o $@ >> $(MISC)/$(TARGET).$(@:b)_9.cmd
2196  .IF "$(VERBOSE)" == "TRUE"
2197    @cat $(MISC)/$(TARGET).$(@:b)_9.cmd
2198  .ENDIF
2199    @+source $(MISC)/$(TARGET).$(@:b)_9.cmd
2200  .IF "$(VERBOSE)" == "TRUE"
2201    @ls -l $@
2202  .ENDIF
2203.ENDIF      # "$(OS)"=="MACOSX"
2204.ENDIF
2205.IF "$(GUI)" == "WNT"
2206    @@-$(MKDIR) $(@:d:d)
2207.IF "$(APP9LINKRES)" != ""
2208    @@-$(RM) $(MISC)/$(APP9LINKRES:b).rc
2209.IF "$(APP9ICON)" != ""
2210    @-echo 1 ICON $(EMQ)"$(APP9ICON:s/\/\\/)$(EMQ)" >> $(MISC)/$(APP9LINKRES:b).rc
2211.ENDIF      # "$(APP9ICON)" != ""
2212.IF "$(APP9VERINFO)" != ""
2213    @-echo $(EMQ)#define VERVARIANT $(BUILD) >> $(MISC)/$(APP9LINKRES:b).rc
2214    @-echo $(EMQ)#include  $(EMQ)"$(APP9VERINFO)$(EMQ)" >> $(MISC)/$(APP9LINKRES:b).rc
2215.ENDIF      # "$(APP9VERINFO)" != ""
2216    $(COMMAND_ECHO)$(RC) -DWIN32 $(APP9PRODUCTDEF) -I$(SOLARRESDIR) $(INCLUDE) $(RCLINKFLAGS) $(MISC)/$(APP9LINKRES:b).rc
2217.ENDIF          # "$(APP9LINKRES)" != ""
2218.IF "$(COM)" == "GCC"
2219    @echo mingw
2220.IF "$(APP9LINKRES)" != "" || "$(APP9RES)" != ""
2221    @cat $(APP9LINKRES) $(subst,/res/,/res{$(subst,$(BIN), $(@:d))} $(APP9RES)) >  $(MISC)/$(@:b)_all.res
2222    windres $(MISC)/$(@:b)_all.res $(APP9RESO)
2223.ENDIF
2224    @echo $(LINK) $(LINKFLAGS) $(LINKFLAGSAPP) $(MINGWSSTDOBJ) -L$(PRJ)/$(INPATH)/lib $(SOLARLIB) $(STDSLO) \
2225        $(APP9BASEX) $(APP9STACKN) -o $@ $(APP9OBJS) \
2226        -Wl,-Map,$(MISC)/$(@:b).map $(STDOBJ) $(APP9RESO) \
2227        `$(TYPE) /dev/null $(APP9LIBS) | sed s#$(ROUT)#$(OUT)#g` \
2228        $(APP_LINKTYPE) $(APP9LIBSALCPPRT) \
2229        -Wl,--start-group $(APP9STDLIBS) -Wl,--end-group $(APP9STDLIB) \
2230        $(STDLIB9) $(MINGWSSTDENDOBJ) > $(MISC)/$(TARGET).$(@:b)_9.cmd
2231  # need this empty line, else dmake somehow gets confused by the .IFs and .ENDIFs
2232  .IF "$(VERBOSE)" == "TRUE"
2233    @$(TYPE)  $(MISC)/$(TARGET).$(@:b)_9.cmd
2234  .ENDIF
2235    @+source $(MISC)/$(TARGET).$(@:b)_9.cmd
2236    @ls -l $@
2237.ELSE   # "$(COM)" == "GCC"
2238.IF "$(linkinc)" == ""
2239    $(COMMAND_ECHO)$(APP9LINKER) @$(mktmp \
2240        $(APP9LINKFLAGS) \
2241        $(LINKFLAGSAPP) $(APP9BASEX) \
2242        $(APP9STACKN) \
2243        -out:$@ \
2244        -map:$(MISC)/{$(subst,/,_ $(APP9TARGET)).map} \
2245        $(STDOBJ) \
2246        $(APP9LINKRES) \
2247        $(APP9RES) \
2248        $(APP9OBJS) \
2249        $(APP9LIBS) \
2250        $(APP9STDLIBS) \
2251        $(APP9STDLIB) $(STDLIB9) \
2252        )
2253    @-echo linking $@.manifest ...
2254.IF "$(VISTA_MANIFEST)"!=""
2255    $(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(MT) $(MTFLAGS) -manifest $@.manifest -manifest $(TRUSTED_MANIFEST_LOCATION)/trustedinfo.manifest -out:$@.tmanifest$(EMQ) $(FI)
2256    $(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(MT) $(MTFLAGS) -manifest $@.tmanifest -outputresource:$@$(EMQ);1 $(FI)
2257.ELSE
2258    $(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(MT) $(MTFLAGS) -manifest $@.manifest -outputresource:$@$(EMQ);1 $(FI)
2259.ENDIF # "$(VISTA_MANIFEST)"!=""
2260    $(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(RM:s/+//) $@.manifest $(FI)
2261    $(COMMAND_ECHO)$(IFEXIST) $@.tmanifest $(THEN) $(RM:s/+//) $@.tmanifest $(FI)
2262.ELSE
2263        $(COMMAND_ECHO)-$(RM) $(MISC)\$(APP9TARGET).lnk
2264        $(COMMAND_ECHO)-$(RM) $(MISC)\$(APP9TARGET).lst
2265        $(COMMAND_ECHO)-$(RM) $(MISC)\linkobj.lst
2266        for %_i in ($(MISC)\*.obj) do type %_i >> $(MISC)\linkobj.lst
2267    type $(mktmp,$(MISC)\$(APP9TARGET).lst
2268        $(APP9LINKFLAGS) \
2269        $(LINKFLAGSAPP) $(APP9BASEX) \
2270        $(APP9STACKN) \
2271        -out:$@ \
2272        $(STDOBJ) \
2273        $(APP9LINKRES) \
2274        $(APP9RES) \
2275        $(APP9OBJS) \
2276        $(APP9LIBS) \
2277        $(APP9STDLIBS) \
2278        $(APP9STDLIB) $(STDLIB9))
2279        $(COMMAND_ECHO)$(SED)$(SED) -e 's/\(\.\.\\\)\{2,4\}/..\\/g' $(MISC)\$(APP9TARGETN:b)_linkobj.lst >> $(MISC)\$(APP9TARGET).lst
2280        $(COMMAND_ECHO)$(SED)$(IFEXIST) $(MISC)/$(APP9TARGET).lst $(THEN) type $(MISC)/$(APP9TARGET).lst  >> $(MISC)/$(APP9TARGET).lnk $(FI)
2281        $(COMMAND_ECHO)$(SED)$(APP9LINKER) @$(MISC)\$(APP9TARGET).lnk
2282.ENDIF      # "$(linkinc)" == ""
2283.ENDIF      # "$(COM)" == "GCC"
2284.IF "$(APP9TARGET)" == "loader"
2285    $(COMMAND_ECHO)$(PERL) loader.pl $@
2286    $(COMMAND_ECHO)$(TYPE) $(@) $(@:d)unloader.exe > $(@:d)_new.exe
2287    $(COMMAND_ECHO)$(RM) $@
2288    $(COMMAND_ECHO)$(RENAME) $(@:d)_new.exe $(@:d)loader.exe
2289.ENDIF          # "$(TARGET)" == "setup"
2290
2291.ENDIF          # "$(GUI)" == "WNT"
2292
2293.IF "$(GUI)" == "OS2"
2294    @+-$(MKDIR) $(@:d:d) > $(NULLDEV)
2295.IF "$(APP9LINKRES)" != ""
2296    @+-$(RM) $(MISC)/$(APP9LINKRES:b).rc > $(NULLDEV)
2297.IF "$(APP9ICON)" != ""
2298    @-+echo ICON 1 $(EMQ)"$(APP9ICON:s#/#\\\\#)$(EMQ)" >> $(MISC)$/$(APP9LINKRES:b).rc
2299.ENDIF      # "$(APP9ICON)" != ""
2300.IF "$(APP9VERINFO)" != ""
2301    @-+echo $(EMQ)#define VERVARIANT    $(BUILD) >> $(MISC)/$(APP9LINKRES:b).rc
2302    @-+echo $(EMQ)#include  $(EMQ)"$(APP9VERINFO)$(EMQ)" >> $(MISC)/$(APP9LINKRES:b).rc
2303.ENDIF      # "$(APP9VERINFO)" != ""
2304    $(COMMAND_ECHO)$(RC) -r -DOS2 $(APP9PRODUCTDEF) -I$(SOLARRESDIR) $(INCLUDE) $(RCLINKFLAGS) $(MISC)/$(APP9LINKRES:b).rc
2305.ENDIF          # "$(APP9LINKRES)" != ""
2306
2307.IF "$(TARGETTYPE)" == "GUI"
2308    @echo NAME $(APP9TARGET) WINDOWAPI > $(MISC)/$(APP9TARGET).def
2309.ENDIF
2310
2311    $(COMMAND_ECHO)$(APP9LINKER) -v \
2312        $(APP9LINKFLAGS) \
2313        $(LINKFLAGSAPP) $(APP9BASEX) \
2314        $(APP9STACKN) \
2315        -o $@ \
2316        -Zmap -L$(LB) \
2317        -L$(SOLARVERSION)/$(INPATH)/lib \
2318        $(STDOBJ) \
2319        $(APP9LINKRES) \
2320        $(APP9RES) \
2321        $(APP9DEF) \
2322        $(APP9OBJS) \
2323        $(APP9LIBS) \
2324        $(APP9STDLIBS) \
2325        $(APP9STDLIB) $(STDLIB9)
2326
2327
2328.IF "$(APP9TARGET)" == "loader"
2329    $(COMMAND_ECHO)+$(PERL) loader.pl $@
2330    $(COMMAND_ECHO)+$(TYPE) $(@) $(@:d)unloader.exe > $(@:d)_new.exe
2331    $(COMMAND_ECHO)+$(RM) $@
2332    $(COMMAND_ECHO)+$(RENAME) $(@:d)_new.exe $(@:d)loader.exe
2333.ENDIF          # "$(TARGET)" == "setup"
2334
2335.ENDIF          # "$(GUI)" == "OS2"
2336
2337.ENDIF          # "$(APP9TARGETN)"!=""
2338
2339
2340# Instruction for linking
2341# unroll begin
2342
2343.IF "$(GUI)" == "OS2" && "$(TARGETTYPE)" == "GUI"
2344APP10DEF = $(MISC)/$(APP10TARGET).def
2345.ENDIF
2346
2347.IF "$(APP10LINKTYPE)" != ""
2348#must be either STATIC or SHARED
2349APP10LINKTYPEFLAG=$(APPLINK$(APP10LINKTYPE))
2350.ENDIF
2351
2352# decide how to link
2353.IF "$(APP10CODETYPE)"=="C"
2354APP10LINKER=$(LINKC)
2355APP10STDLIB=$(subst,CPPRUNTIME, $(STDLIB))
2356APP10LINKFLAGS+=$(LINKCFLAGS)
2357.ELSE           # "$(APP10CODETYPE)"=="C"
2358APP10LINKER=$(LINK)
2359APP10STDLIB=$(subst,CPPRUNTIME,$(STDLIBCPP) $(STDLIB))
2360APP10LINKFLAGS+=$(LINKFLAGS)
2361.ENDIF          # "$(APP10CODETYPE)"=="C"
2362
2363APP10RPATH*=OOO
2364LINKFLAGSRUNPATH_$(APP10RPATH)*=/ERROR:/Bad_APP10RPATH_value
2365.IF "$(OS)" != "MACOSX"
2366APP10LINKFLAGS+=$(LINKFLAGSRUNPATH_$(APP10RPATH))
2367.ENDIF
2368
2369.IF "$(APP10STACK)" != ""
2370.IF "$(LINKFLAGSTACK)" != ""
2371APP10STACKN=$(LINKFLAGSTACK)$(APP10STACK)
2372.ENDIF
2373.ELSE
2374APP10STACKN=
2375.ENDIF
2376
2377.IF "$(APP10NOSAL)"==""
2378.IF "$(TARGETTYPE)" == "GUI"
2379APP10OBJS+= $(STDOBJVCL)
2380.ENDIF
2381.ENDIF
2382
2383.IF "$(GUI)$(COM)" == "WNTGCC"
2384APP10RESO=
2385.IF "$(APP10LINKRES)" != "" || "$(APP10RES)" != ""
2386APP10RESO=$(MISC)/$(APP10TARGET:b)_res.o
2387.ENDIF
2388.ENDIF
2389
2390.IF "$(GUI)" == "UNX"
2391APP10DEPN+:=$(APP10DEPNU)
2392USE_APP10DEF=
2393.ENDIF
2394
2395.IF "$(APP10TARGETN)"!=""
2396
2397.IF "$(APP10PRODUCTNAME)"!=""
2398APP10PRODUCTDEF+:=-DPRODUCT_NAME=\"$(APP10PRODUCTNAME)\"
2399.ENDIF          # "$(APP10PRODUCTNAME)"!=""
2400
2401.IF "$(linkinc)"!=""
2402.IF "$(GUI)"=="WNT" || "$(GUI)"=="OS2"
2403.IF "$(APP10LIBS)"!=""
2404$(MISC)/$(APP10TARGET)_linkinc.ls .PHONY:
2405    @@-$(RM) $@
2406    sed -f $(SOLARENV)/bin/chrel.sed $(foreach,i,$(APP10LIBS) $(i:s/.lib/.lin/)) >> $@
2407.ENDIF          #"$(APP10LIBS)"!=""
2408.ENDIF
2409
2410LINKINCTARGETS+=$(MISC)/$(APP10TARGETN:b)_linkinc.ls
2411$(APP10TARGETN) : $(LINKINCTARGETS)
2412.ENDIF          # "$(linkinc)"!=""
2413
2414# Allow for target specific LIBSALCPPRT override
2415APP10LIBSALCPPRT*=$(LIBSALCPPRT)
2416
2417$(APP10TARGETN): $(APP10OBJS) $(APP10LIBS) \
2418    $(APP10RES) \
2419    $(APP10ICON) $(APP10DEPN) $(USE_APP10DEF)
2420    @echo "Making:   " $(@:f)
2421.IF "$(GUI)"=="UNX"
2422.IF "$(OS)"=="MACOSX"
2423    @echo unx
2424    @-$(RM) $(MISC)/$(@:b).list
2425    @-$(RM) $(MISC)/$(TARGET).$(@:b)_10.cmd
2426    @-$(RM) $(MISC)/$(@:b).strip
2427    @echo $(STDSLO) $(APP10OBJS:s/.obj/.o/) \
2428    `cat /dev/null $(APP10LIBS) | sed s\#$(ROUT)\#$(OUT)\#g` | tr -s " " "\n" > $(MISC)/$(@:b).list
2429    @echo -n $(APP10LINKER) $(APP10LINKFLAGS) $(LINKFLAGSAPP) -L$(PRJ)/$(INPATH)/lib $(SOLARLIB) -o $@ \
2430    $(APP10LINKTYPEFLAG) $(APP10STDLIBS) $(APP10STDLIB) $(STDLIB10) -filelist $(MISC)/$(@:b).list > $(MISC)/$(TARGET).$(@:b)_10.cmd
2431    @$(PERL) $(SOLARENV)/bin/macosx-dylib-link-list.pl \
2432        `cat $(MISC)/$(TARGET).$(@:b)_10.cmd` \
2433        >> $(MISC)/$(TARGET).$(@:b)_10.cmd
2434  .IF "$(VERBOSE)" == "TRUE"
2435    @cat $(MISC)/$(TARGET).$(@:b)_10.cmd
2436  .ENDIF
2437    @+source $(MISC)/$(TARGET).$(@:b)_10.cmd
2438# Need to strip __objcInit symbol to avoid duplicate symbols when loading
2439# libraries at runtime
2440    @-nm $@ | grep -v ' U ' | $(AWK) '{ print $$NF }' | grep -F -x '__objcInit' > $(MISC)/$(@:b).strip
2441    @strip -i -R $(MISC)/$(@:b).strip -X $@
2442    @ls -l $@
2443    @$(PERL) $(SOLARENV)/bin/macosx-change-install-names.pl \
2444        app $(APP10RPATH) $@
2445.IF "$(TARGETTYPE)"=="GUI"
2446    @echo "Making:   " $(@:f).app
2447    @macosx-create-bundle $@
2448.ENDIF      # "$(TARGETTYPE)"=="GUI"
2449.ELSE       # "$(OS)"=="MACOSX"
2450    @echo unx
2451    @-$(RM) $(MISC)/$(TARGET).$(@:b)_10.cmd
2452    @echo $(APP10LINKER) $(APP10LINKFLAGS) $(LINKFLAGSAPP) -L$(PRJ)/$(INPATH)/lib $(SOLARLIB) $(STDSLO) \
2453    $(APP10OBJS:s/.obj/.o/) '\' >  $(MISC)/$(TARGET).$(@:b)_10.cmd
2454    @cat $(mktmp /dev/null $(APP10LIBS)) | xargs -n 1 cat | sed s\#$(ROUT)\#$(OUT)\#g | sed 's#$$# \\#'  >> $(MISC)/$(TARGET).$(@:b)_10.cmd
2455    @echo $(APP10LINKTYPEFLAG) $(APP10LIBSALCPPRT) $(APP10STDLIBS) $(APP10STDLIB) $(STDLIB10) -o $@ >> $(MISC)/$(TARGET).$(@:b)_10.cmd
2456  .IF "$(VERBOSE)" == "TRUE"
2457    @cat $(MISC)/$(TARGET).$(@:b)_10.cmd
2458  .ENDIF
2459    @+source $(MISC)/$(TARGET).$(@:b)_10.cmd
2460  .IF "$(VERBOSE)" == "TRUE"
2461    @ls -l $@
2462  .ENDIF
2463.ENDIF      # "$(OS)"=="MACOSX"
2464.ENDIF
2465.IF "$(GUI)" == "WNT"
2466    @@-$(MKDIR) $(@:d:d)
2467.IF "$(APP10LINKRES)" != ""
2468    @@-$(RM) $(MISC)/$(APP10LINKRES:b).rc
2469.IF "$(APP10ICON)" != ""
2470    @-echo 1 ICON $(EMQ)"$(APP10ICON:s/\/\\/)$(EMQ)" >> $(MISC)/$(APP10LINKRES:b).rc
2471.ENDIF      # "$(APP10ICON)" != ""
2472.IF "$(APP10VERINFO)" != ""
2473    @-echo $(EMQ)#define VERVARIANT $(BUILD) >> $(MISC)/$(APP10LINKRES:b).rc
2474    @-echo $(EMQ)#include  $(EMQ)"$(APP10VERINFO)$(EMQ)" >> $(MISC)/$(APP10LINKRES:b).rc
2475.ENDIF      # "$(APP10VERINFO)" != ""
2476    $(COMMAND_ECHO)$(RC) -DWIN32 $(APP10PRODUCTDEF) -I$(SOLARRESDIR) $(INCLUDE) $(RCLINKFLAGS) $(MISC)/$(APP10LINKRES:b).rc
2477.ENDIF          # "$(APP10LINKRES)" != ""
2478.IF "$(COM)" == "GCC"
2479    @echo mingw
2480.IF "$(APP10LINKRES)" != "" || "$(APP10RES)" != ""
2481    @cat $(APP10LINKRES) $(subst,/res/,/res{$(subst,$(BIN), $(@:d))} $(APP10RES)) >  $(MISC)/$(@:b)_all.res
2482    windres $(MISC)/$(@:b)_all.res $(APP10RESO)
2483.ENDIF
2484    @echo $(LINK) $(LINKFLAGS) $(LINKFLAGSAPP) $(MINGWSSTDOBJ) -L$(PRJ)/$(INPATH)/lib $(SOLARLIB) $(STDSLO) \
2485        $(APP10BASEX) $(APP10STACKN) -o $@ $(APP10OBJS) \
2486        -Wl,-Map,$(MISC)/$(@:b).map $(STDOBJ) $(APP10RESO) \
2487        `$(TYPE) /dev/null $(APP10LIBS) | sed s#$(ROUT)#$(OUT)#g` \
2488        $(APP_LINKTYPE) $(APP10LIBSALCPPRT) \
2489        -Wl,--start-group $(APP10STDLIBS) -Wl,--end-group $(APP10STDLIB) \
2490        $(STDLIB10) $(MINGWSSTDENDOBJ) > $(MISC)/$(TARGET).$(@:b)_10.cmd
2491  # need this empty line, else dmake somehow gets confused by the .IFs and .ENDIFs
2492  .IF "$(VERBOSE)" == "TRUE"
2493    @$(TYPE)  $(MISC)/$(TARGET).$(@:b)_10.cmd
2494  .ENDIF
2495    @+source $(MISC)/$(TARGET).$(@:b)_10.cmd
2496    @ls -l $@
2497.ELSE   # "$(COM)" == "GCC"
2498.IF "$(linkinc)" == ""
2499    $(COMMAND_ECHO)$(APP10LINKER) @$(mktmp \
2500        $(APP10LINKFLAGS) \
2501        $(LINKFLAGSAPP) $(APP10BASEX) \
2502        $(APP10STACKN) \
2503        -out:$@ \
2504        -map:$(MISC)/{$(subst,/,_ $(APP10TARGET)).map} \
2505        $(STDOBJ) \
2506        $(APP10LINKRES) \
2507        $(APP10RES) \
2508        $(APP10OBJS) \
2509        $(APP10LIBS) \
2510        $(APP10STDLIBS) \
2511        $(APP10STDLIB) $(STDLIB10) \
2512        )
2513    @-echo linking $@.manifest ...
2514.IF "$(VISTA_MANIFEST)"!=""
2515    $(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(MT) $(MTFLAGS) -manifest $@.manifest -manifest $(TRUSTED_MANIFEST_LOCATION)/trustedinfo.manifest -out:$@.tmanifest$(EMQ) $(FI)
2516    $(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(MT) $(MTFLAGS) -manifest $@.tmanifest -outputresource:$@$(EMQ);1 $(FI)
2517.ELSE
2518    $(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(MT) $(MTFLAGS) -manifest $@.manifest -outputresource:$@$(EMQ);1 $(FI)
2519.ENDIF # "$(VISTA_MANIFEST)"!=""
2520    $(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(RM:s/+//) $@.manifest $(FI)
2521    $(COMMAND_ECHO)$(IFEXIST) $@.tmanifest $(THEN) $(RM:s/+//) $@.tmanifest $(FI)
2522.ELSE
2523        $(COMMAND_ECHO)-$(RM) $(MISC)\$(APP10TARGET).lnk
2524        $(COMMAND_ECHO)-$(RM) $(MISC)\$(APP10TARGET).lst
2525        $(COMMAND_ECHO)-$(RM) $(MISC)\linkobj.lst
2526        for %_i in ($(MISC)\*.obj) do type %_i >> $(MISC)\linkobj.lst
2527    type $(mktmp,$(MISC)\$(APP10TARGET).lst
2528        $(APP10LINKFLAGS) \
2529        $(LINKFLAGSAPP) $(APP10BASEX) \
2530        $(APP10STACKN) \
2531        -out:$@ \
2532        $(STDOBJ) \
2533        $(APP10LINKRES) \
2534        $(APP10RES) \
2535        $(APP10OBJS) \
2536        $(APP10LIBS) \
2537        $(APP10STDLIBS) \
2538        $(APP10STDLIB) $(STDLIB10))
2539        $(COMMAND_ECHO)$(SED)$(SED) -e 's/\(\.\.\\\)\{2,4\}/..\\/g' $(MISC)\$(APP10TARGETN:b)_linkobj.lst >> $(MISC)\$(APP10TARGET).lst
2540        $(COMMAND_ECHO)$(SED)$(IFEXIST) $(MISC)/$(APP10TARGET).lst $(THEN) type $(MISC)/$(APP10TARGET).lst  >> $(MISC)/$(APP10TARGET).lnk $(FI)
2541        $(COMMAND_ECHO)$(SED)$(APP10LINKER) @$(MISC)\$(APP10TARGET).lnk
2542.ENDIF      # "$(linkinc)" == ""
2543.ENDIF      # "$(COM)" == "GCC"
2544.IF "$(APP10TARGET)" == "loader"
2545    $(COMMAND_ECHO)$(PERL) loader.pl $@
2546    $(COMMAND_ECHO)$(TYPE) $(@) $(@:d)unloader.exe > $(@:d)_new.exe
2547    $(COMMAND_ECHO)$(RM) $@
2548    $(COMMAND_ECHO)$(RENAME) $(@:d)_new.exe $(@:d)loader.exe
2549.ENDIF          # "$(TARGET)" == "setup"
2550
2551.ENDIF          # "$(GUI)" == "WNT"
2552
2553.IF "$(GUI)" == "OS2"
2554    @+-$(MKDIR) $(@:d:d) > $(NULLDEV)
2555.IF "$(APP10LINKRES)" != ""
2556    @+-$(RM) $(MISC)/$(APP10LINKRES:b).rc > $(NULLDEV)
2557.IF "$(APP10ICON)" != ""
2558    @-+echo ICON 1 $(EMQ)"$(APP10ICON:s#/#\\\\#)$(EMQ)" >> $(MISC)$/$(APP10LINKRES:b).rc
2559.ENDIF      # "$(APP10ICON)" != ""
2560.IF "$(APP10VERINFO)" != ""
2561    @-+echo $(EMQ)#define VERVARIANT    $(BUILD) >> $(MISC)/$(APP10LINKRES:b).rc
2562    @-+echo $(EMQ)#include  $(EMQ)"$(APP10VERINFO)$(EMQ)" >> $(MISC)/$(APP10LINKRES:b).rc
2563.ENDIF      # "$(APP10VERINFO)" != ""
2564    $(COMMAND_ECHO)$(RC) -r -DOS2 $(APP10PRODUCTDEF) -I$(SOLARRESDIR) $(INCLUDE) $(RCLINKFLAGS) $(MISC)/$(APP10LINKRES:b).rc
2565.ENDIF          # "$(APP10LINKRES)" != ""
2566
2567.IF "$(TARGETTYPE)" == "GUI"
2568    @echo NAME $(APP10TARGET) WINDOWAPI > $(MISC)/$(APP10TARGET).def
2569.ENDIF
2570
2571    $(COMMAND_ECHO)$(APP10LINKER) -v \
2572        $(APP10LINKFLAGS) \
2573        $(LINKFLAGSAPP) $(APP10BASEX) \
2574        $(APP10STACKN) \
2575        -o $@ \
2576        -Zmap -L$(LB) \
2577        -L$(SOLARVERSION)/$(INPATH)/lib \
2578        $(STDOBJ) \
2579        $(APP10LINKRES) \
2580        $(APP10RES) \
2581        $(APP10DEF) \
2582        $(APP10OBJS) \
2583        $(APP10LIBS) \
2584        $(APP10STDLIBS) \
2585        $(APP10STDLIB) $(STDLIB10)
2586
2587
2588.IF "$(APP10TARGET)" == "loader"
2589    $(COMMAND_ECHO)+$(PERL) loader.pl $@
2590    $(COMMAND_ECHO)+$(TYPE) $(@) $(@:d)unloader.exe > $(@:d)_new.exe
2591    $(COMMAND_ECHO)+$(RM) $@
2592    $(COMMAND_ECHO)+$(RENAME) $(@:d)_new.exe $(@:d)loader.exe
2593.ENDIF          # "$(TARGET)" == "setup"
2594
2595.ENDIF          # "$(GUI)" == "OS2"
2596
2597.ENDIF          # "$(APP10TARGETN)"!=""
2598
2599
2600# Instruction for linking
2601