xref: /trunk/main/solenv/inc/tg_shl.mk (revision cdf0e10c)
1*cdf0e10cSrcweir#*************************************************************************
2*cdf0e10cSrcweir#
3*cdf0e10cSrcweir# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4*cdf0e10cSrcweir#
5*cdf0e10cSrcweir# Copyright 2000, 2010 Oracle and/or its affiliates.
6*cdf0e10cSrcweir#
7*cdf0e10cSrcweir# OpenOffice.org - a multi-platform office productivity suite
8*cdf0e10cSrcweir#
9*cdf0e10cSrcweir# This file is part of OpenOffice.org.
10*cdf0e10cSrcweir#
11*cdf0e10cSrcweir# OpenOffice.org is free software: you can redistribute it and/or modify
12*cdf0e10cSrcweir# it under the terms of the GNU Lesser General Public License version 3
13*cdf0e10cSrcweir# only, as published by the Free Software Foundation.
14*cdf0e10cSrcweir#
15*cdf0e10cSrcweir# OpenOffice.org is distributed in the hope that it will be useful,
16*cdf0e10cSrcweir# but WITHOUT ANY WARRANTY; without even the implied warranty of
17*cdf0e10cSrcweir# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
18*cdf0e10cSrcweir# GNU Lesser General Public License version 3 for more details
19*cdf0e10cSrcweir# (a copy is included in the LICENSE file that accompanied this code).
20*cdf0e10cSrcweir#
21*cdf0e10cSrcweir# You should have received a copy of the GNU Lesser General Public License
22*cdf0e10cSrcweir# version 3 along with OpenOffice.org.  If not, see
23*cdf0e10cSrcweir# <http://www.openoffice.org/license.html>
24*cdf0e10cSrcweir# for a copy of the LGPLv3 License.
25*cdf0e10cSrcweir#
26*cdf0e10cSrcweir#*************************************************************************
27*cdf0e10cSrcweir
28*cdf0e10cSrcweir#######################################################
29*cdf0e10cSrcweir# targets for linking
30*cdf0e10cSrcweir# unroll begin
31*cdf0e10cSrcweir
32*cdf0e10cSrcweir.IF "$(SHL$(TNR)TARGETN)"!=""
33*cdf0e10cSrcweir
34*cdf0e10cSrcweir.IF "$(OS)"=="AIX"
35*cdf0e10cSrcweirSHL$(TNR)STDLIBS=
36*cdf0e10cSrcweir.ENDIF
37*cdf0e10cSrcweir
38*cdf0e10cSrcweir.IF "$(SHLLINKARCONLY)" != ""
39*cdf0e10cSrcweirSHL$(TNR)STDLIBS=
40*cdf0e10cSrcweirSTDSHL=
41*cdf0e10cSrcweir.ELSE
42*cdf0e10cSrcweirSHL$(TNR)ARCHIVES=
43*cdf0e10cSrcweir.ENDIF
44*cdf0e10cSrcweir
45*cdf0e10cSrcweir# decide how to link
46*cdf0e10cSrcweir.IF "$(SHL$(TNR)CODETYPE)"=="C"
47*cdf0e10cSrcweirSHL$(TNR)LINKER=$(LINKC)
48*cdf0e10cSrcweirSHL$(TNR)STDSHL=$(subst,CPPRUNTIME, $(STDSHL))
49*cdf0e10cSrcweirSHL$(TNR)LINKFLAGS+=$(LINKCFLAGS)
50*cdf0e10cSrcweir.ELSE			# "$(SHL$(TNR)CODETYPE)"=="C"
51*cdf0e10cSrcweirSHL$(TNR)LINKER=$(LINK)
52*cdf0e10cSrcweirSHL$(TNR)STDSHL=$(subst,CPPRUNTIME,$(STDLIBCPP) $(STDSHL))
53*cdf0e10cSrcweirSHL$(TNR)LINKFLAGS+=$(LINKFLAGS)
54*cdf0e10cSrcweir.ENDIF			# "$(SHL$(TNR)CODETYPE)"=="C"
55*cdf0e10cSrcweir
56*cdf0e10cSrcweirSHL$(TNR)RPATH*=OOO
57*cdf0e10cSrcweirLINKFLAGSRUNPATH_$(SHL$(TNR)RPATH)*=/ERROR:/Bad_SHL$(TNR)RPATH_value
58*cdf0e10cSrcweirSHL$(TNR)LINKFLAGS+=$(LINKFLAGSRUNPATH_$(SHL$(TNR)RPATH))
59*cdf0e10cSrcweir
60*cdf0e10cSrcweir.IF "$(SHL$(TNR)USE_EXPORTS)"==""
61*cdf0e10cSrcweirSHL$(TNR)DEF*=$(MISC)/$(SHL$(TNR)TARGET).def
62*cdf0e10cSrcweir.ENDIF			# "$(SHL$(TNR)USE_EXPORTS)"==""
63*cdf0e10cSrcweir
64*cdf0e10cSrcweirEXTRALIBPATHS$(TNR)=$(EXTRALIBPATHS)
65*cdf0e10cSrcweir.IF "$(UPDATER)"=="YES"
66*cdf0e10cSrcweir.IF "$(SHL$(TNR)NOCHECK)"==""
67*cdf0e10cSrcweir.IF "$(SOLAR_STLLIBPATH)"!=""
68*cdf0e10cSrcweirEXTRALIBPATHS$(TNR)+=-L$(SOLAR_STLLIBPATH)
69*cdf0e10cSrcweir.ENDIF
70*cdf0e10cSrcweir.ENDIF				# "$(SHL$(TNR)NOCHECK)"!=""
71*cdf0e10cSrcweir.ENDIF
72*cdf0e10cSrcweir#+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
73*cdf0e10cSrcweir#+++++++++++    version object      ++++++++++++++++++++++++++++++++++++++++
74*cdf0e10cSrcweir#+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
75*cdf0e10cSrcweir
76*cdf0e10cSrcweir.IF "$(L10N_framework)"==""
77*cdf0e10cSrcweir.IF "$(VERSIONOBJ)"!=""
78*cdf0e10cSrcweirSHL$(TNR)VERSIONOBJ:=$(VERSIONOBJ:d){$(subst,$(DLLPOSTFIX),_dflt $(SHL$(TNR)TARGET))}$(VERSIONOBJ:f)
79*cdf0e10cSrcweirUSE_VERSIONH:=$(INCCOM)/$(SHL$(TNR)VERSIONOBJ:b).h
80*cdf0e10cSrcweir.IF "$(GUI)" == "UNX"
81*cdf0e10cSrcweirSHL$(TNR)VERSIONOBJDEP:=$(VERSIONOBJ:d){$(subst,$(DLLPOSTFIX),_dflt $(SHL$(TNR)TARGET))}$(VERSIONOBJ:f:s/.o/.obj/)
82*cdf0e10cSrcweir.ELSE           # "$(GUI)" == "UNX"
83*cdf0e10cSrcweirSHL$(TNR)VERSIONOBJDEP:=$(VERSIONOBJ:d){$(subst,$(DLLPOSTFIX),_dflt $(SHL$(TNR)TARGET))}$(VERSIONOBJ:f)
84*cdf0e10cSrcweir.ENDIF          # "$(GUI)" == "UNX"
85*cdf0e10cSrcweir$(MISC)/$(SHL$(TNR)VERSIONOBJ:b).c : $(SOLARENV)/src/version.c $(INCCOM)/$(SHL$(TNR)VERSIONOBJ:b).h
86*cdf0e10cSrcweir#    $(COPY) $(SOLARENV)/src/version.c $@
87*cdf0e10cSrcweir	$(COMMAND_ECHO)$(TYPE) $(SOLARENV)/src/version.c | $(SED) s/_version.h/$(SHL$(TNR)VERSIONOBJ:b).h/ > $@
88*cdf0e10cSrcweir
89*cdf0e10cSrcweir.INIT : $(SHL$(TNR)VERSIONOBJDEP)
90*cdf0e10cSrcweir.ENDIF			# "$(VERSIONOBJ)"!=""
91*cdf0e10cSrcweir.ENDIF
92*cdf0e10cSrcweir
93*cdf0e10cSrcweir.IF "$(GUI)" != "UNX"
94*cdf0e10cSrcweir.IF "$(GUI)" == "WNT" || "$(GUI)" == "OS2"
95*cdf0e10cSrcweir.IF "$(SHL$(TNR)IMPLIB)" == ""
96*cdf0e10cSrcweirSHL$(TNR)IMPLIB=i$(TARGET)_t$(TNR)
97*cdf0e10cSrcweir.ENDIF			# "$(SHL$(TNR)IMPLIB)" == ""
98*cdf0e10cSrcweir.IF "$(COM)" != "GCC"
99*cdf0e10cSrcweirUSE_$(TNR)IMPLIB=-implib:$(LB)/$(SHL$(TNR)IMPLIB).lib
100*cdf0e10cSrcweir.ENDIF			# "$(COM)" != "GCC"
101*cdf0e10cSrcweirSHL$(TNR)IMPLIBN=$(LB)/$(SHL$(TNR)IMPLIB).lib
102*cdf0e10cSrcweirALLTAR : $(SHL$(TNR)IMPLIBN)
103*cdf0e10cSrcweir
104*cdf0e10cSrcweir.IF "$(USE_DEFFILE)"==""
105*cdf0e10cSrcweirUSE_$(TNR)IMPLIB_DEPS=$(LB)/$(SHL$(TNR)IMPLIB).lib
106*cdf0e10cSrcweir.ENDIF			# "$(USE_DEFFILE)"==""
107*cdf0e10cSrcweir.ENDIF			# "$(GUI)" == "WNT" || "$(GUI)" == "OS2"
108*cdf0e10cSrcweirUSE_SHL$(TNR)DEF=$(SHL$(TNR)DEF)
109*cdf0e10cSrcweir.ELSE			# "$(GUI)" != "UNX"
110*cdf0e10cSrcweirUSE_SHL$(TNR)DEF=
111*cdf0e10cSrcweirSHL$(TNR)DEPN+:=$(SHL$(TNR)DEPNU)
112*cdf0e10cSrcweir
113*cdf0e10cSrcweir.IF "$(SHL$(TNR)VERSIONMAP)"==""
114*cdf0e10cSrcweir# to activate vmaps remove "#"
115*cdf0e10cSrcweirUSE_SHL$(TNR)VERSIONMAP=$(MISC)/$(SHL$(TNR)TARGET).vmap
116*cdf0e10cSrcweir.ENDIF			# "$(SHL$(TNR)VERSIONMAP)"==""
117*cdf0e10cSrcweir
118*cdf0e10cSrcweir.IF "$(USE_SHL$(TNR)VERSIONMAP)"!=""
119*cdf0e10cSrcweir
120*cdf0e10cSrcweir.IF "$(SHL$(TNR)FILTERFILE)"!=""
121*cdf0e10cSrcweir.IF "$(SHL$(TNR)VERSIONMAP)"!=""
122*cdf0e10cSrcweir#eine von beiden ist zuviel
123*cdf0e10cSrcweirUSE_SHL$(TNR)VERSIONMAP=$(MISC)/$(SHL$(TNR)TARGET).vmap
124*cdf0e10cSrcweir$(USE_SHL$(TNR)VERSIONMAP) .PHONY:
125*cdf0e10cSrcweir	@echo -----------------------------
126*cdf0e10cSrcweir	@echo you should only use versionmap OR exportfile
127*cdf0e10cSrcweir	@echo -----------------------------
128*cdf0e10cSrcweir#	force_dmake_to_error
129*cdf0e10cSrcweir
130*cdf0e10cSrcweir.ENDIF			# "$(SHL$(TNR)VERSIONMAP)"!=""
131*cdf0e10cSrcweir
132*cdf0e10cSrcweirSHL$(TNR)VERSIONMAPPARA=$(LINKVERSIONMAPFLAG) $(USE_SHL$(TNR)VERSIONMAP)
133*cdf0e10cSrcweir
134*cdf0e10cSrcweir$(USE_SHL$(TNR)VERSIONMAP): \
135*cdf0e10cSrcweir					$(SHL$(TNR)OBJS)\
136*cdf0e10cSrcweir					$(SHL$(TNR)LIBS)\
137*cdf0e10cSrcweir					$(SHL$(TNR)FILTERFILE)
138*cdf0e10cSrcweir	@$(RM) $@.dump
139*cdf0e10cSrcweir.IF "$(SHL$(TNR)OBJS)"!=""
140*cdf0e10cSrcweir# dump remaining objects on the fly
141*cdf0e10cSrcweir.IF "$(OS)"=="MACOSX"
142*cdf0e10cSrcweir	@-nm $(SHL$(TNR)OBJS:s/.obj/.o/) > $@.dump
143*cdf0e10cSrcweir.ELSE
144*cdf0e10cSrcweir	@nm $(SHL$(TNR)OBJS:s/.obj/.o/) > $@.dump
145*cdf0e10cSrcweir.ENDIF
146*cdf0e10cSrcweir.ENDIF			# "$(SHL$(TNR)OBJS)!"=""
147*cdf0e10cSrcweir	@$(TYPE) /dev/null $(SHL$(TNR)LIBS:s/.lib/.dump/) >> $@.dump
148*cdf0e10cSrcweir	$(COMMAND_ECHO) $(PERL) $(SOLARENV)/bin/mapgen.pl -d $@.dump -s $(SHL$(TNR)INTERFACE) -f $(SHL$(TNR)FILTERFILE) -m $@
149*cdf0e10cSrcweir
150*cdf0e10cSrcweir.ELSE			# "$(SHL$(TNR)FILTERFILE)"!=""
151*cdf0e10cSrcweirUSE_SHL$(TNR)VERSIONMAP=$(MISC)/$(SHL$(TNR)TARGET).vmap
152*cdf0e10cSrcweir$(USE_SHL$(TNR)VERSIONMAP) :
153*cdf0e10cSrcweir.IF "$(VERBOSE)" == "TRUE"
154*cdf0e10cSrcweir	@echo -----------------------------
155*cdf0e10cSrcweir	@echo SHL$(TNR)FILTERFILE not set!
156*cdf0e10cSrcweir	@echo -----------------------------
157*cdf0e10cSrcweir	@$(TOUCH) $@
158*cdf0e10cSrcweir	@echo dummy file to keep the dependencies for later use.
159*cdf0e10cSrcweir.ELSE
160*cdf0e10cSrcweir	@$(TOUCH) $@
161*cdf0e10cSrcweir.ENDIF
162*cdf0e10cSrcweir#	force_dmake_to_error
163*cdf0e10cSrcweir.ENDIF			# "$(SHL$(TNR)FILTERFILE)"!=""
164*cdf0e10cSrcweir.ELSE			# "$(USE_SHL$(TNR)VERSIONMAP)"!=""
165*cdf0e10cSrcweir
166*cdf0e10cSrcweir#and now for the plain non-generic way...
167*cdf0e10cSrcweir.IF "$(SHL$(TNR)VERSIONMAP)"!=""
168*cdf0e10cSrcweirUSE_SHL$(TNR)VERSIONMAP=$(MISC)/$(SHL$(TNR)VERSIONMAP:b)_$(SHL$(TNR)TARGET)$(SHL$(TNR)VERSIONMAP:e)
169*cdf0e10cSrcweirSHL$(TNR)VERSIONMAPPARA=$(LINKVERSIONMAPFLAG) $(USE_SHL$(TNR)VERSIONMAP)
170*cdf0e10cSrcweir
171*cdf0e10cSrcweir.IF "$(OS)"=="MACOSX"
172*cdf0e10cSrcweir$(USE_SHL$(TNR)VERSIONMAP): $(SHL$(TNR)OBJS) $(SHL$(TNR)LIBS)
173*cdf0e10cSrcweir.ENDIF
174*cdf0e10cSrcweir
175*cdf0e10cSrcweir# .ERRREMOVE is needed as a recipe line like "$(AWK) ... > $@" would create $@
176*cdf0e10cSrcweir# even if the $(AWK) part fails:
177*cdf0e10cSrcweir$(USE_SHL$(TNR)VERSIONMAP) .ERRREMOVE: $(SHL$(TNR)VERSIONMAP)
178*cdf0e10cSrcweir	@@-$(RM) -f $@
179*cdf0e10cSrcweir# The following files will only be generated and needed on Mac OS X as temporary files
180*cdf0e10cSrcweir# in order to generate exported symbols list out of Linux/Solaris map files
181*cdf0e10cSrcweir.IF "$(OS)"=="MACOSX"
182*cdf0e10cSrcweir	@-$(RM) -f $@.symregexp >& $(NULLDEV)
183*cdf0e10cSrcweir	@-$(RM) -f $@.expsymlist >& $(NULLDEV)
184*cdf0e10cSrcweir.ENDIF
185*cdf0e10cSrcweir# Its questionable if the following condition '.IF "$(COMID)"=="gcc3"' makes sense and what
186*cdf0e10cSrcweir# happens if somebody will change it in the future
187*cdf0e10cSrcweir.IF "$(COMID)"=="gcc3"
188*cdf0e10cSrcweir	$(COMMAND_ECHO) tr -d "\015" < $(SHL$(TNR)VERSIONMAP) | $(AWK) -f $(SOLARENV)/bin/addsym.awk > $@
189*cdf0e10cSrcweir.ELIF "$(COMNAME)"=="sunpro5"
190*cdf0e10cSrcweir	$(COMMAND_ECHO) tr -d "\015" < $(SHL$(TNR)VERSIONMAP) | $(GREP) -v $(IGNORE_SYMBOLS) > $@
191*cdf0e10cSrcweir.ELSE           # "$(COMID)"=="gcc3"
192*cdf0e10cSrcweir	$(COMMAND_ECHO) tr -d "\015" < $(SHL$(TNR)VERSIONMAP) > $@
193*cdf0e10cSrcweir.ENDIF          # "$(COMID)"=="gcc3"
194*cdf0e10cSrcweir	@chmod a+w $@
195*cdf0e10cSrcweir# Mac OS X post-processing generate an exported symbols list from the generated map file
196*cdf0e10cSrcweir# for details on exported symbols list see man ld on Mac OS X
197*cdf0e10cSrcweir.IF "$(OS)"=="MACOSX"
198*cdf0e10cSrcweir	@-cat $@ | $(AWK) -f $(SOLARENV)/bin/unxmap-to-macosx-explist.awk | grep -v "\*\|?" > $@.exported-symbols
199*cdf0e10cSrcweir	@-cat $@ | $(AWK) -f $(SOLARENV)/bin/unxmap-to-macosx-explist.awk | grep "\*\|?" > $@.symbols-regexp
200*cdf0e10cSrcweir# Shared libraries will be build out of the *.obj files specified in SHL?OBJS and SHL?LIBS
201*cdf0e10cSrcweir# Extract RTTI symbols from all the objects that will be used to build a shared library
202*cdf0e10cSrcweir.IF "$(SHL$(TNR)OBJS)"!=""
203*cdf0e10cSrcweir	-echo $(foreach,i,$(SHL$(TNR)OBJS:s/.obj/.o/) $i) | xargs -n1 nm -gx | $(SOLARENV)/bin/addsym-macosx.sh $@.symbols-regexp $@.symbols-regexp.tmp >> $@.exported-symbols
204*cdf0e10cSrcweir.ENDIF
205*cdf0e10cSrcweir.IF "$(SHL$(TNR)LIBS)"!=""
206*cdf0e10cSrcweir	$(COMMAND_ECHO)-$(TYPE) $(foreach,j,$(SHL$(TNR)LIBS) $j) | $(SED) s\#$(ROUT)\#$(PRJ)/$(ROUT)\#g | xargs -n1 nm -gx | $(SOLARENV)/bin/addsym-macosx.sh $@.symbols-regexp $@.symbols-regexp.tmp >> $@.exported-symbols
207*cdf0e10cSrcweir.ENDIF
208*cdf0e10cSrcweir# overwrite the map file generate into the local output tree with the generated
209*cdf0e10cSrcweir# exported symbols list
210*cdf0e10cSrcweir	cp $@.exported-symbols $@
211*cdf0e10cSrcweir.ENDIF # .IF "$(OS)"=="MACOSX"
212*cdf0e10cSrcweir.ENDIF			# "$(SHL$(TNR)VERSIONMAP)"!=""
213*cdf0e10cSrcweir.ENDIF			# "$(USE_SHL$(TNR)VERSIONMAP)"!=""
214*cdf0e10cSrcweir.ENDIF			# "$(GUI)" != "UNX"
215*cdf0e10cSrcweir
216*cdf0e10cSrcweir.IF "$(UNIXVERSIONNAMES)"!=""
217*cdf0e10cSrcweir.IF "$(OS)"!="MACOSX"
218*cdf0e10cSrcweir.IF "$(GUI)"=="UNX"
219*cdf0e10cSrcweirSHL$(TNR)SONAME=\"$(SONAME_SWITCH)$(SHL$(TNR)TARGETN:f)\"
220*cdf0e10cSrcweir.ENDIF			# "$(GUI)"!="UNX"
221*cdf0e10cSrcweir.ENDIF			# "$(OS)"!="MACOSX"
222*cdf0e10cSrcweir.ENDIF			# "$(UNIXVERSIONNAMES)"!=""
223*cdf0e10cSrcweir
224*cdf0e10cSrcweir.IF "$(SHL$(TNR)RES)"!=""
225*cdf0e10cSrcweirSHL$(TNR)ALLRES+=$(SHL$(TNR)RES)
226*cdf0e10cSrcweirSHL$(TNR)LINKRES*=$(MISC)/$(SHL$(TNR)TARGET).res
227*cdf0e10cSrcweirSHL$(TNR)LINKRESO*=$(MISC)/$(SHL$(TNR)TARGET)_res.o
228*cdf0e10cSrcweir.ENDIF			# "$(SHL$(TNR)RES)"!=""
229*cdf0e10cSrcweir
230*cdf0e10cSrcweir.IF "$(SHL$(TNR)DEFAULTRES)$(use_shl_versions)"!=""
231*cdf0e10cSrcweirSHL$(TNR)DEFAULTRES*=$(MISC)/$(SHL$(TNR)TARGET)_def.res
232*cdf0e10cSrcweirSHL$(TNR)ALLRES+=$(SHL$(TNR)DEFAULTRES)
233*cdf0e10cSrcweirSHL$(TNR)LINKRES*=$(MISC)/$(SHL$(TNR)TARGET).res
234*cdf0e10cSrcweirSHL$(TNR)LINKRESO*=$(MISC)/$(SHL$(TNR)TARGET)_res.o
235*cdf0e10cSrcweir.ENDIF			# "$(SHL$(TNR)DEFAULTRES)$(use_shl_versions)"!=""
236*cdf0e10cSrcweir
237*cdf0e10cSrcweir#.IF "$(SHL$(TNR)TARGETN)"!=""
238*cdf0e10cSrcweir
239*cdf0e10cSrcweir.IF "$(linkinc)"!=""
240*cdf0e10cSrcweir.IF "$(GUI)"=="WNT" || "$(GUI)" == "OS2"
241*cdf0e10cSrcweir.IF "$(SHL$(TNR)LIBS)"!=""
242*cdf0e10cSrcweir$(MISC)/$(SHL$(TNR)TARGET)_linkinc.ls .PHONY:
243*cdf0e10cSrcweir	@@-$(RM) $@
244*cdf0e10cSrcweir	$(COMMAND_ECHO)$(SED) -f $(SOLARENV)/bin/chrel.sed $(foreach,i,$(SHL$(TNR)LIBS) $(i:s/.lib/.lin/)) >> $@
245*cdf0e10cSrcweir.ENDIF          # "$(SHL$(TNR)LIBS)"!=""
246*cdf0e10cSrcweir.ENDIF
247*cdf0e10cSrcweir
248*cdf0e10cSrcweirLINKINCTARGETS+=$(MISC)/$(SHL$(TNR)TARGETN:b)_linkinc.ls
249*cdf0e10cSrcweir$(SHL$(TNR)TARGETN) : $(LINKINCTARGETS)
250*cdf0e10cSrcweir
251*cdf0e10cSrcweir.ELSE
252*cdf0e10cSrcweir.IF "$(SHL$(TNR)USE_EXPORTS)"=="name"
253*cdf0e10cSrcweir.IF "$(GUI)"=="WNT" || "$(GUI)" == "OS2"
254*cdf0e10cSrcweir.IF "$(COM)"!="GCC"
255*cdf0e10cSrcweir.IF "$(SHL$(TNR)LIBS)"!=""
256*cdf0e10cSrcweirSHL$(TNR)LINKLIST=$(MISC)/$(SHL$(TNR)TARGET)_link.lst
257*cdf0e10cSrcweirSHL$(TNR)LINKLISTPARAM=@$(SHL$(TNR)LINKLIST)
258*cdf0e10cSrcweir$(SHL$(TNR)LINKLIST) : $(SHL$(TNR)LIBS)
259*cdf0e10cSrcweir    @@-$(RM) $@
260*cdf0e10cSrcweir	$(COMMAND_ECHO)$(SED) -f $(SOLARENV)/bin/chrel.sed $(foreach,i,$(SHL$(TNR)LIBS) $(i:s/.lib/.lin/)) >> $@
261*cdf0e10cSrcweir.ENDIF          # "$(SHL$(TNR)LIBS)"!=""
262*cdf0e10cSrcweir.ENDIF          # "$(COM)"!="GCC"
263*cdf0e10cSrcweir.ENDIF
264*cdf0e10cSrcweir.ENDIF			# "$(SHL$(TNR)USE_EXPORTS)"=="name"
265*cdf0e10cSrcweir
266*cdf0e10cSrcweir$(MISC)/%linkinc.ls:
267*cdf0e10cSrcweir	@echo . > $@
268*cdf0e10cSrcweir.ENDIF          # "$(linkinc)"!=""
269*cdf0e10cSrcweir
270*cdf0e10cSrcweir.IF "$(GUI)" == "OS2"
271*cdf0e10cSrcweir#21/02/2006 YD dll names must be 8.3, invoke fix script
272*cdf0e10cSrcweir#check osl/os2/module.c/osl_loadModule()
273*cdf0e10cSrcweirSHL$(TNR)TARGET8=$(shell @fix_shl $(SHL$(TNR)TARGET))
274*cdf0e10cSrcweir.ENDIF
275*cdf0e10cSrcweir
276*cdf0e10cSrcweir.IF "$(GUI)" == "OS2"
277*cdf0e10cSrcweir_SHL$(TNR)IMP_ORD = $(SHL$(TNR)STDLIBS:^"$(SOLARVERSION)/$(INPATH)/lib/") $(SHL$(TNR)STDLIBS:^"$(LB)/")
278*cdf0e10cSrcweirSHL$(TNR)IMP_ORD = $(foreach,i,$(_SHL$(TNR)IMP_ORD) $(shell @-ls $i))
279*cdf0e10cSrcweir.ELSE
280*cdf0e10cSrcweirSHL$(TNR)IMP_ORD =
281*cdf0e10cSrcweir.ENDIF
282*cdf0e10cSrcweir
283*cdf0e10cSrcweir
284*cdf0e10cSrcweir$(SHL$(TNR)TARGETN) : \
285*cdf0e10cSrcweir					$(SHL$(TNR)OBJS)\
286*cdf0e10cSrcweir					$(SHL$(TNR)LIBS)\
287*cdf0e10cSrcweir					$(USE_$(TNR)IMPLIB_DEPS)\
288*cdf0e10cSrcweir					$(USE_SHL$(TNR)DEF)\
289*cdf0e10cSrcweir					$(USE_SHL$(TNR)VERSIONMAP)\
290*cdf0e10cSrcweir					$(SHL$(TNR)RES)\
291*cdf0e10cSrcweir					$(SHL$(TNR)DEPN) \
292*cdf0e10cSrcweir					$(SHL$(TNR)IMP_ORD) \
293*cdf0e10cSrcweir					$(SHL$(TNR)LINKLIST)
294*cdf0e10cSrcweir	@echo "Making:   " $(@:f)
295*cdf0e10cSrcweir.IF "$(GUI)" == "WNT"
296*cdf0e10cSrcweir.IF "$(SHL$(TNR)DEFAULTRES)"!=""
297*cdf0e10cSrcweir	@@-$(RM) $(MISC)/$(SHL$(TNR)DEFAULTRES:b).rc
298*cdf0e10cSrcweir.IF "$(SHL$(TNR)ICON)" != ""
299*cdf0e10cSrcweir	@echo 1 ICON $(SHL$(TNR)ICON) >> $(MISC)/$(SHL$(TNR)DEFAULTRES:b).rc
300*cdf0e10cSrcweir.ENDIF
301*cdf0e10cSrcweir.IF "$(use_shl_versions)" != ""
302*cdf0e10cSrcweir.IF "$(SHL$(TNR)ADD_VERINFO)"!=""
303*cdf0e10cSrcweir	@echo $(EMQ)#include $(EMQ)"$(SHL$(TNR)ADD_VERINFO)$(EMQ)" >> $(MISC)/$(SHL$(TNR)DEFAULTRES:b).rc
304*cdf0e10cSrcweir.ELSE			# "$(SHL$(TNR)ADD_VERINFO)"!=""
305*cdf0e10cSrcweir	@echo $(EMQ)#define ADDITIONAL_VERINFO1 >> $(MISC)/$(SHL$(TNR)DEFAULTRES:b).rc
306*cdf0e10cSrcweir	@echo $(EMQ)#define ADDITIONAL_VERINFO2 >> $(MISC)/$(SHL$(TNR)DEFAULTRES:b).rc
307*cdf0e10cSrcweir	@echo $(EMQ)#define ADDITIONAL_VERINFO3 >> $(MISC)/$(SHL$(TNR)DEFAULTRES:b).rc
308*cdf0e10cSrcweir.ENDIF			# "$(SHL$(TNR)ADD_VERINFO)"!=""
309*cdf0e10cSrcweir	@echo $(EMQ)#define VERVARIANT	$(BUILD) >> $(MISC)/$(SHL$(TNR)DEFAULTRES:b).rc
310*cdf0e10cSrcweir	@echo $(EMQ)#define ORG_NAME	$(SHL$(TNR)TARGET)$(DLLPOST) >> $(MISC)/$(SHL$(TNR)DEFAULTRES:b).rc
311*cdf0e10cSrcweir	@echo $(EMQ)#define INTERNAL_NAME $(SHL$(TNR)TARGET:b) >> $(MISC)/$(SHL$(TNR)DEFAULTRES:b).rc
312*cdf0e10cSrcweir	@echo $(EMQ)#include $(EMQ)"shlinfo.rc$(EMQ)" >> $(MISC)/$(SHL$(TNR)DEFAULTRES:b).rc
313*cdf0e10cSrcweir.ENDIF			# "$(use_shl_versions)" != ""
314*cdf0e10cSrcweir	$(COMMAND_ECHO)$(RC) -DWIN32 $(INCLUDE) $(RCLINKFLAGS) $(MISC)/$(SHL$(TNR)DEFAULTRES:b).rc
315*cdf0e10cSrcweir.ENDIF			# "$(SHL$(TNR)DEFAULTRES)"!=""
316*cdf0e10cSrcweir.IF "$(SHL$(TNR)ALLRES)"!=""
317*cdf0e10cSrcweir	$(COMMAND_ECHO)$(TYPE) $(SHL$(TNR)ALLRES) > $(SHL$(TNR)LINKRES)
318*cdf0e10cSrcweir.IF "$(COM)"=="GCC"
319*cdf0e10cSrcweir	windres $(SHL$(TNR)LINKRES) $(SHL$(TNR)LINKRESO)
320*cdf0e10cSrcweir.ENDIF			# "$(COM)"=="GCC"
321*cdf0e10cSrcweir.ENDIF			# "$(SHL$(TNR)ALLRES)"!=""
322*cdf0e10cSrcweir.IF "$(COM)"=="GCC"	# always have to call dlltool explicitly as ld cannot handle # comment in .def
323*cdf0e10cSrcweir	@echo dlltool --dllname $(SHL$(TNR)TARGET)$(DLLPOST) \
324*cdf0e10cSrcweir		--kill-at \\ > $(MISC)/$(TARGET).$(@:b)_$(TNR).cmd
325*cdf0e10cSrcweir	@noop $(assign ALL$(TNR)OBJLIST:=$(STDOBJ) $(SHL$(TNR)OBJS) $(SHL$(TNR)LINKRESO) $(shell $(TYPE) /dev/null $(SHL$(TNR)LIBS) | $(SED) s?$(ROUT)?$(PRJ)/$(ROUT)?g))
326*cdf0e10cSrcweir.IF "$(DEFLIB$(TNR)NAME)"!=""	# do not have to include objs
327*cdf0e10cSrcweir	@noop $(assign DEF$(TNR)OBJLIST:=$(shell $(TYPE) $(foreach,i,$(DEFLIB$(TNR)NAME) $(SLB)/$(i).lib) | sed s?$(ROUT)?$(PRJ)/$(ROUT)?g))
328*cdf0e10cSrcweir	@noop $(foreach,i,$(DEF$(TNR)OBJLIST) $(assign ALL$(TNR)OBJLIST:=$(ALL$(TNR)OBJLIST:s?$i??)))
329*cdf0e10cSrcweir.ENDIF			# "$(DEFLIB$(TNR)NAME)"!=""
330*cdf0e10cSrcweir	@echo	--output-exp $(MISC)/$(@:b)_exp.o \\ >> $(MISC)/$(TARGET).$(@:b)_$(TNR).cmd
331*cdf0e10cSrcweir.IF "$(SHL$(TNR)DEF)"!=""
332*cdf0e10cSrcweir	@echo	--input-def $(SHL$(TNR)DEF) \\ >> $(MISC)/$(TARGET).$(@:b)_$(TNR).cmd
333*cdf0e10cSrcweir.ELSE
334*cdf0e10cSrcweir	@echo	$(SHL$(TNR)VERSIONOBJ) $(SHL$(TNR)DESCRIPTIONOBJ) \\ >> $(MISC)/$(TARGET).$(@:b)_$(TNR).cmd
335*cdf0e10cSrcweir.ENDIF
336*cdf0e10cSrcweir	@echo	$(ALL$(TNR)OBJLIST) >> $(MISC)/$(TARGET).$(@:b)_$(TNR).cmd
337*cdf0e10cSrcweir	@echo $(LINK) $(LINKFLAGS) $(LINKFLAGSSHL) $(MINGWSSTDOBJ) -o $@ \
338*cdf0e10cSrcweir		$(STDOBJ) $(SHL$(TNR)VERSIONOBJ) $(SHL$(TNR)DESCRIPTIONOBJ) $(SHL$(TNR)OBJS) $(SHL$(TNR)LINKRESO) \
339*cdf0e10cSrcweir		`$(TYPE) /dev/null $(SHL$(TNR)LIBS) | $(SED) s\#$(ROUT)\#$(PRJ)/$(ROUT)\#g` \
340*cdf0e10cSrcweir		-Wl,--exclude-libs,ALL,--start-group $(SHL$(TNR)STDLIBS) -Wl,--end-group \
341*cdf0e10cSrcweir		$(SHL$(TNR)STDSHL) $(STDSHL$(TNR)) $(MISC)/$(@:b)_exp.o $(MINGWSSTDENDOBJ) \
342*cdf0e10cSrcweir		-Wl,-Map,$(MISC)/$(@:b).map >> $(MISC)/$(TARGET).$(@:b)_$(TNR).cmd
343*cdf0e10cSrcweir  .IF "$(VERBOSE)" == "TRUE"
344*cdf0e10cSrcweir	@$(TYPE)  $(MISC)/$(TARGET).$(@:b)_$(TNR).cmd
345*cdf0e10cSrcweir  .ENDIF
346*cdf0e10cSrcweir	@+source $(MISC)/$(TARGET).$(@:b)_$(TNR).cmd
347*cdf0e10cSrcweir.ELSE
348*cdf0e10cSrcweir.IF "$(linkinc)"==""
349*cdf0e10cSrcweir.IF "$(SHL$(TNR)USE_EXPORTS)"!="name"
350*cdf0e10cSrcweir.IF "$(USE_DEFFILE)"!=""
351*cdf0e10cSrcweir	$(COMMAND_ECHO)$(SHL$(TNR)LINKER) @$(mktmp \
352*cdf0e10cSrcweir		$(SHL$(TNR)LINKFLAGS) \
353*cdf0e10cSrcweir		$(LINKFLAGSSHL) \
354*cdf0e10cSrcweir		$(SHL$(TNR)STACK) $(SHL$(TNR)BASEX)	\
355*cdf0e10cSrcweir		-out:$@ \
356*cdf0e10cSrcweir		-map:$(MISC)/$(@:b).map \
357*cdf0e10cSrcweir		-def:$(SHL$(TNR)DEF) \
358*cdf0e10cSrcweir		$(USE_$(TNR)IMPLIB) \
359*cdf0e10cSrcweir		$(STDOBJ) \
360*cdf0e10cSrcweir		$(SHL$(TNR)VERSIONOBJ) $(SHL$(TNR)OBJS) \
361*cdf0e10cSrcweir		$(SHL$(TNR)LIBS) \
362*cdf0e10cSrcweir		$(SHL$(TNR)STDLIBS) \
363*cdf0e10cSrcweir		$(SHL$(TNR)STDSHL) $(STDSHL$(TNR)) \
364*cdf0e10cSrcweir		$(SHL$(TNR)LINKRES) \
365*cdf0e10cSrcweir	)
366*cdf0e10cSrcweir# double check if target was really written... still making sense?
367*cdf0e10cSrcweir    @@$(LS) $@
368*cdf0e10cSrcweir	@echo linking $@.manifest ...
369*cdf0e10cSrcweir.IF "$(VISTA_MANIFEST)"!=""
370*cdf0e10cSrcweir	$(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(MT) $(MTFLAGS) -manifest $@.manifest -manifest $(TRUSTED_MANIFEST_LOCATION)/trustedinfo.manifest -out:$@.tmanifest$(EMQ) $(FI)
371*cdf0e10cSrcweir	$(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(MT) $(MTFLAGS) -manifest $@.tmanifest -outputresource:$@$(EMQ);2 $(FI)
372*cdf0e10cSrcweir.ELSE
373*cdf0e10cSrcweir	$(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(MT) $(MTFLAGS) -manifest $@.manifest -outputresource:$@$(EMQ);2 $(FI)
374*cdf0e10cSrcweir.ENDIF # "$(VISTA_MANIFEST)"!=""
375*cdf0e10cSrcweir	$(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(RM:s/+//) $@.manifest $(FI)
376*cdf0e10cSrcweir	$(COMMAND_ECHO)$(IFEXIST) $@.tmanifest $(THEN) $(RM:s/+//) $@.tmanifest $(FI)
377*cdf0e10cSrcweir.ELSE			# "$(USE_DEFFILE)"!=""
378*cdf0e10cSrcweir	$(COMMAND_ECHO)$(SHL$(TNR)LINKER) @$(mktmp	$(SHL$(TNR)LINKFLAGS)			\
379*cdf0e10cSrcweir		$(LINKFLAGSSHL) $(SHL$(TNR)BASEX)		\
380*cdf0e10cSrcweir		$(SHL$(TNR)STACK) -out:$(SHL$(TNR)TARGETN)	\
381*cdf0e10cSrcweir		-map:$(MISC)/$(@:B).map				\
382*cdf0e10cSrcweir		$(LB)/$(SHL$(TNR)IMPLIB).exp				\
383*cdf0e10cSrcweir		$(STDOBJ)							\
384*cdf0e10cSrcweir		$(SHL$(TNR)OBJS) $(SHL$(TNR)VERSIONOBJ) \
385*cdf0e10cSrcweir		$(SHL$(TNR)LIBS)                         \
386*cdf0e10cSrcweir		$(SHL$(TNR)STDLIBS)                      \
387*cdf0e10cSrcweir		$(SHL$(TNR)STDSHL) $(STDSHL$(TNR))                           \
388*cdf0e10cSrcweir		$(SHL$(TNR)LINKRES) \
389*cdf0e10cSrcweir	)
390*cdf0e10cSrcweir# double check if target was really written... still making sense?
391*cdf0e10cSrcweir    @@$(LS) $@
392*cdf0e10cSrcweir	@echo linking $@.manifest ...
393*cdf0e10cSrcweir.IF "$(VISTA_MANIFEST)"!=""
394*cdf0e10cSrcweir	$(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(MT) $(MTFLAGS) -manifest $@.manifest -manifest $(TRUSTED_MANIFEST_LOCATION)/trustedinfo.manifest -out:$@.tmanifest$(EMQ) $(FI)
395*cdf0e10cSrcweir	$(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(MT) $(MTFLAGS) -manifest $@.tmanifest -outputresource:$@$(EMQ);2 $(FI)
396*cdf0e10cSrcweir.ELSE
397*cdf0e10cSrcweir	$(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(MT) $(MTFLAGS) -manifest $@.manifest -outputresource:$@$(EMQ);2 $(FI)
398*cdf0e10cSrcweir.ENDIF # "$(VISTA_MANIFEST)"!=""
399*cdf0e10cSrcweir	$(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(RM:s/+//) $@.manifest $(FI)
400*cdf0e10cSrcweir	$(COMMAND_ECHO)$(IFEXIST) $@.tmanifest $(THEN) $(RM:s/+//) $@.tmanifest $(FI)
401*cdf0e10cSrcweir.ENDIF			# "$(USE_DEFFILE)"!=""
402*cdf0e10cSrcweir.ELSE			# "$(SHL$(TNR)USE_EXPORTS)"!="name"
403*cdf0e10cSrcweir	$(COMMAND_ECHO)$(SHL$(TNR)LINKER) @$(mktmp	$(SHL$(TNR)LINKFLAGS)			\
404*cdf0e10cSrcweir		$(LINKFLAGSSHL) $(SHL$(TNR)BASEX)		\
405*cdf0e10cSrcweir		$(SHL$(TNR)STACK) -out:$(SHL$(TNR)TARGETN)	\
406*cdf0e10cSrcweir		-map:$(MISC)/$(@:B).map				\
407*cdf0e10cSrcweir		$(USE_$(TNR)IMPLIB) \
408*cdf0e10cSrcweir		$(STDOBJ)							\
409*cdf0e10cSrcweir		$(SHL$(TNR)OBJS) $(SHL$(TNR)VERSIONOBJ))   \
410*cdf0e10cSrcweir		$(SHL$(TNR)LINKLISTPARAM) \
411*cdf0e10cSrcweir		@$(mktmp $(SHL$(TNR)STDLIBS)                      \
412*cdf0e10cSrcweir		$(SHL$(TNR)STDSHL) $(STDSHL$(TNR))                           \
413*cdf0e10cSrcweir		$(SHL$(TNR)LINKRES) \
414*cdf0e10cSrcweir	)
415*cdf0e10cSrcweir	@echo linking $@.manifest ...
416*cdf0e10cSrcweir.IF "$(VISTA_MANIFEST)"!=""
417*cdf0e10cSrcweir	$(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(MT) $(MTFLAGS) -manifest $@.manifest -manifest $(TRUSTED_MANIFEST_LOCATION)/trustedinfo.manifest -out:$@.tmanifest$(EMQ) $(FI)
418*cdf0e10cSrcweir	$(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(MT) $(MTFLAGS) -manifest $@.tmanifest -outputresource:$@$(EMQ);2 $(FI)
419*cdf0e10cSrcweir.ELSE
420*cdf0e10cSrcweir	$(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(MT) $(MTFLAGS) -manifest $@.manifest -outputresource:$@$(EMQ);2 $(FI)
421*cdf0e10cSrcweir.ENDIF # "$(VISTA_MANIFEST)"!=""
422*cdf0e10cSrcweir	$(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(RM:s/+//) $@.manifest $(FI)
423*cdf0e10cSrcweir	$(COMMAND_ECHO)$(IFEXIST) $@.tmanifest $(THEN) $(RM:s/+//) $@.tmanifest $(FI)
424*cdf0e10cSrcweir.ENDIF			# "$(SHL$(TNR)USE_EXPORTS)"!="name"
425*cdf0e10cSrcweir.ELSE			# "$(linkinc)"==""
426*cdf0e10cSrcweir		$(COMMAND_ECHO)-$(RM) del $(MISC)/$(SHL$(TNR)TARGET).lnk
427*cdf0e10cSrcweir		$(COMMAND_ECHO)-$(RM) $(MISC)/$(SHL$(TNR)TARGET).lst
428*cdf0e10cSrcweir		$(COMMAND_ECHO)$(TYPE) $(mktmp \
429*cdf0e10cSrcweir		$(SHL$(TNR)LINKFLAGS) \
430*cdf0e10cSrcweir		$(LINKFLAGSSHL) $(SHL$(TNR)BASEX) \
431*cdf0e10cSrcweir		$(SHL$(TNR)STACK) $(MAPFILE) \
432*cdf0e10cSrcweir		-out:$@ \
433*cdf0e10cSrcweir		$(LB)/$(SHL$(TNR)IMPLIB).exp \
434*cdf0e10cSrcweir		$(STDOBJ) \
435*cdf0e10cSrcweir		$(SHL$(TNR)OBJS) \
436*cdf0e10cSrcweir		$(SHL$(TNR)STDLIBS) \
437*cdf0e10cSrcweir		$(SHL$(TNR)STDSHL) $(STDSHL$(TNR)) \
438*cdf0e10cSrcweir		$(SHL$(TNR)LINKRES) \
439*cdf0e10cSrcweir		) >> $(MISC)/$(SHL$(TNR)TARGET).lnk
440*cdf0e10cSrcweir		$(COMMAND_ECHO)$(TYPE) $(MISC)/$(SHL$(TNR)TARGETN:b)_linkinc.ls  >> $(MISC)/$(SHL$(TNR)TARGET).lnk
441*cdf0e10cSrcweir		$(COMMAND_ECHO)$(SHL$(TNR)LINKER) @$(MISC)/$(SHL$(TNR)TARGET).lnk
442*cdf0e10cSrcweir		@echo linking $@.manifest ...
443*cdf0e10cSrcweir.IF "$(VISTA_MANIFEST)"!=""
444*cdf0e10cSrcweir		$(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(MT) $(MTFLAGS) -manifest $@.manifest -manifest $(TRUSTED_MANIFEST_LOCATION)/trustedinfo.manifest -out:$@.tmanifest$(EMQ) $(FI)
445*cdf0e10cSrcweir		$(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(MT) $(MTFLAGS) -manifest $@.tmanifest -outputresource:$@$(EMQ);2 $(FI)
446*cdf0e10cSrcweir.ELSE
447*cdf0e10cSrcweir		$(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(MT) $(MTFLAGS) -manifest $@.manifest -outputresource:$@$(EMQ);2 $(FI)
448*cdf0e10cSrcweir.ENDIF # "$(VISTA_MANIFEST)"!=""
449*cdf0e10cSrcweir		$(COMMAND_ECHO)$(IFEXIST) $@.manifest $(THEN) $(RM:s/+//) $@.manifest $(FI)
450*cdf0e10cSrcweir		$(COMMAND_ECHO)$(IFEXIST) $@.tmanifest $(THEN) $(RM:s/+//) $@.tmanifest $(FI)
451*cdf0e10cSrcweir.ENDIF			# "$(linkinc)"==""
452*cdf0e10cSrcweir.ENDIF			# "$(COM)"=="GCC"
453*cdf0e10cSrcweir.ENDIF			# "$(GUI)" == "WNT"
454*cdf0e10cSrcweir.IF "$(GUI)"=="UNX"
455*cdf0e10cSrcweir.IF "$(OS)"=="MACOSX"
456*cdf0e10cSrcweir	@-$(RM) $(MISC)/$(@:b).list
457*cdf0e10cSrcweir	@-$(RM) $(MISC)/$(TARGET).$(@:b)_$(TNR).cmd
458*cdf0e10cSrcweir	@echo $(STDSLO) $(SHL$(TNR)OBJS:s/.obj/.o/) \
459*cdf0e10cSrcweir	$(SHL$(TNR)VERSIONOBJ) \
460*cdf0e10cSrcweir	`cat /dev/null $(SHL$(TNR)LIBS) | sed s\#$(ROUT)\#$(PRJ)/$(ROUT)\#g` | tr -s " " "\n" > $(MISC)/$(@:b).list
461*cdf0e10cSrcweir	@echo -n $(SHL$(TNR)LINKER) $(SHL$(TNR)LINKFLAGS) $(SHL$(TNR)VERSIONMAPPARA) $(LINKFLAGSSHL) -L$(PRJ)/$(ROUT)/lib $(SOLARLIB) -o $@ \
462*cdf0e10cSrcweir	$(SHL$(TNR)STDLIBS) $(SHL$(TNR)ARCHIVES) $(SHL$(TNR)STDSHL) $(STDSHL$(TNR)) -filelist $(MISC)/$(@:b).list $(LINKOUTPUT_FILTER) > $(MISC)/$(TARGET).$(@:b)_$(TNR).cmd
463*cdf0e10cSrcweir    @$(PERL) $(SOLARENV)/bin/macosx-dylib-link-list.pl \
464*cdf0e10cSrcweir        `cat $(MISC)/$(TARGET).$(@:b)_$(TNR).cmd` \
465*cdf0e10cSrcweir        >> $(MISC)/$(TARGET).$(@:b)_$(TNR).cmd
466*cdf0e10cSrcweir  .IF "$(VERBOSE)" == "TRUE"
467*cdf0e10cSrcweir	@cat $(MISC)/$(TARGET).$(@:b)_$(TNR).cmd
468*cdf0e10cSrcweir  .ENDIF
469*cdf0e10cSrcweir	@+source $(MISC)/$(TARGET).$(@:b)_$(TNR).cmd
470*cdf0e10cSrcweir    @$(PERL) $(SOLARENV)/bin/macosx-change-install-names.pl \
471*cdf0e10cSrcweir        shl $(SHL$(TNR)RPATH) $@
472*cdf0e10cSrcweir.IF "$(SHL$(TNR)CREATEJNILIB)"!=""
473*cdf0e10cSrcweir	@echo "Making:   " $(@:f).jnilib
474*cdf0e10cSrcweir	@macosx-create-bundle $@
475*cdf0e10cSrcweir.ENDIF          # "$(SHL$(TNR)CREATEJNILIB)"!=""
476*cdf0e10cSrcweir.IF "$(UPDATER)"=="YES"
477*cdf0e10cSrcweir.IF "$(SHL$(TNR)NOCHECK)"==""
478*cdf0e10cSrcweir	$(SOLARENV)/bin/checkdll.sh -L$(LB) -L$(SOLARLIBDIR) $(EXTRALIBPATHS$(TNR)) $(SHL$(TNR)TARGETN)
479*cdf0e10cSrcweir.ENDIF				# "$(SHL$(TNR)NOCHECK)"!=""
480*cdf0e10cSrcweir.ENDIF
481*cdf0e10cSrcweir.ELSE			# "$(OS)"=="MACOSX"
482*cdf0e10cSrcweir	@-$(RM) $(MISC)/$(TARGET).$(@:b)_$(TNR).cmd
483*cdf0e10cSrcweir	@echo $(SHL$(TNR)LINKER) $(SHL$(TNR)LINKFLAGS) $(SHL$(TNR)SONAME) $(LINKFLAGSSHL) $(SHL$(TNR)VERSIONMAPPARA) -L$(PRJ)/$(ROUT)/lib $(SOLARLIB) $(STDSLO) $(SHL$(TNR)OBJS:s/.obj/.o/) \
484*cdf0e10cSrcweir	$(SHL$(TNR)VERSIONOBJ) -o $@ \
485*cdf0e10cSrcweir	`cat /dev/null $(SHL$(TNR)LIBS) | tr -s " " "\n" | $(SED) s\#$(ROUT)\#$(PRJ)/$(ROUT)\#g` \
486*cdf0e10cSrcweir	$(SHL$(TNR)STDLIBS) $(SHL$(TNR)ARCHIVES) $(SHL$(TNR)STDSHL) $(STDSHL$(TNR)) $(LINKOUTPUT_FILTER) > $(MISC)/$(TARGET).$(@:b)_$(TNR).cmd
487*cdf0e10cSrcweir  .IF "$(VERBOSE)" == "TRUE"
488*cdf0e10cSrcweir	@cat $(MISC)/$(TARGET).$(@:b)_$(TNR).cmd
489*cdf0e10cSrcweir  .ENDIF
490*cdf0e10cSrcweir	@+source $(MISC)/$(TARGET).$(@:b)_$(TNR).cmd
491*cdf0e10cSrcweir.IF "$(UPDATER)"=="YES"
492*cdf0e10cSrcweir.IF "$(SHL$(TNR)NOCHECK)"==""
493*cdf0e10cSrcweir	$(COMMAND_ECHO)-$(RM) $(SHL$(TNR)TARGETN:d)check_$(SHL$(TNR)TARGETN:f)
494*cdf0e10cSrcweir	$(COMMAND_ECHO)$(RENAME) $(SHL$(TNR)TARGETN) $(SHL$(TNR)TARGETN:d)check_$(SHL$(TNR)TARGETN:f)
495*cdf0e10cSrcweir.IF "$(VERBOSE)"=="TRUE"
496*cdf0e10cSrcweir	$(COMMAND_ECHO)$(SOLARENV)/bin/checkdll.sh -L$(LB) -L$(SOLARLIBDIR) $(EXTRALIBPATHS$(TNR)) $(SHL$(TNR)TARGETN:d)check_$(SHL$(TNR)TARGETN:f)
497*cdf0e10cSrcweir.ELSE
498*cdf0e10cSrcweir	$(COMMAND_ECHO)$(SOLARENV)/bin/checkdll.sh -L$(LB) -L$(SOLARLIBDIR) $(EXTRALIBPATHS$(TNR)) -- -s $(SHL$(TNR)TARGETN:d)check_$(SHL$(TNR)TARGETN:f)
499*cdf0e10cSrcweir.ENDIF
500*cdf0e10cSrcweir.ENDIF				# "$(SHL$(TNR)NOCHECK)"!=""
501*cdf0e10cSrcweir.ENDIF			# "$(UPDATER)"=="YES"
502*cdf0e10cSrcweir.ENDIF			# "$(OS)"=="MACOSX"
503*cdf0e10cSrcweir.IF "$(UNIXVERSIONNAMES)"!=""
504*cdf0e10cSrcweir	$(COMMAND_ECHO)$(RM) $(LB)/$(SHL$(TNR)TARGETN:b)
505*cdf0e10cSrcweir	$(COMMAND_ECHO)cd $(LB) && ln -s $(SHL$(TNR)TARGETN:f) $(SHL$(TNR)TARGETN:b)
506*cdf0e10cSrcweir.ENDIF			# "$(UNIXVERSIONNAMES)"!=""
507*cdf0e10cSrcweir.IF "$(VERBOSE)" == "TRUE"
508*cdf0e10cSrcweir	@ls -l $@
509*cdf0e10cSrcweir.ENDIF
510*cdf0e10cSrcweir.ENDIF			# "$(GUI)" == "UNX"
511*cdf0e10cSrcweir
512*cdf0e10cSrcweir.IF "$(GUI)" == "OS2"
513*cdf0e10cSrcweir
514*cdf0e10cSrcweir.IF "$(SHL$(TNR)DEFAULTRES)"!=""
515*cdf0e10cSrcweir	@+-$(RM) $(MISC)/$(SHL$(TNR)DEFAULTRES:b).rc >& $(NULLDEV)
516*cdf0e10cSrcweir.IF "$(SHL$(TNR)ICON)" != ""
517*cdf0e10cSrcweir	@-+echo 1 ICON $(SHL$(TNR)ICON) >> $(MISC)/$(SHL$(TNR)DEFAULTRES:b).rc
518*cdf0e10cSrcweir.ENDIF
519*cdf0e10cSrcweir.IF "$(use_shl_versions)" != ""
520*cdf0e10cSrcweir.IF "$(SHL$(TNR)ADD_VERINFO)"!=""
521*cdf0e10cSrcweir	@-+echo $(EMQ)#include $(EMQ)"$(SHL$(TNR)ADD_VERINFO)$(EMQ)" >> $(MISC)/$(SHL$(TNR)DEFAULTRES:b).rc
522*cdf0e10cSrcweir.ENDIF			# "$(SHL$(TNR)ADD_VERINFO)"!=""
523*cdf0e10cSrcweir	@-+echo MENU 1 BEGIN END >> $(MISC)/$(SHL$(TNR)DEFAULTRES:b).rc
524*cdf0e10cSrcweir#	@-+echo $(EMQ)RCDATA 1 { "Build string here" }$(EMQ) >> $(MISC)/$(SHL$(TNR)DEFAULTRES:b).rc
525*cdf0e10cSrcweir.ENDIF			# "$(use_shl_versions)" != ""
526*cdf0e10cSrcweir# YD 04/07/06 seems null, confuses rc cli: -i $(SOLARTESDIR)
527*cdf0e10cSrcweir	$(COMMAND_ECHO)$(RC) -r -DOS2 $(INCLUDE) $(RCLINKFLAGS) $(MISC)/$(SHL$(TNR)DEFAULTRES:b).rc
528*cdf0e10cSrcweir.ENDIF			# "$(SHL$(TNR)DEFAULTRES)"!=""
529*cdf0e10cSrcweir
530*cdf0e10cSrcweir.IF "$(SHL$(TNR)ALLRES)"!=""
531*cdf0e10cSrcweir	$(COMMAND_ECHO)+$(TYPE) $(SHL$(TNR)ALLRES) > $(SHL$(TNR)LINKRES)
532*cdf0e10cSrcweir.ENDIF			# "$(SHL$(TNR)ALLRES)"!=""
533*cdf0e10cSrcweir
534*cdf0e10cSrcweir.IF "$(USE_DEFFILE)"!=""
535*cdf0e10cSrcweir
536*cdf0e10cSrcweir	$(COMMAND_ECHO)$(SHL$(TNR)LINKER) $(SHL$(TNR)LINKFLAGS) $(LINKFLAGSSHL) -o $@ \
537*cdf0e10cSrcweir		$(SHL$(TNR)DEF) \
538*cdf0e10cSrcweir		$(STDOBJ) \
539*cdf0e10cSrcweir		-L$(LB) \
540*cdf0e10cSrcweir		-L$(SOLARVERSION)/$(INPATH)/lib \
541*cdf0e10cSrcweir		$(SHL$(TNR)OBJS) $(SHL$(TNR)VERSIONOBJ) \
542*cdf0e10cSrcweir		$(SHL$(TNR)LIBS) \
543*cdf0e10cSrcweir		$(SHL$(TNR)STDLIBS:^"-l") \
544*cdf0e10cSrcweir		$(SHL$(TNR)LINKRES) \
545*cdf0e10cSrcweir		$(SHL$(TNR)STDSHL:^"-l") $(STDSHL$(TNR):^"-l")
546*cdf0e10cSrcweir
547*cdf0e10cSrcweir.ELSE			# "$(USE_DEFFILE)"!=""
548*cdf0e10cSrcweir
549*cdf0e10cSrcweir	$(COMMAND_ECHO)$(SHL$(TNR)LINKER) -v 	$(SHL$(TNR)LINKFLAGS)			\
550*cdf0e10cSrcweir		$(LINKFLAGSSHL) $(SHL$(TNR)BASEX)		\
551*cdf0e10cSrcweir		$(SHL$(TNR)STACK) -o $(SHL$(TNR)TARGETN)	\
552*cdf0e10cSrcweir		$(SHL$(TNR)DEF) \
553*cdf0e10cSrcweir		$(STDOBJ)							\
554*cdf0e10cSrcweir		-L$(LB) \
555*cdf0e10cSrcweir		-L$(SOLARVERSION)/$(INPATH)/lib \
556*cdf0e10cSrcweir		$(SHL$(TNR)OBJS) $(SHL$(TNR)VERSIONOBJ) \
557*cdf0e10cSrcweir		$(SHL$(TNR)LIBS) \
558*cdf0e10cSrcweir		$(SHL$(TNR)STDLIBS:^"-l") \
559*cdf0e10cSrcweir		$(SHL$(TNR)LINKRES) \
560*cdf0e10cSrcweir		$(SHL$(TNR)STDSHL:^"-l") $(STDSHL$(TNR):^"-l")                           \
561*cdf0e10cSrcweir	@$(LS) $@ >& $(NULLDEV)
562*cdf0e10cSrcweir
563*cdf0e10cSrcweir.ENDIF			# "$(USE_DEFFILE)"!=""
564*cdf0e10cSrcweir
565*cdf0e10cSrcweir.IF "$(SHL$(TNR)TARGET8)" != "$(SHL$(TNR)TARGET)"
566*cdf0e10cSrcweir	$(COMMAND_ECHO)+$(COPY) $@ $(@:d)$(SHL$(TNR)TARGET8).dll
567*cdf0e10cSrcweir.ENDIF
568*cdf0e10cSrcweir
569*cdf0e10cSrcweir.ENDIF			# "$(GUI)" == "OS2"
570*cdf0e10cSrcweir
571*cdf0e10cSrcweir.ENDIF			# "$(SHL$(TNR)TARGETN)"!=""
572*cdf0e10cSrcweir
573*cdf0e10cSrcweir# unroll end
574*cdf0e10cSrcweir#######################################################
575*cdf0e10cSrcweir
576*cdf0e10cSrcweir#-------------------------------------------------------------------------
577*cdf0e10cSrcweir
578*cdf0e10cSrcweir#######################################################
579*cdf0e10cSrcweir# Anweisungen fuer das Linken
580*cdf0e10cSrcweir# unroll begin
581*cdf0e10cSrcweir
582*cdf0e10cSrcweir.IF "$(SHL$(TNR)IMPLIBN)" != ""
583*cdf0e10cSrcweir
584*cdf0e10cSrcweir.IF "$(UPDATER)"=="YES"
585*cdf0e10cSrcweirUSELIB$(TNR)DEPN+=$(SHL$(TNR)LIBS)
586*cdf0e10cSrcweir.ELSE
587*cdf0e10cSrcweir.ENDIF
588*cdf0e10cSrcweir
589*cdf0e10cSrcweir.IF "$(USE_DEFFILE)"!=""
590*cdf0e10cSrcweirUSE_SHL$(TNR)TARGET=$(SHL$(TNR)TARGETN)
591*cdf0e10cSrcweir.ENDIF
592*cdf0e10cSrcweir
593*cdf0e10cSrcweir.IF "$(GUI)" != "UNX"
594*cdf0e10cSrcweir$(SHL$(TNR)IMPLIBN):	\
595*cdf0e10cSrcweir					$(SHL$(TNR)DEF) \
596*cdf0e10cSrcweir					$(USE_SHL$(TNR)TARGET) \
597*cdf0e10cSrcweir					$(USELIB$(TNR)DEPN) \
598*cdf0e10cSrcweir					$(USELIBDEPN)
599*cdf0e10cSrcweir.ELSE
600*cdf0e10cSrcweir$(SHL$(TNR)IMPLIBN):	\
601*cdf0e10cSrcweir					$(SHL$(TNR)LIBS)
602*cdf0e10cSrcweir.ENDIF
603*cdf0e10cSrcweir	@echo "Making:   " $(@:f)
604*cdf0e10cSrcweir.IF "$(GUI)" == "WNT"
605*cdf0e10cSrcweir.IF "$(COM)"=="GCC"
606*cdf0e10cSrcweir	@echo no ImportLibs on mingw
607*cdf0e10cSrcweir	@-$(RM) $@
608*cdf0e10cSrcweir	@$(TOUCH) $@
609*cdf0e10cSrcweir.ELSE			# "$(COM)=="GCC"
610*cdf0e10cSrcweir# bei use_deffile implib von linker erstellt
611*cdf0e10cSrcweir.IF "$(USE_DEFFILE)"==""
612*cdf0e10cSrcweir	$(IMPLIB) $(IMPLIBFLAGS) @$(mktmp -out:$(SHL$(TNR)IMPLIBN) \
613*cdf0e10cSrcweir	-def:$(SHL$(TNR)DEF) )
614*cdf0e10cSrcweir.ELSE			# "$(USE_DEFFILE)==""
615*cdf0e10cSrcweir	@echo build of $(SHL$(TNR)TARGETN) creates $@
616*cdf0e10cSrcweir	@$(TOUCH) $@
617*cdf0e10cSrcweir.ENDIF			# "$(USE_DEFFILE)==""
618*cdf0e10cSrcweir.ENDIF			# "$(COM)"=="GCC"
619*cdf0e10cSrcweir
620*cdf0e10cSrcweir.ELIF "$(GUI)" == "OS2"
621*cdf0e10cSrcweir
622*cdf0e10cSrcweir# touch creates an empty file, but this is not good for emxomfar, so
623*cdf0e10cSrcweir# create a dummy lib here
624*cdf0e10cSrcweir	$(COMMAND_ECHO)-$(LIBMGR) $(LIBFLAGS) $@ $(SHL$(TNR)VERSIONOBJ)
625*cdf0e10cSrcweir	+@echo build of $(SHL$(TNR)TARGETN) creates $@
626*cdf0e10cSrcweir
627*cdf0e10cSrcweir.ELSE
628*cdf0e10cSrcweir	@echo no ImportLibs on Mac and *ix
629*cdf0e10cSrcweir	@-$(RM) $@
630*cdf0e10cSrcweir	@$(TOUCH) $@
631*cdf0e10cSrcweir.ENDIF
632*cdf0e10cSrcweir.ENDIF
633*cdf0e10cSrcweir
634*cdf0e10cSrcweir# unroll end
635*cdf0e10cSrcweir#######################################################
636*cdf0e10cSrcweir
637