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