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