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