xref: /aoo41x/main/solenv/inc/_tg_shl.mk (revision d71964d5)
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# unroll begin
22
23.IF "$(SHL1TARGETN)"!=""
24
25.IF "$(OS)"=="AIX"
26SHL1STDLIBS=
27.ENDIF
28
29.IF "$(SHLLINKARCONLY)" != ""
30SHL1STDLIBS=
31STDSHL=
32.ELSE
33SHL1ARCHIVES=
34.ENDIF
35
36# decide how to link
37.IF "$(SHL1CODETYPE)"=="C"
38SHL1LINKER=$(LINKC)
39SHL1STDSHL=$(subst,CPPRUNTIME, $(STDSHL))
40SHL1LINKFLAGS+=$(LINKCFLAGS)
41.ELSE			# "$(SHL1CODETYPE)"=="C"
42SHL1LINKER=$(LINK)
43SHL1STDSHL=$(subst,CPPRUNTIME,$(STDLIBCPP) $(STDSHL))
44SHL1LINKFLAGS+=$(LINKFLAGS)
45.ENDIF			# "$(SHL1CODETYPE)"=="C"
46
47SHL1RPATH*=OOO
48LINKFLAGSRUNPATH_$(SHL1RPATH)*=/ERROR:/Bad_SHL1RPATH_value
49SHL1LINKFLAGS+=$(LINKFLAGSRUNPATH_$(SHL1RPATH))
50
51.IF "$(SHL1USE_EXPORTS)"==""
52SHL1DEF*=$(MISC)/$(SHL1TARGET).def
53.ENDIF			# "$(SHL1USE_EXPORTS)"==""
54
55EXTRALIBPATHS1=$(EXTRALIBPATHS)
56.IF "$(UPDATER)"=="YES"
57.IF "$(SHL1NOCHECK)"==""
58.IF "$(SOLAR_STLLIBPATH)"!=""
59EXTRALIBPATHS1+=-L$(SOLAR_STLLIBPATH)
60.ENDIF
61.ENDIF				# "$(SHL1NOCHECK)"!=""
62.ENDIF
63#+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
64#+++++++++++    version object      ++++++++++++++++++++++++++++++++++++++++
65#+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
66
67.IF "$(L10N_framework)"==""
68.IF "$(VERSIONOBJ)"!=""
69SHL1VERSIONOBJ:=$(VERSIONOBJ:d){$(subst,$(DLLPOSTFIX),_dflt $(SHL1TARGET))}$(VERSIONOBJ:f)
70USE_VERSIONH:=$(INCCOM)/$(SHL1VERSIONOBJ:b).h
71.IF "$(GUI)" == "UNX"
72SHL1VERSIONOBJDEP:=$(VERSIONOBJ:d){$(subst,$(DLLPOSTFIX),_dflt $(SHL1TARGET))}$(VERSIONOBJ:f:s/.o/.obj/)
73.ELSE           # "$(GUI)" == "UNX"
74SHL1VERSIONOBJDEP:=$(VERSIONOBJ:d){$(subst,$(DLLPOSTFIX),_dflt $(SHL1TARGET))}$(VERSIONOBJ:f)
75.ENDIF          # "$(GUI)" == "UNX"
76$(MISC)/$(SHL1VERSIONOBJ:b).c : $(SOLARENV)/src/version.c $(INCCOM)/$(SHL1VERSIONOBJ:b).h
77#    $(COPY) $(SOLARENV)/src/version.c $@
78	$(COMMAND_ECHO)$(TYPE) $(SOLARENV)/src/version.c | $(SED) s/_version.h/$(SHL1VERSIONOBJ:b).h/ > $@
79
80.INIT : $(SHL1VERSIONOBJDEP)
81.ENDIF			# "$(VERSIONOBJ)"!=""
82.ENDIF
83
84.IF "$(GUI)" != "UNX"
85.IF "$(GUI)" == "WNT" || "$(GUI)" == "OS2"
86.IF "$(SHL1IMPLIB)" == ""
87SHL1IMPLIB=i$(TARGET)_t1
88.ENDIF			# "$(SHL1IMPLIB)" == ""
89.IF "$(COM)" != "GCC"
90USE_1IMPLIB=-implib:$(LB)/$(SHL1IMPLIB).lib
91.ENDIF			# "$(COM)" != "GCC"
92SHL1IMPLIBN=$(LB)/$(SHL1IMPLIB).lib
93ALLTAR : $(SHL1IMPLIBN)
94
95.IF "$(USE_DEFFILE)"==""
96USE_1IMPLIB_DEPS=$(LB)/$(SHL1IMPLIB).lib
97.ENDIF			# "$(USE_DEFFILE)"==""
98.ENDIF			# "$(GUI)" == "WNT" || "$(GUI)" == "OS2"
99USE_SHL1DEF=$(SHL1DEF)
100.ELSE			# "$(GUI)" != "UNX"
101USE_SHL1DEF=
102SHL1DEPN+:=$(SHL1DEPNU)
103
104.IF "$(SHL1VERSIONMAP)"==""
105# to activate vmaps remove "#"
106USE_SHL1VERSIONMAP=$(MISC)/$(SHL1TARGET).vmap
107.ENDIF			# "$(SHL1VERSIONMAP)"==""
108
109.IF "$(USE_SHL1VERSIONMAP)"!=""
110
111.IF "$(SHL1FILTERFILE)"!=""
112.IF "$(SHL1VERSIONMAP)"!=""
113#eine von beiden ist zuviel
114USE_SHL1VERSIONMAP=$(MISC)/$(SHL1TARGET).vmap
115$(USE_SHL1VERSIONMAP) .PHONY:
116	@echo -----------------------------
117	@echo you should only use versionmap OR exportfile
118	@echo -----------------------------
119#	force_dmake_to_error
120
121.ENDIF			# "$(SHL1VERSIONMAP)"!=""
122
123SHL1VERSIONMAPPARA=$(LINKVERSIONMAPFLAG) $(USE_SHL1VERSIONMAP)
124
125$(USE_SHL1VERSIONMAP): \
126					$(SHL1OBJS)\
127					$(SHL1LIBS)\
128					$(SHL1FILTERFILE)
129	@$(RM) $@.dump
130.IF "$(SHL1OBJS)"!=""
131# dump remaining objects on the fly
132.IF "$(OS)"=="MACOSX"
133	@-nm $(SHL1OBJS:s/.obj/.o/) > $@.dump
134.ELSE
135	@nm $(SHL1OBJS:s/.obj/.o/) > $@.dump
136.ENDIF
137.ENDIF			# "$(SHL1OBJS)!"=""
138	@$(TYPE) /dev/null $(SHL1LIBS:s/.lib/.dump/) >> $@.dump
139	$(COMMAND_ECHO) $(PERL) $(SOLARENV)/bin/mapgen.pl -d $@.dump -s $(SHL1INTERFACE) -f $(SHL1FILTERFILE) -m $@
140
141.ELSE			# "$(SHL1FILTERFILE)"!=""
142USE_SHL1VERSIONMAP=$(MISC)/$(SHL1TARGET).vmap
143$(USE_SHL1VERSIONMAP) :
144.IF "$(VERBOSE)" == "TRUE"
145	@echo -----------------------------
146	@echo SHL1FILTERFILE not set!
147	@echo -----------------------------
148	@$(TOUCH) $@
149	@echo dummy file to keep the dependencies for later use.
150.ELSE
151	@$(TOUCH) $@
152.ENDIF
153#	force_dmake_to_error
154.ENDIF			# "$(SHL1FILTERFILE)"!=""
155.ELSE			# "$(USE_SHL1VERSIONMAP)"!=""
156
157#and now for the plain non-generic way...
158.IF "$(SHL1VERSIONMAP)"!=""
159USE_SHL1VERSIONMAP=$(MISC)/$(SHL1VERSIONMAP:b)_$(SHL1TARGET)$(SHL1VERSIONMAP:e)
160SHL1VERSIONMAPPARA=$(LINKVERSIONMAPFLAG) $(USE_SHL1VERSIONMAP)
161
162.IF "$(OS)"=="MACOSX"
163$(USE_SHL1VERSIONMAP): $(SHL1OBJS) $(SHL1LIBS)
164.ENDIF
165
166# .ERRREMOVE is needed as a recipe line like "$(AWK) ... > $@" would create $@
167# even if the $(AWK) part fails:
168$(USE_SHL1VERSIONMAP) .ERRREMOVE: $(SHL1VERSIONMAP)
169	@@-$(RM) -f $@
170# The following files will only be generated and needed on Mac OS X as temporary files
171# in order to generate exported symbols list out of Linux/Solaris map files
172.IF "$(OS)"=="MACOSX"
173	@-$(RM) -f $@.symregexp >& $(NULLDEV)
174	@-$(RM) -f $@.expsymlist >& $(NULLDEV)
175.ENDIF
176# Its questionable if the following condition '.IF "$(COMID)"=="gcc3"' makes sense and what
177# happens if somebody will change it in the future
178.IF "$(COMID)"=="gcc3"
179	$(COMMAND_ECHO) tr -d "\015" < $(SHL1VERSIONMAP) | $(AWK) -f $(SOLARENV)/bin/addsym.awk > $@
180.ELIF "$(COMNAME)"=="sunpro5"
181	$(COMMAND_ECHO) tr -d "\015" < $(SHL1VERSIONMAP) | $(GREP) -v $(IGNORE_SYMBOLS) > $@
182.ELSE           # "$(COMID)"=="gcc3"
183	$(COMMAND_ECHO) tr -d "\015" < $(SHL1VERSIONMAP) > $@
184.ENDIF          # "$(COMID)"=="gcc3"
185	@chmod a+w $@
186# Mac OS X post-processing generate an exported symbols list from the generated map file
187# for details on exported symbols list see man ld on Mac OS X
188.IF "$(OS)"=="MACOSX"
189	@-cat $@ | $(AWK) -f $(SOLARENV)/bin/unxmap-to-macosx-explist.awk | grep -v "\*\|?" > $@.exported-symbols
190	@-cat $@ | $(AWK) -f $(SOLARENV)/bin/unxmap-to-macosx-explist.awk | grep "\*\|?" > $@.symbols-regexp
191# Shared libraries will be build out of the *.obj files specified in SHL?OBJS and SHL?LIBS
192# Extract RTTI symbols from all the objects that will be used to build a shared library
193.IF "$(SHL1OBJS)"!=""
194	-echo $(foreach,i,$(SHL1OBJS:s/.obj/.o/) $i) | xargs -n1 nm -gx | $(SOLARENV)/bin/addsym-macosx.sh $@.symbols-regexp $@.symbols-regexp.tmp >> $@.exported-symbols
195.ENDIF
196.IF "$(SHL1LIBS)"!=""
197	$(COMMAND_ECHO)-$(TYPE) $(foreach,j,$(SHL1LIBS) $j) | $(SED) s\#$(ROUT)\#$(PRJ)/$(ROUT)\#g | xargs -n1 nm -gx | $(SOLARENV)/bin/addsym-macosx.sh $@.symbols-regexp $@.symbols-regexp.tmp >> $@.exported-symbols
198.ENDIF
199# overwrite the map file generate into the local output tree with the generated
200# exported symbols list
201	cp $@.exported-symbols $@
202.ENDIF # .IF "$(OS)"=="MACOSX"
203.ENDIF			# "$(SHL1VERSIONMAP)"!=""
204.ENDIF			# "$(USE_SHL1VERSIONMAP)"!=""
205.ENDIF			# "$(GUI)" != "UNX"
206
207.IF "$(UNIXVERSIONNAMES)"!=""
208.IF "$(OS)"!="MACOSX"
209.IF "$(GUI)"=="UNX"
210SHL1SONAME=\"$(SONAME_SWITCH)$(SHL1TARGETN:f)\"
211.ENDIF			# "$(GUI)"!="UNX"
212.ENDIF			# "$(OS)"!="MACOSX"
213.ENDIF			# "$(UNIXVERSIONNAMES)"!=""
214
215.IF "$(SHL1RES)"!=""
216SHL1ALLRES+=$(SHL1RES)
217SHL1LINKRES*=$(MISC)/$(SHL1TARGET).res
218SHL1LINKRESO*=$(MISC)/$(SHL1TARGET)_res.o
219.ENDIF			# "$(SHL1RES)"!=""
220
221.IF "$(SHL1DEFAULTRES)$(use_shl_versions)"!=""
222SHL1DEFAULTRES*=$(MISC)/$(SHL1TARGET)_def.res
223SHL1ALLRES+=$(SHL1DEFAULTRES)
224SHL1LINKRES*=$(MISC)/$(SHL1TARGET).res
225SHL1LINKRESO*=$(MISC)/$(SHL1TARGET)_res.o
226.ENDIF			# "$(SHL1DEFAULTRES)$(use_shl_versions)"!=""
227
228#.IF "$(SHL1TARGETN)"!=""
229
230.IF "$(linkinc)"!=""
231.IF "$(GUI)"=="WNT" || "$(GUI)" == "OS2"
232.IF "$(SHL1LIBS)"!=""
233$(MISC)/$(SHL1TARGET)_linkinc.ls .PHONY:
234	@@-$(RM) $@
235	$(COMMAND_ECHO)$(SED) -f $(SOLARENV)/bin/chrel.sed $(foreach,i,$(SHL1LIBS) $(i:s/.lib/.lin/)) >> $@
236.ENDIF          # "$(SHL1LIBS)"!=""
237.ENDIF
238
239LINKINCTARGETS+=$(MISC)/$(SHL1TARGETN:b)_linkinc.ls
240$(SHL1TARGETN) : $(LINKINCTARGETS)
241
242.ELSE
243.IF "$(SHL1USE_EXPORTS)"=="name"
244.IF "$(GUI)"=="WNT" || "$(GUI)" == "OS2"
245.IF "$(COM)"!="GCC"
246.IF "$(SHL1LIBS)"!=""
247SHL1LINKLIST=$(MISC)/$(SHL1TARGET)_link.lst
248SHL1LINKLISTPARAM=@$(SHL1LINKLIST)
249$(SHL1LINKLIST) : $(SHL1LIBS)
250    @@-$(RM) $@
251	$(COMMAND_ECHO)$(SED) -f $(SOLARENV)/bin/chrel.sed $(foreach,i,$(SHL1LIBS) $(i:s/.lib/.lin/)) >> $@
252.ENDIF          # "$(SHL1LIBS)"!=""
253.ENDIF          # "$(COM)"!="GCC"
254.ENDIF
255.ENDIF			# "$(SHL1USE_EXPORTS)"=="name"
256
257$(MISC)/%linkinc.ls:
258	@echo . > $@
259.ENDIF          # "$(linkinc)"!=""
260
261.IF "$(GUI)" == "OS2"
262#21/02/2006 YD dll names must be 8.3, invoke fix script
263#check osl/os2/module.c/osl_loadModule()
264SHL1TARGET8=$(shell @fix_shl.cmd $(SHL1TARGET))
265.ENDIF
266
267
268$(SHL1TARGETN) : \
269					$(SHL1OBJS)\
270					$(SHL1LIBS)\
271					$(USE_1IMPLIB_DEPS)\
272					$(USE_SHL1DEF)\
273					$(USE_SHL1VERSIONMAP)\
274					$(SHL1RES)\
275					$(SHL1DEPN) \
276					$(SHL1LINKLIST)
277	@echo "Making:   " $(@:f)
278.IF "$(GUI)" == "WNT"
279.IF "$(SHL1DEFAULTRES)"!=""
280	@@-$(RM) $(MISC)/$(SHL1DEFAULTRES:b).rc
281.IF "$(SHL1ICON)" != ""
282	@echo 1 ICON $(SHL1ICON) >> $(MISC)/$(SHL1DEFAULTRES:b).rc
283.ENDIF
284.IF "$(use_shl_versions)" != ""
285.IF "$(SHL1ADD_VERINFO)"!=""
286	@echo $(EMQ)#include $(EMQ)"$(SHL1ADD_VERINFO)$(EMQ)" >> $(MISC)/$(SHL1DEFAULTRES:b).rc
287.ELSE			# "$(SHL1ADD_VERINFO)"!=""
288	@echo $(EMQ)#define ADDITIONAL_VERINFO1 >> $(MISC)/$(SHL1DEFAULTRES:b).rc
289	@echo $(EMQ)#define ADDITIONAL_VERINFO2 >> $(MISC)/$(SHL1DEFAULTRES:b).rc
290	@echo $(EMQ)#define ADDITIONAL_VERINFO3 >> $(MISC)/$(SHL1DEFAULTRES:b).rc
291.ENDIF			# "$(SHL1ADD_VERINFO)"!=""
292	@echo $(EMQ)#define VERVARIANT	$(BUILD) >> $(MISC)/$(SHL1DEFAULTRES:b).rc
293	@echo $(EMQ)#define ORG_NAME	$(SHL1TARGET)$(DLLPOST) >> $(MISC)/$(SHL1DEFAULTRES:b).rc
294	@echo $(EMQ)#define INTERNAL_NAME $(SHL1TARGET:b) >> $(MISC)/$(SHL1DEFAULTRES:b).rc
295	@echo $(EMQ)#include $(EMQ)"shlinfo.rc$(EMQ)" >> $(MISC)/$(SHL1DEFAULTRES:b).rc
296.ENDIF			# "$(use_shl_versions)" != ""
297	$(COMMAND_ECHO)$(RC) -DWIN32 $(INCLUDE) $(RCLINKFLAGS) $(MISC)/$(SHL1DEFAULTRES:b).rc
298.ENDIF			# "$(SHL1DEFAULTRES)"!=""
299.IF "$(SHL1ALLRES)"!=""
300	$(COMMAND_ECHO)$(TYPE) $(SHL1ALLRES) > $(SHL1LINKRES)
301.IF "$(COM)"=="GCC"
302	windres $(SHL1LINKRES) $(SHL1LINKRESO)
303.ENDIF			# "$(COM)"=="GCC"
304.ENDIF			# "$(SHL1ALLRES)"!=""
305.IF "$(COM)"=="GCC"	# always have to call dlltool explicitly as ld cannot handle # comment in .def
306	@echo dlltool --dllname $(SHL1TARGET)$(DLLPOST) \
307		--kill-at \\ > $(MISC)/$(TARGET).$(@:b)_1.cmd
308	@noop $(assign ALL1OBJLIST:=$(STDOBJ) $(SHL1OBJS) $(SHL1LINKRESO) $(shell $(TYPE) /dev/null $(SHL1LIBS) | $(SED) s?$(ROUT)?$(PRJ)/$(ROUT)?g))
309.IF "$(DEFLIB1NAME)"!=""	# do not have to include objs
310	@noop $(assign DEF1OBJLIST:=$(shell $(TYPE) $(foreach,i,$(DEFLIB1NAME) $(SLB)/$(i).lib) | sed s?$(ROUT)?$(PRJ)/$(ROUT)?g))
311	@noop $(foreach,i,$(DEF1OBJLIST) $(assign ALL1OBJLIST:=$(ALL1OBJLIST:s?$i??)))
312.ENDIF			# "$(DEFLIB1NAME)"!=""
313	@echo	--output-exp $(MISC)/$(@:b)_exp.o \\ >> $(MISC)/$(TARGET).$(@:b)_1.cmd
314.IF "$(SHL1DEF)"!=""
315	@echo	--input-def $(SHL1DEF) \\ >> $(MISC)/$(TARGET).$(@:b)_1.cmd
316.ELSE
317	@echo	$(SHL1VERSIONOBJ) $(SHL1DESCRIPTIONOBJ) \\ >> $(MISC)/$(TARGET).$(@:b)_1.cmd
318.ENDIF
319	@echo	$(ALL1OBJLIST) >> $(MISC)/$(TARGET).$(@:b)_1.cmd
320	@echo $(LINK) $(LINKFLAGS) $(LINKFLAGSSHL) $(MINGWSSTDOBJ) -o $@ \
321		$(STDOBJ) $(SHL1VERSIONOBJ) $(SHL1DESCRIPTIONOBJ) $(SHL1OBJS) $(SHL1LINKRESO) \
322		`$(TYPE) /dev/null $(SHL1LIBS) | $(SED) s\#$(ROUT)\#$(PRJ)/$(ROUT)\#g` \
323		-Wl,--exclude-libs,ALL,--start-group $(SHL1STDLIBS) -Wl,--end-group \
324		$(SHL1STDSHL) $(STDSHL1) $(MISC)/$(@:b)_exp.o $(MINGWSSTDENDOBJ) \
325		-Wl,-Map,$(MISC)/$(@:b).map >> $(MISC)/$(TARGET).$(@:b)_1.cmd
326  .IF "$(VERBOSE)" == "TRUE"
327	@$(TYPE)  $(MISC)/$(TARGET).$(@:b)_1.cmd
328  .ENDIF
329	@+source $(MISC)/$(TARGET).$(@:b)_1.cmd
330.ELSE
331.IF "$(linkinc)"==""
332.IF "$(SHL1USE_EXPORTS)"!="name"
333.IF "$(USE_DEFFILE)"!=""
334	$(COMMAND_ECHO)$(SHL1LINKER) @$(mktmp \
335		$(SHL1LINKFLAGS) \
336		$(LINKFLAGSSHL) \
337		$(SHL1STACK) $(SHL1BASEX)	\
338		-out:$@ \
339		-map:$(MISC)/$(@:b).map \
340		-def:$(SHL1DEF) \
341		$(USE_1IMPLIB) \
342		$(STDOBJ) \
343		$(SHL1VERSIONOBJ) $(SHL1OBJS) \
344		$(SHL1LIBS) \
345		$(SHL1STDLIBS) \
346		$(SHL1STDSHL) $(STDSHL1) \
347		$(SHL1LINKRES) \
348	)
349# double check if target was really written... still making sense?
350    @@$(LS) $@
351	@echo linking $@.manifest ...
352.IF "$(VISTA_MANIFEST)"!=""
353	$(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(MT) $(MTFLAGS) -manifest $@.manifest -manifest $(TRUSTED_MANIFEST_LOCATION)/trustedinfo.manifest -out:$@.tmanifest$(EMQ) $(FI)
354	$(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(MT) $(MTFLAGS) -manifest $@.tmanifest -outputresource:$@$(EMQ);2 $(FI)
355.ELSE
356	$(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(MT) $(MTFLAGS) -manifest $@.manifest -outputresource:$@$(EMQ);2 $(FI)
357.ENDIF # "$(VISTA_MANIFEST)"!=""
358	$(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(RM:s/+//) $@.manifest $(FI)
359	$(COMMAND_ECHO)$(IFEXIST) $@.tmanifest $(THEN) $(RM:s/+//) $@.tmanifest $(FI)
360.ELSE			# "$(USE_DEFFILE)"!=""
361	$(COMMAND_ECHO)$(SHL1LINKER) @$(mktmp	$(SHL1LINKFLAGS)			\
362		$(LINKFLAGSSHL) $(SHL1BASEX)		\
363		$(SHL1STACK) -out:$(SHL1TARGETN)	\
364		-map:$(MISC)/$(@:B).map				\
365		$(LB)/$(SHL1IMPLIB).exp				\
366		$(STDOBJ)							\
367		$(SHL1OBJS) $(SHL1VERSIONOBJ) \
368		$(SHL1LIBS)                         \
369		$(SHL1STDLIBS)                      \
370		$(SHL1STDSHL) $(STDSHL1)                           \
371		$(SHL1LINKRES) \
372	)
373# double check if target was really written... still making sense?
374    @@$(LS) $@
375	@echo linking $@.manifest ...
376.IF "$(VISTA_MANIFEST)"!=""
377	$(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(MT) $(MTFLAGS) -manifest $@.manifest -manifest $(TRUSTED_MANIFEST_LOCATION)/trustedinfo.manifest -out:$@.tmanifest$(EMQ) $(FI)
378	$(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(MT) $(MTFLAGS) -manifest $@.tmanifest -outputresource:$@$(EMQ);2 $(FI)
379.ELSE
380	$(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(MT) $(MTFLAGS) -manifest $@.manifest -outputresource:$@$(EMQ);2 $(FI)
381.ENDIF # "$(VISTA_MANIFEST)"!=""
382	$(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(RM:s/+//) $@.manifest $(FI)
383	$(COMMAND_ECHO)$(IFEXIST) $@.tmanifest $(THEN) $(RM:s/+//) $@.tmanifest $(FI)
384.ENDIF			# "$(USE_DEFFILE)"!=""
385.ELSE			# "$(SHL1USE_EXPORTS)"!="name"
386	$(COMMAND_ECHO)$(SHL1LINKER) @$(mktmp	$(SHL1LINKFLAGS)			\
387		$(LINKFLAGSSHL) $(SHL1BASEX)		\
388		$(SHL1STACK) -out:$(SHL1TARGETN)	\
389		-map:$(MISC)/$(@:B).map				\
390		$(USE_1IMPLIB) \
391		$(STDOBJ)							\
392		$(SHL1OBJS) $(SHL1VERSIONOBJ))   \
393		$(SHL1LINKLISTPARAM) \
394		@$(mktmp $(SHL1STDLIBS)                      \
395		$(SHL1STDSHL) $(STDSHL1)                           \
396		$(SHL1LINKRES) \
397	)
398	@echo linking $@.manifest ...
399.IF "$(VISTA_MANIFEST)"!=""
400	$(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(MT) $(MTFLAGS) -manifest $@.manifest -manifest $(TRUSTED_MANIFEST_LOCATION)/trustedinfo.manifest -out:$@.tmanifest$(EMQ) $(FI)
401	$(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(MT) $(MTFLAGS) -manifest $@.tmanifest -outputresource:$@$(EMQ);2 $(FI)
402.ELSE
403	$(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(MT) $(MTFLAGS) -manifest $@.manifest -outputresource:$@$(EMQ);2 $(FI)
404.ENDIF # "$(VISTA_MANIFEST)"!=""
405	$(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(RM:s/+//) $@.manifest $(FI)
406	$(COMMAND_ECHO)$(IFEXIST) $@.tmanifest $(THEN) $(RM:s/+//) $@.tmanifest $(FI)
407.ENDIF			# "$(SHL1USE_EXPORTS)"!="name"
408.ELSE			# "$(linkinc)"==""
409		$(COMMAND_ECHO)-$(RM) del $(MISC)/$(SHL1TARGET).lnk
410		$(COMMAND_ECHO)-$(RM) $(MISC)/$(SHL1TARGET).lst
411		$(COMMAND_ECHO)$(TYPE) $(mktmp \
412		$(SHL1LINKFLAGS) \
413		$(LINKFLAGSSHL) $(SHL1BASEX) \
414		$(SHL1STACK) $(MAPFILE) \
415		-out:$@ \
416		$(LB)/$(SHL1IMPLIB).exp \
417		$(STDOBJ) \
418		$(SHL1OBJS) \
419		$(SHL1STDLIBS) \
420		$(SHL1STDSHL) $(STDSHL1) \
421		$(SHL1LINKRES) \
422		) >> $(MISC)/$(SHL1TARGET).lnk
423		$(COMMAND_ECHO)$(TYPE) $(MISC)/$(SHL1TARGETN:b)_linkinc.ls  >> $(MISC)/$(SHL1TARGET).lnk
424		$(COMMAND_ECHO)$(SHL1LINKER) @$(MISC)/$(SHL1TARGET).lnk
425		@echo linking $@.manifest ...
426.IF "$(VISTA_MANIFEST)"!=""
427		$(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(MT) $(MTFLAGS) -manifest $@.manifest -manifest $(TRUSTED_MANIFEST_LOCATION)/trustedinfo.manifest -out:$@.tmanifest$(EMQ) $(FI)
428		$(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(MT) $(MTFLAGS) -manifest $@.tmanifest -outputresource:$@$(EMQ);2 $(FI)
429.ELSE
430		$(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(MT) $(MTFLAGS) -manifest $@.manifest -outputresource:$@$(EMQ);2 $(FI)
431.ENDIF # "$(VISTA_MANIFEST)"!=""
432		$(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(RM:s/+//) $@.manifest $(FI)
433		$(COMMAND_ECHO)$(IFEXIST) $@.tmanifest $(THEN) $(RM:s/+//) $@.tmanifest $(FI)
434.ENDIF			# "$(linkinc)"==""
435.ENDIF			# "$(COM)"=="GCC"
436.ENDIF			# "$(GUI)" == "WNT"
437.IF "$(GUI)"=="UNX"
438.IF "$(OS)"=="MACOSX"
439	@-$(RM) $(MISC)/$(@:b).list
440	@-$(RM) $(MISC)/$(TARGET).$(@:b)_1.cmd
441	@echo $(STDSLO) $(SHL1OBJS:s/.obj/.o/) \
442	$(SHL1VERSIONOBJ) \
443	`cat /dev/null $(SHL1LIBS) | sed s\#$(ROUT)\#$(PRJ)/$(ROUT)\#g` | tr -s " " "\n" > $(MISC)/$(@:b).list
444	@echo -n $(SHL1LINKER) $(SHL1LINKFLAGS) $(SHL1VERSIONMAPPARA) $(LINKFLAGSSHL) -L$(PRJ)/$(ROUT)/lib $(SOLARLIB) -o $@ \
445	$(SHL1STDLIBS) $(SHL1ARCHIVES) $(SHL1STDSHL) $(STDSHL1) -filelist $(MISC)/$(@:b).list $(LINKOUTPUT_FILTER) > $(MISC)/$(TARGET).$(@:b)_1.cmd
446    @$(PERL) $(SOLARENV)/bin/macosx-dylib-link-list.pl \
447        `cat $(MISC)/$(TARGET).$(@:b)_1.cmd` \
448        >> $(MISC)/$(TARGET).$(@:b)_1.cmd
449  .IF "$(VERBOSE)" == "TRUE"
450	@cat $(MISC)/$(TARGET).$(@:b)_1.cmd
451  .ENDIF
452	@+source $(MISC)/$(TARGET).$(@:b)_1.cmd
453    @$(PERL) $(SOLARENV)/bin/macosx-change-install-names.pl \
454        shl $(SHL1RPATH) $@
455.IF "$(SHL1CREATEJNILIB)"!=""
456	@echo "Making:   " $(@:f).jnilib
457	@macosx-create-bundle $@
458.ENDIF          # "$(SHL1CREATEJNILIB)"!=""
459.IF "$(UPDATER)"=="YES"
460.IF "$(SHL1NOCHECK)"==""
461	$(SOLARENV)/bin/checkdll.sh -L$(LB) -L$(SOLARLIBDIR) $(EXTRALIBPATHS1) $(SHL1TARGETN)
462.ENDIF				# "$(SHL1NOCHECK)"!=""
463.ENDIF
464.ELSE			# "$(OS)"=="MACOSX"
465	@-$(RM) $(MISC)/$(TARGET).$(@:b)_1.cmd
466	@echo $(SHL1LINKER) $(SHL1LINKFLAGS) $(SHL1SONAME) $(LINKFLAGSSHL) $(SHL1VERSIONMAPPARA) -L$(PRJ)/$(ROUT)/lib $(SOLARLIB) $(STDSLO) $(SHL1OBJS:s/.obj/.o/) \
467	$(SHL1VERSIONOBJ) -o $@ \
468	`cat /dev/null $(SHL1LIBS) | tr -s " " "\n" | $(SED) s\#$(ROUT)\#$(PRJ)/$(ROUT)\#g` \
469	$(SHL1STDLIBS) $(SHL1ARCHIVES) $(SHL1STDSHL) $(STDSHL1) $(LINKOUTPUT_FILTER) > $(MISC)/$(TARGET).$(@:b)_1.cmd
470  .IF "$(VERBOSE)" == "TRUE"
471	@cat $(MISC)/$(TARGET).$(@:b)_1.cmd
472  .ENDIF
473	@+source $(MISC)/$(TARGET).$(@:b)_1.cmd
474.IF "$(UPDATER)"=="YES"
475.IF "$(SHL1NOCHECK)"==""
476	$(COMMAND_ECHO)-$(RM) $(SHL1TARGETN:d)check_$(SHL1TARGETN:f)
477	$(COMMAND_ECHO)$(RENAME) $(SHL1TARGETN) $(SHL1TARGETN:d)check_$(SHL1TARGETN:f)
478.IF "$(VERBOSE)"=="TRUE"
479	$(COMMAND_ECHO)$(SOLARENV)/bin/checkdll.sh -L$(LB) -L$(SOLARLIBDIR) $(EXTRALIBPATHS1) $(SHL1TARGETN:d)check_$(SHL1TARGETN:f)
480.ELSE
481	$(COMMAND_ECHO)$(SOLARENV)/bin/checkdll.sh -L$(LB) -L$(SOLARLIBDIR) $(EXTRALIBPATHS1) -- -s $(SHL1TARGETN:d)check_$(SHL1TARGETN:f)
482.ENDIF
483.ENDIF				# "$(SHL1NOCHECK)"!=""
484.ENDIF			# "$(UPDATER)"=="YES"
485.ENDIF			# "$(OS)"=="MACOSX"
486.IF "$(UNIXVERSIONNAMES)"!=""
487	$(COMMAND_ECHO)$(RM) $(LB)/$(SHL1TARGETN:b)
488	$(COMMAND_ECHO)cd $(LB) && ln -s $(SHL1TARGETN:f) $(SHL1TARGETN:b)
489.ENDIF			# "$(UNIXVERSIONNAMES)"!=""
490.IF "$(VERBOSE)" == "TRUE"
491	@ls -l $@
492.ENDIF
493.ENDIF			# "$(GUI)" == "UNX"
494
495.IF "$(GUI)" == "OS2"
496
497.IF "$(SHL1DEFAULTRES)"!=""
498	@+-$(RM) $(MISC)/$(SHL1DEFAULTRES:b).rc > $(NULLDEV)
499.IF "$(SHL1ICON)" != ""
500	@-+echo 1 ICON $(SHL1ICON) >> $(MISC)/$(SHL1DEFAULTRES:b).rc
501.ENDIF
502.IF "$(use_shl_versions)" != ""
503.IF "$(SHL1ADD_VERINFO)"!=""
504	@-+echo $(EMQ)#include $(EMQ)"$(SHL1ADD_VERINFO)$(EMQ)" >> $(MISC)/$(SHL1DEFAULTRES:b).rc
505.ENDIF			# "$(SHL1ADD_VERINFO)"!=""
506	@-+echo MENU 1 BEGIN END >> $(MISC)/$(SHL1DEFAULTRES:b).rc
507#	@-+echo $(EMQ)RCDATA 1 { "Build string here" }$(EMQ) >> $(MISC)/$(SHL1DEFAULTRES:b).rc
508.ENDIF			# "$(use_shl_versions)" != ""
509# YD 04/07/06 seems null, confuses rc cli: -i $(SOLARTESDIR)
510	$(COMMAND_ECHO)$(RC) -r -DOS2 $(INCLUDE) $(RCLINKFLAGS) $(MISC)/$(SHL1DEFAULTRES:b).rc
511.ENDIF			# "$(SHL1DEFAULTRES)"!=""
512
513.IF "$(SHL1ALLRES)"!=""
514	$(COMMAND_ECHO)+$(TYPE) $(SHL1ALLRES) > $(SHL1LINKRES)
515.ENDIF			# "$(SHL1ALLRES)"!=""
516
517.IF "$(USE_DEFFILE)"!=""
518
519	$(COMMAND_ECHO)$(SHL1LINKER) $(SHL1LINKFLAGS) $(LINKFLAGSSHL) -o $@ \
520		$(SHL1DEF) \
521		$(STDOBJ) \
522		-L$(LB) \
523		-L$(SOLARVERSION)/$(INPATH)/lib \
524		$(SHL1OBJS) $(SHL1VERSIONOBJ) \
525		$(SHL1LIBS) \
526		$(SHL1LINKRES) \
527		$(SHL1STDLIBS) \
528		$(SHL1STDSHL) $(STDSHL1)
529
530.ELSE			# "$(USE_DEFFILE)"!=""
531
532	$(COMMAND_ECHO)$(SHL1LINKER) $(SHL1LINKFLAGS)			\
533		$(LINKFLAGSSHL) $(SHL1BASEX)		\
534		$(SHL1STACK) -o $(SHL1TARGETN)	\
535		$(SHL1DEF) \
536		$(STDOBJ)							\
537		-L$(LB) \
538		-L$(SOLARVERSION)/$(INPATH)/lib \
539		$(SHL1OBJS) $(SHL1VERSIONOBJ) \
540		$(SHL1LIBS) \
541		$(SHL1LINKRES) \
542		$(SHL1STDLIBS) \
543		$(SHL1STDSHL) $(STDSHL1)
544
545.ENDIF			# "$(USE_DEFFILE)"!=""
546
547	$(COMMAND_ECHO)+$(IMPLIB) -p256 $(IMPLIBFLAGS) $(SHL1IMPLIBN) $@
548	$(COMMAND_ECHO)+$(IMPLIB) -p256 $(IMPLIBFLAGS) $(LB)/$(SHL1TARGET).lib $@
549
550.IF "$(SHL1TARGET8)" != "$(SHL1TARGET)"
551	$(COMMAND_ECHO)+$(COPY) $@ $(@:d)$(SHL1TARGET8).dll
552.ENDIF
553
554.ENDIF			# "$(GUI)" == "OS2"
555
556.ENDIF			# "$(SHL1TARGETN)"!=""
557
558# unroll begin
559
560.IF "$(SHL2TARGETN)"!=""
561
562.IF "$(OS)"=="AIX"
563SHL2STDLIBS=
564.ENDIF
565
566.IF "$(SHLLINKARCONLY)" != ""
567SHL2STDLIBS=
568STDSHL=
569.ELSE
570SHL2ARCHIVES=
571.ENDIF
572
573# decide how to link
574.IF "$(SHL2CODETYPE)"=="C"
575SHL2LINKER=$(LINKC)
576SHL2STDSHL=$(subst,CPPRUNTIME, $(STDSHL))
577SHL2LINKFLAGS+=$(LINKCFLAGS)
578.ELSE			# "$(SHL2CODETYPE)"=="C"
579SHL2LINKER=$(LINK)
580SHL2STDSHL=$(subst,CPPRUNTIME,$(STDLIBCPP) $(STDSHL))
581SHL2LINKFLAGS+=$(LINKFLAGS)
582.ENDIF			# "$(SHL2CODETYPE)"=="C"
583
584SHL2RPATH*=OOO
585LINKFLAGSRUNPATH_$(SHL2RPATH)*=/ERROR:/Bad_SHL2RPATH_value
586SHL2LINKFLAGS+=$(LINKFLAGSRUNPATH_$(SHL2RPATH))
587
588.IF "$(SHL2USE_EXPORTS)"==""
589SHL2DEF*=$(MISC)/$(SHL2TARGET).def
590.ENDIF			# "$(SHL2USE_EXPORTS)"==""
591
592EXTRALIBPATHS2=$(EXTRALIBPATHS)
593.IF "$(UPDATER)"=="YES"
594.IF "$(SHL2NOCHECK)"==""
595.IF "$(SOLAR_STLLIBPATH)"!=""
596EXTRALIBPATHS2+=-L$(SOLAR_STLLIBPATH)
597.ENDIF
598.ENDIF				# "$(SHL2NOCHECK)"!=""
599.ENDIF
600#+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
601#+++++++++++    version object      ++++++++++++++++++++++++++++++++++++++++
602#+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
603
604.IF "$(L10N_framework)"==""
605.IF "$(VERSIONOBJ)"!=""
606SHL2VERSIONOBJ:=$(VERSIONOBJ:d){$(subst,$(DLLPOSTFIX),_dflt $(SHL2TARGET))}$(VERSIONOBJ:f)
607USE_VERSIONH:=$(INCCOM)/$(SHL2VERSIONOBJ:b).h
608.IF "$(GUI)" == "UNX"
609SHL2VERSIONOBJDEP:=$(VERSIONOBJ:d){$(subst,$(DLLPOSTFIX),_dflt $(SHL2TARGET))}$(VERSIONOBJ:f:s/.o/.obj/)
610.ELSE           # "$(GUI)" == "UNX"
611SHL2VERSIONOBJDEP:=$(VERSIONOBJ:d){$(subst,$(DLLPOSTFIX),_dflt $(SHL2TARGET))}$(VERSIONOBJ:f)
612.ENDIF          # "$(GUI)" == "UNX"
613$(MISC)/$(SHL2VERSIONOBJ:b).c : $(SOLARENV)/src/version.c $(INCCOM)/$(SHL2VERSIONOBJ:b).h
614#    $(COPY) $(SOLARENV)/src/version.c $@
615	$(COMMAND_ECHO)$(TYPE) $(SOLARENV)/src/version.c | $(SED) s/_version.h/$(SHL2VERSIONOBJ:b).h/ > $@
616
617.INIT : $(SHL2VERSIONOBJDEP)
618.ENDIF			# "$(VERSIONOBJ)"!=""
619.ENDIF
620
621.IF "$(GUI)" != "UNX"
622.IF "$(GUI)" == "WNT" || "$(GUI)" == "OS2"
623.IF "$(SHL2IMPLIB)" == ""
624SHL2IMPLIB=i$(TARGET)_t2
625.ENDIF			# "$(SHL2IMPLIB)" == ""
626.IF "$(COM)" != "GCC"
627USE_2IMPLIB=-implib:$(LB)/$(SHL2IMPLIB).lib
628.ENDIF			# "$(COM)" != "GCC"
629SHL2IMPLIBN=$(LB)/$(SHL2IMPLIB).lib
630ALLTAR : $(SHL2IMPLIBN)
631
632.IF "$(USE_DEFFILE)"==""
633USE_2IMPLIB_DEPS=$(LB)/$(SHL2IMPLIB).lib
634.ENDIF			# "$(USE_DEFFILE)"==""
635.ENDIF			# "$(GUI)" == "WNT" || "$(GUI)" == "OS2"
636USE_SHL2DEF=$(SHL2DEF)
637.ELSE			# "$(GUI)" != "UNX"
638USE_SHL2DEF=
639SHL2DEPN+:=$(SHL2DEPNU)
640
641.IF "$(SHL2VERSIONMAP)"==""
642# to activate vmaps remove "#"
643USE_SHL2VERSIONMAP=$(MISC)/$(SHL2TARGET).vmap
644.ENDIF			# "$(SHL2VERSIONMAP)"==""
645
646.IF "$(USE_SHL2VERSIONMAP)"!=""
647
648.IF "$(SHL2FILTERFILE)"!=""
649.IF "$(SHL2VERSIONMAP)"!=""
650#eine von beiden ist zuviel
651USE_SHL2VERSIONMAP=$(MISC)/$(SHL2TARGET).vmap
652$(USE_SHL2VERSIONMAP) .PHONY:
653	@echo -----------------------------
654	@echo you should only use versionmap OR exportfile
655	@echo -----------------------------
656#	force_dmake_to_error
657
658.ENDIF			# "$(SHL2VERSIONMAP)"!=""
659
660SHL2VERSIONMAPPARA=$(LINKVERSIONMAPFLAG) $(USE_SHL2VERSIONMAP)
661
662$(USE_SHL2VERSIONMAP): \
663					$(SHL2OBJS)\
664					$(SHL2LIBS)\
665					$(SHL2FILTERFILE)
666	@$(RM) $@.dump
667.IF "$(SHL2OBJS)"!=""
668# dump remaining objects on the fly
669.IF "$(OS)"=="MACOSX"
670	@-nm $(SHL2OBJS:s/.obj/.o/) > $@.dump
671.ELSE
672	@nm $(SHL2OBJS:s/.obj/.o/) > $@.dump
673.ENDIF
674.ENDIF			# "$(SHL2OBJS)!"=""
675	@$(TYPE) /dev/null $(SHL2LIBS:s/.lib/.dump/) >> $@.dump
676	$(COMMAND_ECHO) $(PERL) $(SOLARENV)/bin/mapgen.pl -d $@.dump -s $(SHL2INTERFACE) -f $(SHL2FILTERFILE) -m $@
677
678.ELSE			# "$(SHL2FILTERFILE)"!=""
679USE_SHL2VERSIONMAP=$(MISC)/$(SHL2TARGET).vmap
680$(USE_SHL2VERSIONMAP) :
681.IF "$(VERBOSE)" == "TRUE"
682	@echo -----------------------------
683	@echo SHL2FILTERFILE not set!
684	@echo -----------------------------
685	@$(TOUCH) $@
686	@echo dummy file to keep the dependencies for later use.
687.ELSE
688	@$(TOUCH) $@
689.ENDIF
690#	force_dmake_to_error
691.ENDIF			# "$(SHL2FILTERFILE)"!=""
692.ELSE			# "$(USE_SHL2VERSIONMAP)"!=""
693
694#and now for the plain non-generic way...
695.IF "$(SHL2VERSIONMAP)"!=""
696USE_SHL2VERSIONMAP=$(MISC)/$(SHL2VERSIONMAP:b)_$(SHL2TARGET)$(SHL2VERSIONMAP:e)
697SHL2VERSIONMAPPARA=$(LINKVERSIONMAPFLAG) $(USE_SHL2VERSIONMAP)
698
699.IF "$(OS)"=="MACOSX"
700$(USE_SHL2VERSIONMAP): $(SHL2OBJS) $(SHL2LIBS)
701.ENDIF
702
703# .ERRREMOVE is needed as a recipe line like "$(AWK) ... > $@" would create $@
704# even if the $(AWK) part fails:
705$(USE_SHL2VERSIONMAP) .ERRREMOVE: $(SHL2VERSIONMAP)
706	@@-$(RM) -f $@
707# The following files will only be generated and needed on Mac OS X as temporary files
708# in order to generate exported symbols list out of Linux/Solaris map files
709.IF "$(OS)"=="MACOSX"
710	@-$(RM) -f $@.symregexp >& $(NULLDEV)
711	@-$(RM) -f $@.expsymlist >& $(NULLDEV)
712.ENDIF
713# Its questionable if the following condition '.IF "$(COMID)"=="gcc3"' makes sense and what
714# happens if somebody will change it in the future
715.IF "$(COMID)"=="gcc3"
716	$(COMMAND_ECHO) tr -d "\015" < $(SHL2VERSIONMAP) | $(AWK) -f $(SOLARENV)/bin/addsym.awk > $@
717.ELIF "$(COMNAME)"=="sunpro5"
718	$(COMMAND_ECHO) tr -d "\015" < $(SHL2VERSIONMAP) | $(GREP) -v $(IGNORE_SYMBOLS) > $@
719.ELSE           # "$(COMID)"=="gcc3"
720	$(COMMAND_ECHO) tr -d "\015" < $(SHL2VERSIONMAP) > $@
721.ENDIF          # "$(COMID)"=="gcc3"
722	@chmod a+w $@
723# Mac OS X post-processing generate an exported symbols list from the generated map file
724# for details on exported symbols list see man ld on Mac OS X
725.IF "$(OS)"=="MACOSX"
726	@-cat $@ | $(AWK) -f $(SOLARENV)/bin/unxmap-to-macosx-explist.awk | grep -v "\*\|?" > $@.exported-symbols
727	@-cat $@ | $(AWK) -f $(SOLARENV)/bin/unxmap-to-macosx-explist.awk | grep "\*\|?" > $@.symbols-regexp
728# Shared libraries will be build out of the *.obj files specified in SHL?OBJS and SHL?LIBS
729# Extract RTTI symbols from all the objects that will be used to build a shared library
730.IF "$(SHL2OBJS)"!=""
731	-echo $(foreach,i,$(SHL2OBJS:s/.obj/.o/) $i) | xargs -n1 nm -gx | $(SOLARENV)/bin/addsym-macosx.sh $@.symbols-regexp $@.symbols-regexp.tmp >> $@.exported-symbols
732.ENDIF
733.IF "$(SHL2LIBS)"!=""
734	$(COMMAND_ECHO)-$(TYPE) $(foreach,j,$(SHL2LIBS) $j) | $(SED) s\#$(ROUT)\#$(PRJ)/$(ROUT)\#g | xargs -n1 nm -gx | $(SOLARENV)/bin/addsym-macosx.sh $@.symbols-regexp $@.symbols-regexp.tmp >> $@.exported-symbols
735.ENDIF
736# overwrite the map file generate into the local output tree with the generated
737# exported symbols list
738	cp $@.exported-symbols $@
739.ENDIF # .IF "$(OS)"=="MACOSX"
740.ENDIF			# "$(SHL2VERSIONMAP)"!=""
741.ENDIF			# "$(USE_SHL2VERSIONMAP)"!=""
742.ENDIF			# "$(GUI)" != "UNX"
743
744.IF "$(UNIXVERSIONNAMES)"!=""
745.IF "$(OS)"!="MACOSX"
746.IF "$(GUI)"=="UNX"
747SHL2SONAME=\"$(SONAME_SWITCH)$(SHL2TARGETN:f)\"
748.ENDIF			# "$(GUI)"!="UNX"
749.ENDIF			# "$(OS)"!="MACOSX"
750.ENDIF			# "$(UNIXVERSIONNAMES)"!=""
751
752.IF "$(SHL2RES)"!=""
753SHL2ALLRES+=$(SHL2RES)
754SHL2LINKRES*=$(MISC)/$(SHL2TARGET).res
755SHL2LINKRESO*=$(MISC)/$(SHL2TARGET)_res.o
756.ENDIF			# "$(SHL2RES)"!=""
757
758.IF "$(SHL2DEFAULTRES)$(use_shl_versions)"!=""
759SHL2DEFAULTRES*=$(MISC)/$(SHL2TARGET)_def.res
760SHL2ALLRES+=$(SHL2DEFAULTRES)
761SHL2LINKRES*=$(MISC)/$(SHL2TARGET).res
762SHL2LINKRESO*=$(MISC)/$(SHL2TARGET)_res.o
763.ENDIF			# "$(SHL2DEFAULTRES)$(use_shl_versions)"!=""
764
765#.IF "$(SHL2TARGETN)"!=""
766
767.IF "$(linkinc)"!=""
768.IF "$(GUI)"=="WNT" || "$(GUI)" == "OS2"
769.IF "$(SHL2LIBS)"!=""
770$(MISC)/$(SHL2TARGET)_linkinc.ls .PHONY:
771	@@-$(RM) $@
772	$(COMMAND_ECHO)$(SED) -f $(SOLARENV)/bin/chrel.sed $(foreach,i,$(SHL2LIBS) $(i:s/.lib/.lin/)) >> $@
773.ENDIF          # "$(SHL2LIBS)"!=""
774.ENDIF
775
776LINKINCTARGETS+=$(MISC)/$(SHL2TARGETN:b)_linkinc.ls
777$(SHL2TARGETN) : $(LINKINCTARGETS)
778
779.ELSE
780.IF "$(SHL2USE_EXPORTS)"=="name"
781.IF "$(GUI)"=="WNT" || "$(GUI)" == "OS2"
782.IF "$(COM)"!="GCC"
783.IF "$(SHL2LIBS)"!=""
784SHL2LINKLIST=$(MISC)/$(SHL2TARGET)_link.lst
785SHL2LINKLISTPARAM=@$(SHL2LINKLIST)
786$(SHL2LINKLIST) : $(SHL2LIBS)
787    @@-$(RM) $@
788	$(COMMAND_ECHO)$(SED) -f $(SOLARENV)/bin/chrel.sed $(foreach,i,$(SHL2LIBS) $(i:s/.lib/.lin/)) >> $@
789.ENDIF          # "$(SHL2LIBS)"!=""
790.ENDIF          # "$(COM)"!="GCC"
791.ENDIF
792.ENDIF			# "$(SHL2USE_EXPORTS)"=="name"
793
794$(MISC)/%linkinc.ls:
795	@echo . > $@
796.ENDIF          # "$(linkinc)"!=""
797
798.IF "$(GUI)" == "OS2"
799#21/02/2006 YD dll names must be 8.3, invoke fix script
800#check osl/os2/module.c/osl_loadModule()
801SHL2TARGET8=$(shell @fix_shl.cmd $(SHL2TARGET))
802.ENDIF
803
804
805$(SHL2TARGETN) : \
806					$(SHL2OBJS)\
807					$(SHL2LIBS)\
808					$(USE_2IMPLIB_DEPS)\
809					$(USE_SHL2DEF)\
810					$(USE_SHL2VERSIONMAP)\
811					$(SHL2RES)\
812					$(SHL2DEPN) \
813					$(SHL2LINKLIST)
814	@echo "Making:   " $(@:f)
815.IF "$(GUI)" == "WNT"
816.IF "$(SHL2DEFAULTRES)"!=""
817	@@-$(RM) $(MISC)/$(SHL2DEFAULTRES:b).rc
818.IF "$(SHL2ICON)" != ""
819	@echo 1 ICON $(SHL2ICON) >> $(MISC)/$(SHL2DEFAULTRES:b).rc
820.ENDIF
821.IF "$(use_shl_versions)" != ""
822.IF "$(SHL2ADD_VERINFO)"!=""
823	@echo $(EMQ)#include $(EMQ)"$(SHL2ADD_VERINFO)$(EMQ)" >> $(MISC)/$(SHL2DEFAULTRES:b).rc
824.ELSE			# "$(SHL2ADD_VERINFO)"!=""
825	@echo $(EMQ)#define ADDITIONAL_VERINFO1 >> $(MISC)/$(SHL2DEFAULTRES:b).rc
826	@echo $(EMQ)#define ADDITIONAL_VERINFO2 >> $(MISC)/$(SHL2DEFAULTRES:b).rc
827	@echo $(EMQ)#define ADDITIONAL_VERINFO3 >> $(MISC)/$(SHL2DEFAULTRES:b).rc
828.ENDIF			# "$(SHL2ADD_VERINFO)"!=""
829	@echo $(EMQ)#define VERVARIANT	$(BUILD) >> $(MISC)/$(SHL2DEFAULTRES:b).rc
830	@echo $(EMQ)#define ORG_NAME	$(SHL2TARGET)$(DLLPOST) >> $(MISC)/$(SHL2DEFAULTRES:b).rc
831	@echo $(EMQ)#define INTERNAL_NAME $(SHL2TARGET:b) >> $(MISC)/$(SHL2DEFAULTRES:b).rc
832	@echo $(EMQ)#include $(EMQ)"shlinfo.rc$(EMQ)" >> $(MISC)/$(SHL2DEFAULTRES:b).rc
833.ENDIF			# "$(use_shl_versions)" != ""
834	$(COMMAND_ECHO)$(RC) -DWIN32 $(INCLUDE) $(RCLINKFLAGS) $(MISC)/$(SHL2DEFAULTRES:b).rc
835.ENDIF			# "$(SHL2DEFAULTRES)"!=""
836.IF "$(SHL2ALLRES)"!=""
837	$(COMMAND_ECHO)$(TYPE) $(SHL2ALLRES) > $(SHL2LINKRES)
838.IF "$(COM)"=="GCC"
839	windres $(SHL2LINKRES) $(SHL2LINKRESO)
840.ENDIF			# "$(COM)"=="GCC"
841.ENDIF			# "$(SHL2ALLRES)"!=""
842.IF "$(COM)"=="GCC"	# always have to call dlltool explicitly as ld cannot handle # comment in .def
843	@echo dlltool --dllname $(SHL2TARGET)$(DLLPOST) \
844		--kill-at \\ > $(MISC)/$(TARGET).$(@:b)_2.cmd
845	@noop $(assign ALL2OBJLIST:=$(STDOBJ) $(SHL2OBJS) $(SHL2LINKRESO) $(shell $(TYPE) /dev/null $(SHL2LIBS) | $(SED) s?$(ROUT)?$(PRJ)/$(ROUT)?g))
846.IF "$(DEFLIB2NAME)"!=""	# do not have to include objs
847	@noop $(assign DEF2OBJLIST:=$(shell $(TYPE) $(foreach,i,$(DEFLIB2NAME) $(SLB)/$(i).lib) | sed s?$(ROUT)?$(PRJ)/$(ROUT)?g))
848	@noop $(foreach,i,$(DEF2OBJLIST) $(assign ALL2OBJLIST:=$(ALL2OBJLIST:s?$i??)))
849.ENDIF			# "$(DEFLIB2NAME)"!=""
850	@echo	--output-exp $(MISC)/$(@:b)_exp.o \\ >> $(MISC)/$(TARGET).$(@:b)_2.cmd
851.IF "$(SHL2DEF)"!=""
852	@echo	--input-def $(SHL2DEF) \\ >> $(MISC)/$(TARGET).$(@:b)_2.cmd
853.ELSE
854	@echo	$(SHL2VERSIONOBJ) $(SHL2DESCRIPTIONOBJ) \\ >> $(MISC)/$(TARGET).$(@:b)_2.cmd
855.ENDIF
856	@echo	$(ALL2OBJLIST) >> $(MISC)/$(TARGET).$(@:b)_2.cmd
857	@echo $(LINK) $(LINKFLAGS) $(LINKFLAGSSHL) $(MINGWSSTDOBJ) -o $@ \
858		$(STDOBJ) $(SHL2VERSIONOBJ) $(SHL2DESCRIPTIONOBJ) $(SHL2OBJS) $(SHL2LINKRESO) \
859		`$(TYPE) /dev/null $(SHL2LIBS) | $(SED) s\#$(ROUT)\#$(PRJ)/$(ROUT)\#g` \
860		-Wl,--exclude-libs,ALL,--start-group $(SHL2STDLIBS) -Wl,--end-group \
861		$(SHL2STDSHL) $(STDSHL2) $(MISC)/$(@:b)_exp.o $(MINGWSSTDENDOBJ) \
862		-Wl,-Map,$(MISC)/$(@:b).map >> $(MISC)/$(TARGET).$(@:b)_2.cmd
863  .IF "$(VERBOSE)" == "TRUE"
864	@$(TYPE)  $(MISC)/$(TARGET).$(@:b)_2.cmd
865  .ENDIF
866	@+source $(MISC)/$(TARGET).$(@:b)_2.cmd
867.ELSE
868.IF "$(linkinc)"==""
869.IF "$(SHL2USE_EXPORTS)"!="name"
870.IF "$(USE_DEFFILE)"!=""
871	$(COMMAND_ECHO)$(SHL2LINKER) @$(mktmp \
872		$(SHL2LINKFLAGS) \
873		$(LINKFLAGSSHL) \
874		$(SHL2STACK) $(SHL2BASEX)	\
875		-out:$@ \
876		-map:$(MISC)/$(@:b).map \
877		-def:$(SHL2DEF) \
878		$(USE_2IMPLIB) \
879		$(STDOBJ) \
880		$(SHL2VERSIONOBJ) $(SHL2OBJS) \
881		$(SHL2LIBS) \
882		$(SHL2STDLIBS) \
883		$(SHL2STDSHL) $(STDSHL2) \
884		$(SHL2LINKRES) \
885	)
886# double check if target was really written... still making sense?
887    @@$(LS) $@
888	@echo linking $@.manifest ...
889.IF "$(VISTA_MANIFEST)"!=""
890	$(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(MT) $(MTFLAGS) -manifest $@.manifest -manifest $(TRUSTED_MANIFEST_LOCATION)/trustedinfo.manifest -out:$@.tmanifest$(EMQ) $(FI)
891	$(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(MT) $(MTFLAGS) -manifest $@.tmanifest -outputresource:$@$(EMQ);2 $(FI)
892.ELSE
893	$(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(MT) $(MTFLAGS) -manifest $@.manifest -outputresource:$@$(EMQ);2 $(FI)
894.ENDIF # "$(VISTA_MANIFEST)"!=""
895	$(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(RM:s/+//) $@.manifest $(FI)
896	$(COMMAND_ECHO)$(IFEXIST) $@.tmanifest $(THEN) $(RM:s/+//) $@.tmanifest $(FI)
897.ELSE			# "$(USE_DEFFILE)"!=""
898	$(COMMAND_ECHO)$(SHL2LINKER) @$(mktmp	$(SHL2LINKFLAGS)			\
899		$(LINKFLAGSSHL) $(SHL2BASEX)		\
900		$(SHL2STACK) -out:$(SHL2TARGETN)	\
901		-map:$(MISC)/$(@:B).map				\
902		$(LB)/$(SHL2IMPLIB).exp				\
903		$(STDOBJ)							\
904		$(SHL2OBJS) $(SHL2VERSIONOBJ) \
905		$(SHL2LIBS)                         \
906		$(SHL2STDLIBS)                      \
907		$(SHL2STDSHL) $(STDSHL2)                           \
908		$(SHL2LINKRES) \
909	)
910# double check if target was really written... still making sense?
911    @@$(LS) $@
912	@echo linking $@.manifest ...
913.IF "$(VISTA_MANIFEST)"!=""
914	$(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(MT) $(MTFLAGS) -manifest $@.manifest -manifest $(TRUSTED_MANIFEST_LOCATION)/trustedinfo.manifest -out:$@.tmanifest$(EMQ) $(FI)
915	$(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(MT) $(MTFLAGS) -manifest $@.tmanifest -outputresource:$@$(EMQ);2 $(FI)
916.ELSE
917	$(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(MT) $(MTFLAGS) -manifest $@.manifest -outputresource:$@$(EMQ);2 $(FI)
918.ENDIF # "$(VISTA_MANIFEST)"!=""
919	$(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(RM:s/+//) $@.manifest $(FI)
920	$(COMMAND_ECHO)$(IFEXIST) $@.tmanifest $(THEN) $(RM:s/+//) $@.tmanifest $(FI)
921.ENDIF			# "$(USE_DEFFILE)"!=""
922.ELSE			# "$(SHL2USE_EXPORTS)"!="name"
923	$(COMMAND_ECHO)$(SHL2LINKER) @$(mktmp	$(SHL2LINKFLAGS)			\
924		$(LINKFLAGSSHL) $(SHL2BASEX)		\
925		$(SHL2STACK) -out:$(SHL2TARGETN)	\
926		-map:$(MISC)/$(@:B).map				\
927		$(USE_2IMPLIB) \
928		$(STDOBJ)							\
929		$(SHL2OBJS) $(SHL2VERSIONOBJ))   \
930		$(SHL2LINKLISTPARAM) \
931		@$(mktmp $(SHL2STDLIBS)                      \
932		$(SHL2STDSHL) $(STDSHL2)                           \
933		$(SHL2LINKRES) \
934	)
935	@echo linking $@.manifest ...
936.IF "$(VISTA_MANIFEST)"!=""
937	$(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(MT) $(MTFLAGS) -manifest $@.manifest -manifest $(TRUSTED_MANIFEST_LOCATION)/trustedinfo.manifest -out:$@.tmanifest$(EMQ) $(FI)
938	$(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(MT) $(MTFLAGS) -manifest $@.tmanifest -outputresource:$@$(EMQ);2 $(FI)
939.ELSE
940	$(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(MT) $(MTFLAGS) -manifest $@.manifest -outputresource:$@$(EMQ);2 $(FI)
941.ENDIF # "$(VISTA_MANIFEST)"!=""
942	$(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(RM:s/+//) $@.manifest $(FI)
943	$(COMMAND_ECHO)$(IFEXIST) $@.tmanifest $(THEN) $(RM:s/+//) $@.tmanifest $(FI)
944.ENDIF			# "$(SHL2USE_EXPORTS)"!="name"
945.ELSE			# "$(linkinc)"==""
946		$(COMMAND_ECHO)-$(RM) del $(MISC)/$(SHL2TARGET).lnk
947		$(COMMAND_ECHO)-$(RM) $(MISC)/$(SHL2TARGET).lst
948		$(COMMAND_ECHO)$(TYPE) $(mktmp \
949		$(SHL2LINKFLAGS) \
950		$(LINKFLAGSSHL) $(SHL2BASEX) \
951		$(SHL2STACK) $(MAPFILE) \
952		-out:$@ \
953		$(LB)/$(SHL2IMPLIB).exp \
954		$(STDOBJ) \
955		$(SHL2OBJS) \
956		$(SHL2STDLIBS) \
957		$(SHL2STDSHL) $(STDSHL2) \
958		$(SHL2LINKRES) \
959		) >> $(MISC)/$(SHL2TARGET).lnk
960		$(COMMAND_ECHO)$(TYPE) $(MISC)/$(SHL2TARGETN:b)_linkinc.ls  >> $(MISC)/$(SHL2TARGET).lnk
961		$(COMMAND_ECHO)$(SHL2LINKER) @$(MISC)/$(SHL2TARGET).lnk
962		@echo linking $@.manifest ...
963.IF "$(VISTA_MANIFEST)"!=""
964		$(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(MT) $(MTFLAGS) -manifest $@.manifest -manifest $(TRUSTED_MANIFEST_LOCATION)/trustedinfo.manifest -out:$@.tmanifest$(EMQ) $(FI)
965		$(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(MT) $(MTFLAGS) -manifest $@.tmanifest -outputresource:$@$(EMQ);2 $(FI)
966.ELSE
967		$(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(MT) $(MTFLAGS) -manifest $@.manifest -outputresource:$@$(EMQ);2 $(FI)
968.ENDIF # "$(VISTA_MANIFEST)"!=""
969		$(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(RM:s/+//) $@.manifest $(FI)
970		$(COMMAND_ECHO)$(IFEXIST) $@.tmanifest $(THEN) $(RM:s/+//) $@.tmanifest $(FI)
971.ENDIF			# "$(linkinc)"==""
972.ENDIF			# "$(COM)"=="GCC"
973.ENDIF			# "$(GUI)" == "WNT"
974.IF "$(GUI)"=="UNX"
975.IF "$(OS)"=="MACOSX"
976	@-$(RM) $(MISC)/$(@:b).list
977	@-$(RM) $(MISC)/$(TARGET).$(@:b)_2.cmd
978	@echo $(STDSLO) $(SHL2OBJS:s/.obj/.o/) \
979	$(SHL2VERSIONOBJ) \
980	`cat /dev/null $(SHL2LIBS) | sed s\#$(ROUT)\#$(PRJ)/$(ROUT)\#g` | tr -s " " "\n" > $(MISC)/$(@:b).list
981	@echo -n $(SHL2LINKER) $(SHL2LINKFLAGS) $(SHL2VERSIONMAPPARA) $(LINKFLAGSSHL) -L$(PRJ)/$(ROUT)/lib $(SOLARLIB) -o $@ \
982	$(SHL2STDLIBS) $(SHL2ARCHIVES) $(SHL2STDSHL) $(STDSHL2) -filelist $(MISC)/$(@:b).list $(LINKOUTPUT_FILTER) > $(MISC)/$(TARGET).$(@:b)_2.cmd
983    @$(PERL) $(SOLARENV)/bin/macosx-dylib-link-list.pl \
984        `cat $(MISC)/$(TARGET).$(@:b)_2.cmd` \
985        >> $(MISC)/$(TARGET).$(@:b)_2.cmd
986  .IF "$(VERBOSE)" == "TRUE"
987	@cat $(MISC)/$(TARGET).$(@:b)_2.cmd
988  .ENDIF
989	@+source $(MISC)/$(TARGET).$(@:b)_2.cmd
990    @$(PERL) $(SOLARENV)/bin/macosx-change-install-names.pl \
991        shl $(SHL2RPATH) $@
992.IF "$(SHL2CREATEJNILIB)"!=""
993	@echo "Making:   " $(@:f).jnilib
994	@macosx-create-bundle $@
995.ENDIF          # "$(SHL2CREATEJNILIB)"!=""
996.IF "$(UPDATER)"=="YES"
997.IF "$(SHL2NOCHECK)"==""
998	$(SOLARENV)/bin/checkdll.sh -L$(LB) -L$(SOLARLIBDIR) $(EXTRALIBPATHS2) $(SHL2TARGETN)
999.ENDIF				# "$(SHL2NOCHECK)"!=""
1000.ENDIF
1001.ELSE			# "$(OS)"=="MACOSX"
1002	@-$(RM) $(MISC)/$(TARGET).$(@:b)_2.cmd
1003	@echo $(SHL2LINKER) $(SHL2LINKFLAGS) $(SHL2SONAME) $(LINKFLAGSSHL) $(SHL2VERSIONMAPPARA) -L$(PRJ)/$(ROUT)/lib $(SOLARLIB) $(STDSLO) $(SHL2OBJS:s/.obj/.o/) \
1004	$(SHL2VERSIONOBJ) -o $@ \
1005	`cat /dev/null $(SHL2LIBS) | tr -s " " "\n" | $(SED) s\#$(ROUT)\#$(PRJ)/$(ROUT)\#g` \
1006	$(SHL2STDLIBS) $(SHL2ARCHIVES) $(SHL2STDSHL) $(STDSHL2) $(LINKOUTPUT_FILTER) > $(MISC)/$(TARGET).$(@:b)_2.cmd
1007  .IF "$(VERBOSE)" == "TRUE"
1008	@cat $(MISC)/$(TARGET).$(@:b)_2.cmd
1009  .ENDIF
1010	@+source $(MISC)/$(TARGET).$(@:b)_2.cmd
1011.IF "$(UPDATER)"=="YES"
1012.IF "$(SHL2NOCHECK)"==""
1013	$(COMMAND_ECHO)-$(RM) $(SHL2TARGETN:d)check_$(SHL2TARGETN:f)
1014	$(COMMAND_ECHO)$(RENAME) $(SHL2TARGETN) $(SHL2TARGETN:d)check_$(SHL2TARGETN:f)
1015.IF "$(VERBOSE)"=="TRUE"
1016	$(COMMAND_ECHO)$(SOLARENV)/bin/checkdll.sh -L$(LB) -L$(SOLARLIBDIR) $(EXTRALIBPATHS2) $(SHL2TARGETN:d)check_$(SHL2TARGETN:f)
1017.ELSE
1018	$(COMMAND_ECHO)$(SOLARENV)/bin/checkdll.sh -L$(LB) -L$(SOLARLIBDIR) $(EXTRALIBPATHS2) -- -s $(SHL2TARGETN:d)check_$(SHL2TARGETN:f)
1019.ENDIF
1020.ENDIF				# "$(SHL2NOCHECK)"!=""
1021.ENDIF			# "$(UPDATER)"=="YES"
1022.ENDIF			# "$(OS)"=="MACOSX"
1023.IF "$(UNIXVERSIONNAMES)"!=""
1024	$(COMMAND_ECHO)$(RM) $(LB)/$(SHL2TARGETN:b)
1025	$(COMMAND_ECHO)cd $(LB) && ln -s $(SHL2TARGETN:f) $(SHL2TARGETN:b)
1026.ENDIF			# "$(UNIXVERSIONNAMES)"!=""
1027.IF "$(VERBOSE)" == "TRUE"
1028	@ls -l $@
1029.ENDIF
1030.ENDIF			# "$(GUI)" == "UNX"
1031
1032.IF "$(GUI)" == "OS2"
1033
1034.IF "$(SHL2DEFAULTRES)"!=""
1035	@+-$(RM) $(MISC)/$(SHL2DEFAULTRES:b).rc > $(NULLDEV)
1036.IF "$(SHL2ICON)" != ""
1037	@-+echo 1 ICON $(SHL2ICON) >> $(MISC)/$(SHL2DEFAULTRES:b).rc
1038.ENDIF
1039.IF "$(use_shl_versions)" != ""
1040.IF "$(SHL2ADD_VERINFO)"!=""
1041	@-+echo $(EMQ)#include $(EMQ)"$(SHL2ADD_VERINFO)$(EMQ)" >> $(MISC)/$(SHL2DEFAULTRES:b).rc
1042.ENDIF			# "$(SHL2ADD_VERINFO)"!=""
1043	@-+echo MENU 1 BEGIN END >> $(MISC)/$(SHL2DEFAULTRES:b).rc
1044#	@-+echo $(EMQ)RCDATA 1 { "Build string here" }$(EMQ) >> $(MISC)/$(SHL2DEFAULTRES:b).rc
1045.ENDIF			# "$(use_shl_versions)" != ""
1046# YD 04/07/06 seems null, confuses rc cli: -i $(SOLARTESDIR)
1047	$(COMMAND_ECHO)$(RC) -r -DOS2 $(INCLUDE) $(RCLINKFLAGS) $(MISC)/$(SHL2DEFAULTRES:b).rc
1048.ENDIF			# "$(SHL2DEFAULTRES)"!=""
1049
1050.IF "$(SHL2ALLRES)"!=""
1051	$(COMMAND_ECHO)+$(TYPE) $(SHL2ALLRES) > $(SHL2LINKRES)
1052.ENDIF			# "$(SHL2ALLRES)"!=""
1053
1054.IF "$(USE_DEFFILE)"!=""
1055
1056	$(COMMAND_ECHO)$(SHL2LINKER) $(SHL2LINKFLAGS) $(LINKFLAGSSHL) -o $@ \
1057		$(SHL2DEF) \
1058		$(STDOBJ) \
1059		-L$(LB) \
1060		-L$(SOLARVERSION)/$(INPATH)/lib \
1061		$(SHL2OBJS) $(SHL2VERSIONOBJ) \
1062		$(SHL2LIBS) \
1063		$(SHL2LINKRES) \
1064		$(SHL2STDLIBS) \
1065		$(SHL2STDSHL) $(STDSHL2)
1066
1067.ELSE			# "$(USE_DEFFILE)"!=""
1068
1069	$(COMMAND_ECHO)$(SHL2LINKER) $(SHL2LINKFLAGS)			\
1070		$(LINKFLAGSSHL) $(SHL2BASEX)		\
1071		$(SHL2STACK) -o $(SHL2TARGETN)	\
1072		$(SHL2DEF) \
1073		$(STDOBJ)							\
1074		-L$(LB) \
1075		-L$(SOLARVERSION)/$(INPATH)/lib \
1076		$(SHL2OBJS) $(SHL2VERSIONOBJ) \
1077		$(SHL2LIBS) \
1078		$(SHL2LINKRES) \
1079		$(SHL2STDLIBS) \
1080		$(SHL2STDSHL) $(STDSHL2)
1081
1082.ENDIF			# "$(USE_DEFFILE)"!=""
1083
1084	$(COMMAND_ECHO)+$(IMPLIB) -p256 $(IMPLIBFLAGS) $(SHL2IMPLIBN) $@
1085	$(COMMAND_ECHO)+$(IMPLIB) -p256 $(IMPLIBFLAGS) $(LB)/$(SHL2TARGET).lib $@
1086
1087.IF "$(SHL2TARGET8)" != "$(SHL2TARGET)"
1088	$(COMMAND_ECHO)+$(COPY) $@ $(@:d)$(SHL2TARGET8).dll
1089.ENDIF
1090
1091.ENDIF			# "$(GUI)" == "OS2"
1092
1093.ENDIF			# "$(SHL2TARGETN)"!=""
1094
1095# unroll begin
1096
1097.IF "$(SHL3TARGETN)"!=""
1098
1099.IF "$(OS)"=="AIX"
1100SHL3STDLIBS=
1101.ENDIF
1102
1103.IF "$(SHLLINKARCONLY)" != ""
1104SHL3STDLIBS=
1105STDSHL=
1106.ELSE
1107SHL3ARCHIVES=
1108.ENDIF
1109
1110# decide how to link
1111.IF "$(SHL3CODETYPE)"=="C"
1112SHL3LINKER=$(LINKC)
1113SHL3STDSHL=$(subst,CPPRUNTIME, $(STDSHL))
1114SHL3LINKFLAGS+=$(LINKCFLAGS)
1115.ELSE			# "$(SHL3CODETYPE)"=="C"
1116SHL3LINKER=$(LINK)
1117SHL3STDSHL=$(subst,CPPRUNTIME,$(STDLIBCPP) $(STDSHL))
1118SHL3LINKFLAGS+=$(LINKFLAGS)
1119.ENDIF			# "$(SHL3CODETYPE)"=="C"
1120
1121SHL3RPATH*=OOO
1122LINKFLAGSRUNPATH_$(SHL3RPATH)*=/ERROR:/Bad_SHL3RPATH_value
1123SHL3LINKFLAGS+=$(LINKFLAGSRUNPATH_$(SHL3RPATH))
1124
1125.IF "$(SHL3USE_EXPORTS)"==""
1126SHL3DEF*=$(MISC)/$(SHL3TARGET).def
1127.ENDIF			# "$(SHL3USE_EXPORTS)"==""
1128
1129EXTRALIBPATHS3=$(EXTRALIBPATHS)
1130.IF "$(UPDATER)"=="YES"
1131.IF "$(SHL3NOCHECK)"==""
1132.IF "$(SOLAR_STLLIBPATH)"!=""
1133EXTRALIBPATHS3+=-L$(SOLAR_STLLIBPATH)
1134.ENDIF
1135.ENDIF				# "$(SHL3NOCHECK)"!=""
1136.ENDIF
1137#+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
1138#+++++++++++    version object      ++++++++++++++++++++++++++++++++++++++++
1139#+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
1140
1141.IF "$(L10N_framework)"==""
1142.IF "$(VERSIONOBJ)"!=""
1143SHL3VERSIONOBJ:=$(VERSIONOBJ:d){$(subst,$(DLLPOSTFIX),_dflt $(SHL3TARGET))}$(VERSIONOBJ:f)
1144USE_VERSIONH:=$(INCCOM)/$(SHL3VERSIONOBJ:b).h
1145.IF "$(GUI)" == "UNX"
1146SHL3VERSIONOBJDEP:=$(VERSIONOBJ:d){$(subst,$(DLLPOSTFIX),_dflt $(SHL3TARGET))}$(VERSIONOBJ:f:s/.o/.obj/)
1147.ELSE           # "$(GUI)" == "UNX"
1148SHL3VERSIONOBJDEP:=$(VERSIONOBJ:d){$(subst,$(DLLPOSTFIX),_dflt $(SHL3TARGET))}$(VERSIONOBJ:f)
1149.ENDIF          # "$(GUI)" == "UNX"
1150$(MISC)/$(SHL3VERSIONOBJ:b).c : $(SOLARENV)/src/version.c $(INCCOM)/$(SHL3VERSIONOBJ:b).h
1151#    $(COPY) $(SOLARENV)/src/version.c $@
1152	$(COMMAND_ECHO)$(TYPE) $(SOLARENV)/src/version.c | $(SED) s/_version.h/$(SHL3VERSIONOBJ:b).h/ > $@
1153
1154.INIT : $(SHL3VERSIONOBJDEP)
1155.ENDIF			# "$(VERSIONOBJ)"!=""
1156.ENDIF
1157
1158.IF "$(GUI)" != "UNX"
1159.IF "$(GUI)" == "WNT" || "$(GUI)" == "OS2"
1160.IF "$(SHL3IMPLIB)" == ""
1161SHL3IMPLIB=i$(TARGET)_t3
1162.ENDIF			# "$(SHL3IMPLIB)" == ""
1163.IF "$(COM)" != "GCC"
1164USE_3IMPLIB=-implib:$(LB)/$(SHL3IMPLIB).lib
1165.ENDIF			# "$(COM)" != "GCC"
1166SHL3IMPLIBN=$(LB)/$(SHL3IMPLIB).lib
1167ALLTAR : $(SHL3IMPLIBN)
1168
1169.IF "$(USE_DEFFILE)"==""
1170USE_3IMPLIB_DEPS=$(LB)/$(SHL3IMPLIB).lib
1171.ENDIF			# "$(USE_DEFFILE)"==""
1172.ENDIF			# "$(GUI)" == "WNT" || "$(GUI)" == "OS2"
1173USE_SHL3DEF=$(SHL3DEF)
1174.ELSE			# "$(GUI)" != "UNX"
1175USE_SHL3DEF=
1176SHL3DEPN+:=$(SHL3DEPNU)
1177
1178.IF "$(SHL3VERSIONMAP)"==""
1179# to activate vmaps remove "#"
1180USE_SHL3VERSIONMAP=$(MISC)/$(SHL3TARGET).vmap
1181.ENDIF			# "$(SHL3VERSIONMAP)"==""
1182
1183.IF "$(USE_SHL3VERSIONMAP)"!=""
1184
1185.IF "$(SHL3FILTERFILE)"!=""
1186.IF "$(SHL3VERSIONMAP)"!=""
1187#eine von beiden ist zuviel
1188USE_SHL3VERSIONMAP=$(MISC)/$(SHL3TARGET).vmap
1189$(USE_SHL3VERSIONMAP) .PHONY:
1190	@echo -----------------------------
1191	@echo you should only use versionmap OR exportfile
1192	@echo -----------------------------
1193#	force_dmake_to_error
1194
1195.ENDIF			# "$(SHL3VERSIONMAP)"!=""
1196
1197SHL3VERSIONMAPPARA=$(LINKVERSIONMAPFLAG) $(USE_SHL3VERSIONMAP)
1198
1199$(USE_SHL3VERSIONMAP): \
1200					$(SHL3OBJS)\
1201					$(SHL3LIBS)\
1202					$(SHL3FILTERFILE)
1203	@$(RM) $@.dump
1204.IF "$(SHL3OBJS)"!=""
1205# dump remaining objects on the fly
1206.IF "$(OS)"=="MACOSX"
1207	@-nm $(SHL3OBJS:s/.obj/.o/) > $@.dump
1208.ELSE
1209	@nm $(SHL3OBJS:s/.obj/.o/) > $@.dump
1210.ENDIF
1211.ENDIF			# "$(SHL3OBJS)!"=""
1212	@$(TYPE) /dev/null $(SHL3LIBS:s/.lib/.dump/) >> $@.dump
1213	$(COMMAND_ECHO) $(PERL) $(SOLARENV)/bin/mapgen.pl -d $@.dump -s $(SHL3INTERFACE) -f $(SHL3FILTERFILE) -m $@
1214
1215.ELSE			# "$(SHL3FILTERFILE)"!=""
1216USE_SHL3VERSIONMAP=$(MISC)/$(SHL3TARGET).vmap
1217$(USE_SHL3VERSIONMAP) :
1218.IF "$(VERBOSE)" == "TRUE"
1219	@echo -----------------------------
1220	@echo SHL3FILTERFILE not set!
1221	@echo -----------------------------
1222	@$(TOUCH) $@
1223	@echo dummy file to keep the dependencies for later use.
1224.ELSE
1225	@$(TOUCH) $@
1226.ENDIF
1227#	force_dmake_to_error
1228.ENDIF			# "$(SHL3FILTERFILE)"!=""
1229.ELSE			# "$(USE_SHL3VERSIONMAP)"!=""
1230
1231#and now for the plain non-generic way...
1232.IF "$(SHL3VERSIONMAP)"!=""
1233USE_SHL3VERSIONMAP=$(MISC)/$(SHL3VERSIONMAP:b)_$(SHL3TARGET)$(SHL3VERSIONMAP:e)
1234SHL3VERSIONMAPPARA=$(LINKVERSIONMAPFLAG) $(USE_SHL3VERSIONMAP)
1235
1236.IF "$(OS)"=="MACOSX"
1237$(USE_SHL3VERSIONMAP): $(SHL3OBJS) $(SHL3LIBS)
1238.ENDIF
1239
1240# .ERRREMOVE is needed as a recipe line like "$(AWK) ... > $@" would create $@
1241# even if the $(AWK) part fails:
1242$(USE_SHL3VERSIONMAP) .ERRREMOVE: $(SHL3VERSIONMAP)
1243	@@-$(RM) -f $@
1244# The following files will only be generated and needed on Mac OS X as temporary files
1245# in order to generate exported symbols list out of Linux/Solaris map files
1246.IF "$(OS)"=="MACOSX"
1247	@-$(RM) -f $@.symregexp >& $(NULLDEV)
1248	@-$(RM) -f $@.expsymlist >& $(NULLDEV)
1249.ENDIF
1250# Its questionable if the following condition '.IF "$(COMID)"=="gcc3"' makes sense and what
1251# happens if somebody will change it in the future
1252.IF "$(COMID)"=="gcc3"
1253	$(COMMAND_ECHO) tr -d "\015" < $(SHL3VERSIONMAP) | $(AWK) -f $(SOLARENV)/bin/addsym.awk > $@
1254.ELIF "$(COMNAME)"=="sunpro5"
1255	$(COMMAND_ECHO) tr -d "\015" < $(SHL3VERSIONMAP) | $(GREP) -v $(IGNORE_SYMBOLS) > $@
1256.ELSE           # "$(COMID)"=="gcc3"
1257	$(COMMAND_ECHO) tr -d "\015" < $(SHL3VERSIONMAP) > $@
1258.ENDIF          # "$(COMID)"=="gcc3"
1259	@chmod a+w $@
1260# Mac OS X post-processing generate an exported symbols list from the generated map file
1261# for details on exported symbols list see man ld on Mac OS X
1262.IF "$(OS)"=="MACOSX"
1263	@-cat $@ | $(AWK) -f $(SOLARENV)/bin/unxmap-to-macosx-explist.awk | grep -v "\*\|?" > $@.exported-symbols
1264	@-cat $@ | $(AWK) -f $(SOLARENV)/bin/unxmap-to-macosx-explist.awk | grep "\*\|?" > $@.symbols-regexp
1265# Shared libraries will be build out of the *.obj files specified in SHL?OBJS and SHL?LIBS
1266# Extract RTTI symbols from all the objects that will be used to build a shared library
1267.IF "$(SHL3OBJS)"!=""
1268	-echo $(foreach,i,$(SHL3OBJS:s/.obj/.o/) $i) | xargs -n1 nm -gx | $(SOLARENV)/bin/addsym-macosx.sh $@.symbols-regexp $@.symbols-regexp.tmp >> $@.exported-symbols
1269.ENDIF
1270.IF "$(SHL3LIBS)"!=""
1271	$(COMMAND_ECHO)-$(TYPE) $(foreach,j,$(SHL3LIBS) $j) | $(SED) s\#$(ROUT)\#$(PRJ)/$(ROUT)\#g | xargs -n1 nm -gx | $(SOLARENV)/bin/addsym-macosx.sh $@.symbols-regexp $@.symbols-regexp.tmp >> $@.exported-symbols
1272.ENDIF
1273# overwrite the map file generate into the local output tree with the generated
1274# exported symbols list
1275	cp $@.exported-symbols $@
1276.ENDIF # .IF "$(OS)"=="MACOSX"
1277.ENDIF			# "$(SHL3VERSIONMAP)"!=""
1278.ENDIF			# "$(USE_SHL3VERSIONMAP)"!=""
1279.ENDIF			# "$(GUI)" != "UNX"
1280
1281.IF "$(UNIXVERSIONNAMES)"!=""
1282.IF "$(OS)"!="MACOSX"
1283.IF "$(GUI)"=="UNX"
1284SHL3SONAME=\"$(SONAME_SWITCH)$(SHL3TARGETN:f)\"
1285.ENDIF			# "$(GUI)"!="UNX"
1286.ENDIF			# "$(OS)"!="MACOSX"
1287.ENDIF			# "$(UNIXVERSIONNAMES)"!=""
1288
1289.IF "$(SHL3RES)"!=""
1290SHL3ALLRES+=$(SHL3RES)
1291SHL3LINKRES*=$(MISC)/$(SHL3TARGET).res
1292SHL3LINKRESO*=$(MISC)/$(SHL3TARGET)_res.o
1293.ENDIF			# "$(SHL3RES)"!=""
1294
1295.IF "$(SHL3DEFAULTRES)$(use_shl_versions)"!=""
1296SHL3DEFAULTRES*=$(MISC)/$(SHL3TARGET)_def.res
1297SHL3ALLRES+=$(SHL3DEFAULTRES)
1298SHL3LINKRES*=$(MISC)/$(SHL3TARGET).res
1299SHL3LINKRESO*=$(MISC)/$(SHL3TARGET)_res.o
1300.ENDIF			# "$(SHL3DEFAULTRES)$(use_shl_versions)"!=""
1301
1302#.IF "$(SHL3TARGETN)"!=""
1303
1304.IF "$(linkinc)"!=""
1305.IF "$(GUI)"=="WNT" || "$(GUI)" == "OS2"
1306.IF "$(SHL3LIBS)"!=""
1307$(MISC)/$(SHL3TARGET)_linkinc.ls .PHONY:
1308	@@-$(RM) $@
1309	$(COMMAND_ECHO)$(SED) -f $(SOLARENV)/bin/chrel.sed $(foreach,i,$(SHL3LIBS) $(i:s/.lib/.lin/)) >> $@
1310.ENDIF          # "$(SHL3LIBS)"!=""
1311.ENDIF
1312
1313LINKINCTARGETS+=$(MISC)/$(SHL3TARGETN:b)_linkinc.ls
1314$(SHL3TARGETN) : $(LINKINCTARGETS)
1315
1316.ELSE
1317.IF "$(SHL3USE_EXPORTS)"=="name"
1318.IF "$(GUI)"=="WNT" || "$(GUI)" == "OS2"
1319.IF "$(COM)"!="GCC"
1320.IF "$(SHL3LIBS)"!=""
1321SHL3LINKLIST=$(MISC)/$(SHL3TARGET)_link.lst
1322SHL3LINKLISTPARAM=@$(SHL3LINKLIST)
1323$(SHL3LINKLIST) : $(SHL3LIBS)
1324    @@-$(RM) $@
1325	$(COMMAND_ECHO)$(SED) -f $(SOLARENV)/bin/chrel.sed $(foreach,i,$(SHL3LIBS) $(i:s/.lib/.lin/)) >> $@
1326.ENDIF          # "$(SHL3LIBS)"!=""
1327.ENDIF          # "$(COM)"!="GCC"
1328.ENDIF
1329.ENDIF			# "$(SHL3USE_EXPORTS)"=="name"
1330
1331$(MISC)/%linkinc.ls:
1332	@echo . > $@
1333.ENDIF          # "$(linkinc)"!=""
1334
1335.IF "$(GUI)" == "OS2"
1336#21/02/2006 YD dll names must be 8.3, invoke fix script
1337#check osl/os2/module.c/osl_loadModule()
1338SHL3TARGET8=$(shell @fix_shl.cmd $(SHL3TARGET))
1339.ENDIF
1340
1341
1342$(SHL3TARGETN) : \
1343					$(SHL3OBJS)\
1344					$(SHL3LIBS)\
1345					$(USE_3IMPLIB_DEPS)\
1346					$(USE_SHL3DEF)\
1347					$(USE_SHL3VERSIONMAP)\
1348					$(SHL3RES)\
1349					$(SHL3DEPN) \
1350					$(SHL3LINKLIST)
1351	@echo "Making:   " $(@:f)
1352.IF "$(GUI)" == "WNT"
1353.IF "$(SHL3DEFAULTRES)"!=""
1354	@@-$(RM) $(MISC)/$(SHL3DEFAULTRES:b).rc
1355.IF "$(SHL3ICON)" != ""
1356	@echo 1 ICON $(SHL3ICON) >> $(MISC)/$(SHL3DEFAULTRES:b).rc
1357.ENDIF
1358.IF "$(use_shl_versions)" != ""
1359.IF "$(SHL3ADD_VERINFO)"!=""
1360	@echo $(EMQ)#include $(EMQ)"$(SHL3ADD_VERINFO)$(EMQ)" >> $(MISC)/$(SHL3DEFAULTRES:b).rc
1361.ELSE			# "$(SHL3ADD_VERINFO)"!=""
1362	@echo $(EMQ)#define ADDITIONAL_VERINFO1 >> $(MISC)/$(SHL3DEFAULTRES:b).rc
1363	@echo $(EMQ)#define ADDITIONAL_VERINFO2 >> $(MISC)/$(SHL3DEFAULTRES:b).rc
1364	@echo $(EMQ)#define ADDITIONAL_VERINFO3 >> $(MISC)/$(SHL3DEFAULTRES:b).rc
1365.ENDIF			# "$(SHL3ADD_VERINFO)"!=""
1366	@echo $(EMQ)#define VERVARIANT	$(BUILD) >> $(MISC)/$(SHL3DEFAULTRES:b).rc
1367	@echo $(EMQ)#define ORG_NAME	$(SHL3TARGET)$(DLLPOST) >> $(MISC)/$(SHL3DEFAULTRES:b).rc
1368	@echo $(EMQ)#define INTERNAL_NAME $(SHL3TARGET:b) >> $(MISC)/$(SHL3DEFAULTRES:b).rc
1369	@echo $(EMQ)#include $(EMQ)"shlinfo.rc$(EMQ)" >> $(MISC)/$(SHL3DEFAULTRES:b).rc
1370.ENDIF			# "$(use_shl_versions)" != ""
1371	$(COMMAND_ECHO)$(RC) -DWIN32 $(INCLUDE) $(RCLINKFLAGS) $(MISC)/$(SHL3DEFAULTRES:b).rc
1372.ENDIF			# "$(SHL3DEFAULTRES)"!=""
1373.IF "$(SHL3ALLRES)"!=""
1374	$(COMMAND_ECHO)$(TYPE) $(SHL3ALLRES) > $(SHL3LINKRES)
1375.IF "$(COM)"=="GCC"
1376	windres $(SHL3LINKRES) $(SHL3LINKRESO)
1377.ENDIF			# "$(COM)"=="GCC"
1378.ENDIF			# "$(SHL3ALLRES)"!=""
1379.IF "$(COM)"=="GCC"	# always have to call dlltool explicitly as ld cannot handle # comment in .def
1380	@echo dlltool --dllname $(SHL3TARGET)$(DLLPOST) \
1381		--kill-at \\ > $(MISC)/$(TARGET).$(@:b)_3.cmd
1382	@noop $(assign ALL3OBJLIST:=$(STDOBJ) $(SHL3OBJS) $(SHL3LINKRESO) $(shell $(TYPE) /dev/null $(SHL3LIBS) | $(SED) s?$(ROUT)?$(PRJ)/$(ROUT)?g))
1383.IF "$(DEFLIB3NAME)"!=""	# do not have to include objs
1384	@noop $(assign DEF3OBJLIST:=$(shell $(TYPE) $(foreach,i,$(DEFLIB3NAME) $(SLB)/$(i).lib) | sed s?$(ROUT)?$(PRJ)/$(ROUT)?g))
1385	@noop $(foreach,i,$(DEF3OBJLIST) $(assign ALL3OBJLIST:=$(ALL3OBJLIST:s?$i??)))
1386.ENDIF			# "$(DEFLIB3NAME)"!=""
1387	@echo	--output-exp $(MISC)/$(@:b)_exp.o \\ >> $(MISC)/$(TARGET).$(@:b)_3.cmd
1388.IF "$(SHL3DEF)"!=""
1389	@echo	--input-def $(SHL3DEF) \\ >> $(MISC)/$(TARGET).$(@:b)_3.cmd
1390.ELSE
1391	@echo	$(SHL3VERSIONOBJ) $(SHL3DESCRIPTIONOBJ) \\ >> $(MISC)/$(TARGET).$(@:b)_3.cmd
1392.ENDIF
1393	@echo	$(ALL3OBJLIST) >> $(MISC)/$(TARGET).$(@:b)_3.cmd
1394	@echo $(LINK) $(LINKFLAGS) $(LINKFLAGSSHL) $(MINGWSSTDOBJ) -o $@ \
1395		$(STDOBJ) $(SHL3VERSIONOBJ) $(SHL3DESCRIPTIONOBJ) $(SHL3OBJS) $(SHL3LINKRESO) \
1396		`$(TYPE) /dev/null $(SHL3LIBS) | $(SED) s\#$(ROUT)\#$(PRJ)/$(ROUT)\#g` \
1397		-Wl,--exclude-libs,ALL,--start-group $(SHL3STDLIBS) -Wl,--end-group \
1398		$(SHL3STDSHL) $(STDSHL3) $(MISC)/$(@:b)_exp.o $(MINGWSSTDENDOBJ) \
1399		-Wl,-Map,$(MISC)/$(@:b).map >> $(MISC)/$(TARGET).$(@:b)_3.cmd
1400  .IF "$(VERBOSE)" == "TRUE"
1401	@$(TYPE)  $(MISC)/$(TARGET).$(@:b)_3.cmd
1402  .ENDIF
1403	@+source $(MISC)/$(TARGET).$(@:b)_3.cmd
1404.ELSE
1405.IF "$(linkinc)"==""
1406.IF "$(SHL3USE_EXPORTS)"!="name"
1407.IF "$(USE_DEFFILE)"!=""
1408	$(COMMAND_ECHO)$(SHL3LINKER) @$(mktmp \
1409		$(SHL3LINKFLAGS) \
1410		$(LINKFLAGSSHL) \
1411		$(SHL3STACK) $(SHL3BASEX)	\
1412		-out:$@ \
1413		-map:$(MISC)/$(@:b).map \
1414		-def:$(SHL3DEF) \
1415		$(USE_3IMPLIB) \
1416		$(STDOBJ) \
1417		$(SHL3VERSIONOBJ) $(SHL3OBJS) \
1418		$(SHL3LIBS) \
1419		$(SHL3STDLIBS) \
1420		$(SHL3STDSHL) $(STDSHL3) \
1421		$(SHL3LINKRES) \
1422	)
1423# double check if target was really written... still making sense?
1424    @@$(LS) $@
1425	@echo linking $@.manifest ...
1426.IF "$(VISTA_MANIFEST)"!=""
1427	$(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(MT) $(MTFLAGS) -manifest $@.manifest -manifest $(TRUSTED_MANIFEST_LOCATION)/trustedinfo.manifest -out:$@.tmanifest$(EMQ) $(FI)
1428	$(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(MT) $(MTFLAGS) -manifest $@.tmanifest -outputresource:$@$(EMQ);2 $(FI)
1429.ELSE
1430	$(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(MT) $(MTFLAGS) -manifest $@.manifest -outputresource:$@$(EMQ);2 $(FI)
1431.ENDIF # "$(VISTA_MANIFEST)"!=""
1432	$(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(RM:s/+//) $@.manifest $(FI)
1433	$(COMMAND_ECHO)$(IFEXIST) $@.tmanifest $(THEN) $(RM:s/+//) $@.tmanifest $(FI)
1434.ELSE			# "$(USE_DEFFILE)"!=""
1435	$(COMMAND_ECHO)$(SHL3LINKER) @$(mktmp	$(SHL3LINKFLAGS)			\
1436		$(LINKFLAGSSHL) $(SHL3BASEX)		\
1437		$(SHL3STACK) -out:$(SHL3TARGETN)	\
1438		-map:$(MISC)/$(@:B).map				\
1439		$(LB)/$(SHL3IMPLIB).exp				\
1440		$(STDOBJ)							\
1441		$(SHL3OBJS) $(SHL3VERSIONOBJ) \
1442		$(SHL3LIBS)                         \
1443		$(SHL3STDLIBS)                      \
1444		$(SHL3STDSHL) $(STDSHL3)                           \
1445		$(SHL3LINKRES) \
1446	)
1447# double check if target was really written... still making sense?
1448    @@$(LS) $@
1449	@echo linking $@.manifest ...
1450.IF "$(VISTA_MANIFEST)"!=""
1451	$(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(MT) $(MTFLAGS) -manifest $@.manifest -manifest $(TRUSTED_MANIFEST_LOCATION)/trustedinfo.manifest -out:$@.tmanifest$(EMQ) $(FI)
1452	$(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(MT) $(MTFLAGS) -manifest $@.tmanifest -outputresource:$@$(EMQ);2 $(FI)
1453.ELSE
1454	$(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(MT) $(MTFLAGS) -manifest $@.manifest -outputresource:$@$(EMQ);2 $(FI)
1455.ENDIF # "$(VISTA_MANIFEST)"!=""
1456	$(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(RM:s/+//) $@.manifest $(FI)
1457	$(COMMAND_ECHO)$(IFEXIST) $@.tmanifest $(THEN) $(RM:s/+//) $@.tmanifest $(FI)
1458.ENDIF			# "$(USE_DEFFILE)"!=""
1459.ELSE			# "$(SHL3USE_EXPORTS)"!="name"
1460	$(COMMAND_ECHO)$(SHL3LINKER) @$(mktmp	$(SHL3LINKFLAGS)			\
1461		$(LINKFLAGSSHL) $(SHL3BASEX)		\
1462		$(SHL3STACK) -out:$(SHL3TARGETN)	\
1463		-map:$(MISC)/$(@:B).map				\
1464		$(USE_3IMPLIB) \
1465		$(STDOBJ)							\
1466		$(SHL3OBJS) $(SHL3VERSIONOBJ))   \
1467		$(SHL3LINKLISTPARAM) \
1468		@$(mktmp $(SHL3STDLIBS)                      \
1469		$(SHL3STDSHL) $(STDSHL3)                           \
1470		$(SHL3LINKRES) \
1471	)
1472	@echo linking $@.manifest ...
1473.IF "$(VISTA_MANIFEST)"!=""
1474	$(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(MT) $(MTFLAGS) -manifest $@.manifest -manifest $(TRUSTED_MANIFEST_LOCATION)/trustedinfo.manifest -out:$@.tmanifest$(EMQ) $(FI)
1475	$(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(MT) $(MTFLAGS) -manifest $@.tmanifest -outputresource:$@$(EMQ);2 $(FI)
1476.ELSE
1477	$(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(MT) $(MTFLAGS) -manifest $@.manifest -outputresource:$@$(EMQ);2 $(FI)
1478.ENDIF # "$(VISTA_MANIFEST)"!=""
1479	$(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(RM:s/+//) $@.manifest $(FI)
1480	$(COMMAND_ECHO)$(IFEXIST) $@.tmanifest $(THEN) $(RM:s/+//) $@.tmanifest $(FI)
1481.ENDIF			# "$(SHL3USE_EXPORTS)"!="name"
1482.ELSE			# "$(linkinc)"==""
1483		$(COMMAND_ECHO)-$(RM) del $(MISC)/$(SHL3TARGET).lnk
1484		$(COMMAND_ECHO)-$(RM) $(MISC)/$(SHL3TARGET).lst
1485		$(COMMAND_ECHO)$(TYPE) $(mktmp \
1486		$(SHL3LINKFLAGS) \
1487		$(LINKFLAGSSHL) $(SHL3BASEX) \
1488		$(SHL3STACK) $(MAPFILE) \
1489		-out:$@ \
1490		$(LB)/$(SHL3IMPLIB).exp \
1491		$(STDOBJ) \
1492		$(SHL3OBJS) \
1493		$(SHL3STDLIBS) \
1494		$(SHL3STDSHL) $(STDSHL3) \
1495		$(SHL3LINKRES) \
1496		) >> $(MISC)/$(SHL3TARGET).lnk
1497		$(COMMAND_ECHO)$(TYPE) $(MISC)/$(SHL3TARGETN:b)_linkinc.ls  >> $(MISC)/$(SHL3TARGET).lnk
1498		$(COMMAND_ECHO)$(SHL3LINKER) @$(MISC)/$(SHL3TARGET).lnk
1499		@echo linking $@.manifest ...
1500.IF "$(VISTA_MANIFEST)"!=""
1501		$(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(MT) $(MTFLAGS) -manifest $@.manifest -manifest $(TRUSTED_MANIFEST_LOCATION)/trustedinfo.manifest -out:$@.tmanifest$(EMQ) $(FI)
1502		$(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(MT) $(MTFLAGS) -manifest $@.tmanifest -outputresource:$@$(EMQ);2 $(FI)
1503.ELSE
1504		$(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(MT) $(MTFLAGS) -manifest $@.manifest -outputresource:$@$(EMQ);2 $(FI)
1505.ENDIF # "$(VISTA_MANIFEST)"!=""
1506		$(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(RM:s/+//) $@.manifest $(FI)
1507		$(COMMAND_ECHO)$(IFEXIST) $@.tmanifest $(THEN) $(RM:s/+//) $@.tmanifest $(FI)
1508.ENDIF			# "$(linkinc)"==""
1509.ENDIF			# "$(COM)"=="GCC"
1510.ENDIF			# "$(GUI)" == "WNT"
1511.IF "$(GUI)"=="UNX"
1512.IF "$(OS)"=="MACOSX"
1513	@-$(RM) $(MISC)/$(@:b).list
1514	@-$(RM) $(MISC)/$(TARGET).$(@:b)_3.cmd
1515	@echo $(STDSLO) $(SHL3OBJS:s/.obj/.o/) \
1516	$(SHL3VERSIONOBJ) \
1517	`cat /dev/null $(SHL3LIBS) | sed s\#$(ROUT)\#$(PRJ)/$(ROUT)\#g` | tr -s " " "\n" > $(MISC)/$(@:b).list
1518	@echo -n $(SHL3LINKER) $(SHL3LINKFLAGS) $(SHL3VERSIONMAPPARA) $(LINKFLAGSSHL) -L$(PRJ)/$(ROUT)/lib $(SOLARLIB) -o $@ \
1519	$(SHL3STDLIBS) $(SHL3ARCHIVES) $(SHL3STDSHL) $(STDSHL3) -filelist $(MISC)/$(@:b).list $(LINKOUTPUT_FILTER) > $(MISC)/$(TARGET).$(@:b)_3.cmd
1520    @$(PERL) $(SOLARENV)/bin/macosx-dylib-link-list.pl \
1521        `cat $(MISC)/$(TARGET).$(@:b)_3.cmd` \
1522        >> $(MISC)/$(TARGET).$(@:b)_3.cmd
1523  .IF "$(VERBOSE)" == "TRUE"
1524	@cat $(MISC)/$(TARGET).$(@:b)_3.cmd
1525  .ENDIF
1526	@+source $(MISC)/$(TARGET).$(@:b)_3.cmd
1527    @$(PERL) $(SOLARENV)/bin/macosx-change-install-names.pl \
1528        shl $(SHL3RPATH) $@
1529.IF "$(SHL3CREATEJNILIB)"!=""
1530	@echo "Making:   " $(@:f).jnilib
1531	@macosx-create-bundle $@
1532.ENDIF          # "$(SHL3CREATEJNILIB)"!=""
1533.IF "$(UPDATER)"=="YES"
1534.IF "$(SHL3NOCHECK)"==""
1535	$(SOLARENV)/bin/checkdll.sh -L$(LB) -L$(SOLARLIBDIR) $(EXTRALIBPATHS3) $(SHL3TARGETN)
1536.ENDIF				# "$(SHL3NOCHECK)"!=""
1537.ENDIF
1538.ELSE			# "$(OS)"=="MACOSX"
1539	@-$(RM) $(MISC)/$(TARGET).$(@:b)_3.cmd
1540	@echo $(SHL3LINKER) $(SHL3LINKFLAGS) $(SHL3SONAME) $(LINKFLAGSSHL) $(SHL3VERSIONMAPPARA) -L$(PRJ)/$(ROUT)/lib $(SOLARLIB) $(STDSLO) $(SHL3OBJS:s/.obj/.o/) \
1541	$(SHL3VERSIONOBJ) -o $@ \
1542	`cat /dev/null $(SHL3LIBS) | tr -s " " "\n" | $(SED) s\#$(ROUT)\#$(PRJ)/$(ROUT)\#g` \
1543	$(SHL3STDLIBS) $(SHL3ARCHIVES) $(SHL3STDSHL) $(STDSHL3) $(LINKOUTPUT_FILTER) > $(MISC)/$(TARGET).$(@:b)_3.cmd
1544  .IF "$(VERBOSE)" == "TRUE"
1545	@cat $(MISC)/$(TARGET).$(@:b)_3.cmd
1546  .ENDIF
1547	@+source $(MISC)/$(TARGET).$(@:b)_3.cmd
1548.IF "$(UPDATER)"=="YES"
1549.IF "$(SHL3NOCHECK)"==""
1550	$(COMMAND_ECHO)-$(RM) $(SHL3TARGETN:d)check_$(SHL3TARGETN:f)
1551	$(COMMAND_ECHO)$(RENAME) $(SHL3TARGETN) $(SHL3TARGETN:d)check_$(SHL3TARGETN:f)
1552.IF "$(VERBOSE)"=="TRUE"
1553	$(COMMAND_ECHO)$(SOLARENV)/bin/checkdll.sh -L$(LB) -L$(SOLARLIBDIR) $(EXTRALIBPATHS3) $(SHL3TARGETN:d)check_$(SHL3TARGETN:f)
1554.ELSE
1555	$(COMMAND_ECHO)$(SOLARENV)/bin/checkdll.sh -L$(LB) -L$(SOLARLIBDIR) $(EXTRALIBPATHS3) -- -s $(SHL3TARGETN:d)check_$(SHL3TARGETN:f)
1556.ENDIF
1557.ENDIF				# "$(SHL3NOCHECK)"!=""
1558.ENDIF			# "$(UPDATER)"=="YES"
1559.ENDIF			# "$(OS)"=="MACOSX"
1560.IF "$(UNIXVERSIONNAMES)"!=""
1561	$(COMMAND_ECHO)$(RM) $(LB)/$(SHL3TARGETN:b)
1562	$(COMMAND_ECHO)cd $(LB) && ln -s $(SHL3TARGETN:f) $(SHL3TARGETN:b)
1563.ENDIF			# "$(UNIXVERSIONNAMES)"!=""
1564.IF "$(VERBOSE)" == "TRUE"
1565	@ls -l $@
1566.ENDIF
1567.ENDIF			# "$(GUI)" == "UNX"
1568
1569.IF "$(GUI)" == "OS2"
1570
1571.IF "$(SHL3DEFAULTRES)"!=""
1572	@+-$(RM) $(MISC)/$(SHL3DEFAULTRES:b).rc > $(NULLDEV)
1573.IF "$(SHL3ICON)" != ""
1574	@-+echo 1 ICON $(SHL3ICON) >> $(MISC)/$(SHL3DEFAULTRES:b).rc
1575.ENDIF
1576.IF "$(use_shl_versions)" != ""
1577.IF "$(SHL3ADD_VERINFO)"!=""
1578	@-+echo $(EMQ)#include $(EMQ)"$(SHL3ADD_VERINFO)$(EMQ)" >> $(MISC)/$(SHL3DEFAULTRES:b).rc
1579.ENDIF			# "$(SHL3ADD_VERINFO)"!=""
1580	@-+echo MENU 1 BEGIN END >> $(MISC)/$(SHL3DEFAULTRES:b).rc
1581#	@-+echo $(EMQ)RCDATA 1 { "Build string here" }$(EMQ) >> $(MISC)/$(SHL3DEFAULTRES:b).rc
1582.ENDIF			# "$(use_shl_versions)" != ""
1583# YD 04/07/06 seems null, confuses rc cli: -i $(SOLARTESDIR)
1584	$(COMMAND_ECHO)$(RC) -r -DOS2 $(INCLUDE) $(RCLINKFLAGS) $(MISC)/$(SHL3DEFAULTRES:b).rc
1585.ENDIF			# "$(SHL3DEFAULTRES)"!=""
1586
1587.IF "$(SHL3ALLRES)"!=""
1588	$(COMMAND_ECHO)+$(TYPE) $(SHL3ALLRES) > $(SHL3LINKRES)
1589.ENDIF			# "$(SHL3ALLRES)"!=""
1590
1591.IF "$(USE_DEFFILE)"!=""
1592
1593	$(COMMAND_ECHO)$(SHL3LINKER) $(SHL3LINKFLAGS) $(LINKFLAGSSHL) -o $@ \
1594		$(SHL3DEF) \
1595		$(STDOBJ) \
1596		-L$(LB) \
1597		-L$(SOLARVERSION)/$(INPATH)/lib \
1598		$(SHL3OBJS) $(SHL3VERSIONOBJ) \
1599		$(SHL3LIBS) \
1600		$(SHL3LINKRES) \
1601		$(SHL3STDLIBS) \
1602		$(SHL3STDSHL) $(STDSHL3)
1603
1604.ELSE			# "$(USE_DEFFILE)"!=""
1605
1606	$(COMMAND_ECHO)$(SHL3LINKER) $(SHL3LINKFLAGS)			\
1607		$(LINKFLAGSSHL) $(SHL3BASEX)		\
1608		$(SHL3STACK) -o $(SHL3TARGETN)	\
1609		$(SHL3DEF) \
1610		$(STDOBJ)							\
1611		-L$(LB) \
1612		-L$(SOLARVERSION)/$(INPATH)/lib \
1613		$(SHL3OBJS) $(SHL3VERSIONOBJ) \
1614		$(SHL3LIBS) \
1615		$(SHL3LINKRES) \
1616		$(SHL3STDLIBS) \
1617		$(SHL3STDSHL) $(STDSHL3)
1618
1619.ENDIF			# "$(USE_DEFFILE)"!=""
1620
1621	$(COMMAND_ECHO)+$(IMPLIB) -p256 $(IMPLIBFLAGS) $(SHL3IMPLIBN) $@
1622	$(COMMAND_ECHO)+$(IMPLIB) -p256 $(IMPLIBFLAGS) $(LB)/$(SHL3TARGET).lib $@
1623
1624.IF "$(SHL3TARGET8)" != "$(SHL3TARGET)"
1625	$(COMMAND_ECHO)+$(COPY) $@ $(@:d)$(SHL3TARGET8).dll
1626.ENDIF
1627
1628.ENDIF			# "$(GUI)" == "OS2"
1629
1630.ENDIF			# "$(SHL3TARGETN)"!=""
1631
1632# unroll begin
1633
1634.IF "$(SHL4TARGETN)"!=""
1635
1636.IF "$(OS)"=="AIX"
1637SHL4STDLIBS=
1638.ENDIF
1639
1640.IF "$(SHLLINKARCONLY)" != ""
1641SHL4STDLIBS=
1642STDSHL=
1643.ELSE
1644SHL4ARCHIVES=
1645.ENDIF
1646
1647# decide how to link
1648.IF "$(SHL4CODETYPE)"=="C"
1649SHL4LINKER=$(LINKC)
1650SHL4STDSHL=$(subst,CPPRUNTIME, $(STDSHL))
1651SHL4LINKFLAGS+=$(LINKCFLAGS)
1652.ELSE			# "$(SHL4CODETYPE)"=="C"
1653SHL4LINKER=$(LINK)
1654SHL4STDSHL=$(subst,CPPRUNTIME,$(STDLIBCPP) $(STDSHL))
1655SHL4LINKFLAGS+=$(LINKFLAGS)
1656.ENDIF			# "$(SHL4CODETYPE)"=="C"
1657
1658SHL4RPATH*=OOO
1659LINKFLAGSRUNPATH_$(SHL4RPATH)*=/ERROR:/Bad_SHL4RPATH_value
1660SHL4LINKFLAGS+=$(LINKFLAGSRUNPATH_$(SHL4RPATH))
1661
1662.IF "$(SHL4USE_EXPORTS)"==""
1663SHL4DEF*=$(MISC)/$(SHL4TARGET).def
1664.ENDIF			# "$(SHL4USE_EXPORTS)"==""
1665
1666EXTRALIBPATHS4=$(EXTRALIBPATHS)
1667.IF "$(UPDATER)"=="YES"
1668.IF "$(SHL4NOCHECK)"==""
1669.IF "$(SOLAR_STLLIBPATH)"!=""
1670EXTRALIBPATHS4+=-L$(SOLAR_STLLIBPATH)
1671.ENDIF
1672.ENDIF				# "$(SHL4NOCHECK)"!=""
1673.ENDIF
1674#+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
1675#+++++++++++    version object      ++++++++++++++++++++++++++++++++++++++++
1676#+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
1677
1678.IF "$(L10N_framework)"==""
1679.IF "$(VERSIONOBJ)"!=""
1680SHL4VERSIONOBJ:=$(VERSIONOBJ:d){$(subst,$(DLLPOSTFIX),_dflt $(SHL4TARGET))}$(VERSIONOBJ:f)
1681USE_VERSIONH:=$(INCCOM)/$(SHL4VERSIONOBJ:b).h
1682.IF "$(GUI)" == "UNX"
1683SHL4VERSIONOBJDEP:=$(VERSIONOBJ:d){$(subst,$(DLLPOSTFIX),_dflt $(SHL4TARGET))}$(VERSIONOBJ:f:s/.o/.obj/)
1684.ELSE           # "$(GUI)" == "UNX"
1685SHL4VERSIONOBJDEP:=$(VERSIONOBJ:d){$(subst,$(DLLPOSTFIX),_dflt $(SHL4TARGET))}$(VERSIONOBJ:f)
1686.ENDIF          # "$(GUI)" == "UNX"
1687$(MISC)/$(SHL4VERSIONOBJ:b).c : $(SOLARENV)/src/version.c $(INCCOM)/$(SHL4VERSIONOBJ:b).h
1688#    $(COPY) $(SOLARENV)/src/version.c $@
1689	$(COMMAND_ECHO)$(TYPE) $(SOLARENV)/src/version.c | $(SED) s/_version.h/$(SHL4VERSIONOBJ:b).h/ > $@
1690
1691.INIT : $(SHL4VERSIONOBJDEP)
1692.ENDIF			# "$(VERSIONOBJ)"!=""
1693.ENDIF
1694
1695.IF "$(GUI)" != "UNX"
1696.IF "$(GUI)" == "WNT" || "$(GUI)" == "OS2"
1697.IF "$(SHL4IMPLIB)" == ""
1698SHL4IMPLIB=i$(TARGET)_t4
1699.ENDIF			# "$(SHL4IMPLIB)" == ""
1700.IF "$(COM)" != "GCC"
1701USE_4IMPLIB=-implib:$(LB)/$(SHL4IMPLIB).lib
1702.ENDIF			# "$(COM)" != "GCC"
1703SHL4IMPLIBN=$(LB)/$(SHL4IMPLIB).lib
1704ALLTAR : $(SHL4IMPLIBN)
1705
1706.IF "$(USE_DEFFILE)"==""
1707USE_4IMPLIB_DEPS=$(LB)/$(SHL4IMPLIB).lib
1708.ENDIF			# "$(USE_DEFFILE)"==""
1709.ENDIF			# "$(GUI)" == "WNT" || "$(GUI)" == "OS2"
1710USE_SHL4DEF=$(SHL4DEF)
1711.ELSE			# "$(GUI)" != "UNX"
1712USE_SHL4DEF=
1713SHL4DEPN+:=$(SHL4DEPNU)
1714
1715.IF "$(SHL4VERSIONMAP)"==""
1716# to activate vmaps remove "#"
1717USE_SHL4VERSIONMAP=$(MISC)/$(SHL4TARGET).vmap
1718.ENDIF			# "$(SHL4VERSIONMAP)"==""
1719
1720.IF "$(USE_SHL4VERSIONMAP)"!=""
1721
1722.IF "$(SHL4FILTERFILE)"!=""
1723.IF "$(SHL4VERSIONMAP)"!=""
1724#eine von beiden ist zuviel
1725USE_SHL4VERSIONMAP=$(MISC)/$(SHL4TARGET).vmap
1726$(USE_SHL4VERSIONMAP) .PHONY:
1727	@echo -----------------------------
1728	@echo you should only use versionmap OR exportfile
1729	@echo -----------------------------
1730#	force_dmake_to_error
1731
1732.ENDIF			# "$(SHL4VERSIONMAP)"!=""
1733
1734SHL4VERSIONMAPPARA=$(LINKVERSIONMAPFLAG) $(USE_SHL4VERSIONMAP)
1735
1736$(USE_SHL4VERSIONMAP): \
1737					$(SHL4OBJS)\
1738					$(SHL4LIBS)\
1739					$(SHL4FILTERFILE)
1740	@$(RM) $@.dump
1741.IF "$(SHL4OBJS)"!=""
1742# dump remaining objects on the fly
1743.IF "$(OS)"=="MACOSX"
1744	@-nm $(SHL4OBJS:s/.obj/.o/) > $@.dump
1745.ELSE
1746	@nm $(SHL4OBJS:s/.obj/.o/) > $@.dump
1747.ENDIF
1748.ENDIF			# "$(SHL4OBJS)!"=""
1749	@$(TYPE) /dev/null $(SHL4LIBS:s/.lib/.dump/) >> $@.dump
1750	$(COMMAND_ECHO) $(PERL) $(SOLARENV)/bin/mapgen.pl -d $@.dump -s $(SHL4INTERFACE) -f $(SHL4FILTERFILE) -m $@
1751
1752.ELSE			# "$(SHL4FILTERFILE)"!=""
1753USE_SHL4VERSIONMAP=$(MISC)/$(SHL4TARGET).vmap
1754$(USE_SHL4VERSIONMAP) :
1755.IF "$(VERBOSE)" == "TRUE"
1756	@echo -----------------------------
1757	@echo SHL4FILTERFILE not set!
1758	@echo -----------------------------
1759	@$(TOUCH) $@
1760	@echo dummy file to keep the dependencies for later use.
1761.ELSE
1762	@$(TOUCH) $@
1763.ENDIF
1764#	force_dmake_to_error
1765.ENDIF			# "$(SHL4FILTERFILE)"!=""
1766.ELSE			# "$(USE_SHL4VERSIONMAP)"!=""
1767
1768#and now for the plain non-generic way...
1769.IF "$(SHL4VERSIONMAP)"!=""
1770USE_SHL4VERSIONMAP=$(MISC)/$(SHL4VERSIONMAP:b)_$(SHL4TARGET)$(SHL4VERSIONMAP:e)
1771SHL4VERSIONMAPPARA=$(LINKVERSIONMAPFLAG) $(USE_SHL4VERSIONMAP)
1772
1773.IF "$(OS)"=="MACOSX"
1774$(USE_SHL4VERSIONMAP): $(SHL4OBJS) $(SHL4LIBS)
1775.ENDIF
1776
1777# .ERRREMOVE is needed as a recipe line like "$(AWK) ... > $@" would create $@
1778# even if the $(AWK) part fails:
1779$(USE_SHL4VERSIONMAP) .ERRREMOVE: $(SHL4VERSIONMAP)
1780	@@-$(RM) -f $@
1781# The following files will only be generated and needed on Mac OS X as temporary files
1782# in order to generate exported symbols list out of Linux/Solaris map files
1783.IF "$(OS)"=="MACOSX"
1784	@-$(RM) -f $@.symregexp >& $(NULLDEV)
1785	@-$(RM) -f $@.expsymlist >& $(NULLDEV)
1786.ENDIF
1787# Its questionable if the following condition '.IF "$(COMID)"=="gcc3"' makes sense and what
1788# happens if somebody will change it in the future
1789.IF "$(COMID)"=="gcc3"
1790	$(COMMAND_ECHO) tr -d "\015" < $(SHL4VERSIONMAP) | $(AWK) -f $(SOLARENV)/bin/addsym.awk > $@
1791.ELIF "$(COMNAME)"=="sunpro5"
1792	$(COMMAND_ECHO) tr -d "\015" < $(SHL4VERSIONMAP) | $(GREP) -v $(IGNORE_SYMBOLS) > $@
1793.ELSE           # "$(COMID)"=="gcc3"
1794	$(COMMAND_ECHO) tr -d "\015" < $(SHL4VERSIONMAP) > $@
1795.ENDIF          # "$(COMID)"=="gcc3"
1796	@chmod a+w $@
1797# Mac OS X post-processing generate an exported symbols list from the generated map file
1798# for details on exported symbols list see man ld on Mac OS X
1799.IF "$(OS)"=="MACOSX"
1800	@-cat $@ | $(AWK) -f $(SOLARENV)/bin/unxmap-to-macosx-explist.awk | grep -v "\*\|?" > $@.exported-symbols
1801	@-cat $@ | $(AWK) -f $(SOLARENV)/bin/unxmap-to-macosx-explist.awk | grep "\*\|?" > $@.symbols-regexp
1802# Shared libraries will be build out of the *.obj files specified in SHL?OBJS and SHL?LIBS
1803# Extract RTTI symbols from all the objects that will be used to build a shared library
1804.IF "$(SHL4OBJS)"!=""
1805	-echo $(foreach,i,$(SHL4OBJS:s/.obj/.o/) $i) | xargs -n1 nm -gx | $(SOLARENV)/bin/addsym-macosx.sh $@.symbols-regexp $@.symbols-regexp.tmp >> $@.exported-symbols
1806.ENDIF
1807.IF "$(SHL4LIBS)"!=""
1808	$(COMMAND_ECHO)-$(TYPE) $(foreach,j,$(SHL4LIBS) $j) | $(SED) s\#$(ROUT)\#$(PRJ)/$(ROUT)\#g | xargs -n1 nm -gx | $(SOLARENV)/bin/addsym-macosx.sh $@.symbols-regexp $@.symbols-regexp.tmp >> $@.exported-symbols
1809.ENDIF
1810# overwrite the map file generate into the local output tree with the generated
1811# exported symbols list
1812	cp $@.exported-symbols $@
1813.ENDIF # .IF "$(OS)"=="MACOSX"
1814.ENDIF			# "$(SHL4VERSIONMAP)"!=""
1815.ENDIF			# "$(USE_SHL4VERSIONMAP)"!=""
1816.ENDIF			# "$(GUI)" != "UNX"
1817
1818.IF "$(UNIXVERSIONNAMES)"!=""
1819.IF "$(OS)"!="MACOSX"
1820.IF "$(GUI)"=="UNX"
1821SHL4SONAME=\"$(SONAME_SWITCH)$(SHL4TARGETN:f)\"
1822.ENDIF			# "$(GUI)"!="UNX"
1823.ENDIF			# "$(OS)"!="MACOSX"
1824.ENDIF			# "$(UNIXVERSIONNAMES)"!=""
1825
1826.IF "$(SHL4RES)"!=""
1827SHL4ALLRES+=$(SHL4RES)
1828SHL4LINKRES*=$(MISC)/$(SHL4TARGET).res
1829SHL4LINKRESO*=$(MISC)/$(SHL4TARGET)_res.o
1830.ENDIF			# "$(SHL4RES)"!=""
1831
1832.IF "$(SHL4DEFAULTRES)$(use_shl_versions)"!=""
1833SHL4DEFAULTRES*=$(MISC)/$(SHL4TARGET)_def.res
1834SHL4ALLRES+=$(SHL4DEFAULTRES)
1835SHL4LINKRES*=$(MISC)/$(SHL4TARGET).res
1836SHL4LINKRESO*=$(MISC)/$(SHL4TARGET)_res.o
1837.ENDIF			# "$(SHL4DEFAULTRES)$(use_shl_versions)"!=""
1838
1839#.IF "$(SHL4TARGETN)"!=""
1840
1841.IF "$(linkinc)"!=""
1842.IF "$(GUI)"=="WNT" || "$(GUI)" == "OS2"
1843.IF "$(SHL4LIBS)"!=""
1844$(MISC)/$(SHL4TARGET)_linkinc.ls .PHONY:
1845	@@-$(RM) $@
1846	$(COMMAND_ECHO)$(SED) -f $(SOLARENV)/bin/chrel.sed $(foreach,i,$(SHL4LIBS) $(i:s/.lib/.lin/)) >> $@
1847.ENDIF          # "$(SHL4LIBS)"!=""
1848.ENDIF
1849
1850LINKINCTARGETS+=$(MISC)/$(SHL4TARGETN:b)_linkinc.ls
1851$(SHL4TARGETN) : $(LINKINCTARGETS)
1852
1853.ELSE
1854.IF "$(SHL4USE_EXPORTS)"=="name"
1855.IF "$(GUI)"=="WNT" || "$(GUI)" == "OS2"
1856.IF "$(COM)"!="GCC"
1857.IF "$(SHL4LIBS)"!=""
1858SHL4LINKLIST=$(MISC)/$(SHL4TARGET)_link.lst
1859SHL4LINKLISTPARAM=@$(SHL4LINKLIST)
1860$(SHL4LINKLIST) : $(SHL4LIBS)
1861    @@-$(RM) $@
1862	$(COMMAND_ECHO)$(SED) -f $(SOLARENV)/bin/chrel.sed $(foreach,i,$(SHL4LIBS) $(i:s/.lib/.lin/)) >> $@
1863.ENDIF          # "$(SHL4LIBS)"!=""
1864.ENDIF          # "$(COM)"!="GCC"
1865.ENDIF
1866.ENDIF			# "$(SHL4USE_EXPORTS)"=="name"
1867
1868$(MISC)/%linkinc.ls:
1869	@echo . > $@
1870.ENDIF          # "$(linkinc)"!=""
1871
1872.IF "$(GUI)" == "OS2"
1873#21/02/2006 YD dll names must be 8.3, invoke fix script
1874#check osl/os2/module.c/osl_loadModule()
1875SHL4TARGET8=$(shell @fix_shl.cmd $(SHL4TARGET))
1876.ENDIF
1877
1878
1879$(SHL4TARGETN) : \
1880					$(SHL4OBJS)\
1881					$(SHL4LIBS)\
1882					$(USE_4IMPLIB_DEPS)\
1883					$(USE_SHL4DEF)\
1884					$(USE_SHL4VERSIONMAP)\
1885					$(SHL4RES)\
1886					$(SHL4DEPN) \
1887					$(SHL4LINKLIST)
1888	@echo "Making:   " $(@:f)
1889.IF "$(GUI)" == "WNT"
1890.IF "$(SHL4DEFAULTRES)"!=""
1891	@@-$(RM) $(MISC)/$(SHL4DEFAULTRES:b).rc
1892.IF "$(SHL4ICON)" != ""
1893	@echo 1 ICON $(SHL4ICON) >> $(MISC)/$(SHL4DEFAULTRES:b).rc
1894.ENDIF
1895.IF "$(use_shl_versions)" != ""
1896.IF "$(SHL4ADD_VERINFO)"!=""
1897	@echo $(EMQ)#include $(EMQ)"$(SHL4ADD_VERINFO)$(EMQ)" >> $(MISC)/$(SHL4DEFAULTRES:b).rc
1898.ELSE			# "$(SHL4ADD_VERINFO)"!=""
1899	@echo $(EMQ)#define ADDITIONAL_VERINFO1 >> $(MISC)/$(SHL4DEFAULTRES:b).rc
1900	@echo $(EMQ)#define ADDITIONAL_VERINFO2 >> $(MISC)/$(SHL4DEFAULTRES:b).rc
1901	@echo $(EMQ)#define ADDITIONAL_VERINFO3 >> $(MISC)/$(SHL4DEFAULTRES:b).rc
1902.ENDIF			# "$(SHL4ADD_VERINFO)"!=""
1903	@echo $(EMQ)#define VERVARIANT	$(BUILD) >> $(MISC)/$(SHL4DEFAULTRES:b).rc
1904	@echo $(EMQ)#define ORG_NAME	$(SHL4TARGET)$(DLLPOST) >> $(MISC)/$(SHL4DEFAULTRES:b).rc
1905	@echo $(EMQ)#define INTERNAL_NAME $(SHL4TARGET:b) >> $(MISC)/$(SHL4DEFAULTRES:b).rc
1906	@echo $(EMQ)#include $(EMQ)"shlinfo.rc$(EMQ)" >> $(MISC)/$(SHL4DEFAULTRES:b).rc
1907.ENDIF			# "$(use_shl_versions)" != ""
1908	$(COMMAND_ECHO)$(RC) -DWIN32 $(INCLUDE) $(RCLINKFLAGS) $(MISC)/$(SHL4DEFAULTRES:b).rc
1909.ENDIF			# "$(SHL4DEFAULTRES)"!=""
1910.IF "$(SHL4ALLRES)"!=""
1911	$(COMMAND_ECHO)$(TYPE) $(SHL4ALLRES) > $(SHL4LINKRES)
1912.IF "$(COM)"=="GCC"
1913	windres $(SHL4LINKRES) $(SHL4LINKRESO)
1914.ENDIF			# "$(COM)"=="GCC"
1915.ENDIF			# "$(SHL4ALLRES)"!=""
1916.IF "$(COM)"=="GCC"	# always have to call dlltool explicitly as ld cannot handle # comment in .def
1917	@echo dlltool --dllname $(SHL4TARGET)$(DLLPOST) \
1918		--kill-at \\ > $(MISC)/$(TARGET).$(@:b)_4.cmd
1919	@noop $(assign ALL4OBJLIST:=$(STDOBJ) $(SHL4OBJS) $(SHL4LINKRESO) $(shell $(TYPE) /dev/null $(SHL4LIBS) | $(SED) s?$(ROUT)?$(PRJ)/$(ROUT)?g))
1920.IF "$(DEFLIB4NAME)"!=""	# do not have to include objs
1921	@noop $(assign DEF4OBJLIST:=$(shell $(TYPE) $(foreach,i,$(DEFLIB4NAME) $(SLB)/$(i).lib) | sed s?$(ROUT)?$(PRJ)/$(ROUT)?g))
1922	@noop $(foreach,i,$(DEF4OBJLIST) $(assign ALL4OBJLIST:=$(ALL4OBJLIST:s?$i??)))
1923.ENDIF			# "$(DEFLIB4NAME)"!=""
1924	@echo	--output-exp $(MISC)/$(@:b)_exp.o \\ >> $(MISC)/$(TARGET).$(@:b)_4.cmd
1925.IF "$(SHL4DEF)"!=""
1926	@echo	--input-def $(SHL4DEF) \\ >> $(MISC)/$(TARGET).$(@:b)_4.cmd
1927.ELSE
1928	@echo	$(SHL4VERSIONOBJ) $(SHL4DESCRIPTIONOBJ) \\ >> $(MISC)/$(TARGET).$(@:b)_4.cmd
1929.ENDIF
1930	@echo	$(ALL4OBJLIST) >> $(MISC)/$(TARGET).$(@:b)_4.cmd
1931	@echo $(LINK) $(LINKFLAGS) $(LINKFLAGSSHL) $(MINGWSSTDOBJ) -o $@ \
1932		$(STDOBJ) $(SHL4VERSIONOBJ) $(SHL4DESCRIPTIONOBJ) $(SHL4OBJS) $(SHL4LINKRESO) \
1933		`$(TYPE) /dev/null $(SHL4LIBS) | $(SED) s\#$(ROUT)\#$(PRJ)/$(ROUT)\#g` \
1934		-Wl,--exclude-libs,ALL,--start-group $(SHL4STDLIBS) -Wl,--end-group \
1935		$(SHL4STDSHL) $(STDSHL4) $(MISC)/$(@:b)_exp.o $(MINGWSSTDENDOBJ) \
1936		-Wl,-Map,$(MISC)/$(@:b).map >> $(MISC)/$(TARGET).$(@:b)_4.cmd
1937  .IF "$(VERBOSE)" == "TRUE"
1938	@$(TYPE)  $(MISC)/$(TARGET).$(@:b)_4.cmd
1939  .ENDIF
1940	@+source $(MISC)/$(TARGET).$(@:b)_4.cmd
1941.ELSE
1942.IF "$(linkinc)"==""
1943.IF "$(SHL4USE_EXPORTS)"!="name"
1944.IF "$(USE_DEFFILE)"!=""
1945	$(COMMAND_ECHO)$(SHL4LINKER) @$(mktmp \
1946		$(SHL4LINKFLAGS) \
1947		$(LINKFLAGSSHL) \
1948		$(SHL4STACK) $(SHL4BASEX)	\
1949		-out:$@ \
1950		-map:$(MISC)/$(@:b).map \
1951		-def:$(SHL4DEF) \
1952		$(USE_4IMPLIB) \
1953		$(STDOBJ) \
1954		$(SHL4VERSIONOBJ) $(SHL4OBJS) \
1955		$(SHL4LIBS) \
1956		$(SHL4STDLIBS) \
1957		$(SHL4STDSHL) $(STDSHL4) \
1958		$(SHL4LINKRES) \
1959	)
1960# double check if target was really written... still making sense?
1961    @@$(LS) $@
1962	@echo linking $@.manifest ...
1963.IF "$(VISTA_MANIFEST)"!=""
1964	$(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(MT) $(MTFLAGS) -manifest $@.manifest -manifest $(TRUSTED_MANIFEST_LOCATION)/trustedinfo.manifest -out:$@.tmanifest$(EMQ) $(FI)
1965	$(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(MT) $(MTFLAGS) -manifest $@.tmanifest -outputresource:$@$(EMQ);2 $(FI)
1966.ELSE
1967	$(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(MT) $(MTFLAGS) -manifest $@.manifest -outputresource:$@$(EMQ);2 $(FI)
1968.ENDIF # "$(VISTA_MANIFEST)"!=""
1969	$(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(RM:s/+//) $@.manifest $(FI)
1970	$(COMMAND_ECHO)$(IFEXIST) $@.tmanifest $(THEN) $(RM:s/+//) $@.tmanifest $(FI)
1971.ELSE			# "$(USE_DEFFILE)"!=""
1972	$(COMMAND_ECHO)$(SHL4LINKER) @$(mktmp	$(SHL4LINKFLAGS)			\
1973		$(LINKFLAGSSHL) $(SHL4BASEX)		\
1974		$(SHL4STACK) -out:$(SHL4TARGETN)	\
1975		-map:$(MISC)/$(@:B).map				\
1976		$(LB)/$(SHL4IMPLIB).exp				\
1977		$(STDOBJ)							\
1978		$(SHL4OBJS) $(SHL4VERSIONOBJ) \
1979		$(SHL4LIBS)                         \
1980		$(SHL4STDLIBS)                      \
1981		$(SHL4STDSHL) $(STDSHL4)                           \
1982		$(SHL4LINKRES) \
1983	)
1984# double check if target was really written... still making sense?
1985    @@$(LS) $@
1986	@echo linking $@.manifest ...
1987.IF "$(VISTA_MANIFEST)"!=""
1988	$(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(MT) $(MTFLAGS) -manifest $@.manifest -manifest $(TRUSTED_MANIFEST_LOCATION)/trustedinfo.manifest -out:$@.tmanifest$(EMQ) $(FI)
1989	$(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(MT) $(MTFLAGS) -manifest $@.tmanifest -outputresource:$@$(EMQ);2 $(FI)
1990.ELSE
1991	$(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(MT) $(MTFLAGS) -manifest $@.manifest -outputresource:$@$(EMQ);2 $(FI)
1992.ENDIF # "$(VISTA_MANIFEST)"!=""
1993	$(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(RM:s/+//) $@.manifest $(FI)
1994	$(COMMAND_ECHO)$(IFEXIST) $@.tmanifest $(THEN) $(RM:s/+//) $@.tmanifest $(FI)
1995.ENDIF			# "$(USE_DEFFILE)"!=""
1996.ELSE			# "$(SHL4USE_EXPORTS)"!="name"
1997	$(COMMAND_ECHO)$(SHL4LINKER) @$(mktmp	$(SHL4LINKFLAGS)			\
1998		$(LINKFLAGSSHL) $(SHL4BASEX)		\
1999		$(SHL4STACK) -out:$(SHL4TARGETN)	\
2000		-map:$(MISC)/$(@:B).map				\
2001		$(USE_4IMPLIB) \
2002		$(STDOBJ)							\
2003		$(SHL4OBJS) $(SHL4VERSIONOBJ))   \
2004		$(SHL4LINKLISTPARAM) \
2005		@$(mktmp $(SHL4STDLIBS)                      \
2006		$(SHL4STDSHL) $(STDSHL4)                           \
2007		$(SHL4LINKRES) \
2008	)
2009	@echo linking $@.manifest ...
2010.IF "$(VISTA_MANIFEST)"!=""
2011	$(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(MT) $(MTFLAGS) -manifest $@.manifest -manifest $(TRUSTED_MANIFEST_LOCATION)/trustedinfo.manifest -out:$@.tmanifest$(EMQ) $(FI)
2012	$(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(MT) $(MTFLAGS) -manifest $@.tmanifest -outputresource:$@$(EMQ);2 $(FI)
2013.ELSE
2014	$(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(MT) $(MTFLAGS) -manifest $@.manifest -outputresource:$@$(EMQ);2 $(FI)
2015.ENDIF # "$(VISTA_MANIFEST)"!=""
2016	$(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(RM:s/+//) $@.manifest $(FI)
2017	$(COMMAND_ECHO)$(IFEXIST) $@.tmanifest $(THEN) $(RM:s/+//) $@.tmanifest $(FI)
2018.ENDIF			# "$(SHL4USE_EXPORTS)"!="name"
2019.ELSE			# "$(linkinc)"==""
2020		$(COMMAND_ECHO)-$(RM) del $(MISC)/$(SHL4TARGET).lnk
2021		$(COMMAND_ECHO)-$(RM) $(MISC)/$(SHL4TARGET).lst
2022		$(COMMAND_ECHO)$(TYPE) $(mktmp \
2023		$(SHL4LINKFLAGS) \
2024		$(LINKFLAGSSHL) $(SHL4BASEX) \
2025		$(SHL4STACK) $(MAPFILE) \
2026		-out:$@ \
2027		$(LB)/$(SHL4IMPLIB).exp \
2028		$(STDOBJ) \
2029		$(SHL4OBJS) \
2030		$(SHL4STDLIBS) \
2031		$(SHL4STDSHL) $(STDSHL4) \
2032		$(SHL4LINKRES) \
2033		) >> $(MISC)/$(SHL4TARGET).lnk
2034		$(COMMAND_ECHO)$(TYPE) $(MISC)/$(SHL4TARGETN:b)_linkinc.ls  >> $(MISC)/$(SHL4TARGET).lnk
2035		$(COMMAND_ECHO)$(SHL4LINKER) @$(MISC)/$(SHL4TARGET).lnk
2036		@echo linking $@.manifest ...
2037.IF "$(VISTA_MANIFEST)"!=""
2038		$(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(MT) $(MTFLAGS) -manifest $@.manifest -manifest $(TRUSTED_MANIFEST_LOCATION)/trustedinfo.manifest -out:$@.tmanifest$(EMQ) $(FI)
2039		$(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(MT) $(MTFLAGS) -manifest $@.tmanifest -outputresource:$@$(EMQ);2 $(FI)
2040.ELSE
2041		$(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(MT) $(MTFLAGS) -manifest $@.manifest -outputresource:$@$(EMQ);2 $(FI)
2042.ENDIF # "$(VISTA_MANIFEST)"!=""
2043		$(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(RM:s/+//) $@.manifest $(FI)
2044		$(COMMAND_ECHO)$(IFEXIST) $@.tmanifest $(THEN) $(RM:s/+//) $@.tmanifest $(FI)
2045.ENDIF			# "$(linkinc)"==""
2046.ENDIF			# "$(COM)"=="GCC"
2047.ENDIF			# "$(GUI)" == "WNT"
2048.IF "$(GUI)"=="UNX"
2049.IF "$(OS)"=="MACOSX"
2050	@-$(RM) $(MISC)/$(@:b).list
2051	@-$(RM) $(MISC)/$(TARGET).$(@:b)_4.cmd
2052	@echo $(STDSLO) $(SHL4OBJS:s/.obj/.o/) \
2053	$(SHL4VERSIONOBJ) \
2054	`cat /dev/null $(SHL4LIBS) | sed s\#$(ROUT)\#$(PRJ)/$(ROUT)\#g` | tr -s " " "\n" > $(MISC)/$(@:b).list
2055	@echo -n $(SHL4LINKER) $(SHL4LINKFLAGS) $(SHL4VERSIONMAPPARA) $(LINKFLAGSSHL) -L$(PRJ)/$(ROUT)/lib $(SOLARLIB) -o $@ \
2056	$(SHL4STDLIBS) $(SHL4ARCHIVES) $(SHL4STDSHL) $(STDSHL4) -filelist $(MISC)/$(@:b).list $(LINKOUTPUT_FILTER) > $(MISC)/$(TARGET).$(@:b)_4.cmd
2057    @$(PERL) $(SOLARENV)/bin/macosx-dylib-link-list.pl \
2058        `cat $(MISC)/$(TARGET).$(@:b)_4.cmd` \
2059        >> $(MISC)/$(TARGET).$(@:b)_4.cmd
2060  .IF "$(VERBOSE)" == "TRUE"
2061	@cat $(MISC)/$(TARGET).$(@:b)_4.cmd
2062  .ENDIF
2063	@+source $(MISC)/$(TARGET).$(@:b)_4.cmd
2064    @$(PERL) $(SOLARENV)/bin/macosx-change-install-names.pl \
2065        shl $(SHL4RPATH) $@
2066.IF "$(SHL4CREATEJNILIB)"!=""
2067	@echo "Making:   " $(@:f).jnilib
2068	@macosx-create-bundle $@
2069.ENDIF          # "$(SHL4CREATEJNILIB)"!=""
2070.IF "$(UPDATER)"=="YES"
2071.IF "$(SHL4NOCHECK)"==""
2072	$(SOLARENV)/bin/checkdll.sh -L$(LB) -L$(SOLARLIBDIR) $(EXTRALIBPATHS4) $(SHL4TARGETN)
2073.ENDIF				# "$(SHL4NOCHECK)"!=""
2074.ENDIF
2075.ELSE			# "$(OS)"=="MACOSX"
2076	@-$(RM) $(MISC)/$(TARGET).$(@:b)_4.cmd
2077	@echo $(SHL4LINKER) $(SHL4LINKFLAGS) $(SHL4SONAME) $(LINKFLAGSSHL) $(SHL4VERSIONMAPPARA) -L$(PRJ)/$(ROUT)/lib $(SOLARLIB) $(STDSLO) $(SHL4OBJS:s/.obj/.o/) \
2078	$(SHL4VERSIONOBJ) -o $@ \
2079	`cat /dev/null $(SHL4LIBS) | tr -s " " "\n" | $(SED) s\#$(ROUT)\#$(PRJ)/$(ROUT)\#g` \
2080	$(SHL4STDLIBS) $(SHL4ARCHIVES) $(SHL4STDSHL) $(STDSHL4) $(LINKOUTPUT_FILTER) > $(MISC)/$(TARGET).$(@:b)_4.cmd
2081  .IF "$(VERBOSE)" == "TRUE"
2082	@cat $(MISC)/$(TARGET).$(@:b)_4.cmd
2083  .ENDIF
2084	@+source $(MISC)/$(TARGET).$(@:b)_4.cmd
2085.IF "$(UPDATER)"=="YES"
2086.IF "$(SHL4NOCHECK)"==""
2087	$(COMMAND_ECHO)-$(RM) $(SHL4TARGETN:d)check_$(SHL4TARGETN:f)
2088	$(COMMAND_ECHO)$(RENAME) $(SHL4TARGETN) $(SHL4TARGETN:d)check_$(SHL4TARGETN:f)
2089.IF "$(VERBOSE)"=="TRUE"
2090	$(COMMAND_ECHO)$(SOLARENV)/bin/checkdll.sh -L$(LB) -L$(SOLARLIBDIR) $(EXTRALIBPATHS4) $(SHL4TARGETN:d)check_$(SHL4TARGETN:f)
2091.ELSE
2092	$(COMMAND_ECHO)$(SOLARENV)/bin/checkdll.sh -L$(LB) -L$(SOLARLIBDIR) $(EXTRALIBPATHS4) -- -s $(SHL4TARGETN:d)check_$(SHL4TARGETN:f)
2093.ENDIF
2094.ENDIF				# "$(SHL4NOCHECK)"!=""
2095.ENDIF			# "$(UPDATER)"=="YES"
2096.ENDIF			# "$(OS)"=="MACOSX"
2097.IF "$(UNIXVERSIONNAMES)"!=""
2098	$(COMMAND_ECHO)$(RM) $(LB)/$(SHL4TARGETN:b)
2099	$(COMMAND_ECHO)cd $(LB) && ln -s $(SHL4TARGETN:f) $(SHL4TARGETN:b)
2100.ENDIF			# "$(UNIXVERSIONNAMES)"!=""
2101.IF "$(VERBOSE)" == "TRUE"
2102	@ls -l $@
2103.ENDIF
2104.ENDIF			# "$(GUI)" == "UNX"
2105
2106.IF "$(GUI)" == "OS2"
2107
2108.IF "$(SHL4DEFAULTRES)"!=""
2109	@+-$(RM) $(MISC)/$(SHL4DEFAULTRES:b).rc > $(NULLDEV)
2110.IF "$(SHL4ICON)" != ""
2111	@-+echo 1 ICON $(SHL4ICON) >> $(MISC)/$(SHL4DEFAULTRES:b).rc
2112.ENDIF
2113.IF "$(use_shl_versions)" != ""
2114.IF "$(SHL4ADD_VERINFO)"!=""
2115	@-+echo $(EMQ)#include $(EMQ)"$(SHL4ADD_VERINFO)$(EMQ)" >> $(MISC)/$(SHL4DEFAULTRES:b).rc
2116.ENDIF			# "$(SHL4ADD_VERINFO)"!=""
2117	@-+echo MENU 1 BEGIN END >> $(MISC)/$(SHL4DEFAULTRES:b).rc
2118#	@-+echo $(EMQ)RCDATA 1 { "Build string here" }$(EMQ) >> $(MISC)/$(SHL4DEFAULTRES:b).rc
2119.ENDIF			# "$(use_shl_versions)" != ""
2120# YD 04/07/06 seems null, confuses rc cli: -i $(SOLARTESDIR)
2121	$(COMMAND_ECHO)$(RC) -r -DOS2 $(INCLUDE) $(RCLINKFLAGS) $(MISC)/$(SHL4DEFAULTRES:b).rc
2122.ENDIF			# "$(SHL4DEFAULTRES)"!=""
2123
2124.IF "$(SHL4ALLRES)"!=""
2125	$(COMMAND_ECHO)+$(TYPE) $(SHL4ALLRES) > $(SHL4LINKRES)
2126.ENDIF			# "$(SHL4ALLRES)"!=""
2127
2128.IF "$(USE_DEFFILE)"!=""
2129
2130	$(COMMAND_ECHO)$(SHL4LINKER) $(SHL4LINKFLAGS) $(LINKFLAGSSHL) -o $@ \
2131		$(SHL4DEF) \
2132		$(STDOBJ) \
2133		-L$(LB) \
2134		-L$(SOLARVERSION)/$(INPATH)/lib \
2135		$(SHL4OBJS) $(SHL4VERSIONOBJ) \
2136		$(SHL4LIBS) \
2137		$(SHL4LINKRES) \
2138		$(SHL4STDLIBS) \
2139		$(SHL4STDSHL) $(STDSHL4)
2140
2141.ELSE			# "$(USE_DEFFILE)"!=""
2142
2143	$(COMMAND_ECHO)$(SHL4LINKER) $(SHL4LINKFLAGS)			\
2144		$(LINKFLAGSSHL) $(SHL4BASEX)		\
2145		$(SHL4STACK) -o $(SHL4TARGETN)	\
2146		$(SHL4DEF) \
2147		$(STDOBJ)							\
2148		-L$(LB) \
2149		-L$(SOLARVERSION)/$(INPATH)/lib \
2150		$(SHL4OBJS) $(SHL4VERSIONOBJ) \
2151		$(SHL4LIBS) \
2152		$(SHL4LINKRES) \
2153		$(SHL4STDLIBS) \
2154		$(SHL4STDSHL) $(STDSHL4)
2155
2156.ENDIF			# "$(USE_DEFFILE)"!=""
2157
2158	$(COMMAND_ECHO)+$(IMPLIB) -p256 $(IMPLIBFLAGS) $(SHL4IMPLIBN) $@
2159	$(COMMAND_ECHO)+$(IMPLIB) -p256 $(IMPLIBFLAGS) $(LB)/$(SHL4TARGET).lib $@
2160
2161.IF "$(SHL4TARGET8)" != "$(SHL4TARGET)"
2162	$(COMMAND_ECHO)+$(COPY) $@ $(@:d)$(SHL4TARGET8).dll
2163.ENDIF
2164
2165.ENDIF			# "$(GUI)" == "OS2"
2166
2167.ENDIF			# "$(SHL4TARGETN)"!=""
2168
2169# unroll begin
2170
2171.IF "$(SHL5TARGETN)"!=""
2172
2173.IF "$(OS)"=="AIX"
2174SHL5STDLIBS=
2175.ENDIF
2176
2177.IF "$(SHLLINKARCONLY)" != ""
2178SHL5STDLIBS=
2179STDSHL=
2180.ELSE
2181SHL5ARCHIVES=
2182.ENDIF
2183
2184# decide how to link
2185.IF "$(SHL5CODETYPE)"=="C"
2186SHL5LINKER=$(LINKC)
2187SHL5STDSHL=$(subst,CPPRUNTIME, $(STDSHL))
2188SHL5LINKFLAGS+=$(LINKCFLAGS)
2189.ELSE			# "$(SHL5CODETYPE)"=="C"
2190SHL5LINKER=$(LINK)
2191SHL5STDSHL=$(subst,CPPRUNTIME,$(STDLIBCPP) $(STDSHL))
2192SHL5LINKFLAGS+=$(LINKFLAGS)
2193.ENDIF			# "$(SHL5CODETYPE)"=="C"
2194
2195SHL5RPATH*=OOO
2196LINKFLAGSRUNPATH_$(SHL5RPATH)*=/ERROR:/Bad_SHL5RPATH_value
2197SHL5LINKFLAGS+=$(LINKFLAGSRUNPATH_$(SHL5RPATH))
2198
2199.IF "$(SHL5USE_EXPORTS)"==""
2200SHL5DEF*=$(MISC)/$(SHL5TARGET).def
2201.ENDIF			# "$(SHL5USE_EXPORTS)"==""
2202
2203EXTRALIBPATHS5=$(EXTRALIBPATHS)
2204.IF "$(UPDATER)"=="YES"
2205.IF "$(SHL5NOCHECK)"==""
2206.IF "$(SOLAR_STLLIBPATH)"!=""
2207EXTRALIBPATHS5+=-L$(SOLAR_STLLIBPATH)
2208.ENDIF
2209.ENDIF				# "$(SHL5NOCHECK)"!=""
2210.ENDIF
2211#+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
2212#+++++++++++    version object      ++++++++++++++++++++++++++++++++++++++++
2213#+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
2214
2215.IF "$(L10N_framework)"==""
2216.IF "$(VERSIONOBJ)"!=""
2217SHL5VERSIONOBJ:=$(VERSIONOBJ:d){$(subst,$(DLLPOSTFIX),_dflt $(SHL5TARGET))}$(VERSIONOBJ:f)
2218USE_VERSIONH:=$(INCCOM)/$(SHL5VERSIONOBJ:b).h
2219.IF "$(GUI)" == "UNX"
2220SHL5VERSIONOBJDEP:=$(VERSIONOBJ:d){$(subst,$(DLLPOSTFIX),_dflt $(SHL5TARGET))}$(VERSIONOBJ:f:s/.o/.obj/)
2221.ELSE           # "$(GUI)" == "UNX"
2222SHL5VERSIONOBJDEP:=$(VERSIONOBJ:d){$(subst,$(DLLPOSTFIX),_dflt $(SHL5TARGET))}$(VERSIONOBJ:f)
2223.ENDIF          # "$(GUI)" == "UNX"
2224$(MISC)/$(SHL5VERSIONOBJ:b).c : $(SOLARENV)/src/version.c $(INCCOM)/$(SHL5VERSIONOBJ:b).h
2225#    $(COPY) $(SOLARENV)/src/version.c $@
2226	$(COMMAND_ECHO)$(TYPE) $(SOLARENV)/src/version.c | $(SED) s/_version.h/$(SHL5VERSIONOBJ:b).h/ > $@
2227
2228.INIT : $(SHL5VERSIONOBJDEP)
2229.ENDIF			# "$(VERSIONOBJ)"!=""
2230.ENDIF
2231
2232.IF "$(GUI)" != "UNX"
2233.IF "$(GUI)" == "WNT" || "$(GUI)" == "OS2"
2234.IF "$(SHL5IMPLIB)" == ""
2235SHL5IMPLIB=i$(TARGET)_t5
2236.ENDIF			# "$(SHL5IMPLIB)" == ""
2237.IF "$(COM)" != "GCC"
2238USE_5IMPLIB=-implib:$(LB)/$(SHL5IMPLIB).lib
2239.ENDIF			# "$(COM)" != "GCC"
2240SHL5IMPLIBN=$(LB)/$(SHL5IMPLIB).lib
2241ALLTAR : $(SHL5IMPLIBN)
2242
2243.IF "$(USE_DEFFILE)"==""
2244USE_5IMPLIB_DEPS=$(LB)/$(SHL5IMPLIB).lib
2245.ENDIF			# "$(USE_DEFFILE)"==""
2246.ENDIF			# "$(GUI)" == "WNT" || "$(GUI)" == "OS2"
2247USE_SHL5DEF=$(SHL5DEF)
2248.ELSE			# "$(GUI)" != "UNX"
2249USE_SHL5DEF=
2250SHL5DEPN+:=$(SHL5DEPNU)
2251
2252.IF "$(SHL5VERSIONMAP)"==""
2253# to activate vmaps remove "#"
2254USE_SHL5VERSIONMAP=$(MISC)/$(SHL5TARGET).vmap
2255.ENDIF			# "$(SHL5VERSIONMAP)"==""
2256
2257.IF "$(USE_SHL5VERSIONMAP)"!=""
2258
2259.IF "$(SHL5FILTERFILE)"!=""
2260.IF "$(SHL5VERSIONMAP)"!=""
2261#eine von beiden ist zuviel
2262USE_SHL5VERSIONMAP=$(MISC)/$(SHL5TARGET).vmap
2263$(USE_SHL5VERSIONMAP) .PHONY:
2264	@echo -----------------------------
2265	@echo you should only use versionmap OR exportfile
2266	@echo -----------------------------
2267#	force_dmake_to_error
2268
2269.ENDIF			# "$(SHL5VERSIONMAP)"!=""
2270
2271SHL5VERSIONMAPPARA=$(LINKVERSIONMAPFLAG) $(USE_SHL5VERSIONMAP)
2272
2273$(USE_SHL5VERSIONMAP): \
2274					$(SHL5OBJS)\
2275					$(SHL5LIBS)\
2276					$(SHL5FILTERFILE)
2277	@$(RM) $@.dump
2278.IF "$(SHL5OBJS)"!=""
2279# dump remaining objects on the fly
2280.IF "$(OS)"=="MACOSX"
2281	@-nm $(SHL5OBJS:s/.obj/.o/) > $@.dump
2282.ELSE
2283	@nm $(SHL5OBJS:s/.obj/.o/) > $@.dump
2284.ENDIF
2285.ENDIF			# "$(SHL5OBJS)!"=""
2286	@$(TYPE) /dev/null $(SHL5LIBS:s/.lib/.dump/) >> $@.dump
2287	$(COMMAND_ECHO) $(PERL) $(SOLARENV)/bin/mapgen.pl -d $@.dump -s $(SHL5INTERFACE) -f $(SHL5FILTERFILE) -m $@
2288
2289.ELSE			# "$(SHL5FILTERFILE)"!=""
2290USE_SHL5VERSIONMAP=$(MISC)/$(SHL5TARGET).vmap
2291$(USE_SHL5VERSIONMAP) :
2292.IF "$(VERBOSE)" == "TRUE"
2293	@echo -----------------------------
2294	@echo SHL5FILTERFILE not set!
2295	@echo -----------------------------
2296	@$(TOUCH) $@
2297	@echo dummy file to keep the dependencies for later use.
2298.ELSE
2299	@$(TOUCH) $@
2300.ENDIF
2301#	force_dmake_to_error
2302.ENDIF			# "$(SHL5FILTERFILE)"!=""
2303.ELSE			# "$(USE_SHL5VERSIONMAP)"!=""
2304
2305#and now for the plain non-generic way...
2306.IF "$(SHL5VERSIONMAP)"!=""
2307USE_SHL5VERSIONMAP=$(MISC)/$(SHL5VERSIONMAP:b)_$(SHL5TARGET)$(SHL5VERSIONMAP:e)
2308SHL5VERSIONMAPPARA=$(LINKVERSIONMAPFLAG) $(USE_SHL5VERSIONMAP)
2309
2310.IF "$(OS)"=="MACOSX"
2311$(USE_SHL5VERSIONMAP): $(SHL5OBJS) $(SHL5LIBS)
2312.ENDIF
2313
2314# .ERRREMOVE is needed as a recipe line like "$(AWK) ... > $@" would create $@
2315# even if the $(AWK) part fails:
2316$(USE_SHL5VERSIONMAP) .ERRREMOVE: $(SHL5VERSIONMAP)
2317	@@-$(RM) -f $@
2318# The following files will only be generated and needed on Mac OS X as temporary files
2319# in order to generate exported symbols list out of Linux/Solaris map files
2320.IF "$(OS)"=="MACOSX"
2321	@-$(RM) -f $@.symregexp >& $(NULLDEV)
2322	@-$(RM) -f $@.expsymlist >& $(NULLDEV)
2323.ENDIF
2324# Its questionable if the following condition '.IF "$(COMID)"=="gcc3"' makes sense and what
2325# happens if somebody will change it in the future
2326.IF "$(COMID)"=="gcc3"
2327	$(COMMAND_ECHO) tr -d "\015" < $(SHL5VERSIONMAP) | $(AWK) -f $(SOLARENV)/bin/addsym.awk > $@
2328.ELIF "$(COMNAME)"=="sunpro5"
2329	$(COMMAND_ECHO) tr -d "\015" < $(SHL5VERSIONMAP) | $(GREP) -v $(IGNORE_SYMBOLS) > $@
2330.ELSE           # "$(COMID)"=="gcc3"
2331	$(COMMAND_ECHO) tr -d "\015" < $(SHL5VERSIONMAP) > $@
2332.ENDIF          # "$(COMID)"=="gcc3"
2333	@chmod a+w $@
2334# Mac OS X post-processing generate an exported symbols list from the generated map file
2335# for details on exported symbols list see man ld on Mac OS X
2336.IF "$(OS)"=="MACOSX"
2337	@-cat $@ | $(AWK) -f $(SOLARENV)/bin/unxmap-to-macosx-explist.awk | grep -v "\*\|?" > $@.exported-symbols
2338	@-cat $@ | $(AWK) -f $(SOLARENV)/bin/unxmap-to-macosx-explist.awk | grep "\*\|?" > $@.symbols-regexp
2339# Shared libraries will be build out of the *.obj files specified in SHL?OBJS and SHL?LIBS
2340# Extract RTTI symbols from all the objects that will be used to build a shared library
2341.IF "$(SHL5OBJS)"!=""
2342	-echo $(foreach,i,$(SHL5OBJS:s/.obj/.o/) $i) | xargs -n1 nm -gx | $(SOLARENV)/bin/addsym-macosx.sh $@.symbols-regexp $@.symbols-regexp.tmp >> $@.exported-symbols
2343.ENDIF
2344.IF "$(SHL5LIBS)"!=""
2345	$(COMMAND_ECHO)-$(TYPE) $(foreach,j,$(SHL5LIBS) $j) | $(SED) s\#$(ROUT)\#$(PRJ)/$(ROUT)\#g | xargs -n1 nm -gx | $(SOLARENV)/bin/addsym-macosx.sh $@.symbols-regexp $@.symbols-regexp.tmp >> $@.exported-symbols
2346.ENDIF
2347# overwrite the map file generate into the local output tree with the generated
2348# exported symbols list
2349	cp $@.exported-symbols $@
2350.ENDIF # .IF "$(OS)"=="MACOSX"
2351.ENDIF			# "$(SHL5VERSIONMAP)"!=""
2352.ENDIF			# "$(USE_SHL5VERSIONMAP)"!=""
2353.ENDIF			# "$(GUI)" != "UNX"
2354
2355.IF "$(UNIXVERSIONNAMES)"!=""
2356.IF "$(OS)"!="MACOSX"
2357.IF "$(GUI)"=="UNX"
2358SHL5SONAME=\"$(SONAME_SWITCH)$(SHL5TARGETN:f)\"
2359.ENDIF			# "$(GUI)"!="UNX"
2360.ENDIF			# "$(OS)"!="MACOSX"
2361.ENDIF			# "$(UNIXVERSIONNAMES)"!=""
2362
2363.IF "$(SHL5RES)"!=""
2364SHL5ALLRES+=$(SHL5RES)
2365SHL5LINKRES*=$(MISC)/$(SHL5TARGET).res
2366SHL5LINKRESO*=$(MISC)/$(SHL5TARGET)_res.o
2367.ENDIF			# "$(SHL5RES)"!=""
2368
2369.IF "$(SHL5DEFAULTRES)$(use_shl_versions)"!=""
2370SHL5DEFAULTRES*=$(MISC)/$(SHL5TARGET)_def.res
2371SHL5ALLRES+=$(SHL5DEFAULTRES)
2372SHL5LINKRES*=$(MISC)/$(SHL5TARGET).res
2373SHL5LINKRESO*=$(MISC)/$(SHL5TARGET)_res.o
2374.ENDIF			# "$(SHL5DEFAULTRES)$(use_shl_versions)"!=""
2375
2376#.IF "$(SHL5TARGETN)"!=""
2377
2378.IF "$(linkinc)"!=""
2379.IF "$(GUI)"=="WNT" || "$(GUI)" == "OS2"
2380.IF "$(SHL5LIBS)"!=""
2381$(MISC)/$(SHL5TARGET)_linkinc.ls .PHONY:
2382	@@-$(RM) $@
2383	$(COMMAND_ECHO)$(SED) -f $(SOLARENV)/bin/chrel.sed $(foreach,i,$(SHL5LIBS) $(i:s/.lib/.lin/)) >> $@
2384.ENDIF          # "$(SHL5LIBS)"!=""
2385.ENDIF
2386
2387LINKINCTARGETS+=$(MISC)/$(SHL5TARGETN:b)_linkinc.ls
2388$(SHL5TARGETN) : $(LINKINCTARGETS)
2389
2390.ELSE
2391.IF "$(SHL5USE_EXPORTS)"=="name"
2392.IF "$(GUI)"=="WNT" || "$(GUI)" == "OS2"
2393.IF "$(COM)"!="GCC"
2394.IF "$(SHL5LIBS)"!=""
2395SHL5LINKLIST=$(MISC)/$(SHL5TARGET)_link.lst
2396SHL5LINKLISTPARAM=@$(SHL5LINKLIST)
2397$(SHL5LINKLIST) : $(SHL5LIBS)
2398    @@-$(RM) $@
2399	$(COMMAND_ECHO)$(SED) -f $(SOLARENV)/bin/chrel.sed $(foreach,i,$(SHL5LIBS) $(i:s/.lib/.lin/)) >> $@
2400.ENDIF          # "$(SHL5LIBS)"!=""
2401.ENDIF          # "$(COM)"!="GCC"
2402.ENDIF
2403.ENDIF			# "$(SHL5USE_EXPORTS)"=="name"
2404
2405$(MISC)/%linkinc.ls:
2406	@echo . > $@
2407.ENDIF          # "$(linkinc)"!=""
2408
2409.IF "$(GUI)" == "OS2"
2410#21/02/2006 YD dll names must be 8.3, invoke fix script
2411#check osl/os2/module.c/osl_loadModule()
2412SHL5TARGET8=$(shell @fix_shl.cmd $(SHL5TARGET))
2413.ENDIF
2414
2415
2416$(SHL5TARGETN) : \
2417					$(SHL5OBJS)\
2418					$(SHL5LIBS)\
2419					$(USE_5IMPLIB_DEPS)\
2420					$(USE_SHL5DEF)\
2421					$(USE_SHL5VERSIONMAP)\
2422					$(SHL5RES)\
2423					$(SHL5DEPN) \
2424					$(SHL5LINKLIST)
2425	@echo "Making:   " $(@:f)
2426.IF "$(GUI)" == "WNT"
2427.IF "$(SHL5DEFAULTRES)"!=""
2428	@@-$(RM) $(MISC)/$(SHL5DEFAULTRES:b).rc
2429.IF "$(SHL5ICON)" != ""
2430	@echo 1 ICON $(SHL5ICON) >> $(MISC)/$(SHL5DEFAULTRES:b).rc
2431.ENDIF
2432.IF "$(use_shl_versions)" != ""
2433.IF "$(SHL5ADD_VERINFO)"!=""
2434	@echo $(EMQ)#include $(EMQ)"$(SHL5ADD_VERINFO)$(EMQ)" >> $(MISC)/$(SHL5DEFAULTRES:b).rc
2435.ELSE			# "$(SHL5ADD_VERINFO)"!=""
2436	@echo $(EMQ)#define ADDITIONAL_VERINFO1 >> $(MISC)/$(SHL5DEFAULTRES:b).rc
2437	@echo $(EMQ)#define ADDITIONAL_VERINFO2 >> $(MISC)/$(SHL5DEFAULTRES:b).rc
2438	@echo $(EMQ)#define ADDITIONAL_VERINFO3 >> $(MISC)/$(SHL5DEFAULTRES:b).rc
2439.ENDIF			# "$(SHL5ADD_VERINFO)"!=""
2440	@echo $(EMQ)#define VERVARIANT	$(BUILD) >> $(MISC)/$(SHL5DEFAULTRES:b).rc
2441	@echo $(EMQ)#define ORG_NAME	$(SHL5TARGET)$(DLLPOST) >> $(MISC)/$(SHL5DEFAULTRES:b).rc
2442	@echo $(EMQ)#define INTERNAL_NAME $(SHL5TARGET:b) >> $(MISC)/$(SHL5DEFAULTRES:b).rc
2443	@echo $(EMQ)#include $(EMQ)"shlinfo.rc$(EMQ)" >> $(MISC)/$(SHL5DEFAULTRES:b).rc
2444.ENDIF			# "$(use_shl_versions)" != ""
2445	$(COMMAND_ECHO)$(RC) -DWIN32 $(INCLUDE) $(RCLINKFLAGS) $(MISC)/$(SHL5DEFAULTRES:b).rc
2446.ENDIF			# "$(SHL5DEFAULTRES)"!=""
2447.IF "$(SHL5ALLRES)"!=""
2448	$(COMMAND_ECHO)$(TYPE) $(SHL5ALLRES) > $(SHL5LINKRES)
2449.IF "$(COM)"=="GCC"
2450	windres $(SHL5LINKRES) $(SHL5LINKRESO)
2451.ENDIF			# "$(COM)"=="GCC"
2452.ENDIF			# "$(SHL5ALLRES)"!=""
2453.IF "$(COM)"=="GCC"	# always have to call dlltool explicitly as ld cannot handle # comment in .def
2454	@echo dlltool --dllname $(SHL5TARGET)$(DLLPOST) \
2455		--kill-at \\ > $(MISC)/$(TARGET).$(@:b)_5.cmd
2456	@noop $(assign ALL5OBJLIST:=$(STDOBJ) $(SHL5OBJS) $(SHL5LINKRESO) $(shell $(TYPE) /dev/null $(SHL5LIBS) | $(SED) s?$(ROUT)?$(PRJ)/$(ROUT)?g))
2457.IF "$(DEFLIB5NAME)"!=""	# do not have to include objs
2458	@noop $(assign DEF5OBJLIST:=$(shell $(TYPE) $(foreach,i,$(DEFLIB5NAME) $(SLB)/$(i).lib) | sed s?$(ROUT)?$(PRJ)/$(ROUT)?g))
2459	@noop $(foreach,i,$(DEF5OBJLIST) $(assign ALL5OBJLIST:=$(ALL5OBJLIST:s?$i??)))
2460.ENDIF			# "$(DEFLIB5NAME)"!=""
2461	@echo	--output-exp $(MISC)/$(@:b)_exp.o \\ >> $(MISC)/$(TARGET).$(@:b)_5.cmd
2462.IF "$(SHL5DEF)"!=""
2463	@echo	--input-def $(SHL5DEF) \\ >> $(MISC)/$(TARGET).$(@:b)_5.cmd
2464.ELSE
2465	@echo	$(SHL5VERSIONOBJ) $(SHL5DESCRIPTIONOBJ) \\ >> $(MISC)/$(TARGET).$(@:b)_5.cmd
2466.ENDIF
2467	@echo	$(ALL5OBJLIST) >> $(MISC)/$(TARGET).$(@:b)_5.cmd
2468	@echo $(LINK) $(LINKFLAGS) $(LINKFLAGSSHL) $(MINGWSSTDOBJ) -o $@ \
2469		$(STDOBJ) $(SHL5VERSIONOBJ) $(SHL5DESCRIPTIONOBJ) $(SHL5OBJS) $(SHL5LINKRESO) \
2470		`$(TYPE) /dev/null $(SHL5LIBS) | $(SED) s\#$(ROUT)\#$(PRJ)/$(ROUT)\#g` \
2471		-Wl,--exclude-libs,ALL,--start-group $(SHL5STDLIBS) -Wl,--end-group \
2472		$(SHL5STDSHL) $(STDSHL5) $(MISC)/$(@:b)_exp.o $(MINGWSSTDENDOBJ) \
2473		-Wl,-Map,$(MISC)/$(@:b).map >> $(MISC)/$(TARGET).$(@:b)_5.cmd
2474  .IF "$(VERBOSE)" == "TRUE"
2475	@$(TYPE)  $(MISC)/$(TARGET).$(@:b)_5.cmd
2476  .ENDIF
2477	@+source $(MISC)/$(TARGET).$(@:b)_5.cmd
2478.ELSE
2479.IF "$(linkinc)"==""
2480.IF "$(SHL5USE_EXPORTS)"!="name"
2481.IF "$(USE_DEFFILE)"!=""
2482	$(COMMAND_ECHO)$(SHL5LINKER) @$(mktmp \
2483		$(SHL5LINKFLAGS) \
2484		$(LINKFLAGSSHL) \
2485		$(SHL5STACK) $(SHL5BASEX)	\
2486		-out:$@ \
2487		-map:$(MISC)/$(@:b).map \
2488		-def:$(SHL5DEF) \
2489		$(USE_5IMPLIB) \
2490		$(STDOBJ) \
2491		$(SHL5VERSIONOBJ) $(SHL5OBJS) \
2492		$(SHL5LIBS) \
2493		$(SHL5STDLIBS) \
2494		$(SHL5STDSHL) $(STDSHL5) \
2495		$(SHL5LINKRES) \
2496	)
2497# double check if target was really written... still making sense?
2498    @@$(LS) $@
2499	@echo linking $@.manifest ...
2500.IF "$(VISTA_MANIFEST)"!=""
2501	$(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(MT) $(MTFLAGS) -manifest $@.manifest -manifest $(TRUSTED_MANIFEST_LOCATION)/trustedinfo.manifest -out:$@.tmanifest$(EMQ) $(FI)
2502	$(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(MT) $(MTFLAGS) -manifest $@.tmanifest -outputresource:$@$(EMQ);2 $(FI)
2503.ELSE
2504	$(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(MT) $(MTFLAGS) -manifest $@.manifest -outputresource:$@$(EMQ);2 $(FI)
2505.ENDIF # "$(VISTA_MANIFEST)"!=""
2506	$(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(RM:s/+//) $@.manifest $(FI)
2507	$(COMMAND_ECHO)$(IFEXIST) $@.tmanifest $(THEN) $(RM:s/+//) $@.tmanifest $(FI)
2508.ELSE			# "$(USE_DEFFILE)"!=""
2509	$(COMMAND_ECHO)$(SHL5LINKER) @$(mktmp	$(SHL5LINKFLAGS)			\
2510		$(LINKFLAGSSHL) $(SHL5BASEX)		\
2511		$(SHL5STACK) -out:$(SHL5TARGETN)	\
2512		-map:$(MISC)/$(@:B).map				\
2513		$(LB)/$(SHL5IMPLIB).exp				\
2514		$(STDOBJ)							\
2515		$(SHL5OBJS) $(SHL5VERSIONOBJ) \
2516		$(SHL5LIBS)                         \
2517		$(SHL5STDLIBS)                      \
2518		$(SHL5STDSHL) $(STDSHL5)                           \
2519		$(SHL5LINKRES) \
2520	)
2521# double check if target was really written... still making sense?
2522    @@$(LS) $@
2523	@echo linking $@.manifest ...
2524.IF "$(VISTA_MANIFEST)"!=""
2525	$(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(MT) $(MTFLAGS) -manifest $@.manifest -manifest $(TRUSTED_MANIFEST_LOCATION)/trustedinfo.manifest -out:$@.tmanifest$(EMQ) $(FI)
2526	$(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(MT) $(MTFLAGS) -manifest $@.tmanifest -outputresource:$@$(EMQ);2 $(FI)
2527.ELSE
2528	$(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(MT) $(MTFLAGS) -manifest $@.manifest -outputresource:$@$(EMQ);2 $(FI)
2529.ENDIF # "$(VISTA_MANIFEST)"!=""
2530	$(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(RM:s/+//) $@.manifest $(FI)
2531	$(COMMAND_ECHO)$(IFEXIST) $@.tmanifest $(THEN) $(RM:s/+//) $@.tmanifest $(FI)
2532.ENDIF			# "$(USE_DEFFILE)"!=""
2533.ELSE			# "$(SHL5USE_EXPORTS)"!="name"
2534	$(COMMAND_ECHO)$(SHL5LINKER) @$(mktmp	$(SHL5LINKFLAGS)			\
2535		$(LINKFLAGSSHL) $(SHL5BASEX)		\
2536		$(SHL5STACK) -out:$(SHL5TARGETN)	\
2537		-map:$(MISC)/$(@:B).map				\
2538		$(USE_5IMPLIB) \
2539		$(STDOBJ)							\
2540		$(SHL5OBJS) $(SHL5VERSIONOBJ))   \
2541		$(SHL5LINKLISTPARAM) \
2542		@$(mktmp $(SHL5STDLIBS)                      \
2543		$(SHL5STDSHL) $(STDSHL5)                           \
2544		$(SHL5LINKRES) \
2545	)
2546	@echo linking $@.manifest ...
2547.IF "$(VISTA_MANIFEST)"!=""
2548	$(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(MT) $(MTFLAGS) -manifest $@.manifest -manifest $(TRUSTED_MANIFEST_LOCATION)/trustedinfo.manifest -out:$@.tmanifest$(EMQ) $(FI)
2549	$(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(MT) $(MTFLAGS) -manifest $@.tmanifest -outputresource:$@$(EMQ);2 $(FI)
2550.ELSE
2551	$(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(MT) $(MTFLAGS) -manifest $@.manifest -outputresource:$@$(EMQ);2 $(FI)
2552.ENDIF # "$(VISTA_MANIFEST)"!=""
2553	$(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(RM:s/+//) $@.manifest $(FI)
2554	$(COMMAND_ECHO)$(IFEXIST) $@.tmanifest $(THEN) $(RM:s/+//) $@.tmanifest $(FI)
2555.ENDIF			# "$(SHL5USE_EXPORTS)"!="name"
2556.ELSE			# "$(linkinc)"==""
2557		$(COMMAND_ECHO)-$(RM) del $(MISC)/$(SHL5TARGET).lnk
2558		$(COMMAND_ECHO)-$(RM) $(MISC)/$(SHL5TARGET).lst
2559		$(COMMAND_ECHO)$(TYPE) $(mktmp \
2560		$(SHL5LINKFLAGS) \
2561		$(LINKFLAGSSHL) $(SHL5BASEX) \
2562		$(SHL5STACK) $(MAPFILE) \
2563		-out:$@ \
2564		$(LB)/$(SHL5IMPLIB).exp \
2565		$(STDOBJ) \
2566		$(SHL5OBJS) \
2567		$(SHL5STDLIBS) \
2568		$(SHL5STDSHL) $(STDSHL5) \
2569		$(SHL5LINKRES) \
2570		) >> $(MISC)/$(SHL5TARGET).lnk
2571		$(COMMAND_ECHO)$(TYPE) $(MISC)/$(SHL5TARGETN:b)_linkinc.ls  >> $(MISC)/$(SHL5TARGET).lnk
2572		$(COMMAND_ECHO)$(SHL5LINKER) @$(MISC)/$(SHL5TARGET).lnk
2573		@echo linking $@.manifest ...
2574.IF "$(VISTA_MANIFEST)"!=""
2575		$(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(MT) $(MTFLAGS) -manifest $@.manifest -manifest $(TRUSTED_MANIFEST_LOCATION)/trustedinfo.manifest -out:$@.tmanifest$(EMQ) $(FI)
2576		$(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(MT) $(MTFLAGS) -manifest $@.tmanifest -outputresource:$@$(EMQ);2 $(FI)
2577.ELSE
2578		$(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(MT) $(MTFLAGS) -manifest $@.manifest -outputresource:$@$(EMQ);2 $(FI)
2579.ENDIF # "$(VISTA_MANIFEST)"!=""
2580		$(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(RM:s/+//) $@.manifest $(FI)
2581		$(COMMAND_ECHO)$(IFEXIST) $@.tmanifest $(THEN) $(RM:s/+//) $@.tmanifest $(FI)
2582.ENDIF			# "$(linkinc)"==""
2583.ENDIF			# "$(COM)"=="GCC"
2584.ENDIF			# "$(GUI)" == "WNT"
2585.IF "$(GUI)"=="UNX"
2586.IF "$(OS)"=="MACOSX"
2587	@-$(RM) $(MISC)/$(@:b).list
2588	@-$(RM) $(MISC)/$(TARGET).$(@:b)_5.cmd
2589	@echo $(STDSLO) $(SHL5OBJS:s/.obj/.o/) \
2590	$(SHL5VERSIONOBJ) \
2591	`cat /dev/null $(SHL5LIBS) | sed s\#$(ROUT)\#$(PRJ)/$(ROUT)\#g` | tr -s " " "\n" > $(MISC)/$(@:b).list
2592	@echo -n $(SHL5LINKER) $(SHL5LINKFLAGS) $(SHL5VERSIONMAPPARA) $(LINKFLAGSSHL) -L$(PRJ)/$(ROUT)/lib $(SOLARLIB) -o $@ \
2593	$(SHL5STDLIBS) $(SHL5ARCHIVES) $(SHL5STDSHL) $(STDSHL5) -filelist $(MISC)/$(@:b).list $(LINKOUTPUT_FILTER) > $(MISC)/$(TARGET).$(@:b)_5.cmd
2594    @$(PERL) $(SOLARENV)/bin/macosx-dylib-link-list.pl \
2595        `cat $(MISC)/$(TARGET).$(@:b)_5.cmd` \
2596        >> $(MISC)/$(TARGET).$(@:b)_5.cmd
2597  .IF "$(VERBOSE)" == "TRUE"
2598	@cat $(MISC)/$(TARGET).$(@:b)_5.cmd
2599  .ENDIF
2600	@+source $(MISC)/$(TARGET).$(@:b)_5.cmd
2601    @$(PERL) $(SOLARENV)/bin/macosx-change-install-names.pl \
2602        shl $(SHL5RPATH) $@
2603.IF "$(SHL5CREATEJNILIB)"!=""
2604	@echo "Making:   " $(@:f).jnilib
2605	@macosx-create-bundle $@
2606.ENDIF          # "$(SHL5CREATEJNILIB)"!=""
2607.IF "$(UPDATER)"=="YES"
2608.IF "$(SHL5NOCHECK)"==""
2609	$(SOLARENV)/bin/checkdll.sh -L$(LB) -L$(SOLARLIBDIR) $(EXTRALIBPATHS5) $(SHL5TARGETN)
2610.ENDIF				# "$(SHL5NOCHECK)"!=""
2611.ENDIF
2612.ELSE			# "$(OS)"=="MACOSX"
2613	@-$(RM) $(MISC)/$(TARGET).$(@:b)_5.cmd
2614	@echo $(SHL5LINKER) $(SHL5LINKFLAGS) $(SHL5SONAME) $(LINKFLAGSSHL) $(SHL5VERSIONMAPPARA) -L$(PRJ)/$(ROUT)/lib $(SOLARLIB) $(STDSLO) $(SHL5OBJS:s/.obj/.o/) \
2615	$(SHL5VERSIONOBJ) -o $@ \
2616	`cat /dev/null $(SHL5LIBS) | tr -s " " "\n" | $(SED) s\#$(ROUT)\#$(PRJ)/$(ROUT)\#g` \
2617	$(SHL5STDLIBS) $(SHL5ARCHIVES) $(SHL5STDSHL) $(STDSHL5) $(LINKOUTPUT_FILTER) > $(MISC)/$(TARGET).$(@:b)_5.cmd
2618  .IF "$(VERBOSE)" == "TRUE"
2619	@cat $(MISC)/$(TARGET).$(@:b)_5.cmd
2620  .ENDIF
2621	@+source $(MISC)/$(TARGET).$(@:b)_5.cmd
2622.IF "$(UPDATER)"=="YES"
2623.IF "$(SHL5NOCHECK)"==""
2624	$(COMMAND_ECHO)-$(RM) $(SHL5TARGETN:d)check_$(SHL5TARGETN:f)
2625	$(COMMAND_ECHO)$(RENAME) $(SHL5TARGETN) $(SHL5TARGETN:d)check_$(SHL5TARGETN:f)
2626.IF "$(VERBOSE)"=="TRUE"
2627	$(COMMAND_ECHO)$(SOLARENV)/bin/checkdll.sh -L$(LB) -L$(SOLARLIBDIR) $(EXTRALIBPATHS5) $(SHL5TARGETN:d)check_$(SHL5TARGETN:f)
2628.ELSE
2629	$(COMMAND_ECHO)$(SOLARENV)/bin/checkdll.sh -L$(LB) -L$(SOLARLIBDIR) $(EXTRALIBPATHS5) -- -s $(SHL5TARGETN:d)check_$(SHL5TARGETN:f)
2630.ENDIF
2631.ENDIF				# "$(SHL5NOCHECK)"!=""
2632.ENDIF			# "$(UPDATER)"=="YES"
2633.ENDIF			# "$(OS)"=="MACOSX"
2634.IF "$(UNIXVERSIONNAMES)"!=""
2635	$(COMMAND_ECHO)$(RM) $(LB)/$(SHL5TARGETN:b)
2636	$(COMMAND_ECHO)cd $(LB) && ln -s $(SHL5TARGETN:f) $(SHL5TARGETN:b)
2637.ENDIF			# "$(UNIXVERSIONNAMES)"!=""
2638.IF "$(VERBOSE)" == "TRUE"
2639	@ls -l $@
2640.ENDIF
2641.ENDIF			# "$(GUI)" == "UNX"
2642
2643.IF "$(GUI)" == "OS2"
2644
2645.IF "$(SHL5DEFAULTRES)"!=""
2646	@+-$(RM) $(MISC)/$(SHL5DEFAULTRES:b).rc > $(NULLDEV)
2647.IF "$(SHL5ICON)" != ""
2648	@-+echo 1 ICON $(SHL5ICON) >> $(MISC)/$(SHL5DEFAULTRES:b).rc
2649.ENDIF
2650.IF "$(use_shl_versions)" != ""
2651.IF "$(SHL5ADD_VERINFO)"!=""
2652	@-+echo $(EMQ)#include $(EMQ)"$(SHL5ADD_VERINFO)$(EMQ)" >> $(MISC)/$(SHL5DEFAULTRES:b).rc
2653.ENDIF			# "$(SHL5ADD_VERINFO)"!=""
2654	@-+echo MENU 1 BEGIN END >> $(MISC)/$(SHL5DEFAULTRES:b).rc
2655#	@-+echo $(EMQ)RCDATA 1 { "Build string here" }$(EMQ) >> $(MISC)/$(SHL5DEFAULTRES:b).rc
2656.ENDIF			# "$(use_shl_versions)" != ""
2657# YD 04/07/06 seems null, confuses rc cli: -i $(SOLARTESDIR)
2658	$(COMMAND_ECHO)$(RC) -r -DOS2 $(INCLUDE) $(RCLINKFLAGS) $(MISC)/$(SHL5DEFAULTRES:b).rc
2659.ENDIF			# "$(SHL5DEFAULTRES)"!=""
2660
2661.IF "$(SHL5ALLRES)"!=""
2662	$(COMMAND_ECHO)+$(TYPE) $(SHL5ALLRES) > $(SHL5LINKRES)
2663.ENDIF			# "$(SHL5ALLRES)"!=""
2664
2665.IF "$(USE_DEFFILE)"!=""
2666
2667	$(COMMAND_ECHO)$(SHL5LINKER) $(SHL5LINKFLAGS) $(LINKFLAGSSHL) -o $@ \
2668		$(SHL5DEF) \
2669		$(STDOBJ) \
2670		-L$(LB) \
2671		-L$(SOLARVERSION)/$(INPATH)/lib \
2672		$(SHL5OBJS) $(SHL5VERSIONOBJ) \
2673		$(SHL5LIBS) \
2674		$(SHL5LINKRES) \
2675		$(SHL5STDLIBS) \
2676		$(SHL5STDSHL) $(STDSHL5)
2677
2678.ELSE			# "$(USE_DEFFILE)"!=""
2679
2680	$(COMMAND_ECHO)$(SHL5LINKER) $(SHL5LINKFLAGS)			\
2681		$(LINKFLAGSSHL) $(SHL5BASEX)		\
2682		$(SHL5STACK) -o $(SHL5TARGETN)	\
2683		$(SHL5DEF) \
2684		$(STDOBJ)							\
2685		-L$(LB) \
2686		-L$(SOLARVERSION)/$(INPATH)/lib \
2687		$(SHL5OBJS) $(SHL5VERSIONOBJ) \
2688		$(SHL5LIBS) \
2689		$(SHL5LINKRES) \
2690		$(SHL5STDLIBS) \
2691		$(SHL5STDSHL) $(STDSHL5)
2692
2693.ENDIF			# "$(USE_DEFFILE)"!=""
2694
2695	$(COMMAND_ECHO)+$(IMPLIB) -p256 $(IMPLIBFLAGS) $(SHL5IMPLIBN) $@
2696	$(COMMAND_ECHO)+$(IMPLIB) -p256 $(IMPLIBFLAGS) $(LB)/$(SHL5TARGET).lib $@
2697
2698.IF "$(SHL5TARGET8)" != "$(SHL5TARGET)"
2699	$(COMMAND_ECHO)+$(COPY) $@ $(@:d)$(SHL5TARGET8).dll
2700.ENDIF
2701
2702.ENDIF			# "$(GUI)" == "OS2"
2703
2704.ENDIF			# "$(SHL5TARGETN)"!=""
2705
2706# unroll begin
2707
2708.IF "$(SHL6TARGETN)"!=""
2709
2710.IF "$(OS)"=="AIX"
2711SHL6STDLIBS=
2712.ENDIF
2713
2714.IF "$(SHLLINKARCONLY)" != ""
2715SHL6STDLIBS=
2716STDSHL=
2717.ELSE
2718SHL6ARCHIVES=
2719.ENDIF
2720
2721# decide how to link
2722.IF "$(SHL6CODETYPE)"=="C"
2723SHL6LINKER=$(LINKC)
2724SHL6STDSHL=$(subst,CPPRUNTIME, $(STDSHL))
2725SHL6LINKFLAGS+=$(LINKCFLAGS)
2726.ELSE			# "$(SHL6CODETYPE)"=="C"
2727SHL6LINKER=$(LINK)
2728SHL6STDSHL=$(subst,CPPRUNTIME,$(STDLIBCPP) $(STDSHL))
2729SHL6LINKFLAGS+=$(LINKFLAGS)
2730.ENDIF			# "$(SHL6CODETYPE)"=="C"
2731
2732SHL6RPATH*=OOO
2733LINKFLAGSRUNPATH_$(SHL6RPATH)*=/ERROR:/Bad_SHL6RPATH_value
2734SHL6LINKFLAGS+=$(LINKFLAGSRUNPATH_$(SHL6RPATH))
2735
2736.IF "$(SHL6USE_EXPORTS)"==""
2737SHL6DEF*=$(MISC)/$(SHL6TARGET).def
2738.ENDIF			# "$(SHL6USE_EXPORTS)"==""
2739
2740EXTRALIBPATHS6=$(EXTRALIBPATHS)
2741.IF "$(UPDATER)"=="YES"
2742.IF "$(SHL6NOCHECK)"==""
2743.IF "$(SOLAR_STLLIBPATH)"!=""
2744EXTRALIBPATHS6+=-L$(SOLAR_STLLIBPATH)
2745.ENDIF
2746.ENDIF				# "$(SHL6NOCHECK)"!=""
2747.ENDIF
2748#+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
2749#+++++++++++    version object      ++++++++++++++++++++++++++++++++++++++++
2750#+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
2751
2752.IF "$(L10N_framework)"==""
2753.IF "$(VERSIONOBJ)"!=""
2754SHL6VERSIONOBJ:=$(VERSIONOBJ:d){$(subst,$(DLLPOSTFIX),_dflt $(SHL6TARGET))}$(VERSIONOBJ:f)
2755USE_VERSIONH:=$(INCCOM)/$(SHL6VERSIONOBJ:b).h
2756.IF "$(GUI)" == "UNX"
2757SHL6VERSIONOBJDEP:=$(VERSIONOBJ:d){$(subst,$(DLLPOSTFIX),_dflt $(SHL6TARGET))}$(VERSIONOBJ:f:s/.o/.obj/)
2758.ELSE           # "$(GUI)" == "UNX"
2759SHL6VERSIONOBJDEP:=$(VERSIONOBJ:d){$(subst,$(DLLPOSTFIX),_dflt $(SHL6TARGET))}$(VERSIONOBJ:f)
2760.ENDIF          # "$(GUI)" == "UNX"
2761$(MISC)/$(SHL6VERSIONOBJ:b).c : $(SOLARENV)/src/version.c $(INCCOM)/$(SHL6VERSIONOBJ:b).h
2762#    $(COPY) $(SOLARENV)/src/version.c $@
2763	$(COMMAND_ECHO)$(TYPE) $(SOLARENV)/src/version.c | $(SED) s/_version.h/$(SHL6VERSIONOBJ:b).h/ > $@
2764
2765.INIT : $(SHL6VERSIONOBJDEP)
2766.ENDIF			# "$(VERSIONOBJ)"!=""
2767.ENDIF
2768
2769.IF "$(GUI)" != "UNX"
2770.IF "$(GUI)" == "WNT" || "$(GUI)" == "OS2"
2771.IF "$(SHL6IMPLIB)" == ""
2772SHL6IMPLIB=i$(TARGET)_t6
2773.ENDIF			# "$(SHL6IMPLIB)" == ""
2774.IF "$(COM)" != "GCC"
2775USE_6IMPLIB=-implib:$(LB)/$(SHL6IMPLIB).lib
2776.ENDIF			# "$(COM)" != "GCC"
2777SHL6IMPLIBN=$(LB)/$(SHL6IMPLIB).lib
2778ALLTAR : $(SHL6IMPLIBN)
2779
2780.IF "$(USE_DEFFILE)"==""
2781USE_6IMPLIB_DEPS=$(LB)/$(SHL6IMPLIB).lib
2782.ENDIF			# "$(USE_DEFFILE)"==""
2783.ENDIF			# "$(GUI)" == "WNT" || "$(GUI)" == "OS2"
2784USE_SHL6DEF=$(SHL6DEF)
2785.ELSE			# "$(GUI)" != "UNX"
2786USE_SHL6DEF=
2787SHL6DEPN+:=$(SHL6DEPNU)
2788
2789.IF "$(SHL6VERSIONMAP)"==""
2790# to activate vmaps remove "#"
2791USE_SHL6VERSIONMAP=$(MISC)/$(SHL6TARGET).vmap
2792.ENDIF			# "$(SHL6VERSIONMAP)"==""
2793
2794.IF "$(USE_SHL6VERSIONMAP)"!=""
2795
2796.IF "$(SHL6FILTERFILE)"!=""
2797.IF "$(SHL6VERSIONMAP)"!=""
2798#eine von beiden ist zuviel
2799USE_SHL6VERSIONMAP=$(MISC)/$(SHL6TARGET).vmap
2800$(USE_SHL6VERSIONMAP) .PHONY:
2801	@echo -----------------------------
2802	@echo you should only use versionmap OR exportfile
2803	@echo -----------------------------
2804#	force_dmake_to_error
2805
2806.ENDIF			# "$(SHL6VERSIONMAP)"!=""
2807
2808SHL6VERSIONMAPPARA=$(LINKVERSIONMAPFLAG) $(USE_SHL6VERSIONMAP)
2809
2810$(USE_SHL6VERSIONMAP): \
2811					$(SHL6OBJS)\
2812					$(SHL6LIBS)\
2813					$(SHL6FILTERFILE)
2814	@$(RM) $@.dump
2815.IF "$(SHL6OBJS)"!=""
2816# dump remaining objects on the fly
2817.IF "$(OS)"=="MACOSX"
2818	@-nm $(SHL6OBJS:s/.obj/.o/) > $@.dump
2819.ELSE
2820	@nm $(SHL6OBJS:s/.obj/.o/) > $@.dump
2821.ENDIF
2822.ENDIF			# "$(SHL6OBJS)!"=""
2823	@$(TYPE) /dev/null $(SHL6LIBS:s/.lib/.dump/) >> $@.dump
2824	$(COMMAND_ECHO) $(PERL) $(SOLARENV)/bin/mapgen.pl -d $@.dump -s $(SHL6INTERFACE) -f $(SHL6FILTERFILE) -m $@
2825
2826.ELSE			# "$(SHL6FILTERFILE)"!=""
2827USE_SHL6VERSIONMAP=$(MISC)/$(SHL6TARGET).vmap
2828$(USE_SHL6VERSIONMAP) :
2829.IF "$(VERBOSE)" == "TRUE"
2830	@echo -----------------------------
2831	@echo SHL6FILTERFILE not set!
2832	@echo -----------------------------
2833	@$(TOUCH) $@
2834	@echo dummy file to keep the dependencies for later use.
2835.ELSE
2836	@$(TOUCH) $@
2837.ENDIF
2838#	force_dmake_to_error
2839.ENDIF			# "$(SHL6FILTERFILE)"!=""
2840.ELSE			# "$(USE_SHL6VERSIONMAP)"!=""
2841
2842#and now for the plain non-generic way...
2843.IF "$(SHL6VERSIONMAP)"!=""
2844USE_SHL6VERSIONMAP=$(MISC)/$(SHL6VERSIONMAP:b)_$(SHL6TARGET)$(SHL6VERSIONMAP:e)
2845SHL6VERSIONMAPPARA=$(LINKVERSIONMAPFLAG) $(USE_SHL6VERSIONMAP)
2846
2847.IF "$(OS)"=="MACOSX"
2848$(USE_SHL6VERSIONMAP): $(SHL6OBJS) $(SHL6LIBS)
2849.ENDIF
2850
2851# .ERRREMOVE is needed as a recipe line like "$(AWK) ... > $@" would create $@
2852# even if the $(AWK) part fails:
2853$(USE_SHL6VERSIONMAP) .ERRREMOVE: $(SHL6VERSIONMAP)
2854	@@-$(RM) -f $@
2855# The following files will only be generated and needed on Mac OS X as temporary files
2856# in order to generate exported symbols list out of Linux/Solaris map files
2857.IF "$(OS)"=="MACOSX"
2858	@-$(RM) -f $@.symregexp >& $(NULLDEV)
2859	@-$(RM) -f $@.expsymlist >& $(NULLDEV)
2860.ENDIF
2861# Its questionable if the following condition '.IF "$(COMID)"=="gcc3"' makes sense and what
2862# happens if somebody will change it in the future
2863.IF "$(COMID)"=="gcc3"
2864	$(COMMAND_ECHO) tr -d "\015" < $(SHL6VERSIONMAP) | $(AWK) -f $(SOLARENV)/bin/addsym.awk > $@
2865.ELIF "$(COMNAME)"=="sunpro5"
2866	$(COMMAND_ECHO) tr -d "\015" < $(SHL6VERSIONMAP) | $(GREP) -v $(IGNORE_SYMBOLS) > $@
2867.ELSE           # "$(COMID)"=="gcc3"
2868	$(COMMAND_ECHO) tr -d "\015" < $(SHL6VERSIONMAP) > $@
2869.ENDIF          # "$(COMID)"=="gcc3"
2870	@chmod a+w $@
2871# Mac OS X post-processing generate an exported symbols list from the generated map file
2872# for details on exported symbols list see man ld on Mac OS X
2873.IF "$(OS)"=="MACOSX"
2874	@-cat $@ | $(AWK) -f $(SOLARENV)/bin/unxmap-to-macosx-explist.awk | grep -v "\*\|?" > $@.exported-symbols
2875	@-cat $@ | $(AWK) -f $(SOLARENV)/bin/unxmap-to-macosx-explist.awk | grep "\*\|?" > $@.symbols-regexp
2876# Shared libraries will be build out of the *.obj files specified in SHL?OBJS and SHL?LIBS
2877# Extract RTTI symbols from all the objects that will be used to build a shared library
2878.IF "$(SHL6OBJS)"!=""
2879	-echo $(foreach,i,$(SHL6OBJS:s/.obj/.o/) $i) | xargs -n1 nm -gx | $(SOLARENV)/bin/addsym-macosx.sh $@.symbols-regexp $@.symbols-regexp.tmp >> $@.exported-symbols
2880.ENDIF
2881.IF "$(SHL6LIBS)"!=""
2882	$(COMMAND_ECHO)-$(TYPE) $(foreach,j,$(SHL6LIBS) $j) | $(SED) s\#$(ROUT)\#$(PRJ)/$(ROUT)\#g | xargs -n1 nm -gx | $(SOLARENV)/bin/addsym-macosx.sh $@.symbols-regexp $@.symbols-regexp.tmp >> $@.exported-symbols
2883.ENDIF
2884# overwrite the map file generate into the local output tree with the generated
2885# exported symbols list
2886	cp $@.exported-symbols $@
2887.ENDIF # .IF "$(OS)"=="MACOSX"
2888.ENDIF			# "$(SHL6VERSIONMAP)"!=""
2889.ENDIF			# "$(USE_SHL6VERSIONMAP)"!=""
2890.ENDIF			# "$(GUI)" != "UNX"
2891
2892.IF "$(UNIXVERSIONNAMES)"!=""
2893.IF "$(OS)"!="MACOSX"
2894.IF "$(GUI)"=="UNX"
2895SHL6SONAME=\"$(SONAME_SWITCH)$(SHL6TARGETN:f)\"
2896.ENDIF			# "$(GUI)"!="UNX"
2897.ENDIF			# "$(OS)"!="MACOSX"
2898.ENDIF			# "$(UNIXVERSIONNAMES)"!=""
2899
2900.IF "$(SHL6RES)"!=""
2901SHL6ALLRES+=$(SHL6RES)
2902SHL6LINKRES*=$(MISC)/$(SHL6TARGET).res
2903SHL6LINKRESO*=$(MISC)/$(SHL6TARGET)_res.o
2904.ENDIF			# "$(SHL6RES)"!=""
2905
2906.IF "$(SHL6DEFAULTRES)$(use_shl_versions)"!=""
2907SHL6DEFAULTRES*=$(MISC)/$(SHL6TARGET)_def.res
2908SHL6ALLRES+=$(SHL6DEFAULTRES)
2909SHL6LINKRES*=$(MISC)/$(SHL6TARGET).res
2910SHL6LINKRESO*=$(MISC)/$(SHL6TARGET)_res.o
2911.ENDIF			# "$(SHL6DEFAULTRES)$(use_shl_versions)"!=""
2912
2913#.IF "$(SHL6TARGETN)"!=""
2914
2915.IF "$(linkinc)"!=""
2916.IF "$(GUI)"=="WNT" || "$(GUI)" == "OS2"
2917.IF "$(SHL6LIBS)"!=""
2918$(MISC)/$(SHL6TARGET)_linkinc.ls .PHONY:
2919	@@-$(RM) $@
2920	$(COMMAND_ECHO)$(SED) -f $(SOLARENV)/bin/chrel.sed $(foreach,i,$(SHL6LIBS) $(i:s/.lib/.lin/)) >> $@
2921.ENDIF          # "$(SHL6LIBS)"!=""
2922.ENDIF
2923
2924LINKINCTARGETS+=$(MISC)/$(SHL6TARGETN:b)_linkinc.ls
2925$(SHL6TARGETN) : $(LINKINCTARGETS)
2926
2927.ELSE
2928.IF "$(SHL6USE_EXPORTS)"=="name"
2929.IF "$(GUI)"=="WNT" || "$(GUI)" == "OS2"
2930.IF "$(COM)"!="GCC"
2931.IF "$(SHL6LIBS)"!=""
2932SHL6LINKLIST=$(MISC)/$(SHL6TARGET)_link.lst
2933SHL6LINKLISTPARAM=@$(SHL6LINKLIST)
2934$(SHL6LINKLIST) : $(SHL6LIBS)
2935    @@-$(RM) $@
2936	$(COMMAND_ECHO)$(SED) -f $(SOLARENV)/bin/chrel.sed $(foreach,i,$(SHL6LIBS) $(i:s/.lib/.lin/)) >> $@
2937.ENDIF          # "$(SHL6LIBS)"!=""
2938.ENDIF          # "$(COM)"!="GCC"
2939.ENDIF
2940.ENDIF			# "$(SHL6USE_EXPORTS)"=="name"
2941
2942$(MISC)/%linkinc.ls:
2943	@echo . > $@
2944.ENDIF          # "$(linkinc)"!=""
2945
2946.IF "$(GUI)" == "OS2"
2947#21/02/2006 YD dll names must be 8.3, invoke fix script
2948#check osl/os2/module.c/osl_loadModule()
2949SHL6TARGET8=$(shell @fix_shl.cmd $(SHL6TARGET))
2950.ENDIF
2951
2952
2953$(SHL6TARGETN) : \
2954					$(SHL6OBJS)\
2955					$(SHL6LIBS)\
2956					$(USE_6IMPLIB_DEPS)\
2957					$(USE_SHL6DEF)\
2958					$(USE_SHL6VERSIONMAP)\
2959					$(SHL6RES)\
2960					$(SHL6DEPN) \
2961					$(SHL6LINKLIST)
2962	@echo "Making:   " $(@:f)
2963.IF "$(GUI)" == "WNT"
2964.IF "$(SHL6DEFAULTRES)"!=""
2965	@@-$(RM) $(MISC)/$(SHL6DEFAULTRES:b).rc
2966.IF "$(SHL6ICON)" != ""
2967	@echo 1 ICON $(SHL6ICON) >> $(MISC)/$(SHL6DEFAULTRES:b).rc
2968.ENDIF
2969.IF "$(use_shl_versions)" != ""
2970.IF "$(SHL6ADD_VERINFO)"!=""
2971	@echo $(EMQ)#include $(EMQ)"$(SHL6ADD_VERINFO)$(EMQ)" >> $(MISC)/$(SHL6DEFAULTRES:b).rc
2972.ELSE			# "$(SHL6ADD_VERINFO)"!=""
2973	@echo $(EMQ)#define ADDITIONAL_VERINFO1 >> $(MISC)/$(SHL6DEFAULTRES:b).rc
2974	@echo $(EMQ)#define ADDITIONAL_VERINFO2 >> $(MISC)/$(SHL6DEFAULTRES:b).rc
2975	@echo $(EMQ)#define ADDITIONAL_VERINFO3 >> $(MISC)/$(SHL6DEFAULTRES:b).rc
2976.ENDIF			# "$(SHL6ADD_VERINFO)"!=""
2977	@echo $(EMQ)#define VERVARIANT	$(BUILD) >> $(MISC)/$(SHL6DEFAULTRES:b).rc
2978	@echo $(EMQ)#define ORG_NAME	$(SHL6TARGET)$(DLLPOST) >> $(MISC)/$(SHL6DEFAULTRES:b).rc
2979	@echo $(EMQ)#define INTERNAL_NAME $(SHL6TARGET:b) >> $(MISC)/$(SHL6DEFAULTRES:b).rc
2980	@echo $(EMQ)#include $(EMQ)"shlinfo.rc$(EMQ)" >> $(MISC)/$(SHL6DEFAULTRES:b).rc
2981.ENDIF			# "$(use_shl_versions)" != ""
2982	$(COMMAND_ECHO)$(RC) -DWIN32 $(INCLUDE) $(RCLINKFLAGS) $(MISC)/$(SHL6DEFAULTRES:b).rc
2983.ENDIF			# "$(SHL6DEFAULTRES)"!=""
2984.IF "$(SHL6ALLRES)"!=""
2985	$(COMMAND_ECHO)$(TYPE) $(SHL6ALLRES) > $(SHL6LINKRES)
2986.IF "$(COM)"=="GCC"
2987	windres $(SHL6LINKRES) $(SHL6LINKRESO)
2988.ENDIF			# "$(COM)"=="GCC"
2989.ENDIF			# "$(SHL6ALLRES)"!=""
2990.IF "$(COM)"=="GCC"	# always have to call dlltool explicitly as ld cannot handle # comment in .def
2991	@echo dlltool --dllname $(SHL6TARGET)$(DLLPOST) \
2992		--kill-at \\ > $(MISC)/$(TARGET).$(@:b)_6.cmd
2993	@noop $(assign ALL6OBJLIST:=$(STDOBJ) $(SHL6OBJS) $(SHL6LINKRESO) $(shell $(TYPE) /dev/null $(SHL6LIBS) | $(SED) s?$(ROUT)?$(PRJ)/$(ROUT)?g))
2994.IF "$(DEFLIB6NAME)"!=""	# do not have to include objs
2995	@noop $(assign DEF6OBJLIST:=$(shell $(TYPE) $(foreach,i,$(DEFLIB6NAME) $(SLB)/$(i).lib) | sed s?$(ROUT)?$(PRJ)/$(ROUT)?g))
2996	@noop $(foreach,i,$(DEF6OBJLIST) $(assign ALL6OBJLIST:=$(ALL6OBJLIST:s?$i??)))
2997.ENDIF			# "$(DEFLIB6NAME)"!=""
2998	@echo	--output-exp $(MISC)/$(@:b)_exp.o \\ >> $(MISC)/$(TARGET).$(@:b)_6.cmd
2999.IF "$(SHL6DEF)"!=""
3000	@echo	--input-def $(SHL6DEF) \\ >> $(MISC)/$(TARGET).$(@:b)_6.cmd
3001.ELSE
3002	@echo	$(SHL6VERSIONOBJ) $(SHL6DESCRIPTIONOBJ) \\ >> $(MISC)/$(TARGET).$(@:b)_6.cmd
3003.ENDIF
3004	@echo	$(ALL6OBJLIST) >> $(MISC)/$(TARGET).$(@:b)_6.cmd
3005	@echo $(LINK) $(LINKFLAGS) $(LINKFLAGSSHL) $(MINGWSSTDOBJ) -o $@ \
3006		$(STDOBJ) $(SHL6VERSIONOBJ) $(SHL6DESCRIPTIONOBJ) $(SHL6OBJS) $(SHL6LINKRESO) \
3007		`$(TYPE) /dev/null $(SHL6LIBS) | $(SED) s\#$(ROUT)\#$(PRJ)/$(ROUT)\#g` \
3008		-Wl,--exclude-libs,ALL,--start-group $(SHL6STDLIBS) -Wl,--end-group \
3009		$(SHL6STDSHL) $(STDSHL6) $(MISC)/$(@:b)_exp.o $(MINGWSSTDENDOBJ) \
3010		-Wl,-Map,$(MISC)/$(@:b).map >> $(MISC)/$(TARGET).$(@:b)_6.cmd
3011  .IF "$(VERBOSE)" == "TRUE"
3012	@$(TYPE)  $(MISC)/$(TARGET).$(@:b)_6.cmd
3013  .ENDIF
3014	@+source $(MISC)/$(TARGET).$(@:b)_6.cmd
3015.ELSE
3016.IF "$(linkinc)"==""
3017.IF "$(SHL6USE_EXPORTS)"!="name"
3018.IF "$(USE_DEFFILE)"!=""
3019	$(COMMAND_ECHO)$(SHL6LINKER) @$(mktmp \
3020		$(SHL6LINKFLAGS) \
3021		$(LINKFLAGSSHL) \
3022		$(SHL6STACK) $(SHL6BASEX)	\
3023		-out:$@ \
3024		-map:$(MISC)/$(@:b).map \
3025		-def:$(SHL6DEF) \
3026		$(USE_6IMPLIB) \
3027		$(STDOBJ) \
3028		$(SHL6VERSIONOBJ) $(SHL6OBJS) \
3029		$(SHL6LIBS) \
3030		$(SHL6STDLIBS) \
3031		$(SHL6STDSHL) $(STDSHL6) \
3032		$(SHL6LINKRES) \
3033	)
3034# double check if target was really written... still making sense?
3035    @@$(LS) $@
3036	@echo linking $@.manifest ...
3037.IF "$(VISTA_MANIFEST)"!=""
3038	$(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(MT) $(MTFLAGS) -manifest $@.manifest -manifest $(TRUSTED_MANIFEST_LOCATION)/trustedinfo.manifest -out:$@.tmanifest$(EMQ) $(FI)
3039	$(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(MT) $(MTFLAGS) -manifest $@.tmanifest -outputresource:$@$(EMQ);2 $(FI)
3040.ELSE
3041	$(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(MT) $(MTFLAGS) -manifest $@.manifest -outputresource:$@$(EMQ);2 $(FI)
3042.ENDIF # "$(VISTA_MANIFEST)"!=""
3043	$(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(RM:s/+//) $@.manifest $(FI)
3044	$(COMMAND_ECHO)$(IFEXIST) $@.tmanifest $(THEN) $(RM:s/+//) $@.tmanifest $(FI)
3045.ELSE			# "$(USE_DEFFILE)"!=""
3046	$(COMMAND_ECHO)$(SHL6LINKER) @$(mktmp	$(SHL6LINKFLAGS)			\
3047		$(LINKFLAGSSHL) $(SHL6BASEX)		\
3048		$(SHL6STACK) -out:$(SHL6TARGETN)	\
3049		-map:$(MISC)/$(@:B).map				\
3050		$(LB)/$(SHL6IMPLIB).exp				\
3051		$(STDOBJ)							\
3052		$(SHL6OBJS) $(SHL6VERSIONOBJ) \
3053		$(SHL6LIBS)                         \
3054		$(SHL6STDLIBS)                      \
3055		$(SHL6STDSHL) $(STDSHL6)                           \
3056		$(SHL6LINKRES) \
3057	)
3058# double check if target was really written... still making sense?
3059    @@$(LS) $@
3060	@echo linking $@.manifest ...
3061.IF "$(VISTA_MANIFEST)"!=""
3062	$(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(MT) $(MTFLAGS) -manifest $@.manifest -manifest $(TRUSTED_MANIFEST_LOCATION)/trustedinfo.manifest -out:$@.tmanifest$(EMQ) $(FI)
3063	$(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(MT) $(MTFLAGS) -manifest $@.tmanifest -outputresource:$@$(EMQ);2 $(FI)
3064.ELSE
3065	$(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(MT) $(MTFLAGS) -manifest $@.manifest -outputresource:$@$(EMQ);2 $(FI)
3066.ENDIF # "$(VISTA_MANIFEST)"!=""
3067	$(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(RM:s/+//) $@.manifest $(FI)
3068	$(COMMAND_ECHO)$(IFEXIST) $@.tmanifest $(THEN) $(RM:s/+//) $@.tmanifest $(FI)
3069.ENDIF			# "$(USE_DEFFILE)"!=""
3070.ELSE			# "$(SHL6USE_EXPORTS)"!="name"
3071	$(COMMAND_ECHO)$(SHL6LINKER) @$(mktmp	$(SHL6LINKFLAGS)			\
3072		$(LINKFLAGSSHL) $(SHL6BASEX)		\
3073		$(SHL6STACK) -out:$(SHL6TARGETN)	\
3074		-map:$(MISC)/$(@:B).map				\
3075		$(USE_6IMPLIB) \
3076		$(STDOBJ)							\
3077		$(SHL6OBJS) $(SHL6VERSIONOBJ))   \
3078		$(SHL6LINKLISTPARAM) \
3079		@$(mktmp $(SHL6STDLIBS)                      \
3080		$(SHL6STDSHL) $(STDSHL6)                           \
3081		$(SHL6LINKRES) \
3082	)
3083	@echo linking $@.manifest ...
3084.IF "$(VISTA_MANIFEST)"!=""
3085	$(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(MT) $(MTFLAGS) -manifest $@.manifest -manifest $(TRUSTED_MANIFEST_LOCATION)/trustedinfo.manifest -out:$@.tmanifest$(EMQ) $(FI)
3086	$(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(MT) $(MTFLAGS) -manifest $@.tmanifest -outputresource:$@$(EMQ);2 $(FI)
3087.ELSE
3088	$(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(MT) $(MTFLAGS) -manifest $@.manifest -outputresource:$@$(EMQ);2 $(FI)
3089.ENDIF # "$(VISTA_MANIFEST)"!=""
3090	$(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(RM:s/+//) $@.manifest $(FI)
3091	$(COMMAND_ECHO)$(IFEXIST) $@.tmanifest $(THEN) $(RM:s/+//) $@.tmanifest $(FI)
3092.ENDIF			# "$(SHL6USE_EXPORTS)"!="name"
3093.ELSE			# "$(linkinc)"==""
3094		$(COMMAND_ECHO)-$(RM) del $(MISC)/$(SHL6TARGET).lnk
3095		$(COMMAND_ECHO)-$(RM) $(MISC)/$(SHL6TARGET).lst
3096		$(COMMAND_ECHO)$(TYPE) $(mktmp \
3097		$(SHL6LINKFLAGS) \
3098		$(LINKFLAGSSHL) $(SHL6BASEX) \
3099		$(SHL6STACK) $(MAPFILE) \
3100		-out:$@ \
3101		$(LB)/$(SHL6IMPLIB).exp \
3102		$(STDOBJ) \
3103		$(SHL6OBJS) \
3104		$(SHL6STDLIBS) \
3105		$(SHL6STDSHL) $(STDSHL6) \
3106		$(SHL6LINKRES) \
3107		) >> $(MISC)/$(SHL6TARGET).lnk
3108		$(COMMAND_ECHO)$(TYPE) $(MISC)/$(SHL6TARGETN:b)_linkinc.ls  >> $(MISC)/$(SHL6TARGET).lnk
3109		$(COMMAND_ECHO)$(SHL6LINKER) @$(MISC)/$(SHL6TARGET).lnk
3110		@echo linking $@.manifest ...
3111.IF "$(VISTA_MANIFEST)"!=""
3112		$(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(MT) $(MTFLAGS) -manifest $@.manifest -manifest $(TRUSTED_MANIFEST_LOCATION)/trustedinfo.manifest -out:$@.tmanifest$(EMQ) $(FI)
3113		$(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(MT) $(MTFLAGS) -manifest $@.tmanifest -outputresource:$@$(EMQ);2 $(FI)
3114.ELSE
3115		$(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(MT) $(MTFLAGS) -manifest $@.manifest -outputresource:$@$(EMQ);2 $(FI)
3116.ENDIF # "$(VISTA_MANIFEST)"!=""
3117		$(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(RM:s/+//) $@.manifest $(FI)
3118		$(COMMAND_ECHO)$(IFEXIST) $@.tmanifest $(THEN) $(RM:s/+//) $@.tmanifest $(FI)
3119.ENDIF			# "$(linkinc)"==""
3120.ENDIF			# "$(COM)"=="GCC"
3121.ENDIF			# "$(GUI)" == "WNT"
3122.IF "$(GUI)"=="UNX"
3123.IF "$(OS)"=="MACOSX"
3124	@-$(RM) $(MISC)/$(@:b).list
3125	@-$(RM) $(MISC)/$(TARGET).$(@:b)_6.cmd
3126	@echo $(STDSLO) $(SHL6OBJS:s/.obj/.o/) \
3127	$(SHL6VERSIONOBJ) \
3128	`cat /dev/null $(SHL6LIBS) | sed s\#$(ROUT)\#$(PRJ)/$(ROUT)\#g` | tr -s " " "\n" > $(MISC)/$(@:b).list
3129	@echo -n $(SHL6LINKER) $(SHL6LINKFLAGS) $(SHL6VERSIONMAPPARA) $(LINKFLAGSSHL) -L$(PRJ)/$(ROUT)/lib $(SOLARLIB) -o $@ \
3130	$(SHL6STDLIBS) $(SHL6ARCHIVES) $(SHL6STDSHL) $(STDSHL6) -filelist $(MISC)/$(@:b).list $(LINKOUTPUT_FILTER) > $(MISC)/$(TARGET).$(@:b)_6.cmd
3131    @$(PERL) $(SOLARENV)/bin/macosx-dylib-link-list.pl \
3132        `cat $(MISC)/$(TARGET).$(@:b)_6.cmd` \
3133        >> $(MISC)/$(TARGET).$(@:b)_6.cmd
3134  .IF "$(VERBOSE)" == "TRUE"
3135	@cat $(MISC)/$(TARGET).$(@:b)_6.cmd
3136  .ENDIF
3137	@+source $(MISC)/$(TARGET).$(@:b)_6.cmd
3138    @$(PERL) $(SOLARENV)/bin/macosx-change-install-names.pl \
3139        shl $(SHL6RPATH) $@
3140.IF "$(SHL6CREATEJNILIB)"!=""
3141	@echo "Making:   " $(@:f).jnilib
3142	@macosx-create-bundle $@
3143.ENDIF          # "$(SHL6CREATEJNILIB)"!=""
3144.IF "$(UPDATER)"=="YES"
3145.IF "$(SHL6NOCHECK)"==""
3146	$(SOLARENV)/bin/checkdll.sh -L$(LB) -L$(SOLARLIBDIR) $(EXTRALIBPATHS6) $(SHL6TARGETN)
3147.ENDIF				# "$(SHL6NOCHECK)"!=""
3148.ENDIF
3149.ELSE			# "$(OS)"=="MACOSX"
3150	@-$(RM) $(MISC)/$(TARGET).$(@:b)_6.cmd
3151	@echo $(SHL6LINKER) $(SHL6LINKFLAGS) $(SHL6SONAME) $(LINKFLAGSSHL) $(SHL6VERSIONMAPPARA) -L$(PRJ)/$(ROUT)/lib $(SOLARLIB) $(STDSLO) $(SHL6OBJS:s/.obj/.o/) \
3152	$(SHL6VERSIONOBJ) -o $@ \
3153	`cat /dev/null $(SHL6LIBS) | tr -s " " "\n" | $(SED) s\#$(ROUT)\#$(PRJ)/$(ROUT)\#g` \
3154	$(SHL6STDLIBS) $(SHL6ARCHIVES) $(SHL6STDSHL) $(STDSHL6) $(LINKOUTPUT_FILTER) > $(MISC)/$(TARGET).$(@:b)_6.cmd
3155  .IF "$(VERBOSE)" == "TRUE"
3156	@cat $(MISC)/$(TARGET).$(@:b)_6.cmd
3157  .ENDIF
3158	@+source $(MISC)/$(TARGET).$(@:b)_6.cmd
3159.IF "$(UPDATER)"=="YES"
3160.IF "$(SHL6NOCHECK)"==""
3161	$(COMMAND_ECHO)-$(RM) $(SHL6TARGETN:d)check_$(SHL6TARGETN:f)
3162	$(COMMAND_ECHO)$(RENAME) $(SHL6TARGETN) $(SHL6TARGETN:d)check_$(SHL6TARGETN:f)
3163.IF "$(VERBOSE)"=="TRUE"
3164	$(COMMAND_ECHO)$(SOLARENV)/bin/checkdll.sh -L$(LB) -L$(SOLARLIBDIR) $(EXTRALIBPATHS6) $(SHL6TARGETN:d)check_$(SHL6TARGETN:f)
3165.ELSE
3166	$(COMMAND_ECHO)$(SOLARENV)/bin/checkdll.sh -L$(LB) -L$(SOLARLIBDIR) $(EXTRALIBPATHS6) -- -s $(SHL6TARGETN:d)check_$(SHL6TARGETN:f)
3167.ENDIF
3168.ENDIF				# "$(SHL6NOCHECK)"!=""
3169.ENDIF			# "$(UPDATER)"=="YES"
3170.ENDIF			# "$(OS)"=="MACOSX"
3171.IF "$(UNIXVERSIONNAMES)"!=""
3172	$(COMMAND_ECHO)$(RM) $(LB)/$(SHL6TARGETN:b)
3173	$(COMMAND_ECHO)cd $(LB) && ln -s $(SHL6TARGETN:f) $(SHL6TARGETN:b)
3174.ENDIF			# "$(UNIXVERSIONNAMES)"!=""
3175.IF "$(VERBOSE)" == "TRUE"
3176	@ls -l $@
3177.ENDIF
3178.ENDIF			# "$(GUI)" == "UNX"
3179
3180.IF "$(GUI)" == "OS2"
3181
3182.IF "$(SHL6DEFAULTRES)"!=""
3183	@+-$(RM) $(MISC)/$(SHL6DEFAULTRES:b).rc > $(NULLDEV)
3184.IF "$(SHL6ICON)" != ""
3185	@-+echo 1 ICON $(SHL6ICON) >> $(MISC)/$(SHL6DEFAULTRES:b).rc
3186.ENDIF
3187.IF "$(use_shl_versions)" != ""
3188.IF "$(SHL6ADD_VERINFO)"!=""
3189	@-+echo $(EMQ)#include $(EMQ)"$(SHL6ADD_VERINFO)$(EMQ)" >> $(MISC)/$(SHL6DEFAULTRES:b).rc
3190.ENDIF			# "$(SHL6ADD_VERINFO)"!=""
3191	@-+echo MENU 1 BEGIN END >> $(MISC)/$(SHL6DEFAULTRES:b).rc
3192#	@-+echo $(EMQ)RCDATA 1 { "Build string here" }$(EMQ) >> $(MISC)/$(SHL6DEFAULTRES:b).rc
3193.ENDIF			# "$(use_shl_versions)" != ""
3194# YD 04/07/06 seems null, confuses rc cli: -i $(SOLARTESDIR)
3195	$(COMMAND_ECHO)$(RC) -r -DOS2 $(INCLUDE) $(RCLINKFLAGS) $(MISC)/$(SHL6DEFAULTRES:b).rc
3196.ENDIF			# "$(SHL6DEFAULTRES)"!=""
3197
3198.IF "$(SHL6ALLRES)"!=""
3199	$(COMMAND_ECHO)+$(TYPE) $(SHL6ALLRES) > $(SHL6LINKRES)
3200.ENDIF			# "$(SHL6ALLRES)"!=""
3201
3202.IF "$(USE_DEFFILE)"!=""
3203
3204	$(COMMAND_ECHO)$(SHL6LINKER) $(SHL6LINKFLAGS) $(LINKFLAGSSHL) -o $@ \
3205		$(SHL6DEF) \
3206		$(STDOBJ) \
3207		-L$(LB) \
3208		-L$(SOLARVERSION)/$(INPATH)/lib \
3209		$(SHL6OBJS) $(SHL6VERSIONOBJ) \
3210		$(SHL6LIBS) \
3211		$(SHL6LINKRES) \
3212		$(SHL6STDLIBS) \
3213		$(SHL6STDSHL) $(STDSHL6)
3214
3215.ELSE			# "$(USE_DEFFILE)"!=""
3216
3217	$(COMMAND_ECHO)$(SHL6LINKER) $(SHL6LINKFLAGS)			\
3218		$(LINKFLAGSSHL) $(SHL6BASEX)		\
3219		$(SHL6STACK) -o $(SHL6TARGETN)	\
3220		$(SHL6DEF) \
3221		$(STDOBJ)							\
3222		-L$(LB) \
3223		-L$(SOLARVERSION)/$(INPATH)/lib \
3224		$(SHL6OBJS) $(SHL6VERSIONOBJ) \
3225		$(SHL6LIBS) \
3226		$(SHL6LINKRES) \
3227		$(SHL6STDLIBS) \
3228		$(SHL6STDSHL) $(STDSHL6)
3229
3230.ENDIF			# "$(USE_DEFFILE)"!=""
3231
3232	$(COMMAND_ECHO)+$(IMPLIB) -p256 $(IMPLIBFLAGS) $(SHL6IMPLIBN) $@
3233	$(COMMAND_ECHO)+$(IMPLIB) -p256 $(IMPLIBFLAGS) $(LB)/$(SHL6TARGET).lib $@
3234
3235.IF "$(SHL6TARGET8)" != "$(SHL6TARGET)"
3236	$(COMMAND_ECHO)+$(COPY) $@ $(@:d)$(SHL6TARGET8).dll
3237.ENDIF
3238
3239.ENDIF			# "$(GUI)" == "OS2"
3240
3241.ENDIF			# "$(SHL6TARGETN)"!=""
3242
3243# unroll begin
3244
3245.IF "$(SHL7TARGETN)"!=""
3246
3247.IF "$(OS)"=="AIX"
3248SHL7STDLIBS=
3249.ENDIF
3250
3251.IF "$(SHLLINKARCONLY)" != ""
3252SHL7STDLIBS=
3253STDSHL=
3254.ELSE
3255SHL7ARCHIVES=
3256.ENDIF
3257
3258# decide how to link
3259.IF "$(SHL7CODETYPE)"=="C"
3260SHL7LINKER=$(LINKC)
3261SHL7STDSHL=$(subst,CPPRUNTIME, $(STDSHL))
3262SHL7LINKFLAGS+=$(LINKCFLAGS)
3263.ELSE			# "$(SHL7CODETYPE)"=="C"
3264SHL7LINKER=$(LINK)
3265SHL7STDSHL=$(subst,CPPRUNTIME,$(STDLIBCPP) $(STDSHL))
3266SHL7LINKFLAGS+=$(LINKFLAGS)
3267.ENDIF			# "$(SHL7CODETYPE)"=="C"
3268
3269SHL7RPATH*=OOO
3270LINKFLAGSRUNPATH_$(SHL7RPATH)*=/ERROR:/Bad_SHL7RPATH_value
3271SHL7LINKFLAGS+=$(LINKFLAGSRUNPATH_$(SHL7RPATH))
3272
3273.IF "$(SHL7USE_EXPORTS)"==""
3274SHL7DEF*=$(MISC)/$(SHL7TARGET).def
3275.ENDIF			# "$(SHL7USE_EXPORTS)"==""
3276
3277EXTRALIBPATHS7=$(EXTRALIBPATHS)
3278.IF "$(UPDATER)"=="YES"
3279.IF "$(SHL7NOCHECK)"==""
3280.IF "$(SOLAR_STLLIBPATH)"!=""
3281EXTRALIBPATHS7+=-L$(SOLAR_STLLIBPATH)
3282.ENDIF
3283.ENDIF				# "$(SHL7NOCHECK)"!=""
3284.ENDIF
3285#+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
3286#+++++++++++    version object      ++++++++++++++++++++++++++++++++++++++++
3287#+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
3288
3289.IF "$(L10N_framework)"==""
3290.IF "$(VERSIONOBJ)"!=""
3291SHL7VERSIONOBJ:=$(VERSIONOBJ:d){$(subst,$(DLLPOSTFIX),_dflt $(SHL7TARGET))}$(VERSIONOBJ:f)
3292USE_VERSIONH:=$(INCCOM)/$(SHL7VERSIONOBJ:b).h
3293.IF "$(GUI)" == "UNX"
3294SHL7VERSIONOBJDEP:=$(VERSIONOBJ:d){$(subst,$(DLLPOSTFIX),_dflt $(SHL7TARGET))}$(VERSIONOBJ:f:s/.o/.obj/)
3295.ELSE           # "$(GUI)" == "UNX"
3296SHL7VERSIONOBJDEP:=$(VERSIONOBJ:d){$(subst,$(DLLPOSTFIX),_dflt $(SHL7TARGET))}$(VERSIONOBJ:f)
3297.ENDIF          # "$(GUI)" == "UNX"
3298$(MISC)/$(SHL7VERSIONOBJ:b).c : $(SOLARENV)/src/version.c $(INCCOM)/$(SHL7VERSIONOBJ:b).h
3299#    $(COPY) $(SOLARENV)/src/version.c $@
3300	$(COMMAND_ECHO)$(TYPE) $(SOLARENV)/src/version.c | $(SED) s/_version.h/$(SHL7VERSIONOBJ:b).h/ > $@
3301
3302.INIT : $(SHL7VERSIONOBJDEP)
3303.ENDIF			# "$(VERSIONOBJ)"!=""
3304.ENDIF
3305
3306.IF "$(GUI)" != "UNX"
3307.IF "$(GUI)" == "WNT" || "$(GUI)" == "OS2"
3308.IF "$(SHL7IMPLIB)" == ""
3309SHL7IMPLIB=i$(TARGET)_t7
3310.ENDIF			# "$(SHL7IMPLIB)" == ""
3311.IF "$(COM)" != "GCC"
3312USE_7IMPLIB=-implib:$(LB)/$(SHL7IMPLIB).lib
3313.ENDIF			# "$(COM)" != "GCC"
3314SHL7IMPLIBN=$(LB)/$(SHL7IMPLIB).lib
3315ALLTAR : $(SHL7IMPLIBN)
3316
3317.IF "$(USE_DEFFILE)"==""
3318USE_7IMPLIB_DEPS=$(LB)/$(SHL7IMPLIB).lib
3319.ENDIF			# "$(USE_DEFFILE)"==""
3320.ENDIF			# "$(GUI)" == "WNT" || "$(GUI)" == "OS2"
3321USE_SHL7DEF=$(SHL7DEF)
3322.ELSE			# "$(GUI)" != "UNX"
3323USE_SHL7DEF=
3324SHL7DEPN+:=$(SHL7DEPNU)
3325
3326.IF "$(SHL7VERSIONMAP)"==""
3327# to activate vmaps remove "#"
3328USE_SHL7VERSIONMAP=$(MISC)/$(SHL7TARGET).vmap
3329.ENDIF			# "$(SHL7VERSIONMAP)"==""
3330
3331.IF "$(USE_SHL7VERSIONMAP)"!=""
3332
3333.IF "$(SHL7FILTERFILE)"!=""
3334.IF "$(SHL7VERSIONMAP)"!=""
3335#eine von beiden ist zuviel
3336USE_SHL7VERSIONMAP=$(MISC)/$(SHL7TARGET).vmap
3337$(USE_SHL7VERSIONMAP) .PHONY:
3338	@echo -----------------------------
3339	@echo you should only use versionmap OR exportfile
3340	@echo -----------------------------
3341#	force_dmake_to_error
3342
3343.ENDIF			# "$(SHL7VERSIONMAP)"!=""
3344
3345SHL7VERSIONMAPPARA=$(LINKVERSIONMAPFLAG) $(USE_SHL7VERSIONMAP)
3346
3347$(USE_SHL7VERSIONMAP): \
3348					$(SHL7OBJS)\
3349					$(SHL7LIBS)\
3350					$(SHL7FILTERFILE)
3351	@$(RM) $@.dump
3352.IF "$(SHL7OBJS)"!=""
3353# dump remaining objects on the fly
3354.IF "$(OS)"=="MACOSX"
3355	@-nm $(SHL7OBJS:s/.obj/.o/) > $@.dump
3356.ELSE
3357	@nm $(SHL7OBJS:s/.obj/.o/) > $@.dump
3358.ENDIF
3359.ENDIF			# "$(SHL7OBJS)!"=""
3360	@$(TYPE) /dev/null $(SHL7LIBS:s/.lib/.dump/) >> $@.dump
3361	$(COMMAND_ECHO) $(PERL) $(SOLARENV)/bin/mapgen.pl -d $@.dump -s $(SHL7INTERFACE) -f $(SHL7FILTERFILE) -m $@
3362
3363.ELSE			# "$(SHL7FILTERFILE)"!=""
3364USE_SHL7VERSIONMAP=$(MISC)/$(SHL7TARGET).vmap
3365$(USE_SHL7VERSIONMAP) :
3366.IF "$(VERBOSE)" == "TRUE"
3367	@echo -----------------------------
3368	@echo SHL7FILTERFILE not set!
3369	@echo -----------------------------
3370	@$(TOUCH) $@
3371	@echo dummy file to keep the dependencies for later use.
3372.ELSE
3373	@$(TOUCH) $@
3374.ENDIF
3375#	force_dmake_to_error
3376.ENDIF			# "$(SHL7FILTERFILE)"!=""
3377.ELSE			# "$(USE_SHL7VERSIONMAP)"!=""
3378
3379#and now for the plain non-generic way...
3380.IF "$(SHL7VERSIONMAP)"!=""
3381USE_SHL7VERSIONMAP=$(MISC)/$(SHL7VERSIONMAP:b)_$(SHL7TARGET)$(SHL7VERSIONMAP:e)
3382SHL7VERSIONMAPPARA=$(LINKVERSIONMAPFLAG) $(USE_SHL7VERSIONMAP)
3383
3384.IF "$(OS)"=="MACOSX"
3385$(USE_SHL7VERSIONMAP): $(SHL7OBJS) $(SHL7LIBS)
3386.ENDIF
3387
3388# .ERRREMOVE is needed as a recipe line like "$(AWK) ... > $@" would create $@
3389# even if the $(AWK) part fails:
3390$(USE_SHL7VERSIONMAP) .ERRREMOVE: $(SHL7VERSIONMAP)
3391	@@-$(RM) -f $@
3392# The following files will only be generated and needed on Mac OS X as temporary files
3393# in order to generate exported symbols list out of Linux/Solaris map files
3394.IF "$(OS)"=="MACOSX"
3395	@-$(RM) -f $@.symregexp >& $(NULLDEV)
3396	@-$(RM) -f $@.expsymlist >& $(NULLDEV)
3397.ENDIF
3398# Its questionable if the following condition '.IF "$(COMID)"=="gcc3"' makes sense and what
3399# happens if somebody will change it in the future
3400.IF "$(COMID)"=="gcc3"
3401	$(COMMAND_ECHO) tr -d "\015" < $(SHL7VERSIONMAP) | $(AWK) -f $(SOLARENV)/bin/addsym.awk > $@
3402.ELIF "$(COMNAME)"=="sunpro5"
3403	$(COMMAND_ECHO) tr -d "\015" < $(SHL7VERSIONMAP) | $(GREP) -v $(IGNORE_SYMBOLS) > $@
3404.ELSE           # "$(COMID)"=="gcc3"
3405	$(COMMAND_ECHO) tr -d "\015" < $(SHL7VERSIONMAP) > $@
3406.ENDIF          # "$(COMID)"=="gcc3"
3407	@chmod a+w $@
3408# Mac OS X post-processing generate an exported symbols list from the generated map file
3409# for details on exported symbols list see man ld on Mac OS X
3410.IF "$(OS)"=="MACOSX"
3411	@-cat $@ | $(AWK) -f $(SOLARENV)/bin/unxmap-to-macosx-explist.awk | grep -v "\*\|?" > $@.exported-symbols
3412	@-cat $@ | $(AWK) -f $(SOLARENV)/bin/unxmap-to-macosx-explist.awk | grep "\*\|?" > $@.symbols-regexp
3413# Shared libraries will be build out of the *.obj files specified in SHL?OBJS and SHL?LIBS
3414# Extract RTTI symbols from all the objects that will be used to build a shared library
3415.IF "$(SHL7OBJS)"!=""
3416	-echo $(foreach,i,$(SHL7OBJS:s/.obj/.o/) $i) | xargs -n1 nm -gx | $(SOLARENV)/bin/addsym-macosx.sh $@.symbols-regexp $@.symbols-regexp.tmp >> $@.exported-symbols
3417.ENDIF
3418.IF "$(SHL7LIBS)"!=""
3419	$(COMMAND_ECHO)-$(TYPE) $(foreach,j,$(SHL7LIBS) $j) | $(SED) s\#$(ROUT)\#$(PRJ)/$(ROUT)\#g | xargs -n1 nm -gx | $(SOLARENV)/bin/addsym-macosx.sh $@.symbols-regexp $@.symbols-regexp.tmp >> $@.exported-symbols
3420.ENDIF
3421# overwrite the map file generate into the local output tree with the generated
3422# exported symbols list
3423	cp $@.exported-symbols $@
3424.ENDIF # .IF "$(OS)"=="MACOSX"
3425.ENDIF			# "$(SHL7VERSIONMAP)"!=""
3426.ENDIF			# "$(USE_SHL7VERSIONMAP)"!=""
3427.ENDIF			# "$(GUI)" != "UNX"
3428
3429.IF "$(UNIXVERSIONNAMES)"!=""
3430.IF "$(OS)"!="MACOSX"
3431.IF "$(GUI)"=="UNX"
3432SHL7SONAME=\"$(SONAME_SWITCH)$(SHL7TARGETN:f)\"
3433.ENDIF			# "$(GUI)"!="UNX"
3434.ENDIF			# "$(OS)"!="MACOSX"
3435.ENDIF			# "$(UNIXVERSIONNAMES)"!=""
3436
3437.IF "$(SHL7RES)"!=""
3438SHL7ALLRES+=$(SHL7RES)
3439SHL7LINKRES*=$(MISC)/$(SHL7TARGET).res
3440SHL7LINKRESO*=$(MISC)/$(SHL7TARGET)_res.o
3441.ENDIF			# "$(SHL7RES)"!=""
3442
3443.IF "$(SHL7DEFAULTRES)$(use_shl_versions)"!=""
3444SHL7DEFAULTRES*=$(MISC)/$(SHL7TARGET)_def.res
3445SHL7ALLRES+=$(SHL7DEFAULTRES)
3446SHL7LINKRES*=$(MISC)/$(SHL7TARGET).res
3447SHL7LINKRESO*=$(MISC)/$(SHL7TARGET)_res.o
3448.ENDIF			# "$(SHL7DEFAULTRES)$(use_shl_versions)"!=""
3449
3450#.IF "$(SHL7TARGETN)"!=""
3451
3452.IF "$(linkinc)"!=""
3453.IF "$(GUI)"=="WNT" || "$(GUI)" == "OS2"
3454.IF "$(SHL7LIBS)"!=""
3455$(MISC)/$(SHL7TARGET)_linkinc.ls .PHONY:
3456	@@-$(RM) $@
3457	$(COMMAND_ECHO)$(SED) -f $(SOLARENV)/bin/chrel.sed $(foreach,i,$(SHL7LIBS) $(i:s/.lib/.lin/)) >> $@
3458.ENDIF          # "$(SHL7LIBS)"!=""
3459.ENDIF
3460
3461LINKINCTARGETS+=$(MISC)/$(SHL7TARGETN:b)_linkinc.ls
3462$(SHL7TARGETN) : $(LINKINCTARGETS)
3463
3464.ELSE
3465.IF "$(SHL7USE_EXPORTS)"=="name"
3466.IF "$(GUI)"=="WNT" || "$(GUI)" == "OS2"
3467.IF "$(COM)"!="GCC"
3468.IF "$(SHL7LIBS)"!=""
3469SHL7LINKLIST=$(MISC)/$(SHL7TARGET)_link.lst
3470SHL7LINKLISTPARAM=@$(SHL7LINKLIST)
3471$(SHL7LINKLIST) : $(SHL7LIBS)
3472    @@-$(RM) $@
3473	$(COMMAND_ECHO)$(SED) -f $(SOLARENV)/bin/chrel.sed $(foreach,i,$(SHL7LIBS) $(i:s/.lib/.lin/)) >> $@
3474.ENDIF          # "$(SHL7LIBS)"!=""
3475.ENDIF          # "$(COM)"!="GCC"
3476.ENDIF
3477.ENDIF			# "$(SHL7USE_EXPORTS)"=="name"
3478
3479$(MISC)/%linkinc.ls:
3480	@echo . > $@
3481.ENDIF          # "$(linkinc)"!=""
3482
3483.IF "$(GUI)" == "OS2"
3484#21/02/2006 YD dll names must be 8.3, invoke fix script
3485#check osl/os2/module.c/osl_loadModule()
3486SHL7TARGET8=$(shell @fix_shl.cmd $(SHL7TARGET))
3487.ENDIF
3488
3489
3490$(SHL7TARGETN) : \
3491					$(SHL7OBJS)\
3492					$(SHL7LIBS)\
3493					$(USE_7IMPLIB_DEPS)\
3494					$(USE_SHL7DEF)\
3495					$(USE_SHL7VERSIONMAP)\
3496					$(SHL7RES)\
3497					$(SHL7DEPN) \
3498					$(SHL7LINKLIST)
3499	@echo "Making:   " $(@:f)
3500.IF "$(GUI)" == "WNT"
3501.IF "$(SHL7DEFAULTRES)"!=""
3502	@@-$(RM) $(MISC)/$(SHL7DEFAULTRES:b).rc
3503.IF "$(SHL7ICON)" != ""
3504	@echo 1 ICON $(SHL7ICON) >> $(MISC)/$(SHL7DEFAULTRES:b).rc
3505.ENDIF
3506.IF "$(use_shl_versions)" != ""
3507.IF "$(SHL7ADD_VERINFO)"!=""
3508	@echo $(EMQ)#include $(EMQ)"$(SHL7ADD_VERINFO)$(EMQ)" >> $(MISC)/$(SHL7DEFAULTRES:b).rc
3509.ELSE			# "$(SHL7ADD_VERINFO)"!=""
3510	@echo $(EMQ)#define ADDITIONAL_VERINFO1 >> $(MISC)/$(SHL7DEFAULTRES:b).rc
3511	@echo $(EMQ)#define ADDITIONAL_VERINFO2 >> $(MISC)/$(SHL7DEFAULTRES:b).rc
3512	@echo $(EMQ)#define ADDITIONAL_VERINFO3 >> $(MISC)/$(SHL7DEFAULTRES:b).rc
3513.ENDIF			# "$(SHL7ADD_VERINFO)"!=""
3514	@echo $(EMQ)#define VERVARIANT	$(BUILD) >> $(MISC)/$(SHL7DEFAULTRES:b).rc
3515	@echo $(EMQ)#define ORG_NAME	$(SHL7TARGET)$(DLLPOST) >> $(MISC)/$(SHL7DEFAULTRES:b).rc
3516	@echo $(EMQ)#define INTERNAL_NAME $(SHL7TARGET:b) >> $(MISC)/$(SHL7DEFAULTRES:b).rc
3517	@echo $(EMQ)#include $(EMQ)"shlinfo.rc$(EMQ)" >> $(MISC)/$(SHL7DEFAULTRES:b).rc
3518.ENDIF			# "$(use_shl_versions)" != ""
3519	$(COMMAND_ECHO)$(RC) -DWIN32 $(INCLUDE) $(RCLINKFLAGS) $(MISC)/$(SHL7DEFAULTRES:b).rc
3520.ENDIF			# "$(SHL7DEFAULTRES)"!=""
3521.IF "$(SHL7ALLRES)"!=""
3522	$(COMMAND_ECHO)$(TYPE) $(SHL7ALLRES) > $(SHL7LINKRES)
3523.IF "$(COM)"=="GCC"
3524	windres $(SHL7LINKRES) $(SHL7LINKRESO)
3525.ENDIF			# "$(COM)"=="GCC"
3526.ENDIF			# "$(SHL7ALLRES)"!=""
3527.IF "$(COM)"=="GCC"	# always have to call dlltool explicitly as ld cannot handle # comment in .def
3528	@echo dlltool --dllname $(SHL7TARGET)$(DLLPOST) \
3529		--kill-at \\ > $(MISC)/$(TARGET).$(@:b)_7.cmd
3530	@noop $(assign ALL7OBJLIST:=$(STDOBJ) $(SHL7OBJS) $(SHL7LINKRESO) $(shell $(TYPE) /dev/null $(SHL7LIBS) | $(SED) s?$(ROUT)?$(PRJ)/$(ROUT)?g))
3531.IF "$(DEFLIB7NAME)"!=""	# do not have to include objs
3532	@noop $(assign DEF7OBJLIST:=$(shell $(TYPE) $(foreach,i,$(DEFLIB7NAME) $(SLB)/$(i).lib) | sed s?$(ROUT)?$(PRJ)/$(ROUT)?g))
3533	@noop $(foreach,i,$(DEF7OBJLIST) $(assign ALL7OBJLIST:=$(ALL7OBJLIST:s?$i??)))
3534.ENDIF			# "$(DEFLIB7NAME)"!=""
3535	@echo	--output-exp $(MISC)/$(@:b)_exp.o \\ >> $(MISC)/$(TARGET).$(@:b)_7.cmd
3536.IF "$(SHL7DEF)"!=""
3537	@echo	--input-def $(SHL7DEF) \\ >> $(MISC)/$(TARGET).$(@:b)_7.cmd
3538.ELSE
3539	@echo	$(SHL7VERSIONOBJ) $(SHL7DESCRIPTIONOBJ) \\ >> $(MISC)/$(TARGET).$(@:b)_7.cmd
3540.ENDIF
3541	@echo	$(ALL7OBJLIST) >> $(MISC)/$(TARGET).$(@:b)_7.cmd
3542	@echo $(LINK) $(LINKFLAGS) $(LINKFLAGSSHL) $(MINGWSSTDOBJ) -o $@ \
3543		$(STDOBJ) $(SHL7VERSIONOBJ) $(SHL7DESCRIPTIONOBJ) $(SHL7OBJS) $(SHL7LINKRESO) \
3544		`$(TYPE) /dev/null $(SHL7LIBS) | $(SED) s\#$(ROUT)\#$(PRJ)/$(ROUT)\#g` \
3545		-Wl,--exclude-libs,ALL,--start-group $(SHL7STDLIBS) -Wl,--end-group \
3546		$(SHL7STDSHL) $(STDSHL7) $(MISC)/$(@:b)_exp.o $(MINGWSSTDENDOBJ) \
3547		-Wl,-Map,$(MISC)/$(@:b).map >> $(MISC)/$(TARGET).$(@:b)_7.cmd
3548  .IF "$(VERBOSE)" == "TRUE"
3549	@$(TYPE)  $(MISC)/$(TARGET).$(@:b)_7.cmd
3550  .ENDIF
3551	@+source $(MISC)/$(TARGET).$(@:b)_7.cmd
3552.ELSE
3553.IF "$(linkinc)"==""
3554.IF "$(SHL7USE_EXPORTS)"!="name"
3555.IF "$(USE_DEFFILE)"!=""
3556	$(COMMAND_ECHO)$(SHL7LINKER) @$(mktmp \
3557		$(SHL7LINKFLAGS) \
3558		$(LINKFLAGSSHL) \
3559		$(SHL7STACK) $(SHL7BASEX)	\
3560		-out:$@ \
3561		-map:$(MISC)/$(@:b).map \
3562		-def:$(SHL7DEF) \
3563		$(USE_7IMPLIB) \
3564		$(STDOBJ) \
3565		$(SHL7VERSIONOBJ) $(SHL7OBJS) \
3566		$(SHL7LIBS) \
3567		$(SHL7STDLIBS) \
3568		$(SHL7STDSHL) $(STDSHL7) \
3569		$(SHL7LINKRES) \
3570	)
3571# double check if target was really written... still making sense?
3572    @@$(LS) $@
3573	@echo linking $@.manifest ...
3574.IF "$(VISTA_MANIFEST)"!=""
3575	$(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(MT) $(MTFLAGS) -manifest $@.manifest -manifest $(TRUSTED_MANIFEST_LOCATION)/trustedinfo.manifest -out:$@.tmanifest$(EMQ) $(FI)
3576	$(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(MT) $(MTFLAGS) -manifest $@.tmanifest -outputresource:$@$(EMQ);2 $(FI)
3577.ELSE
3578	$(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(MT) $(MTFLAGS) -manifest $@.manifest -outputresource:$@$(EMQ);2 $(FI)
3579.ENDIF # "$(VISTA_MANIFEST)"!=""
3580	$(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(RM:s/+//) $@.manifest $(FI)
3581	$(COMMAND_ECHO)$(IFEXIST) $@.tmanifest $(THEN) $(RM:s/+//) $@.tmanifest $(FI)
3582.ELSE			# "$(USE_DEFFILE)"!=""
3583	$(COMMAND_ECHO)$(SHL7LINKER) @$(mktmp	$(SHL7LINKFLAGS)			\
3584		$(LINKFLAGSSHL) $(SHL7BASEX)		\
3585		$(SHL7STACK) -out:$(SHL7TARGETN)	\
3586		-map:$(MISC)/$(@:B).map				\
3587		$(LB)/$(SHL7IMPLIB).exp				\
3588		$(STDOBJ)							\
3589		$(SHL7OBJS) $(SHL7VERSIONOBJ) \
3590		$(SHL7LIBS)                         \
3591		$(SHL7STDLIBS)                      \
3592		$(SHL7STDSHL) $(STDSHL7)                           \
3593		$(SHL7LINKRES) \
3594	)
3595# double check if target was really written... still making sense?
3596    @@$(LS) $@
3597	@echo linking $@.manifest ...
3598.IF "$(VISTA_MANIFEST)"!=""
3599	$(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(MT) $(MTFLAGS) -manifest $@.manifest -manifest $(TRUSTED_MANIFEST_LOCATION)/trustedinfo.manifest -out:$@.tmanifest$(EMQ) $(FI)
3600	$(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(MT) $(MTFLAGS) -manifest $@.tmanifest -outputresource:$@$(EMQ);2 $(FI)
3601.ELSE
3602	$(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(MT) $(MTFLAGS) -manifest $@.manifest -outputresource:$@$(EMQ);2 $(FI)
3603.ENDIF # "$(VISTA_MANIFEST)"!=""
3604	$(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(RM:s/+//) $@.manifest $(FI)
3605	$(COMMAND_ECHO)$(IFEXIST) $@.tmanifest $(THEN) $(RM:s/+//) $@.tmanifest $(FI)
3606.ENDIF			# "$(USE_DEFFILE)"!=""
3607.ELSE			# "$(SHL7USE_EXPORTS)"!="name"
3608	$(COMMAND_ECHO)$(SHL7LINKER) @$(mktmp	$(SHL7LINKFLAGS)			\
3609		$(LINKFLAGSSHL) $(SHL7BASEX)		\
3610		$(SHL7STACK) -out:$(SHL7TARGETN)	\
3611		-map:$(MISC)/$(@:B).map				\
3612		$(USE_7IMPLIB) \
3613		$(STDOBJ)							\
3614		$(SHL7OBJS) $(SHL7VERSIONOBJ))   \
3615		$(SHL7LINKLISTPARAM) \
3616		@$(mktmp $(SHL7STDLIBS)                      \
3617		$(SHL7STDSHL) $(STDSHL7)                           \
3618		$(SHL7LINKRES) \
3619	)
3620	@echo linking $@.manifest ...
3621.IF "$(VISTA_MANIFEST)"!=""
3622	$(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(MT) $(MTFLAGS) -manifest $@.manifest -manifest $(TRUSTED_MANIFEST_LOCATION)/trustedinfo.manifest -out:$@.tmanifest$(EMQ) $(FI)
3623	$(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(MT) $(MTFLAGS) -manifest $@.tmanifest -outputresource:$@$(EMQ);2 $(FI)
3624.ELSE
3625	$(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(MT) $(MTFLAGS) -manifest $@.manifest -outputresource:$@$(EMQ);2 $(FI)
3626.ENDIF # "$(VISTA_MANIFEST)"!=""
3627	$(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(RM:s/+//) $@.manifest $(FI)
3628	$(COMMAND_ECHO)$(IFEXIST) $@.tmanifest $(THEN) $(RM:s/+//) $@.tmanifest $(FI)
3629.ENDIF			# "$(SHL7USE_EXPORTS)"!="name"
3630.ELSE			# "$(linkinc)"==""
3631		$(COMMAND_ECHO)-$(RM) del $(MISC)/$(SHL7TARGET).lnk
3632		$(COMMAND_ECHO)-$(RM) $(MISC)/$(SHL7TARGET).lst
3633		$(COMMAND_ECHO)$(TYPE) $(mktmp \
3634		$(SHL7LINKFLAGS) \
3635		$(LINKFLAGSSHL) $(SHL7BASEX) \
3636		$(SHL7STACK) $(MAPFILE) \
3637		-out:$@ \
3638		$(LB)/$(SHL7IMPLIB).exp \
3639		$(STDOBJ) \
3640		$(SHL7OBJS) \
3641		$(SHL7STDLIBS) \
3642		$(SHL7STDSHL) $(STDSHL7) \
3643		$(SHL7LINKRES) \
3644		) >> $(MISC)/$(SHL7TARGET).lnk
3645		$(COMMAND_ECHO)$(TYPE) $(MISC)/$(SHL7TARGETN:b)_linkinc.ls  >> $(MISC)/$(SHL7TARGET).lnk
3646		$(COMMAND_ECHO)$(SHL7LINKER) @$(MISC)/$(SHL7TARGET).lnk
3647		@echo linking $@.manifest ...
3648.IF "$(VISTA_MANIFEST)"!=""
3649		$(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(MT) $(MTFLAGS) -manifest $@.manifest -manifest $(TRUSTED_MANIFEST_LOCATION)/trustedinfo.manifest -out:$@.tmanifest$(EMQ) $(FI)
3650		$(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(MT) $(MTFLAGS) -manifest $@.tmanifest -outputresource:$@$(EMQ);2 $(FI)
3651.ELSE
3652		$(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(MT) $(MTFLAGS) -manifest $@.manifest -outputresource:$@$(EMQ);2 $(FI)
3653.ENDIF # "$(VISTA_MANIFEST)"!=""
3654		$(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(RM:s/+//) $@.manifest $(FI)
3655		$(COMMAND_ECHO)$(IFEXIST) $@.tmanifest $(THEN) $(RM:s/+//) $@.tmanifest $(FI)
3656.ENDIF			# "$(linkinc)"==""
3657.ENDIF			# "$(COM)"=="GCC"
3658.ENDIF			# "$(GUI)" == "WNT"
3659.IF "$(GUI)"=="UNX"
3660.IF "$(OS)"=="MACOSX"
3661	@-$(RM) $(MISC)/$(@:b).list
3662	@-$(RM) $(MISC)/$(TARGET).$(@:b)_7.cmd
3663	@echo $(STDSLO) $(SHL7OBJS:s/.obj/.o/) \
3664	$(SHL7VERSIONOBJ) \
3665	`cat /dev/null $(SHL7LIBS) | sed s\#$(ROUT)\#$(PRJ)/$(ROUT)\#g` | tr -s " " "\n" > $(MISC)/$(@:b).list
3666	@echo -n $(SHL7LINKER) $(SHL7LINKFLAGS) $(SHL7VERSIONMAPPARA) $(LINKFLAGSSHL) -L$(PRJ)/$(ROUT)/lib $(SOLARLIB) -o $@ \
3667	$(SHL7STDLIBS) $(SHL7ARCHIVES) $(SHL7STDSHL) $(STDSHL7) -filelist $(MISC)/$(@:b).list $(LINKOUTPUT_FILTER) > $(MISC)/$(TARGET).$(@:b)_7.cmd
3668    @$(PERL) $(SOLARENV)/bin/macosx-dylib-link-list.pl \
3669        `cat $(MISC)/$(TARGET).$(@:b)_7.cmd` \
3670        >> $(MISC)/$(TARGET).$(@:b)_7.cmd
3671  .IF "$(VERBOSE)" == "TRUE"
3672	@cat $(MISC)/$(TARGET).$(@:b)_7.cmd
3673  .ENDIF
3674	@+source $(MISC)/$(TARGET).$(@:b)_7.cmd
3675    @$(PERL) $(SOLARENV)/bin/macosx-change-install-names.pl \
3676        shl $(SHL7RPATH) $@
3677.IF "$(SHL7CREATEJNILIB)"!=""
3678	@echo "Making:   " $(@:f).jnilib
3679	@macosx-create-bundle $@
3680.ENDIF          # "$(SHL7CREATEJNILIB)"!=""
3681.IF "$(UPDATER)"=="YES"
3682.IF "$(SHL7NOCHECK)"==""
3683	$(SOLARENV)/bin/checkdll.sh -L$(LB) -L$(SOLARLIBDIR) $(EXTRALIBPATHS7) $(SHL7TARGETN)
3684.ENDIF				# "$(SHL7NOCHECK)"!=""
3685.ENDIF
3686.ELSE			# "$(OS)"=="MACOSX"
3687	@-$(RM) $(MISC)/$(TARGET).$(@:b)_7.cmd
3688	@echo $(SHL7LINKER) $(SHL7LINKFLAGS) $(SHL7SONAME) $(LINKFLAGSSHL) $(SHL7VERSIONMAPPARA) -L$(PRJ)/$(ROUT)/lib $(SOLARLIB) $(STDSLO) $(SHL7OBJS:s/.obj/.o/) \
3689	$(SHL7VERSIONOBJ) -o $@ \
3690	`cat /dev/null $(SHL7LIBS) | tr -s " " "\n" | $(SED) s\#$(ROUT)\#$(PRJ)/$(ROUT)\#g` \
3691	$(SHL7STDLIBS) $(SHL7ARCHIVES) $(SHL7STDSHL) $(STDSHL7) $(LINKOUTPUT_FILTER) > $(MISC)/$(TARGET).$(@:b)_7.cmd
3692  .IF "$(VERBOSE)" == "TRUE"
3693	@cat $(MISC)/$(TARGET).$(@:b)_7.cmd
3694  .ENDIF
3695	@+source $(MISC)/$(TARGET).$(@:b)_7.cmd
3696.IF "$(UPDATER)"=="YES"
3697.IF "$(SHL7NOCHECK)"==""
3698	$(COMMAND_ECHO)-$(RM) $(SHL7TARGETN:d)check_$(SHL7TARGETN:f)
3699	$(COMMAND_ECHO)$(RENAME) $(SHL7TARGETN) $(SHL7TARGETN:d)check_$(SHL7TARGETN:f)
3700.IF "$(VERBOSE)"=="TRUE"
3701	$(COMMAND_ECHO)$(SOLARENV)/bin/checkdll.sh -L$(LB) -L$(SOLARLIBDIR) $(EXTRALIBPATHS7) $(SHL7TARGETN:d)check_$(SHL7TARGETN:f)
3702.ELSE
3703	$(COMMAND_ECHO)$(SOLARENV)/bin/checkdll.sh -L$(LB) -L$(SOLARLIBDIR) $(EXTRALIBPATHS7) -- -s $(SHL7TARGETN:d)check_$(SHL7TARGETN:f)
3704.ENDIF
3705.ENDIF				# "$(SHL7NOCHECK)"!=""
3706.ENDIF			# "$(UPDATER)"=="YES"
3707.ENDIF			# "$(OS)"=="MACOSX"
3708.IF "$(UNIXVERSIONNAMES)"!=""
3709	$(COMMAND_ECHO)$(RM) $(LB)/$(SHL7TARGETN:b)
3710	$(COMMAND_ECHO)cd $(LB) && ln -s $(SHL7TARGETN:f) $(SHL7TARGETN:b)
3711.ENDIF			# "$(UNIXVERSIONNAMES)"!=""
3712.IF "$(VERBOSE)" == "TRUE"
3713	@ls -l $@
3714.ENDIF
3715.ENDIF			# "$(GUI)" == "UNX"
3716
3717.IF "$(GUI)" == "OS2"
3718
3719.IF "$(SHL7DEFAULTRES)"!=""
3720	@+-$(RM) $(MISC)/$(SHL7DEFAULTRES:b).rc > $(NULLDEV)
3721.IF "$(SHL7ICON)" != ""
3722	@-+echo 1 ICON $(SHL7ICON) >> $(MISC)/$(SHL7DEFAULTRES:b).rc
3723.ENDIF
3724.IF "$(use_shl_versions)" != ""
3725.IF "$(SHL7ADD_VERINFO)"!=""
3726	@-+echo $(EMQ)#include $(EMQ)"$(SHL7ADD_VERINFO)$(EMQ)" >> $(MISC)/$(SHL7DEFAULTRES:b).rc
3727.ENDIF			# "$(SHL7ADD_VERINFO)"!=""
3728	@-+echo MENU 1 BEGIN END >> $(MISC)/$(SHL7DEFAULTRES:b).rc
3729#	@-+echo $(EMQ)RCDATA 1 { "Build string here" }$(EMQ) >> $(MISC)/$(SHL7DEFAULTRES:b).rc
3730.ENDIF			# "$(use_shl_versions)" != ""
3731# YD 04/07/06 seems null, confuses rc cli: -i $(SOLARTESDIR)
3732	$(COMMAND_ECHO)$(RC) -r -DOS2 $(INCLUDE) $(RCLINKFLAGS) $(MISC)/$(SHL7DEFAULTRES:b).rc
3733.ENDIF			# "$(SHL7DEFAULTRES)"!=""
3734
3735.IF "$(SHL7ALLRES)"!=""
3736	$(COMMAND_ECHO)+$(TYPE) $(SHL7ALLRES) > $(SHL7LINKRES)
3737.ENDIF			# "$(SHL7ALLRES)"!=""
3738
3739.IF "$(USE_DEFFILE)"!=""
3740
3741	$(COMMAND_ECHO)$(SHL7LINKER) $(SHL7LINKFLAGS) $(LINKFLAGSSHL) -o $@ \
3742		$(SHL7DEF) \
3743		$(STDOBJ) \
3744		-L$(LB) \
3745		-L$(SOLARVERSION)/$(INPATH)/lib \
3746		$(SHL7OBJS) $(SHL7VERSIONOBJ) \
3747		$(SHL7LIBS) \
3748		$(SHL7LINKRES) \
3749		$(SHL7STDLIBS) \
3750		$(SHL7STDSHL) $(STDSHL7)
3751
3752.ELSE			# "$(USE_DEFFILE)"!=""
3753
3754	$(COMMAND_ECHO)$(SHL7LINKER) $(SHL7LINKFLAGS)			\
3755		$(LINKFLAGSSHL) $(SHL7BASEX)		\
3756		$(SHL7STACK) -o $(SHL7TARGETN)	\
3757		$(SHL7DEF) \
3758		$(STDOBJ)							\
3759		-L$(LB) \
3760		-L$(SOLARVERSION)/$(INPATH)/lib \
3761		$(SHL7OBJS) $(SHL7VERSIONOBJ) \
3762		$(SHL7LIBS) \
3763		$(SHL7LINKRES) \
3764		$(SHL7STDLIBS) \
3765		$(SHL7STDSHL) $(STDSHL7)
3766
3767.ENDIF			# "$(USE_DEFFILE)"!=""
3768
3769	$(COMMAND_ECHO)+$(IMPLIB) -p256 $(IMPLIBFLAGS) $(SHL7IMPLIBN) $@
3770	$(COMMAND_ECHO)+$(IMPLIB) -p256 $(IMPLIBFLAGS) $(LB)/$(SHL7TARGET).lib $@
3771
3772.IF "$(SHL7TARGET8)" != "$(SHL7TARGET)"
3773	$(COMMAND_ECHO)+$(COPY) $@ $(@:d)$(SHL7TARGET8).dll
3774.ENDIF
3775
3776.ENDIF			# "$(GUI)" == "OS2"
3777
3778.ENDIF			# "$(SHL7TARGETN)"!=""
3779
3780# unroll begin
3781
3782.IF "$(SHL8TARGETN)"!=""
3783
3784.IF "$(OS)"=="AIX"
3785SHL8STDLIBS=
3786.ENDIF
3787
3788.IF "$(SHLLINKARCONLY)" != ""
3789SHL8STDLIBS=
3790STDSHL=
3791.ELSE
3792SHL8ARCHIVES=
3793.ENDIF
3794
3795# decide how to link
3796.IF "$(SHL8CODETYPE)"=="C"
3797SHL8LINKER=$(LINKC)
3798SHL8STDSHL=$(subst,CPPRUNTIME, $(STDSHL))
3799SHL8LINKFLAGS+=$(LINKCFLAGS)
3800.ELSE			# "$(SHL8CODETYPE)"=="C"
3801SHL8LINKER=$(LINK)
3802SHL8STDSHL=$(subst,CPPRUNTIME,$(STDLIBCPP) $(STDSHL))
3803SHL8LINKFLAGS+=$(LINKFLAGS)
3804.ENDIF			# "$(SHL8CODETYPE)"=="C"
3805
3806SHL8RPATH*=OOO
3807LINKFLAGSRUNPATH_$(SHL8RPATH)*=/ERROR:/Bad_SHL8RPATH_value
3808SHL8LINKFLAGS+=$(LINKFLAGSRUNPATH_$(SHL8RPATH))
3809
3810.IF "$(SHL8USE_EXPORTS)"==""
3811SHL8DEF*=$(MISC)/$(SHL8TARGET).def
3812.ENDIF			# "$(SHL8USE_EXPORTS)"==""
3813
3814EXTRALIBPATHS8=$(EXTRALIBPATHS)
3815.IF "$(UPDATER)"=="YES"
3816.IF "$(SHL8NOCHECK)"==""
3817.IF "$(SOLAR_STLLIBPATH)"!=""
3818EXTRALIBPATHS8+=-L$(SOLAR_STLLIBPATH)
3819.ENDIF
3820.ENDIF				# "$(SHL8NOCHECK)"!=""
3821.ENDIF
3822#+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
3823#+++++++++++    version object      ++++++++++++++++++++++++++++++++++++++++
3824#+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
3825
3826.IF "$(L10N_framework)"==""
3827.IF "$(VERSIONOBJ)"!=""
3828SHL8VERSIONOBJ:=$(VERSIONOBJ:d){$(subst,$(DLLPOSTFIX),_dflt $(SHL8TARGET))}$(VERSIONOBJ:f)
3829USE_VERSIONH:=$(INCCOM)/$(SHL8VERSIONOBJ:b).h
3830.IF "$(GUI)" == "UNX"
3831SHL8VERSIONOBJDEP:=$(VERSIONOBJ:d){$(subst,$(DLLPOSTFIX),_dflt $(SHL8TARGET))}$(VERSIONOBJ:f:s/.o/.obj/)
3832.ELSE           # "$(GUI)" == "UNX"
3833SHL8VERSIONOBJDEP:=$(VERSIONOBJ:d){$(subst,$(DLLPOSTFIX),_dflt $(SHL8TARGET))}$(VERSIONOBJ:f)
3834.ENDIF          # "$(GUI)" == "UNX"
3835$(MISC)/$(SHL8VERSIONOBJ:b).c : $(SOLARENV)/src/version.c $(INCCOM)/$(SHL8VERSIONOBJ:b).h
3836#    $(COPY) $(SOLARENV)/src/version.c $@
3837	$(COMMAND_ECHO)$(TYPE) $(SOLARENV)/src/version.c | $(SED) s/_version.h/$(SHL8VERSIONOBJ:b).h/ > $@
3838
3839.INIT : $(SHL8VERSIONOBJDEP)
3840.ENDIF			# "$(VERSIONOBJ)"!=""
3841.ENDIF
3842
3843.IF "$(GUI)" != "UNX"
3844.IF "$(GUI)" == "WNT" || "$(GUI)" == "OS2"
3845.IF "$(SHL8IMPLIB)" == ""
3846SHL8IMPLIB=i$(TARGET)_t8
3847.ENDIF			# "$(SHL8IMPLIB)" == ""
3848.IF "$(COM)" != "GCC"
3849USE_8IMPLIB=-implib:$(LB)/$(SHL8IMPLIB).lib
3850.ENDIF			# "$(COM)" != "GCC"
3851SHL8IMPLIBN=$(LB)/$(SHL8IMPLIB).lib
3852ALLTAR : $(SHL8IMPLIBN)
3853
3854.IF "$(USE_DEFFILE)"==""
3855USE_8IMPLIB_DEPS=$(LB)/$(SHL8IMPLIB).lib
3856.ENDIF			# "$(USE_DEFFILE)"==""
3857.ENDIF			# "$(GUI)" == "WNT" || "$(GUI)" == "OS2"
3858USE_SHL8DEF=$(SHL8DEF)
3859.ELSE			# "$(GUI)" != "UNX"
3860USE_SHL8DEF=
3861SHL8DEPN+:=$(SHL8DEPNU)
3862
3863.IF "$(SHL8VERSIONMAP)"==""
3864# to activate vmaps remove "#"
3865USE_SHL8VERSIONMAP=$(MISC)/$(SHL8TARGET).vmap
3866.ENDIF			# "$(SHL8VERSIONMAP)"==""
3867
3868.IF "$(USE_SHL8VERSIONMAP)"!=""
3869
3870.IF "$(SHL8FILTERFILE)"!=""
3871.IF "$(SHL8VERSIONMAP)"!=""
3872#eine von beiden ist zuviel
3873USE_SHL8VERSIONMAP=$(MISC)/$(SHL8TARGET).vmap
3874$(USE_SHL8VERSIONMAP) .PHONY:
3875	@echo -----------------------------
3876	@echo you should only use versionmap OR exportfile
3877	@echo -----------------------------
3878#	force_dmake_to_error
3879
3880.ENDIF			# "$(SHL8VERSIONMAP)"!=""
3881
3882SHL8VERSIONMAPPARA=$(LINKVERSIONMAPFLAG) $(USE_SHL8VERSIONMAP)
3883
3884$(USE_SHL8VERSIONMAP): \
3885					$(SHL8OBJS)\
3886					$(SHL8LIBS)\
3887					$(SHL8FILTERFILE)
3888	@$(RM) $@.dump
3889.IF "$(SHL8OBJS)"!=""
3890# dump remaining objects on the fly
3891.IF "$(OS)"=="MACOSX"
3892	@-nm $(SHL8OBJS:s/.obj/.o/) > $@.dump
3893.ELSE
3894	@nm $(SHL8OBJS:s/.obj/.o/) > $@.dump
3895.ENDIF
3896.ENDIF			# "$(SHL8OBJS)!"=""
3897	@$(TYPE) /dev/null $(SHL8LIBS:s/.lib/.dump/) >> $@.dump
3898	$(COMMAND_ECHO) $(PERL) $(SOLARENV)/bin/mapgen.pl -d $@.dump -s $(SHL8INTERFACE) -f $(SHL8FILTERFILE) -m $@
3899
3900.ELSE			# "$(SHL8FILTERFILE)"!=""
3901USE_SHL8VERSIONMAP=$(MISC)/$(SHL8TARGET).vmap
3902$(USE_SHL8VERSIONMAP) :
3903.IF "$(VERBOSE)" == "TRUE"
3904	@echo -----------------------------
3905	@echo SHL8FILTERFILE not set!
3906	@echo -----------------------------
3907	@$(TOUCH) $@
3908	@echo dummy file to keep the dependencies for later use.
3909.ELSE
3910	@$(TOUCH) $@
3911.ENDIF
3912#	force_dmake_to_error
3913.ENDIF			# "$(SHL8FILTERFILE)"!=""
3914.ELSE			# "$(USE_SHL8VERSIONMAP)"!=""
3915
3916#and now for the plain non-generic way...
3917.IF "$(SHL8VERSIONMAP)"!=""
3918USE_SHL8VERSIONMAP=$(MISC)/$(SHL8VERSIONMAP:b)_$(SHL8TARGET)$(SHL8VERSIONMAP:e)
3919SHL8VERSIONMAPPARA=$(LINKVERSIONMAPFLAG) $(USE_SHL8VERSIONMAP)
3920
3921.IF "$(OS)"=="MACOSX"
3922$(USE_SHL8VERSIONMAP): $(SHL8OBJS) $(SHL8LIBS)
3923.ENDIF
3924
3925# .ERRREMOVE is needed as a recipe line like "$(AWK) ... > $@" would create $@
3926# even if the $(AWK) part fails:
3927$(USE_SHL8VERSIONMAP) .ERRREMOVE: $(SHL8VERSIONMAP)
3928	@@-$(RM) -f $@
3929# The following files will only be generated and needed on Mac OS X as temporary files
3930# in order to generate exported symbols list out of Linux/Solaris map files
3931.IF "$(OS)"=="MACOSX"
3932	@-$(RM) -f $@.symregexp >& $(NULLDEV)
3933	@-$(RM) -f $@.expsymlist >& $(NULLDEV)
3934.ENDIF
3935# Its questionable if the following condition '.IF "$(COMID)"=="gcc3"' makes sense and what
3936# happens if somebody will change it in the future
3937.IF "$(COMID)"=="gcc3"
3938	$(COMMAND_ECHO) tr -d "\015" < $(SHL8VERSIONMAP) | $(AWK) -f $(SOLARENV)/bin/addsym.awk > $@
3939.ELIF "$(COMNAME)"=="sunpro5"
3940	$(COMMAND_ECHO) tr -d "\015" < $(SHL8VERSIONMAP) | $(GREP) -v $(IGNORE_SYMBOLS) > $@
3941.ELSE           # "$(COMID)"=="gcc3"
3942	$(COMMAND_ECHO) tr -d "\015" < $(SHL8VERSIONMAP) > $@
3943.ENDIF          # "$(COMID)"=="gcc3"
3944	@chmod a+w $@
3945# Mac OS X post-processing generate an exported symbols list from the generated map file
3946# for details on exported symbols list see man ld on Mac OS X
3947.IF "$(OS)"=="MACOSX"
3948	@-cat $@ | $(AWK) -f $(SOLARENV)/bin/unxmap-to-macosx-explist.awk | grep -v "\*\|?" > $@.exported-symbols
3949	@-cat $@ | $(AWK) -f $(SOLARENV)/bin/unxmap-to-macosx-explist.awk | grep "\*\|?" > $@.symbols-regexp
3950# Shared libraries will be build out of the *.obj files specified in SHL?OBJS and SHL?LIBS
3951# Extract RTTI symbols from all the objects that will be used to build a shared library
3952.IF "$(SHL8OBJS)"!=""
3953	-echo $(foreach,i,$(SHL8OBJS:s/.obj/.o/) $i) | xargs -n1 nm -gx | $(SOLARENV)/bin/addsym-macosx.sh $@.symbols-regexp $@.symbols-regexp.tmp >> $@.exported-symbols
3954.ENDIF
3955.IF "$(SHL8LIBS)"!=""
3956	$(COMMAND_ECHO)-$(TYPE) $(foreach,j,$(SHL8LIBS) $j) | $(SED) s\#$(ROUT)\#$(PRJ)/$(ROUT)\#g | xargs -n1 nm -gx | $(SOLARENV)/bin/addsym-macosx.sh $@.symbols-regexp $@.symbols-regexp.tmp >> $@.exported-symbols
3957.ENDIF
3958# overwrite the map file generate into the local output tree with the generated
3959# exported symbols list
3960	cp $@.exported-symbols $@
3961.ENDIF # .IF "$(OS)"=="MACOSX"
3962.ENDIF			# "$(SHL8VERSIONMAP)"!=""
3963.ENDIF			# "$(USE_SHL8VERSIONMAP)"!=""
3964.ENDIF			# "$(GUI)" != "UNX"
3965
3966.IF "$(UNIXVERSIONNAMES)"!=""
3967.IF "$(OS)"!="MACOSX"
3968.IF "$(GUI)"=="UNX"
3969SHL8SONAME=\"$(SONAME_SWITCH)$(SHL8TARGETN:f)\"
3970.ENDIF			# "$(GUI)"!="UNX"
3971.ENDIF			# "$(OS)"!="MACOSX"
3972.ENDIF			# "$(UNIXVERSIONNAMES)"!=""
3973
3974.IF "$(SHL8RES)"!=""
3975SHL8ALLRES+=$(SHL8RES)
3976SHL8LINKRES*=$(MISC)/$(SHL8TARGET).res
3977SHL8LINKRESO*=$(MISC)/$(SHL8TARGET)_res.o
3978.ENDIF			# "$(SHL8RES)"!=""
3979
3980.IF "$(SHL8DEFAULTRES)$(use_shl_versions)"!=""
3981SHL8DEFAULTRES*=$(MISC)/$(SHL8TARGET)_def.res
3982SHL8ALLRES+=$(SHL8DEFAULTRES)
3983SHL8LINKRES*=$(MISC)/$(SHL8TARGET).res
3984SHL8LINKRESO*=$(MISC)/$(SHL8TARGET)_res.o
3985.ENDIF			# "$(SHL8DEFAULTRES)$(use_shl_versions)"!=""
3986
3987#.IF "$(SHL8TARGETN)"!=""
3988
3989.IF "$(linkinc)"!=""
3990.IF "$(GUI)"=="WNT" || "$(GUI)" == "OS2"
3991.IF "$(SHL8LIBS)"!=""
3992$(MISC)/$(SHL8TARGET)_linkinc.ls .PHONY:
3993	@@-$(RM) $@
3994	$(COMMAND_ECHO)$(SED) -f $(SOLARENV)/bin/chrel.sed $(foreach,i,$(SHL8LIBS) $(i:s/.lib/.lin/)) >> $@
3995.ENDIF          # "$(SHL8LIBS)"!=""
3996.ENDIF
3997
3998LINKINCTARGETS+=$(MISC)/$(SHL8TARGETN:b)_linkinc.ls
3999$(SHL8TARGETN) : $(LINKINCTARGETS)
4000
4001.ELSE
4002.IF "$(SHL8USE_EXPORTS)"=="name"
4003.IF "$(GUI)"=="WNT" || "$(GUI)" == "OS2"
4004.IF "$(COM)"!="GCC"
4005.IF "$(SHL8LIBS)"!=""
4006SHL8LINKLIST=$(MISC)/$(SHL8TARGET)_link.lst
4007SHL8LINKLISTPARAM=@$(SHL8LINKLIST)
4008$(SHL8LINKLIST) : $(SHL8LIBS)
4009    @@-$(RM) $@
4010	$(COMMAND_ECHO)$(SED) -f $(SOLARENV)/bin/chrel.sed $(foreach,i,$(SHL8LIBS) $(i:s/.lib/.lin/)) >> $@
4011.ENDIF          # "$(SHL8LIBS)"!=""
4012.ENDIF          # "$(COM)"!="GCC"
4013.ENDIF
4014.ENDIF			# "$(SHL8USE_EXPORTS)"=="name"
4015
4016$(MISC)/%linkinc.ls:
4017	@echo . > $@
4018.ENDIF          # "$(linkinc)"!=""
4019
4020.IF "$(GUI)" == "OS2"
4021#21/02/2006 YD dll names must be 8.3, invoke fix script
4022#check osl/os2/module.c/osl_loadModule()
4023SHL8TARGET8=$(shell @fix_shl.cmd $(SHL8TARGET))
4024.ENDIF
4025
4026
4027$(SHL8TARGETN) : \
4028					$(SHL8OBJS)\
4029					$(SHL8LIBS)\
4030					$(USE_8IMPLIB_DEPS)\
4031					$(USE_SHL8DEF)\
4032					$(USE_SHL8VERSIONMAP)\
4033					$(SHL8RES)\
4034					$(SHL8DEPN) \
4035					$(SHL8LINKLIST)
4036	@echo "Making:   " $(@:f)
4037.IF "$(GUI)" == "WNT"
4038.IF "$(SHL8DEFAULTRES)"!=""
4039	@@-$(RM) $(MISC)/$(SHL8DEFAULTRES:b).rc
4040.IF "$(SHL8ICON)" != ""
4041	@echo 1 ICON $(SHL8ICON) >> $(MISC)/$(SHL8DEFAULTRES:b).rc
4042.ENDIF
4043.IF "$(use_shl_versions)" != ""
4044.IF "$(SHL8ADD_VERINFO)"!=""
4045	@echo $(EMQ)#include $(EMQ)"$(SHL8ADD_VERINFO)$(EMQ)" >> $(MISC)/$(SHL8DEFAULTRES:b).rc
4046.ELSE			# "$(SHL8ADD_VERINFO)"!=""
4047	@echo $(EMQ)#define ADDITIONAL_VERINFO1 >> $(MISC)/$(SHL8DEFAULTRES:b).rc
4048	@echo $(EMQ)#define ADDITIONAL_VERINFO2 >> $(MISC)/$(SHL8DEFAULTRES:b).rc
4049	@echo $(EMQ)#define ADDITIONAL_VERINFO3 >> $(MISC)/$(SHL8DEFAULTRES:b).rc
4050.ENDIF			# "$(SHL8ADD_VERINFO)"!=""
4051	@echo $(EMQ)#define VERVARIANT	$(BUILD) >> $(MISC)/$(SHL8DEFAULTRES:b).rc
4052	@echo $(EMQ)#define ORG_NAME	$(SHL8TARGET)$(DLLPOST) >> $(MISC)/$(SHL8DEFAULTRES:b).rc
4053	@echo $(EMQ)#define INTERNAL_NAME $(SHL8TARGET:b) >> $(MISC)/$(SHL8DEFAULTRES:b).rc
4054	@echo $(EMQ)#include $(EMQ)"shlinfo.rc$(EMQ)" >> $(MISC)/$(SHL8DEFAULTRES:b).rc
4055.ENDIF			# "$(use_shl_versions)" != ""
4056	$(COMMAND_ECHO)$(RC) -DWIN32 $(INCLUDE) $(RCLINKFLAGS) $(MISC)/$(SHL8DEFAULTRES:b).rc
4057.ENDIF			# "$(SHL8DEFAULTRES)"!=""
4058.IF "$(SHL8ALLRES)"!=""
4059	$(COMMAND_ECHO)$(TYPE) $(SHL8ALLRES) > $(SHL8LINKRES)
4060.IF "$(COM)"=="GCC"
4061	windres $(SHL8LINKRES) $(SHL8LINKRESO)
4062.ENDIF			# "$(COM)"=="GCC"
4063.ENDIF			# "$(SHL8ALLRES)"!=""
4064.IF "$(COM)"=="GCC"	# always have to call dlltool explicitly as ld cannot handle # comment in .def
4065	@echo dlltool --dllname $(SHL8TARGET)$(DLLPOST) \
4066		--kill-at \\ > $(MISC)/$(TARGET).$(@:b)_8.cmd
4067	@noop $(assign ALL8OBJLIST:=$(STDOBJ) $(SHL8OBJS) $(SHL8LINKRESO) $(shell $(TYPE) /dev/null $(SHL8LIBS) | $(SED) s?$(ROUT)?$(PRJ)/$(ROUT)?g))
4068.IF "$(DEFLIB8NAME)"!=""	# do not have to include objs
4069	@noop $(assign DEF8OBJLIST:=$(shell $(TYPE) $(foreach,i,$(DEFLIB8NAME) $(SLB)/$(i).lib) | sed s?$(ROUT)?$(PRJ)/$(ROUT)?g))
4070	@noop $(foreach,i,$(DEF8OBJLIST) $(assign ALL8OBJLIST:=$(ALL8OBJLIST:s?$i??)))
4071.ENDIF			# "$(DEFLIB8NAME)"!=""
4072	@echo	--output-exp $(MISC)/$(@:b)_exp.o \\ >> $(MISC)/$(TARGET).$(@:b)_8.cmd
4073.IF "$(SHL8DEF)"!=""
4074	@echo	--input-def $(SHL8DEF) \\ >> $(MISC)/$(TARGET).$(@:b)_8.cmd
4075.ELSE
4076	@echo	$(SHL8VERSIONOBJ) $(SHL8DESCRIPTIONOBJ) \\ >> $(MISC)/$(TARGET).$(@:b)_8.cmd
4077.ENDIF
4078	@echo	$(ALL8OBJLIST) >> $(MISC)/$(TARGET).$(@:b)_8.cmd
4079	@echo $(LINK) $(LINKFLAGS) $(LINKFLAGSSHL) $(MINGWSSTDOBJ) -o $@ \
4080		$(STDOBJ) $(SHL8VERSIONOBJ) $(SHL8DESCRIPTIONOBJ) $(SHL8OBJS) $(SHL8LINKRESO) \
4081		`$(TYPE) /dev/null $(SHL8LIBS) | $(SED) s\#$(ROUT)\#$(PRJ)/$(ROUT)\#g` \
4082		-Wl,--exclude-libs,ALL,--start-group $(SHL8STDLIBS) -Wl,--end-group \
4083		$(SHL8STDSHL) $(STDSHL8) $(MISC)/$(@:b)_exp.o $(MINGWSSTDENDOBJ) \
4084		-Wl,-Map,$(MISC)/$(@:b).map >> $(MISC)/$(TARGET).$(@:b)_8.cmd
4085  .IF "$(VERBOSE)" == "TRUE"
4086	@$(TYPE)  $(MISC)/$(TARGET).$(@:b)_8.cmd
4087  .ENDIF
4088	@+source $(MISC)/$(TARGET).$(@:b)_8.cmd
4089.ELSE
4090.IF "$(linkinc)"==""
4091.IF "$(SHL8USE_EXPORTS)"!="name"
4092.IF "$(USE_DEFFILE)"!=""
4093	$(COMMAND_ECHO)$(SHL8LINKER) @$(mktmp \
4094		$(SHL8LINKFLAGS) \
4095		$(LINKFLAGSSHL) \
4096		$(SHL8STACK) $(SHL8BASEX)	\
4097		-out:$@ \
4098		-map:$(MISC)/$(@:b).map \
4099		-def:$(SHL8DEF) \
4100		$(USE_8IMPLIB) \
4101		$(STDOBJ) \
4102		$(SHL8VERSIONOBJ) $(SHL8OBJS) \
4103		$(SHL8LIBS) \
4104		$(SHL8STDLIBS) \
4105		$(SHL8STDSHL) $(STDSHL8) \
4106		$(SHL8LINKRES) \
4107	)
4108# double check if target was really written... still making sense?
4109    @@$(LS) $@
4110	@echo linking $@.manifest ...
4111.IF "$(VISTA_MANIFEST)"!=""
4112	$(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(MT) $(MTFLAGS) -manifest $@.manifest -manifest $(TRUSTED_MANIFEST_LOCATION)/trustedinfo.manifest -out:$@.tmanifest$(EMQ) $(FI)
4113	$(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(MT) $(MTFLAGS) -manifest $@.tmanifest -outputresource:$@$(EMQ);2 $(FI)
4114.ELSE
4115	$(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(MT) $(MTFLAGS) -manifest $@.manifest -outputresource:$@$(EMQ);2 $(FI)
4116.ENDIF # "$(VISTA_MANIFEST)"!=""
4117	$(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(RM:s/+//) $@.manifest $(FI)
4118	$(COMMAND_ECHO)$(IFEXIST) $@.tmanifest $(THEN) $(RM:s/+//) $@.tmanifest $(FI)
4119.ELSE			# "$(USE_DEFFILE)"!=""
4120	$(COMMAND_ECHO)$(SHL8LINKER) @$(mktmp	$(SHL8LINKFLAGS)			\
4121		$(LINKFLAGSSHL) $(SHL8BASEX)		\
4122		$(SHL8STACK) -out:$(SHL8TARGETN)	\
4123		-map:$(MISC)/$(@:B).map				\
4124		$(LB)/$(SHL8IMPLIB).exp				\
4125		$(STDOBJ)							\
4126		$(SHL8OBJS) $(SHL8VERSIONOBJ) \
4127		$(SHL8LIBS)                         \
4128		$(SHL8STDLIBS)                      \
4129		$(SHL8STDSHL) $(STDSHL8)                           \
4130		$(SHL8LINKRES) \
4131	)
4132# double check if target was really written... still making sense?
4133    @@$(LS) $@
4134	@echo linking $@.manifest ...
4135.IF "$(VISTA_MANIFEST)"!=""
4136	$(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(MT) $(MTFLAGS) -manifest $@.manifest -manifest $(TRUSTED_MANIFEST_LOCATION)/trustedinfo.manifest -out:$@.tmanifest$(EMQ) $(FI)
4137	$(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(MT) $(MTFLAGS) -manifest $@.tmanifest -outputresource:$@$(EMQ);2 $(FI)
4138.ELSE
4139	$(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(MT) $(MTFLAGS) -manifest $@.manifest -outputresource:$@$(EMQ);2 $(FI)
4140.ENDIF # "$(VISTA_MANIFEST)"!=""
4141	$(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(RM:s/+//) $@.manifest $(FI)
4142	$(COMMAND_ECHO)$(IFEXIST) $@.tmanifest $(THEN) $(RM:s/+//) $@.tmanifest $(FI)
4143.ENDIF			# "$(USE_DEFFILE)"!=""
4144.ELSE			# "$(SHL8USE_EXPORTS)"!="name"
4145	$(COMMAND_ECHO)$(SHL8LINKER) @$(mktmp	$(SHL8LINKFLAGS)			\
4146		$(LINKFLAGSSHL) $(SHL8BASEX)		\
4147		$(SHL8STACK) -out:$(SHL8TARGETN)	\
4148		-map:$(MISC)/$(@:B).map				\
4149		$(USE_8IMPLIB) \
4150		$(STDOBJ)							\
4151		$(SHL8OBJS) $(SHL8VERSIONOBJ))   \
4152		$(SHL8LINKLISTPARAM) \
4153		@$(mktmp $(SHL8STDLIBS)                      \
4154		$(SHL8STDSHL) $(STDSHL8)                           \
4155		$(SHL8LINKRES) \
4156	)
4157	@echo linking $@.manifest ...
4158.IF "$(VISTA_MANIFEST)"!=""
4159	$(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(MT) $(MTFLAGS) -manifest $@.manifest -manifest $(TRUSTED_MANIFEST_LOCATION)/trustedinfo.manifest -out:$@.tmanifest$(EMQ) $(FI)
4160	$(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(MT) $(MTFLAGS) -manifest $@.tmanifest -outputresource:$@$(EMQ);2 $(FI)
4161.ELSE
4162	$(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(MT) $(MTFLAGS) -manifest $@.manifest -outputresource:$@$(EMQ);2 $(FI)
4163.ENDIF # "$(VISTA_MANIFEST)"!=""
4164	$(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(RM:s/+//) $@.manifest $(FI)
4165	$(COMMAND_ECHO)$(IFEXIST) $@.tmanifest $(THEN) $(RM:s/+//) $@.tmanifest $(FI)
4166.ENDIF			# "$(SHL8USE_EXPORTS)"!="name"
4167.ELSE			# "$(linkinc)"==""
4168		$(COMMAND_ECHO)-$(RM) del $(MISC)/$(SHL8TARGET).lnk
4169		$(COMMAND_ECHO)-$(RM) $(MISC)/$(SHL8TARGET).lst
4170		$(COMMAND_ECHO)$(TYPE) $(mktmp \
4171		$(SHL8LINKFLAGS) \
4172		$(LINKFLAGSSHL) $(SHL8BASEX) \
4173		$(SHL8STACK) $(MAPFILE) \
4174		-out:$@ \
4175		$(LB)/$(SHL8IMPLIB).exp \
4176		$(STDOBJ) \
4177		$(SHL8OBJS) \
4178		$(SHL8STDLIBS) \
4179		$(SHL8STDSHL) $(STDSHL8) \
4180		$(SHL8LINKRES) \
4181		) >> $(MISC)/$(SHL8TARGET).lnk
4182		$(COMMAND_ECHO)$(TYPE) $(MISC)/$(SHL8TARGETN:b)_linkinc.ls  >> $(MISC)/$(SHL8TARGET).lnk
4183		$(COMMAND_ECHO)$(SHL8LINKER) @$(MISC)/$(SHL8TARGET).lnk
4184		@echo linking $@.manifest ...
4185.IF "$(VISTA_MANIFEST)"!=""
4186		$(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(MT) $(MTFLAGS) -manifest $@.manifest -manifest $(TRUSTED_MANIFEST_LOCATION)/trustedinfo.manifest -out:$@.tmanifest$(EMQ) $(FI)
4187		$(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(MT) $(MTFLAGS) -manifest $@.tmanifest -outputresource:$@$(EMQ);2 $(FI)
4188.ELSE
4189		$(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(MT) $(MTFLAGS) -manifest $@.manifest -outputresource:$@$(EMQ);2 $(FI)
4190.ENDIF # "$(VISTA_MANIFEST)"!=""
4191		$(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(RM:s/+//) $@.manifest $(FI)
4192		$(COMMAND_ECHO)$(IFEXIST) $@.tmanifest $(THEN) $(RM:s/+//) $@.tmanifest $(FI)
4193.ENDIF			# "$(linkinc)"==""
4194.ENDIF			# "$(COM)"=="GCC"
4195.ENDIF			# "$(GUI)" == "WNT"
4196.IF "$(GUI)"=="UNX"
4197.IF "$(OS)"=="MACOSX"
4198	@-$(RM) $(MISC)/$(@:b).list
4199	@-$(RM) $(MISC)/$(TARGET).$(@:b)_8.cmd
4200	@echo $(STDSLO) $(SHL8OBJS:s/.obj/.o/) \
4201	$(SHL8VERSIONOBJ) \
4202	`cat /dev/null $(SHL8LIBS) | sed s\#$(ROUT)\#$(PRJ)/$(ROUT)\#g` | tr -s " " "\n" > $(MISC)/$(@:b).list
4203	@echo -n $(SHL8LINKER) $(SHL8LINKFLAGS) $(SHL8VERSIONMAPPARA) $(LINKFLAGSSHL) -L$(PRJ)/$(ROUT)/lib $(SOLARLIB) -o $@ \
4204	$(SHL8STDLIBS) $(SHL8ARCHIVES) $(SHL8STDSHL) $(STDSHL8) -filelist $(MISC)/$(@:b).list $(LINKOUTPUT_FILTER) > $(MISC)/$(TARGET).$(@:b)_8.cmd
4205    @$(PERL) $(SOLARENV)/bin/macosx-dylib-link-list.pl \
4206        `cat $(MISC)/$(TARGET).$(@:b)_8.cmd` \
4207        >> $(MISC)/$(TARGET).$(@:b)_8.cmd
4208  .IF "$(VERBOSE)" == "TRUE"
4209	@cat $(MISC)/$(TARGET).$(@:b)_8.cmd
4210  .ENDIF
4211	@+source $(MISC)/$(TARGET).$(@:b)_8.cmd
4212    @$(PERL) $(SOLARENV)/bin/macosx-change-install-names.pl \
4213        shl $(SHL8RPATH) $@
4214.IF "$(SHL8CREATEJNILIB)"!=""
4215	@echo "Making:   " $(@:f).jnilib
4216	@macosx-create-bundle $@
4217.ENDIF          # "$(SHL8CREATEJNILIB)"!=""
4218.IF "$(UPDATER)"=="YES"
4219.IF "$(SHL8NOCHECK)"==""
4220	$(SOLARENV)/bin/checkdll.sh -L$(LB) -L$(SOLARLIBDIR) $(EXTRALIBPATHS8) $(SHL8TARGETN)
4221.ENDIF				# "$(SHL8NOCHECK)"!=""
4222.ENDIF
4223.ELSE			# "$(OS)"=="MACOSX"
4224	@-$(RM) $(MISC)/$(TARGET).$(@:b)_8.cmd
4225	@echo $(SHL8LINKER) $(SHL8LINKFLAGS) $(SHL8SONAME) $(LINKFLAGSSHL) $(SHL8VERSIONMAPPARA) -L$(PRJ)/$(ROUT)/lib $(SOLARLIB) $(STDSLO) $(SHL8OBJS:s/.obj/.o/) \
4226	$(SHL8VERSIONOBJ) -o $@ \
4227	`cat /dev/null $(SHL8LIBS) | tr -s " " "\n" | $(SED) s\#$(ROUT)\#$(PRJ)/$(ROUT)\#g` \
4228	$(SHL8STDLIBS) $(SHL8ARCHIVES) $(SHL8STDSHL) $(STDSHL8) $(LINKOUTPUT_FILTER) > $(MISC)/$(TARGET).$(@:b)_8.cmd
4229  .IF "$(VERBOSE)" == "TRUE"
4230	@cat $(MISC)/$(TARGET).$(@:b)_8.cmd
4231  .ENDIF
4232	@+source $(MISC)/$(TARGET).$(@:b)_8.cmd
4233.IF "$(UPDATER)"=="YES"
4234.IF "$(SHL8NOCHECK)"==""
4235	$(COMMAND_ECHO)-$(RM) $(SHL8TARGETN:d)check_$(SHL8TARGETN:f)
4236	$(COMMAND_ECHO)$(RENAME) $(SHL8TARGETN) $(SHL8TARGETN:d)check_$(SHL8TARGETN:f)
4237.IF "$(VERBOSE)"=="TRUE"
4238	$(COMMAND_ECHO)$(SOLARENV)/bin/checkdll.sh -L$(LB) -L$(SOLARLIBDIR) $(EXTRALIBPATHS8) $(SHL8TARGETN:d)check_$(SHL8TARGETN:f)
4239.ELSE
4240	$(COMMAND_ECHO)$(SOLARENV)/bin/checkdll.sh -L$(LB) -L$(SOLARLIBDIR) $(EXTRALIBPATHS8) -- -s $(SHL8TARGETN:d)check_$(SHL8TARGETN:f)
4241.ENDIF
4242.ENDIF				# "$(SHL8NOCHECK)"!=""
4243.ENDIF			# "$(UPDATER)"=="YES"
4244.ENDIF			# "$(OS)"=="MACOSX"
4245.IF "$(UNIXVERSIONNAMES)"!=""
4246	$(COMMAND_ECHO)$(RM) $(LB)/$(SHL8TARGETN:b)
4247	$(COMMAND_ECHO)cd $(LB) && ln -s $(SHL8TARGETN:f) $(SHL8TARGETN:b)
4248.ENDIF			# "$(UNIXVERSIONNAMES)"!=""
4249.IF "$(VERBOSE)" == "TRUE"
4250	@ls -l $@
4251.ENDIF
4252.ENDIF			# "$(GUI)" == "UNX"
4253
4254.IF "$(GUI)" == "OS2"
4255
4256.IF "$(SHL8DEFAULTRES)"!=""
4257	@+-$(RM) $(MISC)/$(SHL8DEFAULTRES:b).rc > $(NULLDEV)
4258.IF "$(SHL8ICON)" != ""
4259	@-+echo 1 ICON $(SHL8ICON) >> $(MISC)/$(SHL8DEFAULTRES:b).rc
4260.ENDIF
4261.IF "$(use_shl_versions)" != ""
4262.IF "$(SHL8ADD_VERINFO)"!=""
4263	@-+echo $(EMQ)#include $(EMQ)"$(SHL8ADD_VERINFO)$(EMQ)" >> $(MISC)/$(SHL8DEFAULTRES:b).rc
4264.ENDIF			# "$(SHL8ADD_VERINFO)"!=""
4265	@-+echo MENU 1 BEGIN END >> $(MISC)/$(SHL8DEFAULTRES:b).rc
4266#	@-+echo $(EMQ)RCDATA 1 { "Build string here" }$(EMQ) >> $(MISC)/$(SHL8DEFAULTRES:b).rc
4267.ENDIF			# "$(use_shl_versions)" != ""
4268# YD 04/07/06 seems null, confuses rc cli: -i $(SOLARTESDIR)
4269	$(COMMAND_ECHO)$(RC) -r -DOS2 $(INCLUDE) $(RCLINKFLAGS) $(MISC)/$(SHL8DEFAULTRES:b).rc
4270.ENDIF			# "$(SHL8DEFAULTRES)"!=""
4271
4272.IF "$(SHL8ALLRES)"!=""
4273	$(COMMAND_ECHO)+$(TYPE) $(SHL8ALLRES) > $(SHL8LINKRES)
4274.ENDIF			# "$(SHL8ALLRES)"!=""
4275
4276.IF "$(USE_DEFFILE)"!=""
4277
4278	$(COMMAND_ECHO)$(SHL8LINKER) $(SHL8LINKFLAGS) $(LINKFLAGSSHL) -o $@ \
4279		$(SHL8DEF) \
4280		$(STDOBJ) \
4281		-L$(LB) \
4282		-L$(SOLARVERSION)/$(INPATH)/lib \
4283		$(SHL8OBJS) $(SHL8VERSIONOBJ) \
4284		$(SHL8LIBS) \
4285		$(SHL8LINKRES) \
4286		$(SHL8STDLIBS) \
4287		$(SHL8STDSHL) $(STDSHL8)
4288
4289.ELSE			# "$(USE_DEFFILE)"!=""
4290
4291	$(COMMAND_ECHO)$(SHL8LINKER) $(SHL8LINKFLAGS)			\
4292		$(LINKFLAGSSHL) $(SHL8BASEX)		\
4293		$(SHL8STACK) -o $(SHL8TARGETN)	\
4294		$(SHL8DEF) \
4295		$(STDOBJ)							\
4296		-L$(LB) \
4297		-L$(SOLARVERSION)/$(INPATH)/lib \
4298		$(SHL8OBJS) $(SHL8VERSIONOBJ) \
4299		$(SHL8LIBS) \
4300		$(SHL8LINKRES) \
4301		$(SHL8STDLIBS) \
4302		$(SHL8STDSHL) $(STDSHL8)
4303
4304.ENDIF			# "$(USE_DEFFILE)"!=""
4305
4306	$(COMMAND_ECHO)+$(IMPLIB) -p256 $(IMPLIBFLAGS) $(SHL8IMPLIBN) $@
4307	$(COMMAND_ECHO)+$(IMPLIB) -p256 $(IMPLIBFLAGS) $(LB)/$(SHL8TARGET).lib $@
4308
4309.IF "$(SHL8TARGET8)" != "$(SHL8TARGET)"
4310	$(COMMAND_ECHO)+$(COPY) $@ $(@:d)$(SHL8TARGET8).dll
4311.ENDIF
4312
4313.ENDIF			# "$(GUI)" == "OS2"
4314
4315.ENDIF			# "$(SHL8TARGETN)"!=""
4316
4317# unroll begin
4318
4319.IF "$(SHL9TARGETN)"!=""
4320
4321.IF "$(OS)"=="AIX"
4322SHL9STDLIBS=
4323.ENDIF
4324
4325.IF "$(SHLLINKARCONLY)" != ""
4326SHL9STDLIBS=
4327STDSHL=
4328.ELSE
4329SHL9ARCHIVES=
4330.ENDIF
4331
4332# decide how to link
4333.IF "$(SHL9CODETYPE)"=="C"
4334SHL9LINKER=$(LINKC)
4335SHL9STDSHL=$(subst,CPPRUNTIME, $(STDSHL))
4336SHL9LINKFLAGS+=$(LINKCFLAGS)
4337.ELSE			# "$(SHL9CODETYPE)"=="C"
4338SHL9LINKER=$(LINK)
4339SHL9STDSHL=$(subst,CPPRUNTIME,$(STDLIBCPP) $(STDSHL))
4340SHL9LINKFLAGS+=$(LINKFLAGS)
4341.ENDIF			# "$(SHL9CODETYPE)"=="C"
4342
4343SHL9RPATH*=OOO
4344LINKFLAGSRUNPATH_$(SHL9RPATH)*=/ERROR:/Bad_SHL9RPATH_value
4345SHL9LINKFLAGS+=$(LINKFLAGSRUNPATH_$(SHL9RPATH))
4346
4347.IF "$(SHL9USE_EXPORTS)"==""
4348SHL9DEF*=$(MISC)/$(SHL9TARGET).def
4349.ENDIF			# "$(SHL9USE_EXPORTS)"==""
4350
4351EXTRALIBPATHS9=$(EXTRALIBPATHS)
4352.IF "$(UPDATER)"=="YES"
4353.IF "$(SHL9NOCHECK)"==""
4354.IF "$(SOLAR_STLLIBPATH)"!=""
4355EXTRALIBPATHS9+=-L$(SOLAR_STLLIBPATH)
4356.ENDIF
4357.ENDIF				# "$(SHL9NOCHECK)"!=""
4358.ENDIF
4359#+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
4360#+++++++++++    version object      ++++++++++++++++++++++++++++++++++++++++
4361#+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
4362
4363.IF "$(L10N_framework)"==""
4364.IF "$(VERSIONOBJ)"!=""
4365SHL9VERSIONOBJ:=$(VERSIONOBJ:d){$(subst,$(DLLPOSTFIX),_dflt $(SHL9TARGET))}$(VERSIONOBJ:f)
4366USE_VERSIONH:=$(INCCOM)/$(SHL9VERSIONOBJ:b).h
4367.IF "$(GUI)" == "UNX"
4368SHL9VERSIONOBJDEP:=$(VERSIONOBJ:d){$(subst,$(DLLPOSTFIX),_dflt $(SHL9TARGET))}$(VERSIONOBJ:f:s/.o/.obj/)
4369.ELSE           # "$(GUI)" == "UNX"
4370SHL9VERSIONOBJDEP:=$(VERSIONOBJ:d){$(subst,$(DLLPOSTFIX),_dflt $(SHL9TARGET))}$(VERSIONOBJ:f)
4371.ENDIF          # "$(GUI)" == "UNX"
4372$(MISC)/$(SHL9VERSIONOBJ:b).c : $(SOLARENV)/src/version.c $(INCCOM)/$(SHL9VERSIONOBJ:b).h
4373#    $(COPY) $(SOLARENV)/src/version.c $@
4374	$(COMMAND_ECHO)$(TYPE) $(SOLARENV)/src/version.c | $(SED) s/_version.h/$(SHL9VERSIONOBJ:b).h/ > $@
4375
4376.INIT : $(SHL9VERSIONOBJDEP)
4377.ENDIF			# "$(VERSIONOBJ)"!=""
4378.ENDIF
4379
4380.IF "$(GUI)" != "UNX"
4381.IF "$(GUI)" == "WNT" || "$(GUI)" == "OS2"
4382.IF "$(SHL9IMPLIB)" == ""
4383SHL9IMPLIB=i$(TARGET)_t9
4384.ENDIF			# "$(SHL9IMPLIB)" == ""
4385.IF "$(COM)" != "GCC"
4386USE_9IMPLIB=-implib:$(LB)/$(SHL9IMPLIB).lib
4387.ENDIF			# "$(COM)" != "GCC"
4388SHL9IMPLIBN=$(LB)/$(SHL9IMPLIB).lib
4389ALLTAR : $(SHL9IMPLIBN)
4390
4391.IF "$(USE_DEFFILE)"==""
4392USE_9IMPLIB_DEPS=$(LB)/$(SHL9IMPLIB).lib
4393.ENDIF			# "$(USE_DEFFILE)"==""
4394.ENDIF			# "$(GUI)" == "WNT" || "$(GUI)" == "OS2"
4395USE_SHL9DEF=$(SHL9DEF)
4396.ELSE			# "$(GUI)" != "UNX"
4397USE_SHL9DEF=
4398SHL9DEPN+:=$(SHL9DEPNU)
4399
4400.IF "$(SHL9VERSIONMAP)"==""
4401# to activate vmaps remove "#"
4402USE_SHL9VERSIONMAP=$(MISC)/$(SHL9TARGET).vmap
4403.ENDIF			# "$(SHL9VERSIONMAP)"==""
4404
4405.IF "$(USE_SHL9VERSIONMAP)"!=""
4406
4407.IF "$(SHL9FILTERFILE)"!=""
4408.IF "$(SHL9VERSIONMAP)"!=""
4409#eine von beiden ist zuviel
4410USE_SHL9VERSIONMAP=$(MISC)/$(SHL9TARGET).vmap
4411$(USE_SHL9VERSIONMAP) .PHONY:
4412	@echo -----------------------------
4413	@echo you should only use versionmap OR exportfile
4414	@echo -----------------------------
4415#	force_dmake_to_error
4416
4417.ENDIF			# "$(SHL9VERSIONMAP)"!=""
4418
4419SHL9VERSIONMAPPARA=$(LINKVERSIONMAPFLAG) $(USE_SHL9VERSIONMAP)
4420
4421$(USE_SHL9VERSIONMAP): \
4422					$(SHL9OBJS)\
4423					$(SHL9LIBS)\
4424					$(SHL9FILTERFILE)
4425	@$(RM) $@.dump
4426.IF "$(SHL9OBJS)"!=""
4427# dump remaining objects on the fly
4428.IF "$(OS)"=="MACOSX"
4429	@-nm $(SHL9OBJS:s/.obj/.o/) > $@.dump
4430.ELSE
4431	@nm $(SHL9OBJS:s/.obj/.o/) > $@.dump
4432.ENDIF
4433.ENDIF			# "$(SHL9OBJS)!"=""
4434	@$(TYPE) /dev/null $(SHL9LIBS:s/.lib/.dump/) >> $@.dump
4435	$(COMMAND_ECHO) $(PERL) $(SOLARENV)/bin/mapgen.pl -d $@.dump -s $(SHL9INTERFACE) -f $(SHL9FILTERFILE) -m $@
4436
4437.ELSE			# "$(SHL9FILTERFILE)"!=""
4438USE_SHL9VERSIONMAP=$(MISC)/$(SHL9TARGET).vmap
4439$(USE_SHL9VERSIONMAP) :
4440.IF "$(VERBOSE)" == "TRUE"
4441	@echo -----------------------------
4442	@echo SHL9FILTERFILE not set!
4443	@echo -----------------------------
4444	@$(TOUCH) $@
4445	@echo dummy file to keep the dependencies for later use.
4446.ELSE
4447	@$(TOUCH) $@
4448.ENDIF
4449#	force_dmake_to_error
4450.ENDIF			# "$(SHL9FILTERFILE)"!=""
4451.ELSE			# "$(USE_SHL9VERSIONMAP)"!=""
4452
4453#and now for the plain non-generic way...
4454.IF "$(SHL9VERSIONMAP)"!=""
4455USE_SHL9VERSIONMAP=$(MISC)/$(SHL9VERSIONMAP:b)_$(SHL9TARGET)$(SHL9VERSIONMAP:e)
4456SHL9VERSIONMAPPARA=$(LINKVERSIONMAPFLAG) $(USE_SHL9VERSIONMAP)
4457
4458.IF "$(OS)"=="MACOSX"
4459$(USE_SHL9VERSIONMAP): $(SHL9OBJS) $(SHL9LIBS)
4460.ENDIF
4461
4462# .ERRREMOVE is needed as a recipe line like "$(AWK) ... > $@" would create $@
4463# even if the $(AWK) part fails:
4464$(USE_SHL9VERSIONMAP) .ERRREMOVE: $(SHL9VERSIONMAP)
4465	@@-$(RM) -f $@
4466# The following files will only be generated and needed on Mac OS X as temporary files
4467# in order to generate exported symbols list out of Linux/Solaris map files
4468.IF "$(OS)"=="MACOSX"
4469	@-$(RM) -f $@.symregexp >& $(NULLDEV)
4470	@-$(RM) -f $@.expsymlist >& $(NULLDEV)
4471.ENDIF
4472# Its questionable if the following condition '.IF "$(COMID)"=="gcc3"' makes sense and what
4473# happens if somebody will change it in the future
4474.IF "$(COMID)"=="gcc3"
4475	$(COMMAND_ECHO) tr -d "\015" < $(SHL9VERSIONMAP) | $(AWK) -f $(SOLARENV)/bin/addsym.awk > $@
4476.ELIF "$(COMNAME)"=="sunpro5"
4477	$(COMMAND_ECHO) tr -d "\015" < $(SHL9VERSIONMAP) | $(GREP) -v $(IGNORE_SYMBOLS) > $@
4478.ELSE           # "$(COMID)"=="gcc3"
4479	$(COMMAND_ECHO) tr -d "\015" < $(SHL9VERSIONMAP) > $@
4480.ENDIF          # "$(COMID)"=="gcc3"
4481	@chmod a+w $@
4482# Mac OS X post-processing generate an exported symbols list from the generated map file
4483# for details on exported symbols list see man ld on Mac OS X
4484.IF "$(OS)"=="MACOSX"
4485	@-cat $@ | $(AWK) -f $(SOLARENV)/bin/unxmap-to-macosx-explist.awk | grep -v "\*\|?" > $@.exported-symbols
4486	@-cat $@ | $(AWK) -f $(SOLARENV)/bin/unxmap-to-macosx-explist.awk | grep "\*\|?" > $@.symbols-regexp
4487# Shared libraries will be build out of the *.obj files specified in SHL?OBJS and SHL?LIBS
4488# Extract RTTI symbols from all the objects that will be used to build a shared library
4489.IF "$(SHL9OBJS)"!=""
4490	-echo $(foreach,i,$(SHL9OBJS:s/.obj/.o/) $i) | xargs -n1 nm -gx | $(SOLARENV)/bin/addsym-macosx.sh $@.symbols-regexp $@.symbols-regexp.tmp >> $@.exported-symbols
4491.ENDIF
4492.IF "$(SHL9LIBS)"!=""
4493	$(COMMAND_ECHO)-$(TYPE) $(foreach,j,$(SHL9LIBS) $j) | $(SED) s\#$(ROUT)\#$(PRJ)/$(ROUT)\#g | xargs -n1 nm -gx | $(SOLARENV)/bin/addsym-macosx.sh $@.symbols-regexp $@.symbols-regexp.tmp >> $@.exported-symbols
4494.ENDIF
4495# overwrite the map file generate into the local output tree with the generated
4496# exported symbols list
4497	cp $@.exported-symbols $@
4498.ENDIF # .IF "$(OS)"=="MACOSX"
4499.ENDIF			# "$(SHL9VERSIONMAP)"!=""
4500.ENDIF			# "$(USE_SHL9VERSIONMAP)"!=""
4501.ENDIF			# "$(GUI)" != "UNX"
4502
4503.IF "$(UNIXVERSIONNAMES)"!=""
4504.IF "$(OS)"!="MACOSX"
4505.IF "$(GUI)"=="UNX"
4506SHL9SONAME=\"$(SONAME_SWITCH)$(SHL9TARGETN:f)\"
4507.ENDIF			# "$(GUI)"!="UNX"
4508.ENDIF			# "$(OS)"!="MACOSX"
4509.ENDIF			# "$(UNIXVERSIONNAMES)"!=""
4510
4511.IF "$(SHL9RES)"!=""
4512SHL9ALLRES+=$(SHL9RES)
4513SHL9LINKRES*=$(MISC)/$(SHL9TARGET).res
4514SHL9LINKRESO*=$(MISC)/$(SHL9TARGET)_res.o
4515.ENDIF			# "$(SHL9RES)"!=""
4516
4517.IF "$(SHL9DEFAULTRES)$(use_shl_versions)"!=""
4518SHL9DEFAULTRES*=$(MISC)/$(SHL9TARGET)_def.res
4519SHL9ALLRES+=$(SHL9DEFAULTRES)
4520SHL9LINKRES*=$(MISC)/$(SHL9TARGET).res
4521SHL9LINKRESO*=$(MISC)/$(SHL9TARGET)_res.o
4522.ENDIF			# "$(SHL9DEFAULTRES)$(use_shl_versions)"!=""
4523
4524#.IF "$(SHL9TARGETN)"!=""
4525
4526.IF "$(linkinc)"!=""
4527.IF "$(GUI)"=="WNT" || "$(GUI)" == "OS2"
4528.IF "$(SHL9LIBS)"!=""
4529$(MISC)/$(SHL9TARGET)_linkinc.ls .PHONY:
4530	@@-$(RM) $@
4531	$(COMMAND_ECHO)$(SED) -f $(SOLARENV)/bin/chrel.sed $(foreach,i,$(SHL9LIBS) $(i:s/.lib/.lin/)) >> $@
4532.ENDIF          # "$(SHL9LIBS)"!=""
4533.ENDIF
4534
4535LINKINCTARGETS+=$(MISC)/$(SHL9TARGETN:b)_linkinc.ls
4536$(SHL9TARGETN) : $(LINKINCTARGETS)
4537
4538.ELSE
4539.IF "$(SHL9USE_EXPORTS)"=="name"
4540.IF "$(GUI)"=="WNT" || "$(GUI)" == "OS2"
4541.IF "$(COM)"!="GCC"
4542.IF "$(SHL9LIBS)"!=""
4543SHL9LINKLIST=$(MISC)/$(SHL9TARGET)_link.lst
4544SHL9LINKLISTPARAM=@$(SHL9LINKLIST)
4545$(SHL9LINKLIST) : $(SHL9LIBS)
4546    @@-$(RM) $@
4547	$(COMMAND_ECHO)$(SED) -f $(SOLARENV)/bin/chrel.sed $(foreach,i,$(SHL9LIBS) $(i:s/.lib/.lin/)) >> $@
4548.ENDIF          # "$(SHL9LIBS)"!=""
4549.ENDIF          # "$(COM)"!="GCC"
4550.ENDIF
4551.ENDIF			# "$(SHL9USE_EXPORTS)"=="name"
4552
4553$(MISC)/%linkinc.ls:
4554	@echo . > $@
4555.ENDIF          # "$(linkinc)"!=""
4556
4557.IF "$(GUI)" == "OS2"
4558#21/02/2006 YD dll names must be 8.3, invoke fix script
4559#check osl/os2/module.c/osl_loadModule()
4560SHL9TARGET8=$(shell @fix_shl.cmd $(SHL9TARGET))
4561.ENDIF
4562
4563
4564$(SHL9TARGETN) : \
4565					$(SHL9OBJS)\
4566					$(SHL9LIBS)\
4567					$(USE_9IMPLIB_DEPS)\
4568					$(USE_SHL9DEF)\
4569					$(USE_SHL9VERSIONMAP)\
4570					$(SHL9RES)\
4571					$(SHL9DEPN) \
4572					$(SHL9LINKLIST)
4573	@echo "Making:   " $(@:f)
4574.IF "$(GUI)" == "WNT"
4575.IF "$(SHL9DEFAULTRES)"!=""
4576	@@-$(RM) $(MISC)/$(SHL9DEFAULTRES:b).rc
4577.IF "$(SHL9ICON)" != ""
4578	@echo 1 ICON $(SHL9ICON) >> $(MISC)/$(SHL9DEFAULTRES:b).rc
4579.ENDIF
4580.IF "$(use_shl_versions)" != ""
4581.IF "$(SHL9ADD_VERINFO)"!=""
4582	@echo $(EMQ)#include $(EMQ)"$(SHL9ADD_VERINFO)$(EMQ)" >> $(MISC)/$(SHL9DEFAULTRES:b).rc
4583.ELSE			# "$(SHL9ADD_VERINFO)"!=""
4584	@echo $(EMQ)#define ADDITIONAL_VERINFO1 >> $(MISC)/$(SHL9DEFAULTRES:b).rc
4585	@echo $(EMQ)#define ADDITIONAL_VERINFO2 >> $(MISC)/$(SHL9DEFAULTRES:b).rc
4586	@echo $(EMQ)#define ADDITIONAL_VERINFO3 >> $(MISC)/$(SHL9DEFAULTRES:b).rc
4587.ENDIF			# "$(SHL9ADD_VERINFO)"!=""
4588	@echo $(EMQ)#define VERVARIANT	$(BUILD) >> $(MISC)/$(SHL9DEFAULTRES:b).rc
4589	@echo $(EMQ)#define ORG_NAME	$(SHL9TARGET)$(DLLPOST) >> $(MISC)/$(SHL9DEFAULTRES:b).rc
4590	@echo $(EMQ)#define INTERNAL_NAME $(SHL9TARGET:b) >> $(MISC)/$(SHL9DEFAULTRES:b).rc
4591	@echo $(EMQ)#include $(EMQ)"shlinfo.rc$(EMQ)" >> $(MISC)/$(SHL9DEFAULTRES:b).rc
4592.ENDIF			# "$(use_shl_versions)" != ""
4593	$(COMMAND_ECHO)$(RC) -DWIN32 $(INCLUDE) $(RCLINKFLAGS) $(MISC)/$(SHL9DEFAULTRES:b).rc
4594.ENDIF			# "$(SHL9DEFAULTRES)"!=""
4595.IF "$(SHL9ALLRES)"!=""
4596	$(COMMAND_ECHO)$(TYPE) $(SHL9ALLRES) > $(SHL9LINKRES)
4597.IF "$(COM)"=="GCC"
4598	windres $(SHL9LINKRES) $(SHL9LINKRESO)
4599.ENDIF			# "$(COM)"=="GCC"
4600.ENDIF			# "$(SHL9ALLRES)"!=""
4601.IF "$(COM)"=="GCC"	# always have to call dlltool explicitly as ld cannot handle # comment in .def
4602	@echo dlltool --dllname $(SHL9TARGET)$(DLLPOST) \
4603		--kill-at \\ > $(MISC)/$(TARGET).$(@:b)_9.cmd
4604	@noop $(assign ALL9OBJLIST:=$(STDOBJ) $(SHL9OBJS) $(SHL9LINKRESO) $(shell $(TYPE) /dev/null $(SHL9LIBS) | $(SED) s?$(ROUT)?$(PRJ)/$(ROUT)?g))
4605.IF "$(DEFLIB9NAME)"!=""	# do not have to include objs
4606	@noop $(assign DEF9OBJLIST:=$(shell $(TYPE) $(foreach,i,$(DEFLIB9NAME) $(SLB)/$(i).lib) | sed s?$(ROUT)?$(PRJ)/$(ROUT)?g))
4607	@noop $(foreach,i,$(DEF9OBJLIST) $(assign ALL9OBJLIST:=$(ALL9OBJLIST:s?$i??)))
4608.ENDIF			# "$(DEFLIB9NAME)"!=""
4609	@echo	--output-exp $(MISC)/$(@:b)_exp.o \\ >> $(MISC)/$(TARGET).$(@:b)_9.cmd
4610.IF "$(SHL9DEF)"!=""
4611	@echo	--input-def $(SHL9DEF) \\ >> $(MISC)/$(TARGET).$(@:b)_9.cmd
4612.ELSE
4613	@echo	$(SHL9VERSIONOBJ) $(SHL9DESCRIPTIONOBJ) \\ >> $(MISC)/$(TARGET).$(@:b)_9.cmd
4614.ENDIF
4615	@echo	$(ALL9OBJLIST) >> $(MISC)/$(TARGET).$(@:b)_9.cmd
4616	@echo $(LINK) $(LINKFLAGS) $(LINKFLAGSSHL) $(MINGWSSTDOBJ) -o $@ \
4617		$(STDOBJ) $(SHL9VERSIONOBJ) $(SHL9DESCRIPTIONOBJ) $(SHL9OBJS) $(SHL9LINKRESO) \
4618		`$(TYPE) /dev/null $(SHL9LIBS) | $(SED) s\#$(ROUT)\#$(PRJ)/$(ROUT)\#g` \
4619		-Wl,--exclude-libs,ALL,--start-group $(SHL9STDLIBS) -Wl,--end-group \
4620		$(SHL9STDSHL) $(STDSHL9) $(MISC)/$(@:b)_exp.o $(MINGWSSTDENDOBJ) \
4621		-Wl,-Map,$(MISC)/$(@:b).map >> $(MISC)/$(TARGET).$(@:b)_9.cmd
4622  .IF "$(VERBOSE)" == "TRUE"
4623	@$(TYPE)  $(MISC)/$(TARGET).$(@:b)_9.cmd
4624  .ENDIF
4625	@+source $(MISC)/$(TARGET).$(@:b)_9.cmd
4626.ELSE
4627.IF "$(linkinc)"==""
4628.IF "$(SHL9USE_EXPORTS)"!="name"
4629.IF "$(USE_DEFFILE)"!=""
4630	$(COMMAND_ECHO)$(SHL9LINKER) @$(mktmp \
4631		$(SHL9LINKFLAGS) \
4632		$(LINKFLAGSSHL) \
4633		$(SHL9STACK) $(SHL9BASEX)	\
4634		-out:$@ \
4635		-map:$(MISC)/$(@:b).map \
4636		-def:$(SHL9DEF) \
4637		$(USE_9IMPLIB) \
4638		$(STDOBJ) \
4639		$(SHL9VERSIONOBJ) $(SHL9OBJS) \
4640		$(SHL9LIBS) \
4641		$(SHL9STDLIBS) \
4642		$(SHL9STDSHL) $(STDSHL9) \
4643		$(SHL9LINKRES) \
4644	)
4645# double check if target was really written... still making sense?
4646    @@$(LS) $@
4647	@echo linking $@.manifest ...
4648.IF "$(VISTA_MANIFEST)"!=""
4649	$(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(MT) $(MTFLAGS) -manifest $@.manifest -manifest $(TRUSTED_MANIFEST_LOCATION)/trustedinfo.manifest -out:$@.tmanifest$(EMQ) $(FI)
4650	$(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(MT) $(MTFLAGS) -manifest $@.tmanifest -outputresource:$@$(EMQ);2 $(FI)
4651.ELSE
4652	$(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(MT) $(MTFLAGS) -manifest $@.manifest -outputresource:$@$(EMQ);2 $(FI)
4653.ENDIF # "$(VISTA_MANIFEST)"!=""
4654	$(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(RM:s/+//) $@.manifest $(FI)
4655	$(COMMAND_ECHO)$(IFEXIST) $@.tmanifest $(THEN) $(RM:s/+//) $@.tmanifest $(FI)
4656.ELSE			# "$(USE_DEFFILE)"!=""
4657	$(COMMAND_ECHO)$(SHL9LINKER) @$(mktmp	$(SHL9LINKFLAGS)			\
4658		$(LINKFLAGSSHL) $(SHL9BASEX)		\
4659		$(SHL9STACK) -out:$(SHL9TARGETN)	\
4660		-map:$(MISC)/$(@:B).map				\
4661		$(LB)/$(SHL9IMPLIB).exp				\
4662		$(STDOBJ)							\
4663		$(SHL9OBJS) $(SHL9VERSIONOBJ) \
4664		$(SHL9LIBS)                         \
4665		$(SHL9STDLIBS)                      \
4666		$(SHL9STDSHL) $(STDSHL9)                           \
4667		$(SHL9LINKRES) \
4668	)
4669# double check if target was really written... still making sense?
4670    @@$(LS) $@
4671	@echo linking $@.manifest ...
4672.IF "$(VISTA_MANIFEST)"!=""
4673	$(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(MT) $(MTFLAGS) -manifest $@.manifest -manifest $(TRUSTED_MANIFEST_LOCATION)/trustedinfo.manifest -out:$@.tmanifest$(EMQ) $(FI)
4674	$(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(MT) $(MTFLAGS) -manifest $@.tmanifest -outputresource:$@$(EMQ);2 $(FI)
4675.ELSE
4676	$(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(MT) $(MTFLAGS) -manifest $@.manifest -outputresource:$@$(EMQ);2 $(FI)
4677.ENDIF # "$(VISTA_MANIFEST)"!=""
4678	$(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(RM:s/+//) $@.manifest $(FI)
4679	$(COMMAND_ECHO)$(IFEXIST) $@.tmanifest $(THEN) $(RM:s/+//) $@.tmanifest $(FI)
4680.ENDIF			# "$(USE_DEFFILE)"!=""
4681.ELSE			# "$(SHL9USE_EXPORTS)"!="name"
4682	$(COMMAND_ECHO)$(SHL9LINKER) @$(mktmp	$(SHL9LINKFLAGS)			\
4683		$(LINKFLAGSSHL) $(SHL9BASEX)		\
4684		$(SHL9STACK) -out:$(SHL9TARGETN)	\
4685		-map:$(MISC)/$(@:B).map				\
4686		$(USE_9IMPLIB) \
4687		$(STDOBJ)							\
4688		$(SHL9OBJS) $(SHL9VERSIONOBJ))   \
4689		$(SHL9LINKLISTPARAM) \
4690		@$(mktmp $(SHL9STDLIBS)                      \
4691		$(SHL9STDSHL) $(STDSHL9)                           \
4692		$(SHL9LINKRES) \
4693	)
4694	@echo linking $@.manifest ...
4695.IF "$(VISTA_MANIFEST)"!=""
4696	$(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(MT) $(MTFLAGS) -manifest $@.manifest -manifest $(TRUSTED_MANIFEST_LOCATION)/trustedinfo.manifest -out:$@.tmanifest$(EMQ) $(FI)
4697	$(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(MT) $(MTFLAGS) -manifest $@.tmanifest -outputresource:$@$(EMQ);2 $(FI)
4698.ELSE
4699	$(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(MT) $(MTFLAGS) -manifest $@.manifest -outputresource:$@$(EMQ);2 $(FI)
4700.ENDIF # "$(VISTA_MANIFEST)"!=""
4701	$(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(RM:s/+//) $@.manifest $(FI)
4702	$(COMMAND_ECHO)$(IFEXIST) $@.tmanifest $(THEN) $(RM:s/+//) $@.tmanifest $(FI)
4703.ENDIF			# "$(SHL9USE_EXPORTS)"!="name"
4704.ELSE			# "$(linkinc)"==""
4705		$(COMMAND_ECHO)-$(RM) del $(MISC)/$(SHL9TARGET).lnk
4706		$(COMMAND_ECHO)-$(RM) $(MISC)/$(SHL9TARGET).lst
4707		$(COMMAND_ECHO)$(TYPE) $(mktmp \
4708		$(SHL9LINKFLAGS) \
4709		$(LINKFLAGSSHL) $(SHL9BASEX) \
4710		$(SHL9STACK) $(MAPFILE) \
4711		-out:$@ \
4712		$(LB)/$(SHL9IMPLIB).exp \
4713		$(STDOBJ) \
4714		$(SHL9OBJS) \
4715		$(SHL9STDLIBS) \
4716		$(SHL9STDSHL) $(STDSHL9) \
4717		$(SHL9LINKRES) \
4718		) >> $(MISC)/$(SHL9TARGET).lnk
4719		$(COMMAND_ECHO)$(TYPE) $(MISC)/$(SHL9TARGETN:b)_linkinc.ls  >> $(MISC)/$(SHL9TARGET).lnk
4720		$(COMMAND_ECHO)$(SHL9LINKER) @$(MISC)/$(SHL9TARGET).lnk
4721		@echo linking $@.manifest ...
4722.IF "$(VISTA_MANIFEST)"!=""
4723		$(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(MT) $(MTFLAGS) -manifest $@.manifest -manifest $(TRUSTED_MANIFEST_LOCATION)/trustedinfo.manifest -out:$@.tmanifest$(EMQ) $(FI)
4724		$(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(MT) $(MTFLAGS) -manifest $@.tmanifest -outputresource:$@$(EMQ);2 $(FI)
4725.ELSE
4726		$(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(MT) $(MTFLAGS) -manifest $@.manifest -outputresource:$@$(EMQ);2 $(FI)
4727.ENDIF # "$(VISTA_MANIFEST)"!=""
4728		$(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(RM:s/+//) $@.manifest $(FI)
4729		$(COMMAND_ECHO)$(IFEXIST) $@.tmanifest $(THEN) $(RM:s/+//) $@.tmanifest $(FI)
4730.ENDIF			# "$(linkinc)"==""
4731.ENDIF			# "$(COM)"=="GCC"
4732.ENDIF			# "$(GUI)" == "WNT"
4733.IF "$(GUI)"=="UNX"
4734.IF "$(OS)"=="MACOSX"
4735	@-$(RM) $(MISC)/$(@:b).list
4736	@-$(RM) $(MISC)/$(TARGET).$(@:b)_9.cmd
4737	@echo $(STDSLO) $(SHL9OBJS:s/.obj/.o/) \
4738	$(SHL9VERSIONOBJ) \
4739	`cat /dev/null $(SHL9LIBS) | sed s\#$(ROUT)\#$(PRJ)/$(ROUT)\#g` | tr -s " " "\n" > $(MISC)/$(@:b).list
4740	@echo -n $(SHL9LINKER) $(SHL9LINKFLAGS) $(SHL9VERSIONMAPPARA) $(LINKFLAGSSHL) -L$(PRJ)/$(ROUT)/lib $(SOLARLIB) -o $@ \
4741	$(SHL9STDLIBS) $(SHL9ARCHIVES) $(SHL9STDSHL) $(STDSHL9) -filelist $(MISC)/$(@:b).list $(LINKOUTPUT_FILTER) > $(MISC)/$(TARGET).$(@:b)_9.cmd
4742    @$(PERL) $(SOLARENV)/bin/macosx-dylib-link-list.pl \
4743        `cat $(MISC)/$(TARGET).$(@:b)_9.cmd` \
4744        >> $(MISC)/$(TARGET).$(@:b)_9.cmd
4745  .IF "$(VERBOSE)" == "TRUE"
4746	@cat $(MISC)/$(TARGET).$(@:b)_9.cmd
4747  .ENDIF
4748	@+source $(MISC)/$(TARGET).$(@:b)_9.cmd
4749    @$(PERL) $(SOLARENV)/bin/macosx-change-install-names.pl \
4750        shl $(SHL9RPATH) $@
4751.IF "$(SHL9CREATEJNILIB)"!=""
4752	@echo "Making:   " $(@:f).jnilib
4753	@macosx-create-bundle $@
4754.ENDIF          # "$(SHL9CREATEJNILIB)"!=""
4755.IF "$(UPDATER)"=="YES"
4756.IF "$(SHL9NOCHECK)"==""
4757	$(SOLARENV)/bin/checkdll.sh -L$(LB) -L$(SOLARLIBDIR) $(EXTRALIBPATHS9) $(SHL9TARGETN)
4758.ENDIF				# "$(SHL9NOCHECK)"!=""
4759.ENDIF
4760.ELSE			# "$(OS)"=="MACOSX"
4761	@-$(RM) $(MISC)/$(TARGET).$(@:b)_9.cmd
4762	@echo $(SHL9LINKER) $(SHL9LINKFLAGS) $(SHL9SONAME) $(LINKFLAGSSHL) $(SHL9VERSIONMAPPARA) -L$(PRJ)/$(ROUT)/lib $(SOLARLIB) $(STDSLO) $(SHL9OBJS:s/.obj/.o/) \
4763	$(SHL9VERSIONOBJ) -o $@ \
4764	`cat /dev/null $(SHL9LIBS) | tr -s " " "\n" | $(SED) s\#$(ROUT)\#$(PRJ)/$(ROUT)\#g` \
4765	$(SHL9STDLIBS) $(SHL9ARCHIVES) $(SHL9STDSHL) $(STDSHL9) $(LINKOUTPUT_FILTER) > $(MISC)/$(TARGET).$(@:b)_9.cmd
4766  .IF "$(VERBOSE)" == "TRUE"
4767	@cat $(MISC)/$(TARGET).$(@:b)_9.cmd
4768  .ENDIF
4769	@+source $(MISC)/$(TARGET).$(@:b)_9.cmd
4770.IF "$(UPDATER)"=="YES"
4771.IF "$(SHL9NOCHECK)"==""
4772	$(COMMAND_ECHO)-$(RM) $(SHL9TARGETN:d)check_$(SHL9TARGETN:f)
4773	$(COMMAND_ECHO)$(RENAME) $(SHL9TARGETN) $(SHL9TARGETN:d)check_$(SHL9TARGETN:f)
4774.IF "$(VERBOSE)"=="TRUE"
4775	$(COMMAND_ECHO)$(SOLARENV)/bin/checkdll.sh -L$(LB) -L$(SOLARLIBDIR) $(EXTRALIBPATHS9) $(SHL9TARGETN:d)check_$(SHL9TARGETN:f)
4776.ELSE
4777	$(COMMAND_ECHO)$(SOLARENV)/bin/checkdll.sh -L$(LB) -L$(SOLARLIBDIR) $(EXTRALIBPATHS9) -- -s $(SHL9TARGETN:d)check_$(SHL9TARGETN:f)
4778.ENDIF
4779.ENDIF				# "$(SHL9NOCHECK)"!=""
4780.ENDIF			# "$(UPDATER)"=="YES"
4781.ENDIF			# "$(OS)"=="MACOSX"
4782.IF "$(UNIXVERSIONNAMES)"!=""
4783	$(COMMAND_ECHO)$(RM) $(LB)/$(SHL9TARGETN:b)
4784	$(COMMAND_ECHO)cd $(LB) && ln -s $(SHL9TARGETN:f) $(SHL9TARGETN:b)
4785.ENDIF			# "$(UNIXVERSIONNAMES)"!=""
4786.IF "$(VERBOSE)" == "TRUE"
4787	@ls -l $@
4788.ENDIF
4789.ENDIF			# "$(GUI)" == "UNX"
4790
4791.IF "$(GUI)" == "OS2"
4792
4793.IF "$(SHL9DEFAULTRES)"!=""
4794	@+-$(RM) $(MISC)/$(SHL9DEFAULTRES:b).rc > $(NULLDEV)
4795.IF "$(SHL9ICON)" != ""
4796	@-+echo 1 ICON $(SHL9ICON) >> $(MISC)/$(SHL9DEFAULTRES:b).rc
4797.ENDIF
4798.IF "$(use_shl_versions)" != ""
4799.IF "$(SHL9ADD_VERINFO)"!=""
4800	@-+echo $(EMQ)#include $(EMQ)"$(SHL9ADD_VERINFO)$(EMQ)" >> $(MISC)/$(SHL9DEFAULTRES:b).rc
4801.ENDIF			# "$(SHL9ADD_VERINFO)"!=""
4802	@-+echo MENU 1 BEGIN END >> $(MISC)/$(SHL9DEFAULTRES:b).rc
4803#	@-+echo $(EMQ)RCDATA 1 { "Build string here" }$(EMQ) >> $(MISC)/$(SHL9DEFAULTRES:b).rc
4804.ENDIF			# "$(use_shl_versions)" != ""
4805# YD 04/07/06 seems null, confuses rc cli: -i $(SOLARTESDIR)
4806	$(COMMAND_ECHO)$(RC) -r -DOS2 $(INCLUDE) $(RCLINKFLAGS) $(MISC)/$(SHL9DEFAULTRES:b).rc
4807.ENDIF			# "$(SHL9DEFAULTRES)"!=""
4808
4809.IF "$(SHL9ALLRES)"!=""
4810	$(COMMAND_ECHO)+$(TYPE) $(SHL9ALLRES) > $(SHL9LINKRES)
4811.ENDIF			# "$(SHL9ALLRES)"!=""
4812
4813.IF "$(USE_DEFFILE)"!=""
4814
4815	$(COMMAND_ECHO)$(SHL9LINKER) $(SHL9LINKFLAGS) $(LINKFLAGSSHL) -o $@ \
4816		$(SHL9DEF) \
4817		$(STDOBJ) \
4818		-L$(LB) \
4819		-L$(SOLARVERSION)/$(INPATH)/lib \
4820		$(SHL9OBJS) $(SHL9VERSIONOBJ) \
4821		$(SHL9LIBS) \
4822		$(SHL9LINKRES) \
4823		$(SHL9STDLIBS) \
4824		$(SHL9STDSHL) $(STDSHL9)
4825
4826.ELSE			# "$(USE_DEFFILE)"!=""
4827
4828	$(COMMAND_ECHO)$(SHL9LINKER) $(SHL9LINKFLAGS)			\
4829		$(LINKFLAGSSHL) $(SHL9BASEX)		\
4830		$(SHL9STACK) -o $(SHL9TARGETN)	\
4831		$(SHL9DEF) \
4832		$(STDOBJ)							\
4833		-L$(LB) \
4834		-L$(SOLARVERSION)/$(INPATH)/lib \
4835		$(SHL9OBJS) $(SHL9VERSIONOBJ) \
4836		$(SHL9LIBS) \
4837		$(SHL9LINKRES) \
4838		$(SHL9STDLIBS) \
4839		$(SHL9STDSHL) $(STDSHL9)
4840
4841.ENDIF			# "$(USE_DEFFILE)"!=""
4842
4843	$(COMMAND_ECHO)+$(IMPLIB) -p256 $(IMPLIBFLAGS) $(SHL9IMPLIBN) $@
4844	$(COMMAND_ECHO)+$(IMPLIB) -p256 $(IMPLIBFLAGS) $(LB)/$(SHL9TARGET).lib $@
4845
4846.IF "$(SHL9TARGET8)" != "$(SHL9TARGET)"
4847	$(COMMAND_ECHO)+$(COPY) $@ $(@:d)$(SHL9TARGET8).dll
4848.ENDIF
4849
4850.ENDIF			# "$(GUI)" == "OS2"
4851
4852.ENDIF			# "$(SHL9TARGETN)"!=""
4853
4854# unroll begin
4855
4856.IF "$(SHL10TARGETN)"!=""
4857
4858.IF "$(OS)"=="AIX"
4859SHL10STDLIBS=
4860.ENDIF
4861
4862.IF "$(SHLLINKARCONLY)" != ""
4863SHL10STDLIBS=
4864STDSHL=
4865.ELSE
4866SHL10ARCHIVES=
4867.ENDIF
4868
4869# decide how to link
4870.IF "$(SHL10CODETYPE)"=="C"
4871SHL10LINKER=$(LINKC)
4872SHL10STDSHL=$(subst,CPPRUNTIME, $(STDSHL))
4873SHL10LINKFLAGS+=$(LINKCFLAGS)
4874.ELSE			# "$(SHL10CODETYPE)"=="C"
4875SHL10LINKER=$(LINK)
4876SHL10STDSHL=$(subst,CPPRUNTIME,$(STDLIBCPP) $(STDSHL))
4877SHL10LINKFLAGS+=$(LINKFLAGS)
4878.ENDIF			# "$(SHL10CODETYPE)"=="C"
4879
4880SHL10RPATH*=OOO
4881LINKFLAGSRUNPATH_$(SHL10RPATH)*=/ERROR:/Bad_SHL10RPATH_value
4882SHL10LINKFLAGS+=$(LINKFLAGSRUNPATH_$(SHL10RPATH))
4883
4884.IF "$(SHL10USE_EXPORTS)"==""
4885SHL10DEF*=$(MISC)/$(SHL10TARGET).def
4886.ENDIF			# "$(SHL10USE_EXPORTS)"==""
4887
4888EXTRALIBPATHS10=$(EXTRALIBPATHS)
4889.IF "$(UPDATER)"=="YES"
4890.IF "$(SHL10NOCHECK)"==""
4891.IF "$(SOLAR_STLLIBPATH)"!=""
4892EXTRALIBPATHS10+=-L$(SOLAR_STLLIBPATH)
4893.ENDIF
4894.ENDIF				# "$(SHL10NOCHECK)"!=""
4895.ENDIF
4896#+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
4897#+++++++++++    version object      ++++++++++++++++++++++++++++++++++++++++
4898#+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
4899
4900.IF "$(L10N_framework)"==""
4901.IF "$(VERSIONOBJ)"!=""
4902SHL10VERSIONOBJ:=$(VERSIONOBJ:d){$(subst,$(DLLPOSTFIX),_dflt $(SHL10TARGET))}$(VERSIONOBJ:f)
4903USE_VERSIONH:=$(INCCOM)/$(SHL10VERSIONOBJ:b).h
4904.IF "$(GUI)" == "UNX"
4905SHL10VERSIONOBJDEP:=$(VERSIONOBJ:d){$(subst,$(DLLPOSTFIX),_dflt $(SHL10TARGET))}$(VERSIONOBJ:f:s/.o/.obj/)
4906.ELSE           # "$(GUI)" == "UNX"
4907SHL10VERSIONOBJDEP:=$(VERSIONOBJ:d){$(subst,$(DLLPOSTFIX),_dflt $(SHL10TARGET))}$(VERSIONOBJ:f)
4908.ENDIF          # "$(GUI)" == "UNX"
4909$(MISC)/$(SHL10VERSIONOBJ:b).c : $(SOLARENV)/src/version.c $(INCCOM)/$(SHL10VERSIONOBJ:b).h
4910#    $(COPY) $(SOLARENV)/src/version.c $@
4911	$(COMMAND_ECHO)$(TYPE) $(SOLARENV)/src/version.c | $(SED) s/_version.h/$(SHL10VERSIONOBJ:b).h/ > $@
4912
4913.INIT : $(SHL10VERSIONOBJDEP)
4914.ENDIF			# "$(VERSIONOBJ)"!=""
4915.ENDIF
4916
4917.IF "$(GUI)" != "UNX"
4918.IF "$(GUI)" == "WNT" || "$(GUI)" == "OS2"
4919.IF "$(SHL10IMPLIB)" == ""
4920SHL10IMPLIB=i$(TARGET)_t10
4921.ENDIF			# "$(SHL10IMPLIB)" == ""
4922.IF "$(COM)" != "GCC"
4923USE_10IMPLIB=-implib:$(LB)/$(SHL10IMPLIB).lib
4924.ENDIF			# "$(COM)" != "GCC"
4925SHL10IMPLIBN=$(LB)/$(SHL10IMPLIB).lib
4926ALLTAR : $(SHL10IMPLIBN)
4927
4928.IF "$(USE_DEFFILE)"==""
4929USE_10IMPLIB_DEPS=$(LB)/$(SHL10IMPLIB).lib
4930.ENDIF			# "$(USE_DEFFILE)"==""
4931.ENDIF			# "$(GUI)" == "WNT" || "$(GUI)" == "OS2"
4932USE_SHL10DEF=$(SHL10DEF)
4933.ELSE			# "$(GUI)" != "UNX"
4934USE_SHL10DEF=
4935SHL10DEPN+:=$(SHL10DEPNU)
4936
4937.IF "$(SHL10VERSIONMAP)"==""
4938# to activate vmaps remove "#"
4939USE_SHL10VERSIONMAP=$(MISC)/$(SHL10TARGET).vmap
4940.ENDIF			# "$(SHL10VERSIONMAP)"==""
4941
4942.IF "$(USE_SHL10VERSIONMAP)"!=""
4943
4944.IF "$(SHL10FILTERFILE)"!=""
4945.IF "$(SHL10VERSIONMAP)"!=""
4946#eine von beiden ist zuviel
4947USE_SHL10VERSIONMAP=$(MISC)/$(SHL10TARGET).vmap
4948$(USE_SHL10VERSIONMAP) .PHONY:
4949	@echo -----------------------------
4950	@echo you should only use versionmap OR exportfile
4951	@echo -----------------------------
4952#	force_dmake_to_error
4953
4954.ENDIF			# "$(SHL10VERSIONMAP)"!=""
4955
4956SHL10VERSIONMAPPARA=$(LINKVERSIONMAPFLAG) $(USE_SHL10VERSIONMAP)
4957
4958$(USE_SHL10VERSIONMAP): \
4959					$(SHL10OBJS)\
4960					$(SHL10LIBS)\
4961					$(SHL10FILTERFILE)
4962	@$(RM) $@.dump
4963.IF "$(SHL10OBJS)"!=""
4964# dump remaining objects on the fly
4965.IF "$(OS)"=="MACOSX"
4966	@-nm $(SHL10OBJS:s/.obj/.o/) > $@.dump
4967.ELSE
4968	@nm $(SHL10OBJS:s/.obj/.o/) > $@.dump
4969.ENDIF
4970.ENDIF			# "$(SHL10OBJS)!"=""
4971	@$(TYPE) /dev/null $(SHL10LIBS:s/.lib/.dump/) >> $@.dump
4972	$(COMMAND_ECHO) $(PERL) $(SOLARENV)/bin/mapgen.pl -d $@.dump -s $(SHL10INTERFACE) -f $(SHL10FILTERFILE) -m $@
4973
4974.ELSE			# "$(SHL10FILTERFILE)"!=""
4975USE_SHL10VERSIONMAP=$(MISC)/$(SHL10TARGET).vmap
4976$(USE_SHL10VERSIONMAP) :
4977.IF "$(VERBOSE)" == "TRUE"
4978	@echo -----------------------------
4979	@echo SHL10FILTERFILE not set!
4980	@echo -----------------------------
4981	@$(TOUCH) $@
4982	@echo dummy file to keep the dependencies for later use.
4983.ELSE
4984	@$(TOUCH) $@
4985.ENDIF
4986#	force_dmake_to_error
4987.ENDIF			# "$(SHL10FILTERFILE)"!=""
4988.ELSE			# "$(USE_SHL10VERSIONMAP)"!=""
4989
4990#and now for the plain non-generic way...
4991.IF "$(SHL10VERSIONMAP)"!=""
4992USE_SHL10VERSIONMAP=$(MISC)/$(SHL10VERSIONMAP:b)_$(SHL10TARGET)$(SHL10VERSIONMAP:e)
4993SHL10VERSIONMAPPARA=$(LINKVERSIONMAPFLAG) $(USE_SHL10VERSIONMAP)
4994
4995.IF "$(OS)"=="MACOSX"
4996$(USE_SHL10VERSIONMAP): $(SHL10OBJS) $(SHL10LIBS)
4997.ENDIF
4998
4999# .ERRREMOVE is needed as a recipe line like "$(AWK) ... > $@" would create $@
5000# even if the $(AWK) part fails:
5001$(USE_SHL10VERSIONMAP) .ERRREMOVE: $(SHL10VERSIONMAP)
5002	@@-$(RM) -f $@
5003# The following files will only be generated and needed on Mac OS X as temporary files
5004# in order to generate exported symbols list out of Linux/Solaris map files
5005.IF "$(OS)"=="MACOSX"
5006	@-$(RM) -f $@.symregexp >& $(NULLDEV)
5007	@-$(RM) -f $@.expsymlist >& $(NULLDEV)
5008.ENDIF
5009# Its questionable if the following condition '.IF "$(COMID)"=="gcc3"' makes sense and what
5010# happens if somebody will change it in the future
5011.IF "$(COMID)"=="gcc3"
5012	$(COMMAND_ECHO) tr -d "\015" < $(SHL10VERSIONMAP) | $(AWK) -f $(SOLARENV)/bin/addsym.awk > $@
5013.ELIF "$(COMNAME)"=="sunpro5"
5014	$(COMMAND_ECHO) tr -d "\015" < $(SHL10VERSIONMAP) | $(GREP) -v $(IGNORE_SYMBOLS) > $@
5015.ELSE           # "$(COMID)"=="gcc3"
5016	$(COMMAND_ECHO) tr -d "\015" < $(SHL10VERSIONMAP) > $@
5017.ENDIF          # "$(COMID)"=="gcc3"
5018	@chmod a+w $@
5019# Mac OS X post-processing generate an exported symbols list from the generated map file
5020# for details on exported symbols list see man ld on Mac OS X
5021.IF "$(OS)"=="MACOSX"
5022	@-cat $@ | $(AWK) -f $(SOLARENV)/bin/unxmap-to-macosx-explist.awk | grep -v "\*\|?" > $@.exported-symbols
5023	@-cat $@ | $(AWK) -f $(SOLARENV)/bin/unxmap-to-macosx-explist.awk | grep "\*\|?" > $@.symbols-regexp
5024# Shared libraries will be build out of the *.obj files specified in SHL?OBJS and SHL?LIBS
5025# Extract RTTI symbols from all the objects that will be used to build a shared library
5026.IF "$(SHL10OBJS)"!=""
5027	-echo $(foreach,i,$(SHL10OBJS:s/.obj/.o/) $i) | xargs -n1 nm -gx | $(SOLARENV)/bin/addsym-macosx.sh $@.symbols-regexp $@.symbols-regexp.tmp >> $@.exported-symbols
5028.ENDIF
5029.IF "$(SHL10LIBS)"!=""
5030	$(COMMAND_ECHO)-$(TYPE) $(foreach,j,$(SHL10LIBS) $j) | $(SED) s\#$(ROUT)\#$(PRJ)/$(ROUT)\#g | xargs -n1 nm -gx | $(SOLARENV)/bin/addsym-macosx.sh $@.symbols-regexp $@.symbols-regexp.tmp >> $@.exported-symbols
5031.ENDIF
5032# overwrite the map file generate into the local output tree with the generated
5033# exported symbols list
5034	cp $@.exported-symbols $@
5035.ENDIF # .IF "$(OS)"=="MACOSX"
5036.ENDIF			# "$(SHL10VERSIONMAP)"!=""
5037.ENDIF			# "$(USE_SHL10VERSIONMAP)"!=""
5038.ENDIF			# "$(GUI)" != "UNX"
5039
5040.IF "$(UNIXVERSIONNAMES)"!=""
5041.IF "$(OS)"!="MACOSX"
5042.IF "$(GUI)"=="UNX"
5043SHL10SONAME=\"$(SONAME_SWITCH)$(SHL10TARGETN:f)\"
5044.ENDIF			# "$(GUI)"!="UNX"
5045.ENDIF			# "$(OS)"!="MACOSX"
5046.ENDIF			# "$(UNIXVERSIONNAMES)"!=""
5047
5048.IF "$(SHL10RES)"!=""
5049SHL10ALLRES+=$(SHL10RES)
5050SHL10LINKRES*=$(MISC)/$(SHL10TARGET).res
5051SHL10LINKRESO*=$(MISC)/$(SHL10TARGET)_res.o
5052.ENDIF			# "$(SHL10RES)"!=""
5053
5054.IF "$(SHL10DEFAULTRES)$(use_shl_versions)"!=""
5055SHL10DEFAULTRES*=$(MISC)/$(SHL10TARGET)_def.res
5056SHL10ALLRES+=$(SHL10DEFAULTRES)
5057SHL10LINKRES*=$(MISC)/$(SHL10TARGET).res
5058SHL10LINKRESO*=$(MISC)/$(SHL10TARGET)_res.o
5059.ENDIF			# "$(SHL10DEFAULTRES)$(use_shl_versions)"!=""
5060
5061#.IF "$(SHL10TARGETN)"!=""
5062
5063.IF "$(linkinc)"!=""
5064.IF "$(GUI)"=="WNT" || "$(GUI)" == "OS2"
5065.IF "$(SHL10LIBS)"!=""
5066$(MISC)/$(SHL10TARGET)_linkinc.ls .PHONY:
5067	@@-$(RM) $@
5068	$(COMMAND_ECHO)$(SED) -f $(SOLARENV)/bin/chrel.sed $(foreach,i,$(SHL10LIBS) $(i:s/.lib/.lin/)) >> $@
5069.ENDIF          # "$(SHL10LIBS)"!=""
5070.ENDIF
5071
5072LINKINCTARGETS+=$(MISC)/$(SHL10TARGETN:b)_linkinc.ls
5073$(SHL10TARGETN) : $(LINKINCTARGETS)
5074
5075.ELSE
5076.IF "$(SHL10USE_EXPORTS)"=="name"
5077.IF "$(GUI)"=="WNT" || "$(GUI)" == "OS2"
5078.IF "$(COM)"!="GCC"
5079.IF "$(SHL10LIBS)"!=""
5080SHL10LINKLIST=$(MISC)/$(SHL10TARGET)_link.lst
5081SHL10LINKLISTPARAM=@$(SHL10LINKLIST)
5082$(SHL10LINKLIST) : $(SHL10LIBS)
5083    @@-$(RM) $@
5084	$(COMMAND_ECHO)$(SED) -f $(SOLARENV)/bin/chrel.sed $(foreach,i,$(SHL10LIBS) $(i:s/.lib/.lin/)) >> $@
5085.ENDIF          # "$(SHL10LIBS)"!=""
5086.ENDIF          # "$(COM)"!="GCC"
5087.ENDIF
5088.ENDIF			# "$(SHL10USE_EXPORTS)"=="name"
5089
5090$(MISC)/%linkinc.ls:
5091	@echo . > $@
5092.ENDIF          # "$(linkinc)"!=""
5093
5094.IF "$(GUI)" == "OS2"
5095#21/02/2006 YD dll names must be 8.3, invoke fix script
5096#check osl/os2/module.c/osl_loadModule()
5097SHL10TARGET8=$(shell @fix_shl.cmd $(SHL10TARGET))
5098.ENDIF
5099
5100
5101$(SHL10TARGETN) : \
5102					$(SHL10OBJS)\
5103					$(SHL10LIBS)\
5104					$(USE_10IMPLIB_DEPS)\
5105					$(USE_SHL10DEF)\
5106					$(USE_SHL10VERSIONMAP)\
5107					$(SHL10RES)\
5108					$(SHL10DEPN) \
5109					$(SHL10LINKLIST)
5110	@echo "Making:   " $(@:f)
5111.IF "$(GUI)" == "WNT"
5112.IF "$(SHL10DEFAULTRES)"!=""
5113	@@-$(RM) $(MISC)/$(SHL10DEFAULTRES:b).rc
5114.IF "$(SHL10ICON)" != ""
5115	@echo 1 ICON $(SHL10ICON) >> $(MISC)/$(SHL10DEFAULTRES:b).rc
5116.ENDIF
5117.IF "$(use_shl_versions)" != ""
5118.IF "$(SHL10ADD_VERINFO)"!=""
5119	@echo $(EMQ)#include $(EMQ)"$(SHL10ADD_VERINFO)$(EMQ)" >> $(MISC)/$(SHL10DEFAULTRES:b).rc
5120.ELSE			# "$(SHL10ADD_VERINFO)"!=""
5121	@echo $(EMQ)#define ADDITIONAL_VERINFO1 >> $(MISC)/$(SHL10DEFAULTRES:b).rc
5122	@echo $(EMQ)#define ADDITIONAL_VERINFO2 >> $(MISC)/$(SHL10DEFAULTRES:b).rc
5123	@echo $(EMQ)#define ADDITIONAL_VERINFO3 >> $(MISC)/$(SHL10DEFAULTRES:b).rc
5124.ENDIF			# "$(SHL10ADD_VERINFO)"!=""
5125	@echo $(EMQ)#define VERVARIANT	$(BUILD) >> $(MISC)/$(SHL10DEFAULTRES:b).rc
5126	@echo $(EMQ)#define ORG_NAME	$(SHL10TARGET)$(DLLPOST) >> $(MISC)/$(SHL10DEFAULTRES:b).rc
5127	@echo $(EMQ)#define INTERNAL_NAME $(SHL10TARGET:b) >> $(MISC)/$(SHL10DEFAULTRES:b).rc
5128	@echo $(EMQ)#include $(EMQ)"shlinfo.rc$(EMQ)" >> $(MISC)/$(SHL10DEFAULTRES:b).rc
5129.ENDIF			# "$(use_shl_versions)" != ""
5130	$(COMMAND_ECHO)$(RC) -DWIN32 $(INCLUDE) $(RCLINKFLAGS) $(MISC)/$(SHL10DEFAULTRES:b).rc
5131.ENDIF			# "$(SHL10DEFAULTRES)"!=""
5132.IF "$(SHL10ALLRES)"!=""
5133	$(COMMAND_ECHO)$(TYPE) $(SHL10ALLRES) > $(SHL10LINKRES)
5134.IF "$(COM)"=="GCC"
5135	windres $(SHL10LINKRES) $(SHL10LINKRESO)
5136.ENDIF			# "$(COM)"=="GCC"
5137.ENDIF			# "$(SHL10ALLRES)"!=""
5138.IF "$(COM)"=="GCC"	# always have to call dlltool explicitly as ld cannot handle # comment in .def
5139	@echo dlltool --dllname $(SHL10TARGET)$(DLLPOST) \
5140		--kill-at \\ > $(MISC)/$(TARGET).$(@:b)_10.cmd
5141	@noop $(assign ALL10OBJLIST:=$(STDOBJ) $(SHL10OBJS) $(SHL10LINKRESO) $(shell $(TYPE) /dev/null $(SHL10LIBS) | $(SED) s?$(ROUT)?$(PRJ)/$(ROUT)?g))
5142.IF "$(DEFLIB10NAME)"!=""	# do not have to include objs
5143	@noop $(assign DEF10OBJLIST:=$(shell $(TYPE) $(foreach,i,$(DEFLIB10NAME) $(SLB)/$(i).lib) | sed s?$(ROUT)?$(PRJ)/$(ROUT)?g))
5144	@noop $(foreach,i,$(DEF10OBJLIST) $(assign ALL10OBJLIST:=$(ALL10OBJLIST:s?$i??)))
5145.ENDIF			# "$(DEFLIB10NAME)"!=""
5146	@echo	--output-exp $(MISC)/$(@:b)_exp.o \\ >> $(MISC)/$(TARGET).$(@:b)_10.cmd
5147.IF "$(SHL10DEF)"!=""
5148	@echo	--input-def $(SHL10DEF) \\ >> $(MISC)/$(TARGET).$(@:b)_10.cmd
5149.ELSE
5150	@echo	$(SHL10VERSIONOBJ) $(SHL10DESCRIPTIONOBJ) \\ >> $(MISC)/$(TARGET).$(@:b)_10.cmd
5151.ENDIF
5152	@echo	$(ALL10OBJLIST) >> $(MISC)/$(TARGET).$(@:b)_10.cmd
5153	@echo $(LINK) $(LINKFLAGS) $(LINKFLAGSSHL) $(MINGWSSTDOBJ) -o $@ \
5154		$(STDOBJ) $(SHL10VERSIONOBJ) $(SHL10DESCRIPTIONOBJ) $(SHL10OBJS) $(SHL10LINKRESO) \
5155		`$(TYPE) /dev/null $(SHL10LIBS) | $(SED) s\#$(ROUT)\#$(PRJ)/$(ROUT)\#g` \
5156		-Wl,--exclude-libs,ALL,--start-group $(SHL10STDLIBS) -Wl,--end-group \
5157		$(SHL10STDSHL) $(STDSHL10) $(MISC)/$(@:b)_exp.o $(MINGWSSTDENDOBJ) \
5158		-Wl,-Map,$(MISC)/$(@:b).map >> $(MISC)/$(TARGET).$(@:b)_10.cmd
5159  .IF "$(VERBOSE)" == "TRUE"
5160	@$(TYPE)  $(MISC)/$(TARGET).$(@:b)_10.cmd
5161  .ENDIF
5162	@+source $(MISC)/$(TARGET).$(@:b)_10.cmd
5163.ELSE
5164.IF "$(linkinc)"==""
5165.IF "$(SHL10USE_EXPORTS)"!="name"
5166.IF "$(USE_DEFFILE)"!=""
5167	$(COMMAND_ECHO)$(SHL10LINKER) @$(mktmp \
5168		$(SHL10LINKFLAGS) \
5169		$(LINKFLAGSSHL) \
5170		$(SHL10STACK) $(SHL10BASEX)	\
5171		-out:$@ \
5172		-map:$(MISC)/$(@:b).map \
5173		-def:$(SHL10DEF) \
5174		$(USE_10IMPLIB) \
5175		$(STDOBJ) \
5176		$(SHL10VERSIONOBJ) $(SHL10OBJS) \
5177		$(SHL10LIBS) \
5178		$(SHL10STDLIBS) \
5179		$(SHL10STDSHL) $(STDSHL10) \
5180		$(SHL10LINKRES) \
5181	)
5182# double check if target was really written... still making sense?
5183    @@$(LS) $@
5184	@echo linking $@.manifest ...
5185.IF "$(VISTA_MANIFEST)"!=""
5186	$(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(MT) $(MTFLAGS) -manifest $@.manifest -manifest $(TRUSTED_MANIFEST_LOCATION)/trustedinfo.manifest -out:$@.tmanifest$(EMQ) $(FI)
5187	$(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(MT) $(MTFLAGS) -manifest $@.tmanifest -outputresource:$@$(EMQ);2 $(FI)
5188.ELSE
5189	$(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(MT) $(MTFLAGS) -manifest $@.manifest -outputresource:$@$(EMQ);2 $(FI)
5190.ENDIF # "$(VISTA_MANIFEST)"!=""
5191	$(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(RM:s/+//) $@.manifest $(FI)
5192	$(COMMAND_ECHO)$(IFEXIST) $@.tmanifest $(THEN) $(RM:s/+//) $@.tmanifest $(FI)
5193.ELSE			# "$(USE_DEFFILE)"!=""
5194	$(COMMAND_ECHO)$(SHL10LINKER) @$(mktmp	$(SHL10LINKFLAGS)			\
5195		$(LINKFLAGSSHL) $(SHL10BASEX)		\
5196		$(SHL10STACK) -out:$(SHL10TARGETN)	\
5197		-map:$(MISC)/$(@:B).map				\
5198		$(LB)/$(SHL10IMPLIB).exp				\
5199		$(STDOBJ)							\
5200		$(SHL10OBJS) $(SHL10VERSIONOBJ) \
5201		$(SHL10LIBS)                         \
5202		$(SHL10STDLIBS)                      \
5203		$(SHL10STDSHL) $(STDSHL10)                           \
5204		$(SHL10LINKRES) \
5205	)
5206# double check if target was really written... still making sense?
5207    @@$(LS) $@
5208	@echo linking $@.manifest ...
5209.IF "$(VISTA_MANIFEST)"!=""
5210	$(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(MT) $(MTFLAGS) -manifest $@.manifest -manifest $(TRUSTED_MANIFEST_LOCATION)/trustedinfo.manifest -out:$@.tmanifest$(EMQ) $(FI)
5211	$(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(MT) $(MTFLAGS) -manifest $@.tmanifest -outputresource:$@$(EMQ);2 $(FI)
5212.ELSE
5213	$(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(MT) $(MTFLAGS) -manifest $@.manifest -outputresource:$@$(EMQ);2 $(FI)
5214.ENDIF # "$(VISTA_MANIFEST)"!=""
5215	$(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(RM:s/+//) $@.manifest $(FI)
5216	$(COMMAND_ECHO)$(IFEXIST) $@.tmanifest $(THEN) $(RM:s/+//) $@.tmanifest $(FI)
5217.ENDIF			# "$(USE_DEFFILE)"!=""
5218.ELSE			# "$(SHL10USE_EXPORTS)"!="name"
5219	$(COMMAND_ECHO)$(SHL10LINKER) @$(mktmp	$(SHL10LINKFLAGS)			\
5220		$(LINKFLAGSSHL) $(SHL10BASEX)		\
5221		$(SHL10STACK) -out:$(SHL10TARGETN)	\
5222		-map:$(MISC)/$(@:B).map				\
5223		$(USE_10IMPLIB) \
5224		$(STDOBJ)							\
5225		$(SHL10OBJS) $(SHL10VERSIONOBJ))   \
5226		$(SHL10LINKLISTPARAM) \
5227		@$(mktmp $(SHL10STDLIBS)                      \
5228		$(SHL10STDSHL) $(STDSHL10)                           \
5229		$(SHL10LINKRES) \
5230	)
5231	@echo linking $@.manifest ...
5232.IF "$(VISTA_MANIFEST)"!=""
5233	$(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(MT) $(MTFLAGS) -manifest $@.manifest -manifest $(TRUSTED_MANIFEST_LOCATION)/trustedinfo.manifest -out:$@.tmanifest$(EMQ) $(FI)
5234	$(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(MT) $(MTFLAGS) -manifest $@.tmanifest -outputresource:$@$(EMQ);2 $(FI)
5235.ELSE
5236	$(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(MT) $(MTFLAGS) -manifest $@.manifest -outputresource:$@$(EMQ);2 $(FI)
5237.ENDIF # "$(VISTA_MANIFEST)"!=""
5238	$(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(RM:s/+//) $@.manifest $(FI)
5239	$(COMMAND_ECHO)$(IFEXIST) $@.tmanifest $(THEN) $(RM:s/+//) $@.tmanifest $(FI)
5240.ENDIF			# "$(SHL10USE_EXPORTS)"!="name"
5241.ELSE			# "$(linkinc)"==""
5242		$(COMMAND_ECHO)-$(RM) del $(MISC)/$(SHL10TARGET).lnk
5243		$(COMMAND_ECHO)-$(RM) $(MISC)/$(SHL10TARGET).lst
5244		$(COMMAND_ECHO)$(TYPE) $(mktmp \
5245		$(SHL10LINKFLAGS) \
5246		$(LINKFLAGSSHL) $(SHL10BASEX) \
5247		$(SHL10STACK) $(MAPFILE) \
5248		-out:$@ \
5249		$(LB)/$(SHL10IMPLIB).exp \
5250		$(STDOBJ) \
5251		$(SHL10OBJS) \
5252		$(SHL10STDLIBS) \
5253		$(SHL10STDSHL) $(STDSHL10) \
5254		$(SHL10LINKRES) \
5255		) >> $(MISC)/$(SHL10TARGET).lnk
5256		$(COMMAND_ECHO)$(TYPE) $(MISC)/$(SHL10TARGETN:b)_linkinc.ls  >> $(MISC)/$(SHL10TARGET).lnk
5257		$(COMMAND_ECHO)$(SHL10LINKER) @$(MISC)/$(SHL10TARGET).lnk
5258		@echo linking $@.manifest ...
5259.IF "$(VISTA_MANIFEST)"!=""
5260		$(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(MT) $(MTFLAGS) -manifest $@.manifest -manifest $(TRUSTED_MANIFEST_LOCATION)/trustedinfo.manifest -out:$@.tmanifest$(EMQ) $(FI)
5261		$(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(MT) $(MTFLAGS) -manifest $@.tmanifest -outputresource:$@$(EMQ);2 $(FI)
5262.ELSE
5263		$(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(MT) $(MTFLAGS) -manifest $@.manifest -outputresource:$@$(EMQ);2 $(FI)
5264.ENDIF # "$(VISTA_MANIFEST)"!=""
5265		$(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(RM:s/+//) $@.manifest $(FI)
5266		$(COMMAND_ECHO)$(IFEXIST) $@.tmanifest $(THEN) $(RM:s/+//) $@.tmanifest $(FI)
5267.ENDIF			# "$(linkinc)"==""
5268.ENDIF			# "$(COM)"=="GCC"
5269.ENDIF			# "$(GUI)" == "WNT"
5270.IF "$(GUI)"=="UNX"
5271.IF "$(OS)"=="MACOSX"
5272	@-$(RM) $(MISC)/$(@:b).list
5273	@-$(RM) $(MISC)/$(TARGET).$(@:b)_10.cmd
5274	@echo $(STDSLO) $(SHL10OBJS:s/.obj/.o/) \
5275	$(SHL10VERSIONOBJ) \
5276	`cat /dev/null $(SHL10LIBS) | sed s\#$(ROUT)\#$(PRJ)/$(ROUT)\#g` | tr -s " " "\n" > $(MISC)/$(@:b).list
5277	@echo -n $(SHL10LINKER) $(SHL10LINKFLAGS) $(SHL10VERSIONMAPPARA) $(LINKFLAGSSHL) -L$(PRJ)/$(ROUT)/lib $(SOLARLIB) -o $@ \
5278	$(SHL10STDLIBS) $(SHL10ARCHIVES) $(SHL10STDSHL) $(STDSHL10) -filelist $(MISC)/$(@:b).list $(LINKOUTPUT_FILTER) > $(MISC)/$(TARGET).$(@:b)_10.cmd
5279    @$(PERL) $(SOLARENV)/bin/macosx-dylib-link-list.pl \
5280        `cat $(MISC)/$(TARGET).$(@:b)_10.cmd` \
5281        >> $(MISC)/$(TARGET).$(@:b)_10.cmd
5282  .IF "$(VERBOSE)" == "TRUE"
5283	@cat $(MISC)/$(TARGET).$(@:b)_10.cmd
5284  .ENDIF
5285	@+source $(MISC)/$(TARGET).$(@:b)_10.cmd
5286    @$(PERL) $(SOLARENV)/bin/macosx-change-install-names.pl \
5287        shl $(SHL10RPATH) $@
5288.IF "$(SHL10CREATEJNILIB)"!=""
5289	@echo "Making:   " $(@:f).jnilib
5290	@macosx-create-bundle $@
5291.ENDIF          # "$(SHL10CREATEJNILIB)"!=""
5292.IF "$(UPDATER)"=="YES"
5293.IF "$(SHL10NOCHECK)"==""
5294	$(SOLARENV)/bin/checkdll.sh -L$(LB) -L$(SOLARLIBDIR) $(EXTRALIBPATHS10) $(SHL10TARGETN)
5295.ENDIF				# "$(SHL10NOCHECK)"!=""
5296.ENDIF
5297.ELSE			# "$(OS)"=="MACOSX"
5298	@-$(RM) $(MISC)/$(TARGET).$(@:b)_10.cmd
5299	@echo $(SHL10LINKER) $(SHL10LINKFLAGS) $(SHL10SONAME) $(LINKFLAGSSHL) $(SHL10VERSIONMAPPARA) -L$(PRJ)/$(ROUT)/lib $(SOLARLIB) $(STDSLO) $(SHL10OBJS:s/.obj/.o/) \
5300	$(SHL10VERSIONOBJ) -o $@ \
5301	`cat /dev/null $(SHL10LIBS) | tr -s " " "\n" | $(SED) s\#$(ROUT)\#$(PRJ)/$(ROUT)\#g` \
5302	$(SHL10STDLIBS) $(SHL10ARCHIVES) $(SHL10STDSHL) $(STDSHL10) $(LINKOUTPUT_FILTER) > $(MISC)/$(TARGET).$(@:b)_10.cmd
5303  .IF "$(VERBOSE)" == "TRUE"
5304	@cat $(MISC)/$(TARGET).$(@:b)_10.cmd
5305  .ENDIF
5306	@+source $(MISC)/$(TARGET).$(@:b)_10.cmd
5307.IF "$(UPDATER)"=="YES"
5308.IF "$(SHL10NOCHECK)"==""
5309	$(COMMAND_ECHO)-$(RM) $(SHL10TARGETN:d)check_$(SHL10TARGETN:f)
5310	$(COMMAND_ECHO)$(RENAME) $(SHL10TARGETN) $(SHL10TARGETN:d)check_$(SHL10TARGETN:f)
5311.IF "$(VERBOSE)"=="TRUE"
5312	$(COMMAND_ECHO)$(SOLARENV)/bin/checkdll.sh -L$(LB) -L$(SOLARLIBDIR) $(EXTRALIBPATHS10) $(SHL10TARGETN:d)check_$(SHL10TARGETN:f)
5313.ELSE
5314	$(COMMAND_ECHO)$(SOLARENV)/bin/checkdll.sh -L$(LB) -L$(SOLARLIBDIR) $(EXTRALIBPATHS10) -- -s $(SHL10TARGETN:d)check_$(SHL10TARGETN:f)
5315.ENDIF
5316.ENDIF				# "$(SHL10NOCHECK)"!=""
5317.ENDIF			# "$(UPDATER)"=="YES"
5318.ENDIF			# "$(OS)"=="MACOSX"
5319.IF "$(UNIXVERSIONNAMES)"!=""
5320	$(COMMAND_ECHO)$(RM) $(LB)/$(SHL10TARGETN:b)
5321	$(COMMAND_ECHO)cd $(LB) && ln -s $(SHL10TARGETN:f) $(SHL10TARGETN:b)
5322.ENDIF			# "$(UNIXVERSIONNAMES)"!=""
5323.IF "$(VERBOSE)" == "TRUE"
5324	@ls -l $@
5325.ENDIF
5326.ENDIF			# "$(GUI)" == "UNX"
5327
5328.IF "$(GUI)" == "OS2"
5329
5330.IF "$(SHL10DEFAULTRES)"!=""
5331	@+-$(RM) $(MISC)/$(SHL10DEFAULTRES:b).rc > $(NULLDEV)
5332.IF "$(SHL10ICON)" != ""
5333	@-+echo 1 ICON $(SHL10ICON) >> $(MISC)/$(SHL10DEFAULTRES:b).rc
5334.ENDIF
5335.IF "$(use_shl_versions)" != ""
5336.IF "$(SHL10ADD_VERINFO)"!=""
5337	@-+echo $(EMQ)#include $(EMQ)"$(SHL10ADD_VERINFO)$(EMQ)" >> $(MISC)/$(SHL10DEFAULTRES:b).rc
5338.ENDIF			# "$(SHL10ADD_VERINFO)"!=""
5339	@-+echo MENU 1 BEGIN END >> $(MISC)/$(SHL10DEFAULTRES:b).rc
5340#	@-+echo $(EMQ)RCDATA 1 { "Build string here" }$(EMQ) >> $(MISC)/$(SHL10DEFAULTRES:b).rc
5341.ENDIF			# "$(use_shl_versions)" != ""
5342# YD 04/07/06 seems null, confuses rc cli: -i $(SOLARTESDIR)
5343	$(COMMAND_ECHO)$(RC) -r -DOS2 $(INCLUDE) $(RCLINKFLAGS) $(MISC)/$(SHL10DEFAULTRES:b).rc
5344.ENDIF			# "$(SHL10DEFAULTRES)"!=""
5345
5346.IF "$(SHL10ALLRES)"!=""
5347	$(COMMAND_ECHO)+$(TYPE) $(SHL10ALLRES) > $(SHL10LINKRES)
5348.ENDIF			# "$(SHL10ALLRES)"!=""
5349
5350.IF "$(USE_DEFFILE)"!=""
5351
5352	$(COMMAND_ECHO)$(SHL10LINKER) $(SHL10LINKFLAGS) $(LINKFLAGSSHL) -o $@ \
5353		$(SHL10DEF) \
5354		$(STDOBJ) \
5355		-L$(LB) \
5356		-L$(SOLARVERSION)/$(INPATH)/lib \
5357		$(SHL10OBJS) $(SHL10VERSIONOBJ) \
5358		$(SHL10LIBS) \
5359		$(SHL10LINKRES) \
5360		$(SHL10STDLIBS) \
5361		$(SHL10STDSHL) $(STDSHL10)
5362
5363.ELSE			# "$(USE_DEFFILE)"!=""
5364
5365	$(COMMAND_ECHO)$(SHL10LINKER) $(SHL10LINKFLAGS)			\
5366		$(LINKFLAGSSHL) $(SHL10BASEX)		\
5367		$(SHL10STACK) -o $(SHL10TARGETN)	\
5368		$(SHL10DEF) \
5369		$(STDOBJ)							\
5370		-L$(LB) \
5371		-L$(SOLARVERSION)/$(INPATH)/lib \
5372		$(SHL10OBJS) $(SHL10VERSIONOBJ) \
5373		$(SHL10LIBS) \
5374		$(SHL10LINKRES) \
5375		$(SHL10STDLIBS) \
5376		$(SHL10STDSHL) $(STDSHL10)
5377
5378.ENDIF			# "$(USE_DEFFILE)"!=""
5379
5380	$(COMMAND_ECHO)+$(IMPLIB) -p256 $(IMPLIBFLAGS) $(SHL10IMPLIBN) $@
5381	$(COMMAND_ECHO)+$(IMPLIB) -p256 $(IMPLIBFLAGS) $(LB)/$(SHL10TARGET).lib $@
5382
5383.IF "$(SHL10TARGET8)" != "$(SHL10TARGET)"
5384	$(COMMAND_ECHO)+$(COPY) $@ $(@:d)$(SHL10TARGET8).dll
5385.ENDIF
5386
5387.ENDIF			# "$(GUI)" == "OS2"
5388
5389.ENDIF			# "$(SHL10TARGETN)"!=""
5390
5391# unroll begin
5392
5393.IF "$(SHL1IMPLIBN)" != ""
5394
5395.IF "$(UPDATER)"=="YES"
5396USELIB1DEPN+=$(SHL1LIBS)
5397.ELSE
5398.ENDIF
5399
5400.IF "$(USE_DEFFILE)"!=""
5401USE_SHL1TARGET=$(SHL1TARGETN)
5402.ENDIF
5403
5404.IF "$(GUI)" != "UNX"
5405$(SHL1IMPLIBN):	\
5406					$(SHL1DEF) \
5407					$(USE_SHL1TARGET) \
5408					$(USELIB1DEPN) \
5409					$(USELIBDEPN)
5410.ELSE
5411$(SHL1IMPLIBN):	\
5412					$(SHL1LIBS)
5413.ENDIF
5414	@echo "Making:   " $(@:f)
5415.IF "$(GUI)" == "WNT"
5416.IF "$(COM)"=="GCC"
5417	@echo no ImportLibs on mingw
5418	@-$(RM) $@
5419	@$(TOUCH) $@
5420.ELSE			# "$(COM)=="GCC"
5421# bei use_deffile implib von linker erstellt
5422.IF "$(USE_DEFFILE)"==""
5423	$(IMPLIB) $(IMPLIBFLAGS) @$(mktmp -out:$(SHL1IMPLIBN) \
5424	-def:$(SHL1DEF) )
5425.ELSE			# "$(USE_DEFFILE)==""
5426	@echo build of $(SHL1TARGETN) creates $@
5427	@$(TOUCH) $@
5428.ENDIF			# "$(USE_DEFFILE)==""
5429.ENDIF			# "$(COM)"=="GCC"
5430
5431.ELIF "$(GUI)" == "OS2"
5432
5433# touch creates an empty file, but this is not good for emxomfar, so
5434# create a dummy lib here
5435	$(COMMAND_ECHO)-$(LIBMGR) $(LIBFLAGS) $@ $(SHL1VERSIONOBJ)
5436	+@echo build of $(SHL1TARGETN) creates $@
5437
5438.ELSE
5439	@echo no ImportLibs on Mac and *ix
5440	@-$(RM) $@
5441	@$(TOUCH) $@
5442.ENDIF
5443.ENDIF
5444
5445# unroll begin
5446
5447.IF "$(SHL2IMPLIBN)" != ""
5448
5449.IF "$(UPDATER)"=="YES"
5450USELIB2DEPN+=$(SHL2LIBS)
5451.ELSE
5452.ENDIF
5453
5454.IF "$(USE_DEFFILE)"!=""
5455USE_SHL2TARGET=$(SHL2TARGETN)
5456.ENDIF
5457
5458.IF "$(GUI)" != "UNX"
5459$(SHL2IMPLIBN):	\
5460					$(SHL2DEF) \
5461					$(USE_SHL2TARGET) \
5462					$(USELIB2DEPN) \
5463					$(USELIBDEPN)
5464.ELSE
5465$(SHL2IMPLIBN):	\
5466					$(SHL2LIBS)
5467.ENDIF
5468	@echo "Making:   " $(@:f)
5469.IF "$(GUI)" == "WNT"
5470.IF "$(COM)"=="GCC"
5471	@echo no ImportLibs on mingw
5472	@-$(RM) $@
5473	@$(TOUCH) $@
5474.ELSE			# "$(COM)=="GCC"
5475# bei use_deffile implib von linker erstellt
5476.IF "$(USE_DEFFILE)"==""
5477	$(IMPLIB) $(IMPLIBFLAGS) @$(mktmp -out:$(SHL2IMPLIBN) \
5478	-def:$(SHL2DEF) )
5479.ELSE			# "$(USE_DEFFILE)==""
5480	@echo build of $(SHL2TARGETN) creates $@
5481	@$(TOUCH) $@
5482.ENDIF			# "$(USE_DEFFILE)==""
5483.ENDIF			# "$(COM)"=="GCC"
5484
5485.ELIF "$(GUI)" == "OS2"
5486
5487# touch creates an empty file, but this is not good for emxomfar, so
5488# create a dummy lib here
5489	$(COMMAND_ECHO)-$(LIBMGR) $(LIBFLAGS) $@ $(SHL2VERSIONOBJ)
5490	+@echo build of $(SHL2TARGETN) creates $@
5491
5492.ELSE
5493	@echo no ImportLibs on Mac and *ix
5494	@-$(RM) $@
5495	@$(TOUCH) $@
5496.ENDIF
5497.ENDIF
5498
5499# unroll begin
5500
5501.IF "$(SHL3IMPLIBN)" != ""
5502
5503.IF "$(UPDATER)"=="YES"
5504USELIB3DEPN+=$(SHL3LIBS)
5505.ELSE
5506.ENDIF
5507
5508.IF "$(USE_DEFFILE)"!=""
5509USE_SHL3TARGET=$(SHL3TARGETN)
5510.ENDIF
5511
5512.IF "$(GUI)" != "UNX"
5513$(SHL3IMPLIBN):	\
5514					$(SHL3DEF) \
5515					$(USE_SHL3TARGET) \
5516					$(USELIB3DEPN) \
5517					$(USELIBDEPN)
5518.ELSE
5519$(SHL3IMPLIBN):	\
5520					$(SHL3LIBS)
5521.ENDIF
5522	@echo "Making:   " $(@:f)
5523.IF "$(GUI)" == "WNT"
5524.IF "$(COM)"=="GCC"
5525	@echo no ImportLibs on mingw
5526	@-$(RM) $@
5527	@$(TOUCH) $@
5528.ELSE			# "$(COM)=="GCC"
5529# bei use_deffile implib von linker erstellt
5530.IF "$(USE_DEFFILE)"==""
5531	$(IMPLIB) $(IMPLIBFLAGS) @$(mktmp -out:$(SHL3IMPLIBN) \
5532	-def:$(SHL3DEF) )
5533.ELSE			# "$(USE_DEFFILE)==""
5534	@echo build of $(SHL3TARGETN) creates $@
5535	@$(TOUCH) $@
5536.ENDIF			# "$(USE_DEFFILE)==""
5537.ENDIF			# "$(COM)"=="GCC"
5538
5539.ELIF "$(GUI)" == "OS2"
5540
5541# touch creates an empty file, but this is not good for emxomfar, so
5542# create a dummy lib here
5543	$(COMMAND_ECHO)-$(LIBMGR) $(LIBFLAGS) $@ $(SHL3VERSIONOBJ)
5544	+@echo build of $(SHL3TARGETN) creates $@
5545
5546.ELSE
5547	@echo no ImportLibs on Mac and *ix
5548	@-$(RM) $@
5549	@$(TOUCH) $@
5550.ENDIF
5551.ENDIF
5552
5553# unroll begin
5554
5555.IF "$(SHL4IMPLIBN)" != ""
5556
5557.IF "$(UPDATER)"=="YES"
5558USELIB4DEPN+=$(SHL4LIBS)
5559.ELSE
5560.ENDIF
5561
5562.IF "$(USE_DEFFILE)"!=""
5563USE_SHL4TARGET=$(SHL4TARGETN)
5564.ENDIF
5565
5566.IF "$(GUI)" != "UNX"
5567$(SHL4IMPLIBN):	\
5568					$(SHL4DEF) \
5569					$(USE_SHL4TARGET) \
5570					$(USELIB4DEPN) \
5571					$(USELIBDEPN)
5572.ELSE
5573$(SHL4IMPLIBN):	\
5574					$(SHL4LIBS)
5575.ENDIF
5576	@echo "Making:   " $(@:f)
5577.IF "$(GUI)" == "WNT"
5578.IF "$(COM)"=="GCC"
5579	@echo no ImportLibs on mingw
5580	@-$(RM) $@
5581	@$(TOUCH) $@
5582.ELSE			# "$(COM)=="GCC"
5583# bei use_deffile implib von linker erstellt
5584.IF "$(USE_DEFFILE)"==""
5585	$(IMPLIB) $(IMPLIBFLAGS) @$(mktmp -out:$(SHL4IMPLIBN) \
5586	-def:$(SHL4DEF) )
5587.ELSE			# "$(USE_DEFFILE)==""
5588	@echo build of $(SHL4TARGETN) creates $@
5589	@$(TOUCH) $@
5590.ENDIF			# "$(USE_DEFFILE)==""
5591.ENDIF			# "$(COM)"=="GCC"
5592
5593.ELIF "$(GUI)" == "OS2"
5594
5595# touch creates an empty file, but this is not good for emxomfar, so
5596# create a dummy lib here
5597	$(COMMAND_ECHO)-$(LIBMGR) $(LIBFLAGS) $@ $(SHL4VERSIONOBJ)
5598	+@echo build of $(SHL4TARGETN) creates $@
5599
5600.ELSE
5601	@echo no ImportLibs on Mac and *ix
5602	@-$(RM) $@
5603	@$(TOUCH) $@
5604.ENDIF
5605.ENDIF
5606
5607# unroll begin
5608
5609.IF "$(SHL5IMPLIBN)" != ""
5610
5611.IF "$(UPDATER)"=="YES"
5612USELIB5DEPN+=$(SHL5LIBS)
5613.ELSE
5614.ENDIF
5615
5616.IF "$(USE_DEFFILE)"!=""
5617USE_SHL5TARGET=$(SHL5TARGETN)
5618.ENDIF
5619
5620.IF "$(GUI)" != "UNX"
5621$(SHL5IMPLIBN):	\
5622					$(SHL5DEF) \
5623					$(USE_SHL5TARGET) \
5624					$(USELIB5DEPN) \
5625					$(USELIBDEPN)
5626.ELSE
5627$(SHL5IMPLIBN):	\
5628					$(SHL5LIBS)
5629.ENDIF
5630	@echo "Making:   " $(@:f)
5631.IF "$(GUI)" == "WNT"
5632.IF "$(COM)"=="GCC"
5633	@echo no ImportLibs on mingw
5634	@-$(RM) $@
5635	@$(TOUCH) $@
5636.ELSE			# "$(COM)=="GCC"
5637# bei use_deffile implib von linker erstellt
5638.IF "$(USE_DEFFILE)"==""
5639	$(IMPLIB) $(IMPLIBFLAGS) @$(mktmp -out:$(SHL5IMPLIBN) \
5640	-def:$(SHL5DEF) )
5641.ELSE			# "$(USE_DEFFILE)==""
5642	@echo build of $(SHL5TARGETN) creates $@
5643	@$(TOUCH) $@
5644.ENDIF			# "$(USE_DEFFILE)==""
5645.ENDIF			# "$(COM)"=="GCC"
5646
5647.ELIF "$(GUI)" == "OS2"
5648
5649# touch creates an empty file, but this is not good for emxomfar, so
5650# create a dummy lib here
5651	$(COMMAND_ECHO)-$(LIBMGR) $(LIBFLAGS) $@ $(SHL5VERSIONOBJ)
5652	+@echo build of $(SHL5TARGETN) creates $@
5653
5654.ELSE
5655	@echo no ImportLibs on Mac and *ix
5656	@-$(RM) $@
5657	@$(TOUCH) $@
5658.ENDIF
5659.ENDIF
5660
5661# unroll begin
5662
5663.IF "$(SHL6IMPLIBN)" != ""
5664
5665.IF "$(UPDATER)"=="YES"
5666USELIB6DEPN+=$(SHL6LIBS)
5667.ELSE
5668.ENDIF
5669
5670.IF "$(USE_DEFFILE)"!=""
5671USE_SHL6TARGET=$(SHL6TARGETN)
5672.ENDIF
5673
5674.IF "$(GUI)" != "UNX"
5675$(SHL6IMPLIBN):	\
5676					$(SHL6DEF) \
5677					$(USE_SHL6TARGET) \
5678					$(USELIB6DEPN) \
5679					$(USELIBDEPN)
5680.ELSE
5681$(SHL6IMPLIBN):	\
5682					$(SHL6LIBS)
5683.ENDIF
5684	@echo "Making:   " $(@:f)
5685.IF "$(GUI)" == "WNT"
5686.IF "$(COM)"=="GCC"
5687	@echo no ImportLibs on mingw
5688	@-$(RM) $@
5689	@$(TOUCH) $@
5690.ELSE			# "$(COM)=="GCC"
5691# bei use_deffile implib von linker erstellt
5692.IF "$(USE_DEFFILE)"==""
5693	$(IMPLIB) $(IMPLIBFLAGS) @$(mktmp -out:$(SHL6IMPLIBN) \
5694	-def:$(SHL6DEF) )
5695.ELSE			# "$(USE_DEFFILE)==""
5696	@echo build of $(SHL6TARGETN) creates $@
5697	@$(TOUCH) $@
5698.ENDIF			# "$(USE_DEFFILE)==""
5699.ENDIF			# "$(COM)"=="GCC"
5700
5701.ELIF "$(GUI)" == "OS2"
5702
5703# touch creates an empty file, but this is not good for emxomfar, so
5704# create a dummy lib here
5705	$(COMMAND_ECHO)-$(LIBMGR) $(LIBFLAGS) $@ $(SHL6VERSIONOBJ)
5706	+@echo build of $(SHL6TARGETN) creates $@
5707
5708.ELSE
5709	@echo no ImportLibs on Mac and *ix
5710	@-$(RM) $@
5711	@$(TOUCH) $@
5712.ENDIF
5713.ENDIF
5714
5715# unroll begin
5716
5717.IF "$(SHL7IMPLIBN)" != ""
5718
5719.IF "$(UPDATER)"=="YES"
5720USELIB7DEPN+=$(SHL7LIBS)
5721.ELSE
5722.ENDIF
5723
5724.IF "$(USE_DEFFILE)"!=""
5725USE_SHL7TARGET=$(SHL7TARGETN)
5726.ENDIF
5727
5728.IF "$(GUI)" != "UNX"
5729$(SHL7IMPLIBN):	\
5730					$(SHL7DEF) \
5731					$(USE_SHL7TARGET) \
5732					$(USELIB7DEPN) \
5733					$(USELIBDEPN)
5734.ELSE
5735$(SHL7IMPLIBN):	\
5736					$(SHL7LIBS)
5737.ENDIF
5738	@echo "Making:   " $(@:f)
5739.IF "$(GUI)" == "WNT"
5740.IF "$(COM)"=="GCC"
5741	@echo no ImportLibs on mingw
5742	@-$(RM) $@
5743	@$(TOUCH) $@
5744.ELSE			# "$(COM)=="GCC"
5745# bei use_deffile implib von linker erstellt
5746.IF "$(USE_DEFFILE)"==""
5747	$(IMPLIB) $(IMPLIBFLAGS) @$(mktmp -out:$(SHL7IMPLIBN) \
5748	-def:$(SHL7DEF) )
5749.ELSE			# "$(USE_DEFFILE)==""
5750	@echo build of $(SHL7TARGETN) creates $@
5751	@$(TOUCH) $@
5752.ENDIF			# "$(USE_DEFFILE)==""
5753.ENDIF			# "$(COM)"=="GCC"
5754
5755.ELIF "$(GUI)" == "OS2"
5756
5757# touch creates an empty file, but this is not good for emxomfar, so
5758# create a dummy lib here
5759	$(COMMAND_ECHO)-$(LIBMGR) $(LIBFLAGS) $@ $(SHL7VERSIONOBJ)
5760	+@echo build of $(SHL7TARGETN) creates $@
5761
5762.ELSE
5763	@echo no ImportLibs on Mac and *ix
5764	@-$(RM) $@
5765	@$(TOUCH) $@
5766.ENDIF
5767.ENDIF
5768
5769# unroll begin
5770
5771.IF "$(SHL8IMPLIBN)" != ""
5772
5773.IF "$(UPDATER)"=="YES"
5774USELIB8DEPN+=$(SHL8LIBS)
5775.ELSE
5776.ENDIF
5777
5778.IF "$(USE_DEFFILE)"!=""
5779USE_SHL8TARGET=$(SHL8TARGETN)
5780.ENDIF
5781
5782.IF "$(GUI)" != "UNX"
5783$(SHL8IMPLIBN):	\
5784					$(SHL8DEF) \
5785					$(USE_SHL8TARGET) \
5786					$(USELIB8DEPN) \
5787					$(USELIBDEPN)
5788.ELSE
5789$(SHL8IMPLIBN):	\
5790					$(SHL8LIBS)
5791.ENDIF
5792	@echo "Making:   " $(@:f)
5793.IF "$(GUI)" == "WNT"
5794.IF "$(COM)"=="GCC"
5795	@echo no ImportLibs on mingw
5796	@-$(RM) $@
5797	@$(TOUCH) $@
5798.ELSE			# "$(COM)=="GCC"
5799# bei use_deffile implib von linker erstellt
5800.IF "$(USE_DEFFILE)"==""
5801	$(IMPLIB) $(IMPLIBFLAGS) @$(mktmp -out:$(SHL8IMPLIBN) \
5802	-def:$(SHL8DEF) )
5803.ELSE			# "$(USE_DEFFILE)==""
5804	@echo build of $(SHL8TARGETN) creates $@
5805	@$(TOUCH) $@
5806.ENDIF			# "$(USE_DEFFILE)==""
5807.ENDIF			# "$(COM)"=="GCC"
5808
5809.ELIF "$(GUI)" == "OS2"
5810
5811# touch creates an empty file, but this is not good for emxomfar, so
5812# create a dummy lib here
5813	$(COMMAND_ECHO)-$(LIBMGR) $(LIBFLAGS) $@ $(SHL8VERSIONOBJ)
5814	+@echo build of $(SHL8TARGETN) creates $@
5815
5816.ELSE
5817	@echo no ImportLibs on Mac and *ix
5818	@-$(RM) $@
5819	@$(TOUCH) $@
5820.ENDIF
5821.ENDIF
5822
5823# unroll begin
5824
5825.IF "$(SHL9IMPLIBN)" != ""
5826
5827.IF "$(UPDATER)"=="YES"
5828USELIB9DEPN+=$(SHL9LIBS)
5829.ELSE
5830.ENDIF
5831
5832.IF "$(USE_DEFFILE)"!=""
5833USE_SHL9TARGET=$(SHL9TARGETN)
5834.ENDIF
5835
5836.IF "$(GUI)" != "UNX"
5837$(SHL9IMPLIBN):	\
5838					$(SHL9DEF) \
5839					$(USE_SHL9TARGET) \
5840					$(USELIB9DEPN) \
5841					$(USELIBDEPN)
5842.ELSE
5843$(SHL9IMPLIBN):	\
5844					$(SHL9LIBS)
5845.ENDIF
5846	@echo "Making:   " $(@:f)
5847.IF "$(GUI)" == "WNT"
5848.IF "$(COM)"=="GCC"
5849	@echo no ImportLibs on mingw
5850	@-$(RM) $@
5851	@$(TOUCH) $@
5852.ELSE			# "$(COM)=="GCC"
5853# bei use_deffile implib von linker erstellt
5854.IF "$(USE_DEFFILE)"==""
5855	$(IMPLIB) $(IMPLIBFLAGS) @$(mktmp -out:$(SHL9IMPLIBN) \
5856	-def:$(SHL9DEF) )
5857.ELSE			# "$(USE_DEFFILE)==""
5858	@echo build of $(SHL9TARGETN) creates $@
5859	@$(TOUCH) $@
5860.ENDIF			# "$(USE_DEFFILE)==""
5861.ENDIF			# "$(COM)"=="GCC"
5862
5863.ELIF "$(GUI)" == "OS2"
5864
5865# touch creates an empty file, but this is not good for emxomfar, so
5866# create a dummy lib here
5867	$(COMMAND_ECHO)-$(LIBMGR) $(LIBFLAGS) $@ $(SHL9VERSIONOBJ)
5868	+@echo build of $(SHL9TARGETN) creates $@
5869
5870.ELSE
5871	@echo no ImportLibs on Mac and *ix
5872	@-$(RM) $@
5873	@$(TOUCH) $@
5874.ENDIF
5875.ENDIF
5876
5877# unroll begin
5878
5879.IF "$(SHL10IMPLIBN)" != ""
5880
5881.IF "$(UPDATER)"=="YES"
5882USELIB10DEPN+=$(SHL10LIBS)
5883.ELSE
5884.ENDIF
5885
5886.IF "$(USE_DEFFILE)"!=""
5887USE_SHL10TARGET=$(SHL10TARGETN)
5888.ENDIF
5889
5890.IF "$(GUI)" != "UNX"
5891$(SHL10IMPLIBN):	\
5892					$(SHL10DEF) \
5893					$(USE_SHL10TARGET) \
5894					$(USELIB10DEPN) \
5895					$(USELIBDEPN)
5896.ELSE
5897$(SHL10IMPLIBN):	\
5898					$(SHL10LIBS)
5899.ENDIF
5900	@echo "Making:   " $(@:f)
5901.IF "$(GUI)" == "WNT"
5902.IF "$(COM)"=="GCC"
5903	@echo no ImportLibs on mingw
5904	@-$(RM) $@
5905	@$(TOUCH) $@
5906.ELSE			# "$(COM)=="GCC"
5907# bei use_deffile implib von linker erstellt
5908.IF "$(USE_DEFFILE)"==""
5909	$(IMPLIB) $(IMPLIBFLAGS) @$(mktmp -out:$(SHL10IMPLIBN) \
5910	-def:$(SHL10DEF) )
5911.ELSE			# "$(USE_DEFFILE)==""
5912	@echo build of $(SHL10TARGETN) creates $@
5913	@$(TOUCH) $@
5914.ENDIF			# "$(USE_DEFFILE)==""
5915.ENDIF			# "$(COM)"=="GCC"
5916
5917.ELIF "$(GUI)" == "OS2"
5918
5919# touch creates an empty file, but this is not good for emxomfar, so
5920# create a dummy lib here
5921	$(COMMAND_ECHO)-$(LIBMGR) $(LIBFLAGS) $@ $(SHL10VERSIONOBJ)
5922	+@echo build of $(SHL10TARGETN) creates $@
5923
5924.ELSE
5925	@echo no ImportLibs on Mac and *ix
5926	@-$(RM) $@
5927	@$(TOUCH) $@
5928.ENDIF
5929.ENDIF
5930
5931