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