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