xref: /trunk/main/solenv/inc/_tg_def.mk (revision 9d37da743abb7db0a497688391f6e55a19f27c44)
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 "$(DEF1TARGETN)"!=""
24
25#to make intuitiv naming work
26.IF "$(DEF1LIBNAME)"!=""
27DEFLIB1NAME*=$(DEF1LIBNAME)
28.ENDIF          # "$(DEF1LIBNAME)"!=""
29
30.IF "$(DEFLIB1NAME)"!=""
31DEF1DEPN+=$(foreach,i,$(DEFLIB1NAME) $(SLB)/$(i).lib)
32.ENDIF
33
34.IF "$(SHL1VERSIONMAP)"!=""
35.IF "$(DEF1EXPORTFILE)"==""
36.IF "$(GUI)"=="WNT"
37DEF1EXPORTFILE=$(MISC)/$(SHL1VERSIONMAP:b)_$(SHL1TARGET).dxp
38.IF "$(COM)"=="GCC"
39$(DEF1EXPORTFILE) : $(SHL1OBJS) $(SHL1LIBS)
40.ENDIF # .IF "$(COM)"=="GCC"
41
42$(DEF1EXPORTFILE) : $(SHL1VERSIONMAP)
43    $(COMMAND_ECHO)$(TYPE) $< | $(AWK) -f $(SOLARENV)/bin/getcsym.awk > $@
44.IF "$(COM)"!="GCC"
45# Wildcards in a version script are a GCC concept -- the GCC branch below
46# pulls them out into a .symbols-regexp and matches them against the real
47# objects.  MSVC has no equivalent, and asking link.exe to export a literal
48# "_ZTI*" fails with LNK2001, so drop those lines here.  Match "*" alone:
49# every MSVC-mangled C++ name begins with "?", so "[*?]" would drop the lot.
50    $(COMMAND_ECHO)-$(GREP) -v "[*]" $@ > $@.nowild
51    $(COMMAND_ECHO)$(RENAME) $@.nowild $@
52.ENDIF
53.IF "$(COM)"=="GCC"
54    $(COMMAND_ECHO)-$(GREP) -v "\*\|?" $@ | $(SED) -e 's@#.*@@' > $@.exported-symbols
55    $(COMMAND_ECHO)-$(GREP) "\*\|?" $@ > $@.symbols-regexp
56# Shared libraries will be build out of the *.obj files specified in SHL?OBJS and SHL?LIBS
57# Extract RTTI symbols from all the objects that will be used to build a shared library
58    $(COMMAND_ECHO)nm -gP $(SHL1OBJS) \
59        `$(TYPE) /dev/null $(foreach,j,$(SHL1LIBS) $j) | $(SED) s\#$(ROUT)\#$(PRJ)$/$(ROUT)\#g` \
60        | $(SOLARENV)/bin/addsym-mingw.sh $@.symbols-regexp $@.symbols-regexp.tmp >> $@.exported-symbols
61# overwrite the map file generate into the local output tree with the generated
62# exported symbols list
63    $(COMMAND_ECHO)$(RENAME) $@.exported-symbols $@
64.ENDIF # .IF "$(COM)"=="GCC"
65
66.ENDIF          # "$(GUI)"=="WNT"
67
68.IF "$(GUI)"=="OS2"
69DEF1EXPORTFILE=$(MISC)/$(SHL1VERSIONMAP:b)_$(SHL1TARGET).dxp
70$(DEF1EXPORTFILE) : $(SHL1VERSIONMAP)
71    $(TYPE) $< | $(AWK) -f $(SOLARENV)/bin/getcsym.awk > $@
72.ENDIF          # "$(GUI)"=="OS2"
73
74.ENDIF          # "$(DEF1EXPORTFILE)"==""
75.ENDIF          # "$(SHL1VERSIONMAP)"!=""
76
77.IF "$(GUI)"=="WNT"
78
79DEF1FILTER=$(SOLARENV)/inc/dummy.flt
80
81RMHACK1:=$(RM)
82
83.IF "$(DEF1CEXP)"!=""
84EXPORT_ALL_SWITCH=-A $(DEF1CEXP)
85.ENDIF
86
87.IF "$(link_always)"==""
88$(DEF1TARGETN) : \
89        $(DEF1DEPN) \
90        $(DEF1EXPORTFILE)
91.ELSE           # "$(link_always)"==""
92$(DEF1TARGETN) .PHONY :
93.ENDIF          # "$(link_always)"==""
94    @-$(RM) $@.tmpfile
95    @echo "Making:    module definition file" $(@:f)
96    @echo LIBRARY     $(EMQ)"$(SHL1TARGETN:f)$(EMQ)"                                 >$@.tmpfile
97.IF "$(COM)"!="GCC"
98    @echo HEAPSIZE    0                                             >>$@.tmpfile
99.ENDIF
100    @echo EXPORTS                                                   >>$@.tmpfile
101.IF "$(VERSIONOBJ)"!=""
102#   getversioninfo fuer alle!!
103    @echo GetVersionInfo        >>$@.tmpfile
104.ENDIF
105.IF "$(DEFLIB1NAME)"!=""
106.IF "$(COM)"=="GCC"
107    @-$(RM) $(MISC)/$(SHL1TARGET).exp
108    $(COMMAND_ECHO)dlltool --output-def $(MISC)/$(SHL1TARGET).exp --export-all-symbols \
109        `$(TYPE) $(foreach,i,$(DEFLIB1NAME) $(SLB)/$(i).lib) | sed s#$(ROUT)#$(PRJ)/$(ROUT)#g`
110    $(COMMAND_ECHO)tail --lines +3 $(MISC)/$(SHL1TARGET).exp | sed '/^;/d' >>$@.tmpfile
111    @-$(RM) $(MISC)/$(SHL1TARGET).exp
112.ELSE
113.IF "$(SHL1USE_EXPORTS)"==""
114    @-$(RMHACK1) $(MISC)/$(SHL1TARGET).exp
115    @$(SOLARENV)/bin/extract-linker-member.sh $(SLB)/$(DEFLIB1NAME).lib $(MISC)/$(SHL1TARGET).exp
116    @$(LDUMP2) -N $(EXPORT_ALL_SWITCH) -F $(MISC)/$(SHL1TARGET).flt $(MISC)/$(SHL1TARGET).exp              >>$@.tmpfile
117    $(COMMAND_ECHO)$(RMHACK1) $(MISC)/$(SHL1TARGET).exp
118.ELSE           # "$(SHL1USE_EXPORTS)"==""
119    @$(DUMPBIN) -DIRECTIVES  $(foreach,i,$(DEFLIB1NAME) $(SLB)/$(i).lib) | $(GREP) EXPORT: > $(MISC)/$(SHL1TARGET).direct
120    @$(LDUMP2) -N -D $(EXPORT_ALL_SWITCH) -F $(DEF1FILTER) $(MISC)/$(SHL1TARGET).direct >>$@.tmpfile
121.ENDIF          # "$(SHL1USE_EXPORTS)"==""
122.ENDIF
123.ENDIF              # "$(DEFLIB1NAME)"!=""
124.IF "$(DEF1EXPORT1)"!=""
125    @echo $(DEF1EXPORT1)                                        >>$@.tmpfile
126.ENDIF
127.IF "$(DEF1EXPORT2)"!=""
128    @echo $(DEF1EXPORT2)                                        >>$@.tmpfile
129.ENDIF
130.IF "$(DEF1EXPORT3)"!=""
131    @echo $(DEF1EXPORT3)                                        >>$@.tmpfile
132.ENDIF
133.IF "$(DEF1EXPORT4)"!=""
134    @echo $(DEF1EXPORT4)                                        >>$@.tmpfile
135.ENDIF
136.IF "$(DEF1EXPORT5)"!=""
137    @echo $(DEF1EXPORT5)                                        >>$@.tmpfile
138.ENDIF
139.IF "$(DEF1EXPORT6)"!=""
140    @echo $(DEF1EXPORT6)                                        >>$@.tmpfile
141.ENDIF
142.IF "$(DEF1EXPORT7)"!=""
143    @echo $(DEF1EXPORT7)                                        >>$@.tmpfile
144.ENDIF
145.IF "$(DEF1EXPORT8)"!=""
146    @echo $(DEF1EXPORT8)                                        >>$@.tmpfile
147.ENDIF
148.IF "$(DEF1EXPORT9)"!=""
149    @echo $(DEF1EXPORT9)                                        >>$@.tmpfile
150.ENDIF
151.IF "$(DEF1EXPORT10)"!=""
152    @echo $(DEF1EXPORT10)                                       >>$@.tmpfile
153.ENDIF
154.IF "$(DEF1EXPORT11)"!=""
155    @echo $(DEF1EXPORT11)                                       >>$@.tmpfile
156.ENDIF
157.IF "$(DEF1EXPORT12)"!=""
158    @echo $(DEF1EXPORT12)                                       >>$@.tmpfile
159.ENDIF
160.IF "$(DEF1EXPORT13)"!=""
161    @echo $(DEF1EXPORT13)                                       >>$@.tmpfile
162.ENDIF
163.IF "$(DEF1EXPORT14)"!=""
164    @echo $(DEF1EXPORT14)                                       >>$@.tmpfile
165.ENDIF
166.IF "$(DEF1EXPORT15)"!=""
167    @echo $(DEF1EXPORT15)                                       >>$@.tmpfile
168.ENDIF
169.IF "$(DEF1EXPORT16)"!=""
170    @echo $(DEF1EXPORT16)                                       >>$@.tmpfile
171.ENDIF
172.IF "$(DEF1EXPORT17)"!=""
173    @echo $(DEF1EXPORT17)                                       >>$@.tmpfile
174.ENDIF
175.IF "$(DEF1EXPORT18)"!=""
176    @echo $(DEF1EXPORT18)                                       >>$@.tmpfile
177.ENDIF
178.IF "$(DEF1EXPORT19)"!=""
179    @echo $(DEF1EXPORT19)                                       >>$@.tmpfile
180.ENDIF
181.IF "$(DEF1EXPORT20)"!=""
182    @echo $(DEF1EXPORT20)                                       >>$@.tmpfile
183.ENDIF
184.IF "$(DEF1EXPORTFILE)"!=""
185.IF "$(COM)"=="GCC"
186    $(COMMAND_ECHO)$(TYPE) $(DEF1EXPORTFILE) | sed -e s:PRIVATE:: >> $@.tmpfile
187.ELSE
188    $(COMMAND_ECHO)$(TYPE) $(DEF1EXPORTFILE) >> $@.tmpfile
189.ENDIF
190.ENDIF
191    @-$(RM) $@
192    @$(RENAME) $@.tmpfile $@
193.ENDIF          # "$(GUI)"=="WNT"
194
195.IF "$(GUI)"=="OS2"
196
197#21/02/2006 YD dll names must be 8.3, invoke fix script
198#check osl/os2/module.c/osl_loadModule()
199SHL1TARGET8=$(shell @fix_shl.cmd $(SHL1TARGETN:f))
200
201DEF1FILTER=$(SOLARENV)/inc/dummy.flt
202DEF1NAMELIST=$(foreach,i,$(DEFLIB1NAME) $(SLB)/$(i).lib)
203
204.IF "$(link_always)"==""
205$(DEF1TARGETN) : \
206        $(DEF1DEPN) \
207        $(DEF1EXPORTFILE)
208.ELSE           # "$(link_always)"==""
209$(DEF1TARGETN) .PHONY :
210.ENDIF          # "$(link_always)"==""
211    @+-$(RM) $@.tmpfile
212    @echo "Making:    module definition file" $(@:f)
213    @echo LIBRARY     $(SHL1TARGET8) INITINSTANCE TERMINSTANCE   >$@.tmpfile
214    @echo DATA MULTIPLE  >>$@.tmpfile
215    @echo EXPORTS                                                   >>$@.tmpfile
216.IF "$(VERSIONOBJ)"!=""
217#   getversioninfo fuer alle!!
218    @echo _GetVersionInfo       >$@.tmp_ord
219.ENDIF
220
221.IF "$(DEFLIB1NAME)"!=""
222    @+echo $(SLB)/$(DEFLIB1NAME).lib
223    @+emxexp $(DEF1NAMELIST) | fix_exp_file >> $@.tmp_ord
224.ENDIF              # "$(DEFLIB1NAME)"!=""
225
226.IF "$(DEF1EXPORT1)"!=""
227    @echo $(DEF1EXPORT1)                                        >>$@.tmpfile
228.ENDIF
229.IF "$(DEF1EXPORT2)"!=""
230    @echo $(DEF1EXPORT2)                                        >>$@.tmpfile
231.ENDIF
232.IF "$(DEF1EXPORT3)"!=""
233    @echo $(DEF1EXPORT3)                                        >>$@.tmpfile
234.ENDIF
235.IF "$(DEF1EXPORT4)"!=""
236    @echo $(DEF1EXPORT4)                                        >>$@.tmpfile
237.ENDIF
238.IF "$(DEF1EXPORT5)"!=""
239    @echo $(DEF1EXPORT5)                                        >>$@.tmpfile
240.ENDIF
241.IF "$(DEF1EXPORT6)"!=""
242    @echo $(DEF1EXPORT6)                                        >>$@.tmpfile
243.ENDIF
244.IF "$(DEF1EXPORT7)"!=""
245    @echo $(DEF1EXPORT7)                                        >>$@.tmpfile
246.ENDIF
247.IF "$(DEF1EXPORT8)"!=""
248    @echo $(DEF1EXPORT8)                                        >>$@.tmpfile
249.ENDIF
250.IF "$(DEF1EXPORT9)"!=""
251    @echo $(DEF1EXPORT9)                                        >>$@.tmpfile
252.ENDIF
253.IF "$(DEF1EXPORT10)"!=""
254    @echo $(DEF1EXPORT10)                                       >>$@.tmpfile
255.ENDIF
256.IF "$(DEF1EXPORT11)"!=""
257    @echo $(DEF1EXPORT11)                                       >>$@.tmpfile
258.ENDIF
259.IF "$(DEF1EXPORT12)"!=""
260    @echo $(DEF1EXPORT12)                                       >>$@.tmpfile
261.ENDIF
262.IF "$(DEF1EXPORT13)"!=""
263    @echo $(DEF1EXPORT13)                                       >>$@.tmpfile
264.ENDIF
265.IF "$(DEF1EXPORT14)"!=""
266    @echo $(DEF1EXPORT14)                                       >>$@.tmpfile
267.ENDIF
268.IF "$(DEF1EXPORT15)"!=""
269    @echo $(DEF1EXPORT15)                                       >>$@.tmpfile
270.ENDIF
271.IF "$(DEF1EXPORT16)"!=""
272    @echo $(DEF1EXPORT16)                                       >>$@.tmpfile
273.ENDIF
274.IF "$(DEF1EXPORT17)"!=""
275    @echo $(DEF1EXPORT17)                                       >>$@.tmpfile
276.ENDIF
277.IF "$(DEF1EXPORT18)"!=""
278    @echo $(DEF1EXPORT18)                                       >>$@.tmpfile
279.ENDIF
280.IF "$(DEF1EXPORT19)"!=""
281    @echo $(DEF1EXPORT19)                                       >>$@.tmpfile
282.ENDIF
283.IF "$(DEF1EXPORT20)"!=""
284    @echo $(DEF1EXPORT20)                                       >>$@.tmpfile
285.ENDIF
286.IF "$(DEF1EXPORTFILE)"!=""
287    @fix_def_file < $(DEF1EXPORTFILE) >> $@.tmp_ord
288.ENDIF
289    @sort < $@.tmp_ord | uniq > $@.exptmpfile
290    @fix_def_ord < $@.exptmpfile >> $@.tmpfile
291    @+-$(RM) $@
292    $(COMMAND_ECHO)+$(RENAME) $@.tmpfile $@
293    @+-$(RM) $@.tmp_ord
294    @+-$(RM) $@.exptmpfile
295.IF "$(SHL1USE_EXPORTS)"=="" || "$(SHL1USE_EXPORTS)"=="ordinal"
296#03/11/2012  if 'name' is not used, export from def file (with ordinals)
297    @echo Build import library from DEF file.
298    @+-$(RM) $(LB)/$(SHL1TARGETN:b).lib
299    $(COMMAND_ECHO)+$(IMPLIB) $(IMPLIBFLAGS) $(LB)/$(SHL1TARGETN:b).lib $@
300.ENDIF          # "$(SHL1USE_EXPORTS)"==""
301
302.ENDIF          # "$(GUI)"=="OS2"
303
304.IF "$(GUI)"=="UNX"
305$(DEF1TARGETN): \
306        $(DEF1DEPN) \
307        $(DEF1EXPORTFILE)
308    @echo just a dummy for UNIX > $@
309.ENDIF
310.ENDIF          # "$(DEF1TARGETN)"!=""
311
312
313# Anweisungen fuer das Linken
314# unroll begin
315
316.IF "$(DEF2TARGETN)"!=""
317
318#to make intuitiv naming work
319.IF "$(DEF2LIBNAME)"!=""
320DEFLIB2NAME*=$(DEF2LIBNAME)
321.ENDIF          # "$(DEF2LIBNAME)"!=""
322
323.IF "$(DEFLIB2NAME)"!=""
324DEF2DEPN+=$(foreach,i,$(DEFLIB2NAME) $(SLB)/$(i).lib)
325.ENDIF
326
327.IF "$(SHL2VERSIONMAP)"!=""
328.IF "$(DEF2EXPORTFILE)"==""
329.IF "$(GUI)"=="WNT"
330DEF2EXPORTFILE=$(MISC)/$(SHL2VERSIONMAP:b)_$(SHL2TARGET).dxp
331.IF "$(COM)"=="GCC"
332$(DEF2EXPORTFILE) : $(SHL2OBJS) $(SHL2LIBS)
333.ENDIF # .IF "$(COM)"=="GCC"
334
335$(DEF2EXPORTFILE) : $(SHL2VERSIONMAP)
336    $(COMMAND_ECHO)$(TYPE) $< | $(AWK) -f $(SOLARENV)/bin/getcsym.awk > $@
337.IF "$(COM)"!="GCC"
338# Wildcards in a version script are a GCC concept -- the GCC branch below
339# pulls them out into a .symbols-regexp and matches them against the real
340# objects.  MSVC has no equivalent, and asking link.exe to export a literal
341# "_ZTI*" fails with LNK2001, so drop those lines here.  Match "*" alone:
342# every MSVC-mangled C++ name begins with "?", so "[*?]" would drop the lot.
343    $(COMMAND_ECHO)-$(GREP) -v "[*]" $@ > $@.nowild
344    $(COMMAND_ECHO)$(RENAME) $@.nowild $@
345.ENDIF
346.IF "$(COM)"=="GCC"
347    $(COMMAND_ECHO)-$(GREP) -v "\*\|?" $@ | $(SED) -e 's@#.*@@' > $@.exported-symbols
348    $(COMMAND_ECHO)-$(GREP) "\*\|?" $@ > $@.symbols-regexp
349# Shared libraries will be build out of the *.obj files specified in SHL?OBJS and SHL?LIBS
350# Extract RTTI symbols from all the objects that will be used to build a shared library
351    $(COMMAND_ECHO)nm -gP $(SHL2OBJS) \
352        `$(TYPE) /dev/null $(foreach,j,$(SHL2LIBS) $j) | $(SED) s\#$(ROUT)\#$(PRJ)$/$(ROUT)\#g` \
353        | $(SOLARENV)/bin/addsym-mingw.sh $@.symbols-regexp $@.symbols-regexp.tmp >> $@.exported-symbols
354# overwrite the map file generate into the local output tree with the generated
355# exported symbols list
356    $(COMMAND_ECHO)$(RENAME) $@.exported-symbols $@
357.ENDIF # .IF "$(COM)"=="GCC"
358
359.ENDIF          # "$(GUI)"=="WNT"
360
361.IF "$(GUI)"=="OS2"
362DEF2EXPORTFILE=$(MISC)/$(SHL2VERSIONMAP:b)_$(SHL2TARGET).dxp
363$(DEF2EXPORTFILE) : $(SHL2VERSIONMAP)
364    $(TYPE) $< | $(AWK) -f $(SOLARENV)/bin/getcsym.awk > $@
365.ENDIF          # "$(GUI)"=="OS2"
366
367.ENDIF          # "$(DEF2EXPORTFILE)"==""
368.ENDIF          # "$(SHL2VERSIONMAP)"!=""
369
370.IF "$(GUI)"=="WNT"
371
372DEF2FILTER=$(SOLARENV)/inc/dummy.flt
373
374RMHACK2:=$(RM)
375
376.IF "$(DEF2CEXP)"!=""
377EXPORT_ALL_SWITCH=-A $(DEF2CEXP)
378.ENDIF
379
380.IF "$(link_always)"==""
381$(DEF2TARGETN) : \
382        $(DEF2DEPN) \
383        $(DEF2EXPORTFILE)
384.ELSE           # "$(link_always)"==""
385$(DEF2TARGETN) .PHONY :
386.ENDIF          # "$(link_always)"==""
387    @-$(RM) $@.tmpfile
388    @echo "Making:    module definition file" $(@:f)
389    @echo LIBRARY     $(EMQ)"$(SHL2TARGETN:f)$(EMQ)"                                 >$@.tmpfile
390.IF "$(COM)"!="GCC"
391    @echo HEAPSIZE    0                                             >>$@.tmpfile
392.ENDIF
393    @echo EXPORTS                                                   >>$@.tmpfile
394.IF "$(VERSIONOBJ)"!=""
395#   getversioninfo fuer alle!!
396    @echo GetVersionInfo        >>$@.tmpfile
397.ENDIF
398.IF "$(DEFLIB2NAME)"!=""
399.IF "$(COM)"=="GCC"
400    @-$(RM) $(MISC)/$(SHL2TARGET).exp
401    $(COMMAND_ECHO)dlltool --output-def $(MISC)/$(SHL2TARGET).exp --export-all-symbols \
402        `$(TYPE) $(foreach,i,$(DEFLIB2NAME) $(SLB)/$(i).lib) | sed s#$(ROUT)#$(PRJ)/$(ROUT)#g`
403    $(COMMAND_ECHO)tail --lines +3 $(MISC)/$(SHL2TARGET).exp | sed '/^;/d' >>$@.tmpfile
404    @-$(RM) $(MISC)/$(SHL2TARGET).exp
405.ELSE
406.IF "$(SHL2USE_EXPORTS)"==""
407    @-$(RMHACK2) $(MISC)/$(SHL2TARGET).exp
408    @$(SOLARENV)/bin/extract-linker-member.sh $(SLB)/$(DEFLIB2NAME).lib $(MISC)/$(SHL2TARGET).exp
409    @$(LDUMP2) -N $(EXPORT_ALL_SWITCH) -F $(MISC)/$(SHL2TARGET).flt $(MISC)/$(SHL2TARGET).exp              >>$@.tmpfile
410    $(COMMAND_ECHO)$(RMHACK2) $(MISC)/$(SHL2TARGET).exp
411.ELSE           # "$(SHL2USE_EXPORTS)"==""
412    @$(DUMPBIN) -DIRECTIVES  $(foreach,i,$(DEFLIB2NAME) $(SLB)/$(i).lib) | $(GREP) EXPORT: > $(MISC)/$(SHL2TARGET).direct
413    @$(LDUMP2) -N -D $(EXPORT_ALL_SWITCH) -F $(DEF2FILTER) $(MISC)/$(SHL2TARGET).direct >>$@.tmpfile
414.ENDIF          # "$(SHL2USE_EXPORTS)"==""
415.ENDIF
416.ENDIF              # "$(DEFLIB2NAME)"!=""
417.IF "$(DEF2EXPORT1)"!=""
418    @echo $(DEF2EXPORT1)                                        >>$@.tmpfile
419.ENDIF
420.IF "$(DEF2EXPORT2)"!=""
421    @echo $(DEF2EXPORT2)                                        >>$@.tmpfile
422.ENDIF
423.IF "$(DEF2EXPORT3)"!=""
424    @echo $(DEF2EXPORT3)                                        >>$@.tmpfile
425.ENDIF
426.IF "$(DEF2EXPORT4)"!=""
427    @echo $(DEF2EXPORT4)                                        >>$@.tmpfile
428.ENDIF
429.IF "$(DEF2EXPORT5)"!=""
430    @echo $(DEF2EXPORT5)                                        >>$@.tmpfile
431.ENDIF
432.IF "$(DEF2EXPORT6)"!=""
433    @echo $(DEF2EXPORT6)                                        >>$@.tmpfile
434.ENDIF
435.IF "$(DEF2EXPORT7)"!=""
436    @echo $(DEF2EXPORT7)                                        >>$@.tmpfile
437.ENDIF
438.IF "$(DEF2EXPORT8)"!=""
439    @echo $(DEF2EXPORT8)                                        >>$@.tmpfile
440.ENDIF
441.IF "$(DEF2EXPORT9)"!=""
442    @echo $(DEF2EXPORT9)                                        >>$@.tmpfile
443.ENDIF
444.IF "$(DEF2EXPORT10)"!=""
445    @echo $(DEF2EXPORT10)                                       >>$@.tmpfile
446.ENDIF
447.IF "$(DEF2EXPORT11)"!=""
448    @echo $(DEF2EXPORT11)                                       >>$@.tmpfile
449.ENDIF
450.IF "$(DEF2EXPORT12)"!=""
451    @echo $(DEF2EXPORT12)                                       >>$@.tmpfile
452.ENDIF
453.IF "$(DEF2EXPORT13)"!=""
454    @echo $(DEF2EXPORT13)                                       >>$@.tmpfile
455.ENDIF
456.IF "$(DEF2EXPORT14)"!=""
457    @echo $(DEF2EXPORT14)                                       >>$@.tmpfile
458.ENDIF
459.IF "$(DEF2EXPORT15)"!=""
460    @echo $(DEF2EXPORT15)                                       >>$@.tmpfile
461.ENDIF
462.IF "$(DEF2EXPORT16)"!=""
463    @echo $(DEF2EXPORT16)                                       >>$@.tmpfile
464.ENDIF
465.IF "$(DEF2EXPORT17)"!=""
466    @echo $(DEF2EXPORT17)                                       >>$@.tmpfile
467.ENDIF
468.IF "$(DEF2EXPORT18)"!=""
469    @echo $(DEF2EXPORT18)                                       >>$@.tmpfile
470.ENDIF
471.IF "$(DEF2EXPORT19)"!=""
472    @echo $(DEF2EXPORT19)                                       >>$@.tmpfile
473.ENDIF
474.IF "$(DEF2EXPORT20)"!=""
475    @echo $(DEF2EXPORT20)                                       >>$@.tmpfile
476.ENDIF
477.IF "$(DEF2EXPORTFILE)"!=""
478.IF "$(COM)"=="GCC"
479    $(COMMAND_ECHO)$(TYPE) $(DEF2EXPORTFILE) | sed -e s:PRIVATE:: >> $@.tmpfile
480.ELSE
481    $(COMMAND_ECHO)$(TYPE) $(DEF2EXPORTFILE) >> $@.tmpfile
482.ENDIF
483.ENDIF
484    @-$(RM) $@
485    @$(RENAME) $@.tmpfile $@
486.ENDIF          # "$(GUI)"=="WNT"
487
488.IF "$(GUI)"=="OS2"
489
490#21/02/2006 YD dll names must be 8.3, invoke fix script
491#check osl/os2/module.c/osl_loadModule()
492SHL2TARGET8=$(shell @fix_shl.cmd $(SHL2TARGETN:f))
493
494DEF2FILTER=$(SOLARENV)/inc/dummy.flt
495DEF2NAMELIST=$(foreach,i,$(DEFLIB2NAME) $(SLB)/$(i).lib)
496
497.IF "$(link_always)"==""
498$(DEF2TARGETN) : \
499        $(DEF2DEPN) \
500        $(DEF2EXPORTFILE)
501.ELSE           # "$(link_always)"==""
502$(DEF2TARGETN) .PHONY :
503.ENDIF          # "$(link_always)"==""
504    @+-$(RM) $@.tmpfile
505    @echo "Making:    module definition file" $(@:f)
506    @echo LIBRARY     $(SHL2TARGET8) INITINSTANCE TERMINSTANCE   >$@.tmpfile
507    @echo DATA MULTIPLE  >>$@.tmpfile
508    @echo EXPORTS                                                   >>$@.tmpfile
509.IF "$(VERSIONOBJ)"!=""
510#   getversioninfo fuer alle!!
511    @echo _GetVersionInfo       >$@.tmp_ord
512.ENDIF
513
514.IF "$(DEFLIB2NAME)"!=""
515    @+echo $(SLB)/$(DEFLIB2NAME).lib
516    @+emxexp $(DEF2NAMELIST) | fix_exp_file >> $@.tmp_ord
517.ENDIF              # "$(DEFLIB2NAME)"!=""
518
519.IF "$(DEF2EXPORT1)"!=""
520    @echo $(DEF2EXPORT1)                                        >>$@.tmpfile
521.ENDIF
522.IF "$(DEF2EXPORT2)"!=""
523    @echo $(DEF2EXPORT2)                                        >>$@.tmpfile
524.ENDIF
525.IF "$(DEF2EXPORT3)"!=""
526    @echo $(DEF2EXPORT3)                                        >>$@.tmpfile
527.ENDIF
528.IF "$(DEF2EXPORT4)"!=""
529    @echo $(DEF2EXPORT4)                                        >>$@.tmpfile
530.ENDIF
531.IF "$(DEF2EXPORT5)"!=""
532    @echo $(DEF2EXPORT5)                                        >>$@.tmpfile
533.ENDIF
534.IF "$(DEF2EXPORT6)"!=""
535    @echo $(DEF2EXPORT6)                                        >>$@.tmpfile
536.ENDIF
537.IF "$(DEF2EXPORT7)"!=""
538    @echo $(DEF2EXPORT7)                                        >>$@.tmpfile
539.ENDIF
540.IF "$(DEF2EXPORT8)"!=""
541    @echo $(DEF2EXPORT8)                                        >>$@.tmpfile
542.ENDIF
543.IF "$(DEF2EXPORT9)"!=""
544    @echo $(DEF2EXPORT9)                                        >>$@.tmpfile
545.ENDIF
546.IF "$(DEF2EXPORT10)"!=""
547    @echo $(DEF2EXPORT10)                                       >>$@.tmpfile
548.ENDIF
549.IF "$(DEF2EXPORT11)"!=""
550    @echo $(DEF2EXPORT11)                                       >>$@.tmpfile
551.ENDIF
552.IF "$(DEF2EXPORT12)"!=""
553    @echo $(DEF2EXPORT12)                                       >>$@.tmpfile
554.ENDIF
555.IF "$(DEF2EXPORT13)"!=""
556    @echo $(DEF2EXPORT13)                                       >>$@.tmpfile
557.ENDIF
558.IF "$(DEF2EXPORT14)"!=""
559    @echo $(DEF2EXPORT14)                                       >>$@.tmpfile
560.ENDIF
561.IF "$(DEF2EXPORT15)"!=""
562    @echo $(DEF2EXPORT15)                                       >>$@.tmpfile
563.ENDIF
564.IF "$(DEF2EXPORT16)"!=""
565    @echo $(DEF2EXPORT16)                                       >>$@.tmpfile
566.ENDIF
567.IF "$(DEF2EXPORT17)"!=""
568    @echo $(DEF2EXPORT17)                                       >>$@.tmpfile
569.ENDIF
570.IF "$(DEF2EXPORT18)"!=""
571    @echo $(DEF2EXPORT18)                                       >>$@.tmpfile
572.ENDIF
573.IF "$(DEF2EXPORT19)"!=""
574    @echo $(DEF2EXPORT19)                                       >>$@.tmpfile
575.ENDIF
576.IF "$(DEF2EXPORT20)"!=""
577    @echo $(DEF2EXPORT20)                                       >>$@.tmpfile
578.ENDIF
579.IF "$(DEF2EXPORTFILE)"!=""
580    @fix_def_file < $(DEF2EXPORTFILE) >> $@.tmp_ord
581.ENDIF
582    @sort < $@.tmp_ord | uniq > $@.exptmpfile
583    @fix_def_ord < $@.exptmpfile >> $@.tmpfile
584    @+-$(RM) $@
585    $(COMMAND_ECHO)+$(RENAME) $@.tmpfile $@
586    @+-$(RM) $@.tmp_ord
587    @+-$(RM) $@.exptmpfile
588.IF "$(SHL2USE_EXPORTS)"=="" || "$(SHL2USE_EXPORTS)"=="ordinal"
589#03/11/2012  if 'name' is not used, export from def file (with ordinals)
590    @echo Build import library from DEF file.
591    @+-$(RM) $(LB)/$(SHL2TARGETN:b).lib
592    $(COMMAND_ECHO)+$(IMPLIB) $(IMPLIBFLAGS) $(LB)/$(SHL2TARGETN:b).lib $@
593.ENDIF          # "$(SHL2USE_EXPORTS)"==""
594
595.ENDIF          # "$(GUI)"=="OS2"
596
597.IF "$(GUI)"=="UNX"
598$(DEF2TARGETN): \
599        $(DEF2DEPN) \
600        $(DEF2EXPORTFILE)
601    @echo just a dummy for UNIX > $@
602.ENDIF
603.ENDIF          # "$(DEF2TARGETN)"!=""
604
605
606# Anweisungen fuer das Linken
607# unroll begin
608
609.IF "$(DEF3TARGETN)"!=""
610
611#to make intuitiv naming work
612.IF "$(DEF3LIBNAME)"!=""
613DEFLIB3NAME*=$(DEF3LIBNAME)
614.ENDIF          # "$(DEF3LIBNAME)"!=""
615
616.IF "$(DEFLIB3NAME)"!=""
617DEF3DEPN+=$(foreach,i,$(DEFLIB3NAME) $(SLB)/$(i).lib)
618.ENDIF
619
620.IF "$(SHL3VERSIONMAP)"!=""
621.IF "$(DEF3EXPORTFILE)"==""
622.IF "$(GUI)"=="WNT"
623DEF3EXPORTFILE=$(MISC)/$(SHL3VERSIONMAP:b)_$(SHL3TARGET).dxp
624.IF "$(COM)"=="GCC"
625$(DEF3EXPORTFILE) : $(SHL3OBJS) $(SHL3LIBS)
626.ENDIF # .IF "$(COM)"=="GCC"
627
628$(DEF3EXPORTFILE) : $(SHL3VERSIONMAP)
629    $(COMMAND_ECHO)$(TYPE) $< | $(AWK) -f $(SOLARENV)/bin/getcsym.awk > $@
630.IF "$(COM)"!="GCC"
631# Wildcards in a version script are a GCC concept -- the GCC branch below
632# pulls them out into a .symbols-regexp and matches them against the real
633# objects.  MSVC has no equivalent, and asking link.exe to export a literal
634# "_ZTI*" fails with LNK2001, so drop those lines here.  Match "*" alone:
635# every MSVC-mangled C++ name begins with "?", so "[*?]" would drop the lot.
636    $(COMMAND_ECHO)-$(GREP) -v "[*]" $@ > $@.nowild
637    $(COMMAND_ECHO)$(RENAME) $@.nowild $@
638.ENDIF
639.IF "$(COM)"=="GCC"
640    $(COMMAND_ECHO)-$(GREP) -v "\*\|?" $@ | $(SED) -e 's@#.*@@' > $@.exported-symbols
641    $(COMMAND_ECHO)-$(GREP) "\*\|?" $@ > $@.symbols-regexp
642# Shared libraries will be build out of the *.obj files specified in SHL?OBJS and SHL?LIBS
643# Extract RTTI symbols from all the objects that will be used to build a shared library
644    $(COMMAND_ECHO)nm -gP $(SHL3OBJS) \
645        `$(TYPE) /dev/null $(foreach,j,$(SHL3LIBS) $j) | $(SED) s\#$(ROUT)\#$(PRJ)$/$(ROUT)\#g` \
646        | $(SOLARENV)/bin/addsym-mingw.sh $@.symbols-regexp $@.symbols-regexp.tmp >> $@.exported-symbols
647# overwrite the map file generate into the local output tree with the generated
648# exported symbols list
649    $(COMMAND_ECHO)$(RENAME) $@.exported-symbols $@
650.ENDIF # .IF "$(COM)"=="GCC"
651
652.ENDIF          # "$(GUI)"=="WNT"
653
654.IF "$(GUI)"=="OS2"
655DEF3EXPORTFILE=$(MISC)/$(SHL3VERSIONMAP:b)_$(SHL3TARGET).dxp
656$(DEF3EXPORTFILE) : $(SHL3VERSIONMAP)
657    $(TYPE) $< | $(AWK) -f $(SOLARENV)/bin/getcsym.awk > $@
658.ENDIF          # "$(GUI)"=="OS2"
659
660.ENDIF          # "$(DEF3EXPORTFILE)"==""
661.ENDIF          # "$(SHL3VERSIONMAP)"!=""
662
663.IF "$(GUI)"=="WNT"
664
665DEF3FILTER=$(SOLARENV)/inc/dummy.flt
666
667RMHACK3:=$(RM)
668
669.IF "$(DEF3CEXP)"!=""
670EXPORT_ALL_SWITCH=-A $(DEF3CEXP)
671.ENDIF
672
673.IF "$(link_always)"==""
674$(DEF3TARGETN) : \
675        $(DEF3DEPN) \
676        $(DEF3EXPORTFILE)
677.ELSE           # "$(link_always)"==""
678$(DEF3TARGETN) .PHONY :
679.ENDIF          # "$(link_always)"==""
680    @-$(RM) $@.tmpfile
681    @echo "Making:    module definition file" $(@:f)
682    @echo LIBRARY     $(EMQ)"$(SHL3TARGETN:f)$(EMQ)"                                 >$@.tmpfile
683.IF "$(COM)"!="GCC"
684    @echo HEAPSIZE    0                                             >>$@.tmpfile
685.ENDIF
686    @echo EXPORTS                                                   >>$@.tmpfile
687.IF "$(VERSIONOBJ)"!=""
688#   getversioninfo fuer alle!!
689    @echo GetVersionInfo        >>$@.tmpfile
690.ENDIF
691.IF "$(DEFLIB3NAME)"!=""
692.IF "$(COM)"=="GCC"
693    @-$(RM) $(MISC)/$(SHL3TARGET).exp
694    $(COMMAND_ECHO)dlltool --output-def $(MISC)/$(SHL3TARGET).exp --export-all-symbols \
695        `$(TYPE) $(foreach,i,$(DEFLIB3NAME) $(SLB)/$(i).lib) | sed s#$(ROUT)#$(PRJ)/$(ROUT)#g`
696    $(COMMAND_ECHO)tail --lines +3 $(MISC)/$(SHL3TARGET).exp | sed '/^;/d' >>$@.tmpfile
697    @-$(RM) $(MISC)/$(SHL3TARGET).exp
698.ELSE
699.IF "$(SHL3USE_EXPORTS)"==""
700    @-$(RMHACK3) $(MISC)/$(SHL3TARGET).exp
701    @$(SOLARENV)/bin/extract-linker-member.sh $(SLB)/$(DEFLIB3NAME).lib $(MISC)/$(SHL3TARGET).exp
702    @$(LDUMP2) -N $(EXPORT_ALL_SWITCH) -F $(MISC)/$(SHL3TARGET).flt $(MISC)/$(SHL3TARGET).exp              >>$@.tmpfile
703    $(COMMAND_ECHO)$(RMHACK3) $(MISC)/$(SHL3TARGET).exp
704.ELSE           # "$(SHL3USE_EXPORTS)"==""
705    @$(DUMPBIN) -DIRECTIVES  $(foreach,i,$(DEFLIB3NAME) $(SLB)/$(i).lib) | $(GREP) EXPORT: > $(MISC)/$(SHL3TARGET).direct
706    @$(LDUMP2) -N -D $(EXPORT_ALL_SWITCH) -F $(DEF3FILTER) $(MISC)/$(SHL3TARGET).direct >>$@.tmpfile
707.ENDIF          # "$(SHL3USE_EXPORTS)"==""
708.ENDIF
709.ENDIF              # "$(DEFLIB3NAME)"!=""
710.IF "$(DEF3EXPORT1)"!=""
711    @echo $(DEF3EXPORT1)                                        >>$@.tmpfile
712.ENDIF
713.IF "$(DEF3EXPORT2)"!=""
714    @echo $(DEF3EXPORT2)                                        >>$@.tmpfile
715.ENDIF
716.IF "$(DEF3EXPORT3)"!=""
717    @echo $(DEF3EXPORT3)                                        >>$@.tmpfile
718.ENDIF
719.IF "$(DEF3EXPORT4)"!=""
720    @echo $(DEF3EXPORT4)                                        >>$@.tmpfile
721.ENDIF
722.IF "$(DEF3EXPORT5)"!=""
723    @echo $(DEF3EXPORT5)                                        >>$@.tmpfile
724.ENDIF
725.IF "$(DEF3EXPORT6)"!=""
726    @echo $(DEF3EXPORT6)                                        >>$@.tmpfile
727.ENDIF
728.IF "$(DEF3EXPORT7)"!=""
729    @echo $(DEF3EXPORT7)                                        >>$@.tmpfile
730.ENDIF
731.IF "$(DEF3EXPORT8)"!=""
732    @echo $(DEF3EXPORT8)                                        >>$@.tmpfile
733.ENDIF
734.IF "$(DEF3EXPORT9)"!=""
735    @echo $(DEF3EXPORT9)                                        >>$@.tmpfile
736.ENDIF
737.IF "$(DEF3EXPORT10)"!=""
738    @echo $(DEF3EXPORT10)                                       >>$@.tmpfile
739.ENDIF
740.IF "$(DEF3EXPORT11)"!=""
741    @echo $(DEF3EXPORT11)                                       >>$@.tmpfile
742.ENDIF
743.IF "$(DEF3EXPORT12)"!=""
744    @echo $(DEF3EXPORT12)                                       >>$@.tmpfile
745.ENDIF
746.IF "$(DEF3EXPORT13)"!=""
747    @echo $(DEF3EXPORT13)                                       >>$@.tmpfile
748.ENDIF
749.IF "$(DEF3EXPORT14)"!=""
750    @echo $(DEF3EXPORT14)                                       >>$@.tmpfile
751.ENDIF
752.IF "$(DEF3EXPORT15)"!=""
753    @echo $(DEF3EXPORT15)                                       >>$@.tmpfile
754.ENDIF
755.IF "$(DEF3EXPORT16)"!=""
756    @echo $(DEF3EXPORT16)                                       >>$@.tmpfile
757.ENDIF
758.IF "$(DEF3EXPORT17)"!=""
759    @echo $(DEF3EXPORT17)                                       >>$@.tmpfile
760.ENDIF
761.IF "$(DEF3EXPORT18)"!=""
762    @echo $(DEF3EXPORT18)                                       >>$@.tmpfile
763.ENDIF
764.IF "$(DEF3EXPORT19)"!=""
765    @echo $(DEF3EXPORT19)                                       >>$@.tmpfile
766.ENDIF
767.IF "$(DEF3EXPORT20)"!=""
768    @echo $(DEF3EXPORT20)                                       >>$@.tmpfile
769.ENDIF
770.IF "$(DEF3EXPORTFILE)"!=""
771.IF "$(COM)"=="GCC"
772    $(COMMAND_ECHO)$(TYPE) $(DEF3EXPORTFILE) | sed -e s:PRIVATE:: >> $@.tmpfile
773.ELSE
774    $(COMMAND_ECHO)$(TYPE) $(DEF3EXPORTFILE) >> $@.tmpfile
775.ENDIF
776.ENDIF
777    @-$(RM) $@
778    @$(RENAME) $@.tmpfile $@
779.ENDIF          # "$(GUI)"=="WNT"
780
781.IF "$(GUI)"=="OS2"
782
783#21/02/2006 YD dll names must be 8.3, invoke fix script
784#check osl/os2/module.c/osl_loadModule()
785SHL3TARGET8=$(shell @fix_shl.cmd $(SHL3TARGETN:f))
786
787DEF3FILTER=$(SOLARENV)/inc/dummy.flt
788DEF3NAMELIST=$(foreach,i,$(DEFLIB3NAME) $(SLB)/$(i).lib)
789
790.IF "$(link_always)"==""
791$(DEF3TARGETN) : \
792        $(DEF3DEPN) \
793        $(DEF3EXPORTFILE)
794.ELSE           # "$(link_always)"==""
795$(DEF3TARGETN) .PHONY :
796.ENDIF          # "$(link_always)"==""
797    @+-$(RM) $@.tmpfile
798    @echo "Making:    module definition file" $(@:f)
799    @echo LIBRARY     $(SHL3TARGET8) INITINSTANCE TERMINSTANCE   >$@.tmpfile
800    @echo DATA MULTIPLE  >>$@.tmpfile
801    @echo EXPORTS                                                   >>$@.tmpfile
802.IF "$(VERSIONOBJ)"!=""
803#   getversioninfo fuer alle!!
804    @echo _GetVersionInfo       >$@.tmp_ord
805.ENDIF
806
807.IF "$(DEFLIB3NAME)"!=""
808    @+echo $(SLB)/$(DEFLIB3NAME).lib
809    @+emxexp $(DEF3NAMELIST) | fix_exp_file >> $@.tmp_ord
810.ENDIF              # "$(DEFLIB3NAME)"!=""
811
812.IF "$(DEF3EXPORT1)"!=""
813    @echo $(DEF3EXPORT1)                                        >>$@.tmpfile
814.ENDIF
815.IF "$(DEF3EXPORT2)"!=""
816    @echo $(DEF3EXPORT2)                                        >>$@.tmpfile
817.ENDIF
818.IF "$(DEF3EXPORT3)"!=""
819    @echo $(DEF3EXPORT3)                                        >>$@.tmpfile
820.ENDIF
821.IF "$(DEF3EXPORT4)"!=""
822    @echo $(DEF3EXPORT4)                                        >>$@.tmpfile
823.ENDIF
824.IF "$(DEF3EXPORT5)"!=""
825    @echo $(DEF3EXPORT5)                                        >>$@.tmpfile
826.ENDIF
827.IF "$(DEF3EXPORT6)"!=""
828    @echo $(DEF3EXPORT6)                                        >>$@.tmpfile
829.ENDIF
830.IF "$(DEF3EXPORT7)"!=""
831    @echo $(DEF3EXPORT7)                                        >>$@.tmpfile
832.ENDIF
833.IF "$(DEF3EXPORT8)"!=""
834    @echo $(DEF3EXPORT8)                                        >>$@.tmpfile
835.ENDIF
836.IF "$(DEF3EXPORT9)"!=""
837    @echo $(DEF3EXPORT9)                                        >>$@.tmpfile
838.ENDIF
839.IF "$(DEF3EXPORT10)"!=""
840    @echo $(DEF3EXPORT10)                                       >>$@.tmpfile
841.ENDIF
842.IF "$(DEF3EXPORT11)"!=""
843    @echo $(DEF3EXPORT11)                                       >>$@.tmpfile
844.ENDIF
845.IF "$(DEF3EXPORT12)"!=""
846    @echo $(DEF3EXPORT12)                                       >>$@.tmpfile
847.ENDIF
848.IF "$(DEF3EXPORT13)"!=""
849    @echo $(DEF3EXPORT13)                                       >>$@.tmpfile
850.ENDIF
851.IF "$(DEF3EXPORT14)"!=""
852    @echo $(DEF3EXPORT14)                                       >>$@.tmpfile
853.ENDIF
854.IF "$(DEF3EXPORT15)"!=""
855    @echo $(DEF3EXPORT15)                                       >>$@.tmpfile
856.ENDIF
857.IF "$(DEF3EXPORT16)"!=""
858    @echo $(DEF3EXPORT16)                                       >>$@.tmpfile
859.ENDIF
860.IF "$(DEF3EXPORT17)"!=""
861    @echo $(DEF3EXPORT17)                                       >>$@.tmpfile
862.ENDIF
863.IF "$(DEF3EXPORT18)"!=""
864    @echo $(DEF3EXPORT18)                                       >>$@.tmpfile
865.ENDIF
866.IF "$(DEF3EXPORT19)"!=""
867    @echo $(DEF3EXPORT19)                                       >>$@.tmpfile
868.ENDIF
869.IF "$(DEF3EXPORT20)"!=""
870    @echo $(DEF3EXPORT20)                                       >>$@.tmpfile
871.ENDIF
872.IF "$(DEF3EXPORTFILE)"!=""
873    @fix_def_file < $(DEF3EXPORTFILE) >> $@.tmp_ord
874.ENDIF
875    @sort < $@.tmp_ord | uniq > $@.exptmpfile
876    @fix_def_ord < $@.exptmpfile >> $@.tmpfile
877    @+-$(RM) $@
878    $(COMMAND_ECHO)+$(RENAME) $@.tmpfile $@
879    @+-$(RM) $@.tmp_ord
880    @+-$(RM) $@.exptmpfile
881.IF "$(SHL3USE_EXPORTS)"=="" || "$(SHL3USE_EXPORTS)"=="ordinal"
882#03/11/2012  if 'name' is not used, export from def file (with ordinals)
883    @echo Build import library from DEF file.
884    @+-$(RM) $(LB)/$(SHL3TARGETN:b).lib
885    $(COMMAND_ECHO)+$(IMPLIB) $(IMPLIBFLAGS) $(LB)/$(SHL3TARGETN:b).lib $@
886.ENDIF          # "$(SHL3USE_EXPORTS)"==""
887
888.ENDIF          # "$(GUI)"=="OS2"
889
890.IF "$(GUI)"=="UNX"
891$(DEF3TARGETN): \
892        $(DEF3DEPN) \
893        $(DEF3EXPORTFILE)
894    @echo just a dummy for UNIX > $@
895.ENDIF
896.ENDIF          # "$(DEF3TARGETN)"!=""
897
898
899# Anweisungen fuer das Linken
900# unroll begin
901
902.IF "$(DEF4TARGETN)"!=""
903
904#to make intuitiv naming work
905.IF "$(DEF4LIBNAME)"!=""
906DEFLIB4NAME*=$(DEF4LIBNAME)
907.ENDIF          # "$(DEF4LIBNAME)"!=""
908
909.IF "$(DEFLIB4NAME)"!=""
910DEF4DEPN+=$(foreach,i,$(DEFLIB4NAME) $(SLB)/$(i).lib)
911.ENDIF
912
913.IF "$(SHL4VERSIONMAP)"!=""
914.IF "$(DEF4EXPORTFILE)"==""
915.IF "$(GUI)"=="WNT"
916DEF4EXPORTFILE=$(MISC)/$(SHL4VERSIONMAP:b)_$(SHL4TARGET).dxp
917.IF "$(COM)"=="GCC"
918$(DEF4EXPORTFILE) : $(SHL4OBJS) $(SHL4LIBS)
919.ENDIF # .IF "$(COM)"=="GCC"
920
921$(DEF4EXPORTFILE) : $(SHL4VERSIONMAP)
922    $(COMMAND_ECHO)$(TYPE) $< | $(AWK) -f $(SOLARENV)/bin/getcsym.awk > $@
923.IF "$(COM)"!="GCC"
924# Wildcards in a version script are a GCC concept -- the GCC branch below
925# pulls them out into a .symbols-regexp and matches them against the real
926# objects.  MSVC has no equivalent, and asking link.exe to export a literal
927# "_ZTI*" fails with LNK2001, so drop those lines here.  Match "*" alone:
928# every MSVC-mangled C++ name begins with "?", so "[*?]" would drop the lot.
929    $(COMMAND_ECHO)-$(GREP) -v "[*]" $@ > $@.nowild
930    $(COMMAND_ECHO)$(RENAME) $@.nowild $@
931.ENDIF
932.IF "$(COM)"=="GCC"
933    $(COMMAND_ECHO)-$(GREP) -v "\*\|?" $@ | $(SED) -e 's@#.*@@' > $@.exported-symbols
934    $(COMMAND_ECHO)-$(GREP) "\*\|?" $@ > $@.symbols-regexp
935# Shared libraries will be build out of the *.obj files specified in SHL?OBJS and SHL?LIBS
936# Extract RTTI symbols from all the objects that will be used to build a shared library
937    $(COMMAND_ECHO)nm -gP $(SHL4OBJS) \
938        `$(TYPE) /dev/null $(foreach,j,$(SHL4LIBS) $j) | $(SED) s\#$(ROUT)\#$(PRJ)$/$(ROUT)\#g` \
939        | $(SOLARENV)/bin/addsym-mingw.sh $@.symbols-regexp $@.symbols-regexp.tmp >> $@.exported-symbols
940# overwrite the map file generate into the local output tree with the generated
941# exported symbols list
942    $(COMMAND_ECHO)$(RENAME) $@.exported-symbols $@
943.ENDIF # .IF "$(COM)"=="GCC"
944
945.ENDIF          # "$(GUI)"=="WNT"
946
947.IF "$(GUI)"=="OS2"
948DEF4EXPORTFILE=$(MISC)/$(SHL4VERSIONMAP:b)_$(SHL4TARGET).dxp
949$(DEF4EXPORTFILE) : $(SHL4VERSIONMAP)
950    $(TYPE) $< | $(AWK) -f $(SOLARENV)/bin/getcsym.awk > $@
951.ENDIF          # "$(GUI)"=="OS2"
952
953.ENDIF          # "$(DEF4EXPORTFILE)"==""
954.ENDIF          # "$(SHL4VERSIONMAP)"!=""
955
956.IF "$(GUI)"=="WNT"
957
958DEF4FILTER=$(SOLARENV)/inc/dummy.flt
959
960RMHACK4:=$(RM)
961
962.IF "$(DEF4CEXP)"!=""
963EXPORT_ALL_SWITCH=-A $(DEF4CEXP)
964.ENDIF
965
966.IF "$(link_always)"==""
967$(DEF4TARGETN) : \
968        $(DEF4DEPN) \
969        $(DEF4EXPORTFILE)
970.ELSE           # "$(link_always)"==""
971$(DEF4TARGETN) .PHONY :
972.ENDIF          # "$(link_always)"==""
973    @-$(RM) $@.tmpfile
974    @echo "Making:    module definition file" $(@:f)
975    @echo LIBRARY     $(EMQ)"$(SHL4TARGETN:f)$(EMQ)"                                 >$@.tmpfile
976.IF "$(COM)"!="GCC"
977    @echo HEAPSIZE    0                                             >>$@.tmpfile
978.ENDIF
979    @echo EXPORTS                                                   >>$@.tmpfile
980.IF "$(VERSIONOBJ)"!=""
981#   getversioninfo fuer alle!!
982    @echo GetVersionInfo        >>$@.tmpfile
983.ENDIF
984.IF "$(DEFLIB4NAME)"!=""
985.IF "$(COM)"=="GCC"
986    @-$(RM) $(MISC)/$(SHL4TARGET).exp
987    $(COMMAND_ECHO)dlltool --output-def $(MISC)/$(SHL4TARGET).exp --export-all-symbols \
988        `$(TYPE) $(foreach,i,$(DEFLIB4NAME) $(SLB)/$(i).lib) | sed s#$(ROUT)#$(PRJ)/$(ROUT)#g`
989    $(COMMAND_ECHO)tail --lines +3 $(MISC)/$(SHL4TARGET).exp | sed '/^;/d' >>$@.tmpfile
990    @-$(RM) $(MISC)/$(SHL4TARGET).exp
991.ELSE
992.IF "$(SHL4USE_EXPORTS)"==""
993    @-$(RMHACK4) $(MISC)/$(SHL4TARGET).exp
994    @$(SOLARENV)/bin/extract-linker-member.sh $(SLB)/$(DEFLIB4NAME).lib $(MISC)/$(SHL4TARGET).exp
995    @$(LDUMP2) -N $(EXPORT_ALL_SWITCH) -F $(MISC)/$(SHL4TARGET).flt $(MISC)/$(SHL4TARGET).exp              >>$@.tmpfile
996    $(COMMAND_ECHO)$(RMHACK4) $(MISC)/$(SHL4TARGET).exp
997.ELSE           # "$(SHL4USE_EXPORTS)"==""
998    @$(DUMPBIN) -DIRECTIVES  $(foreach,i,$(DEFLIB4NAME) $(SLB)/$(i).lib) | $(GREP) EXPORT: > $(MISC)/$(SHL4TARGET).direct
999    @$(LDUMP2) -N -D $(EXPORT_ALL_SWITCH) -F $(DEF4FILTER) $(MISC)/$(SHL4TARGET).direct >>$@.tmpfile
1000.ENDIF          # "$(SHL4USE_EXPORTS)"==""
1001.ENDIF
1002.ENDIF              # "$(DEFLIB4NAME)"!=""
1003.IF "$(DEF4EXPORT1)"!=""
1004    @echo $(DEF4EXPORT1)                                        >>$@.tmpfile
1005.ENDIF
1006.IF "$(DEF4EXPORT2)"!=""
1007    @echo $(DEF4EXPORT2)                                        >>$@.tmpfile
1008.ENDIF
1009.IF "$(DEF4EXPORT3)"!=""
1010    @echo $(DEF4EXPORT3)                                        >>$@.tmpfile
1011.ENDIF
1012.IF "$(DEF4EXPORT4)"!=""
1013    @echo $(DEF4EXPORT4)                                        >>$@.tmpfile
1014.ENDIF
1015.IF "$(DEF4EXPORT5)"!=""
1016    @echo $(DEF4EXPORT5)                                        >>$@.tmpfile
1017.ENDIF
1018.IF "$(DEF4EXPORT6)"!=""
1019    @echo $(DEF4EXPORT6)                                        >>$@.tmpfile
1020.ENDIF
1021.IF "$(DEF4EXPORT7)"!=""
1022    @echo $(DEF4EXPORT7)                                        >>$@.tmpfile
1023.ENDIF
1024.IF "$(DEF4EXPORT8)"!=""
1025    @echo $(DEF4EXPORT8)                                        >>$@.tmpfile
1026.ENDIF
1027.IF "$(DEF4EXPORT9)"!=""
1028    @echo $(DEF4EXPORT9)                                        >>$@.tmpfile
1029.ENDIF
1030.IF "$(DEF4EXPORT10)"!=""
1031    @echo $(DEF4EXPORT10)                                       >>$@.tmpfile
1032.ENDIF
1033.IF "$(DEF4EXPORT11)"!=""
1034    @echo $(DEF4EXPORT11)                                       >>$@.tmpfile
1035.ENDIF
1036.IF "$(DEF4EXPORT12)"!=""
1037    @echo $(DEF4EXPORT12)                                       >>$@.tmpfile
1038.ENDIF
1039.IF "$(DEF4EXPORT13)"!=""
1040    @echo $(DEF4EXPORT13)                                       >>$@.tmpfile
1041.ENDIF
1042.IF "$(DEF4EXPORT14)"!=""
1043    @echo $(DEF4EXPORT14)                                       >>$@.tmpfile
1044.ENDIF
1045.IF "$(DEF4EXPORT15)"!=""
1046    @echo $(DEF4EXPORT15)                                       >>$@.tmpfile
1047.ENDIF
1048.IF "$(DEF4EXPORT16)"!=""
1049    @echo $(DEF4EXPORT16)                                       >>$@.tmpfile
1050.ENDIF
1051.IF "$(DEF4EXPORT17)"!=""
1052    @echo $(DEF4EXPORT17)                                       >>$@.tmpfile
1053.ENDIF
1054.IF "$(DEF4EXPORT18)"!=""
1055    @echo $(DEF4EXPORT18)                                       >>$@.tmpfile
1056.ENDIF
1057.IF "$(DEF4EXPORT19)"!=""
1058    @echo $(DEF4EXPORT19)                                       >>$@.tmpfile
1059.ENDIF
1060.IF "$(DEF4EXPORT20)"!=""
1061    @echo $(DEF4EXPORT20)                                       >>$@.tmpfile
1062.ENDIF
1063.IF "$(DEF4EXPORTFILE)"!=""
1064.IF "$(COM)"=="GCC"
1065    $(COMMAND_ECHO)$(TYPE) $(DEF4EXPORTFILE) | sed -e s:PRIVATE:: >> $@.tmpfile
1066.ELSE
1067    $(COMMAND_ECHO)$(TYPE) $(DEF4EXPORTFILE) >> $@.tmpfile
1068.ENDIF
1069.ENDIF
1070    @-$(RM) $@
1071    @$(RENAME) $@.tmpfile $@
1072.ENDIF          # "$(GUI)"=="WNT"
1073
1074.IF "$(GUI)"=="OS2"
1075
1076#21/02/2006 YD dll names must be 8.3, invoke fix script
1077#check osl/os2/module.c/osl_loadModule()
1078SHL4TARGET8=$(shell @fix_shl.cmd $(SHL4TARGETN:f))
1079
1080DEF4FILTER=$(SOLARENV)/inc/dummy.flt
1081DEF4NAMELIST=$(foreach,i,$(DEFLIB4NAME) $(SLB)/$(i).lib)
1082
1083.IF "$(link_always)"==""
1084$(DEF4TARGETN) : \
1085        $(DEF4DEPN) \
1086        $(DEF4EXPORTFILE)
1087.ELSE           # "$(link_always)"==""
1088$(DEF4TARGETN) .PHONY :
1089.ENDIF          # "$(link_always)"==""
1090    @+-$(RM) $@.tmpfile
1091    @echo "Making:    module definition file" $(@:f)
1092    @echo LIBRARY     $(SHL4TARGET8) INITINSTANCE TERMINSTANCE   >$@.tmpfile
1093    @echo DATA MULTIPLE  >>$@.tmpfile
1094    @echo EXPORTS                                                   >>$@.tmpfile
1095.IF "$(VERSIONOBJ)"!=""
1096#   getversioninfo fuer alle!!
1097    @echo _GetVersionInfo       >$@.tmp_ord
1098.ENDIF
1099
1100.IF "$(DEFLIB4NAME)"!=""
1101    @+echo $(SLB)/$(DEFLIB4NAME).lib
1102    @+emxexp $(DEF4NAMELIST) | fix_exp_file >> $@.tmp_ord
1103.ENDIF              # "$(DEFLIB4NAME)"!=""
1104
1105.IF "$(DEF4EXPORT1)"!=""
1106    @echo $(DEF4EXPORT1)                                        >>$@.tmpfile
1107.ENDIF
1108.IF "$(DEF4EXPORT2)"!=""
1109    @echo $(DEF4EXPORT2)                                        >>$@.tmpfile
1110.ENDIF
1111.IF "$(DEF4EXPORT3)"!=""
1112    @echo $(DEF4EXPORT3)                                        >>$@.tmpfile
1113.ENDIF
1114.IF "$(DEF4EXPORT4)"!=""
1115    @echo $(DEF4EXPORT4)                                        >>$@.tmpfile
1116.ENDIF
1117.IF "$(DEF4EXPORT5)"!=""
1118    @echo $(DEF4EXPORT5)                                        >>$@.tmpfile
1119.ENDIF
1120.IF "$(DEF4EXPORT6)"!=""
1121    @echo $(DEF4EXPORT6)                                        >>$@.tmpfile
1122.ENDIF
1123.IF "$(DEF4EXPORT7)"!=""
1124    @echo $(DEF4EXPORT7)                                        >>$@.tmpfile
1125.ENDIF
1126.IF "$(DEF4EXPORT8)"!=""
1127    @echo $(DEF4EXPORT8)                                        >>$@.tmpfile
1128.ENDIF
1129.IF "$(DEF4EXPORT9)"!=""
1130    @echo $(DEF4EXPORT9)                                        >>$@.tmpfile
1131.ENDIF
1132.IF "$(DEF4EXPORT10)"!=""
1133    @echo $(DEF4EXPORT10)                                       >>$@.tmpfile
1134.ENDIF
1135.IF "$(DEF4EXPORT11)"!=""
1136    @echo $(DEF4EXPORT11)                                       >>$@.tmpfile
1137.ENDIF
1138.IF "$(DEF4EXPORT12)"!=""
1139    @echo $(DEF4EXPORT12)                                       >>$@.tmpfile
1140.ENDIF
1141.IF "$(DEF4EXPORT13)"!=""
1142    @echo $(DEF4EXPORT13)                                       >>$@.tmpfile
1143.ENDIF
1144.IF "$(DEF4EXPORT14)"!=""
1145    @echo $(DEF4EXPORT14)                                       >>$@.tmpfile
1146.ENDIF
1147.IF "$(DEF4EXPORT15)"!=""
1148    @echo $(DEF4EXPORT15)                                       >>$@.tmpfile
1149.ENDIF
1150.IF "$(DEF4EXPORT16)"!=""
1151    @echo $(DEF4EXPORT16)                                       >>$@.tmpfile
1152.ENDIF
1153.IF "$(DEF4EXPORT17)"!=""
1154    @echo $(DEF4EXPORT17)                                       >>$@.tmpfile
1155.ENDIF
1156.IF "$(DEF4EXPORT18)"!=""
1157    @echo $(DEF4EXPORT18)                                       >>$@.tmpfile
1158.ENDIF
1159.IF "$(DEF4EXPORT19)"!=""
1160    @echo $(DEF4EXPORT19)                                       >>$@.tmpfile
1161.ENDIF
1162.IF "$(DEF4EXPORT20)"!=""
1163    @echo $(DEF4EXPORT20)                                       >>$@.tmpfile
1164.ENDIF
1165.IF "$(DEF4EXPORTFILE)"!=""
1166    @fix_def_file < $(DEF4EXPORTFILE) >> $@.tmp_ord
1167.ENDIF
1168    @sort < $@.tmp_ord | uniq > $@.exptmpfile
1169    @fix_def_ord < $@.exptmpfile >> $@.tmpfile
1170    @+-$(RM) $@
1171    $(COMMAND_ECHO)+$(RENAME) $@.tmpfile $@
1172    @+-$(RM) $@.tmp_ord
1173    @+-$(RM) $@.exptmpfile
1174.IF "$(SHL4USE_EXPORTS)"=="" || "$(SHL4USE_EXPORTS)"=="ordinal"
1175#03/11/2012  if 'name' is not used, export from def file (with ordinals)
1176    @echo Build import library from DEF file.
1177    @+-$(RM) $(LB)/$(SHL4TARGETN:b).lib
1178    $(COMMAND_ECHO)+$(IMPLIB) $(IMPLIBFLAGS) $(LB)/$(SHL4TARGETN:b).lib $@
1179.ENDIF          # "$(SHL4USE_EXPORTS)"==""
1180
1181.ENDIF          # "$(GUI)"=="OS2"
1182
1183.IF "$(GUI)"=="UNX"
1184$(DEF4TARGETN): \
1185        $(DEF4DEPN) \
1186        $(DEF4EXPORTFILE)
1187    @echo just a dummy for UNIX > $@
1188.ENDIF
1189.ENDIF          # "$(DEF4TARGETN)"!=""
1190
1191
1192# Anweisungen fuer das Linken
1193# unroll begin
1194
1195.IF "$(DEF5TARGETN)"!=""
1196
1197#to make intuitiv naming work
1198.IF "$(DEF5LIBNAME)"!=""
1199DEFLIB5NAME*=$(DEF5LIBNAME)
1200.ENDIF          # "$(DEF5LIBNAME)"!=""
1201
1202.IF "$(DEFLIB5NAME)"!=""
1203DEF5DEPN+=$(foreach,i,$(DEFLIB5NAME) $(SLB)/$(i).lib)
1204.ENDIF
1205
1206.IF "$(SHL5VERSIONMAP)"!=""
1207.IF "$(DEF5EXPORTFILE)"==""
1208.IF "$(GUI)"=="WNT"
1209DEF5EXPORTFILE=$(MISC)/$(SHL5VERSIONMAP:b)_$(SHL5TARGET).dxp
1210.IF "$(COM)"=="GCC"
1211$(DEF5EXPORTFILE) : $(SHL5OBJS) $(SHL5LIBS)
1212.ENDIF # .IF "$(COM)"=="GCC"
1213
1214$(DEF5EXPORTFILE) : $(SHL5VERSIONMAP)
1215    $(COMMAND_ECHO)$(TYPE) $< | $(AWK) -f $(SOLARENV)/bin/getcsym.awk > $@
1216.IF "$(COM)"!="GCC"
1217# Wildcards in a version script are a GCC concept -- the GCC branch below
1218# pulls them out into a .symbols-regexp and matches them against the real
1219# objects.  MSVC has no equivalent, and asking link.exe to export a literal
1220# "_ZTI*" fails with LNK2001, so drop those lines here.  Match "*" alone:
1221# every MSVC-mangled C++ name begins with "?", so "[*?]" would drop the lot.
1222    $(COMMAND_ECHO)-$(GREP) -v "[*]" $@ > $@.nowild
1223    $(COMMAND_ECHO)$(RENAME) $@.nowild $@
1224.ENDIF
1225.IF "$(COM)"=="GCC"
1226    $(COMMAND_ECHO)-$(GREP) -v "\*\|?" $@ | $(SED) -e 's@#.*@@' > $@.exported-symbols
1227    $(COMMAND_ECHO)-$(GREP) "\*\|?" $@ > $@.symbols-regexp
1228# Shared libraries will be build out of the *.obj files specified in SHL?OBJS and SHL?LIBS
1229# Extract RTTI symbols from all the objects that will be used to build a shared library
1230    $(COMMAND_ECHO)nm -gP $(SHL5OBJS) \
1231        `$(TYPE) /dev/null $(foreach,j,$(SHL5LIBS) $j) | $(SED) s\#$(ROUT)\#$(PRJ)$/$(ROUT)\#g` \
1232        | $(SOLARENV)/bin/addsym-mingw.sh $@.symbols-regexp $@.symbols-regexp.tmp >> $@.exported-symbols
1233# overwrite the map file generate into the local output tree with the generated
1234# exported symbols list
1235    $(COMMAND_ECHO)$(RENAME) $@.exported-symbols $@
1236.ENDIF # .IF "$(COM)"=="GCC"
1237
1238.ENDIF          # "$(GUI)"=="WNT"
1239
1240.IF "$(GUI)"=="OS2"
1241DEF5EXPORTFILE=$(MISC)/$(SHL5VERSIONMAP:b)_$(SHL5TARGET).dxp
1242$(DEF5EXPORTFILE) : $(SHL5VERSIONMAP)
1243    $(TYPE) $< | $(AWK) -f $(SOLARENV)/bin/getcsym.awk > $@
1244.ENDIF          # "$(GUI)"=="OS2"
1245
1246.ENDIF          # "$(DEF5EXPORTFILE)"==""
1247.ENDIF          # "$(SHL5VERSIONMAP)"!=""
1248
1249.IF "$(GUI)"=="WNT"
1250
1251DEF5FILTER=$(SOLARENV)/inc/dummy.flt
1252
1253RMHACK5:=$(RM)
1254
1255.IF "$(DEF5CEXP)"!=""
1256EXPORT_ALL_SWITCH=-A $(DEF5CEXP)
1257.ENDIF
1258
1259.IF "$(link_always)"==""
1260$(DEF5TARGETN) : \
1261        $(DEF5DEPN) \
1262        $(DEF5EXPORTFILE)
1263.ELSE           # "$(link_always)"==""
1264$(DEF5TARGETN) .PHONY :
1265.ENDIF          # "$(link_always)"==""
1266    @-$(RM) $@.tmpfile
1267    @echo "Making:    module definition file" $(@:f)
1268    @echo LIBRARY     $(EMQ)"$(SHL5TARGETN:f)$(EMQ)"                                 >$@.tmpfile
1269.IF "$(COM)"!="GCC"
1270    @echo HEAPSIZE    0                                             >>$@.tmpfile
1271.ENDIF
1272    @echo EXPORTS                                                   >>$@.tmpfile
1273.IF "$(VERSIONOBJ)"!=""
1274#   getversioninfo fuer alle!!
1275    @echo GetVersionInfo        >>$@.tmpfile
1276.ENDIF
1277.IF "$(DEFLIB5NAME)"!=""
1278.IF "$(COM)"=="GCC"
1279    @-$(RM) $(MISC)/$(SHL5TARGET).exp
1280    $(COMMAND_ECHO)dlltool --output-def $(MISC)/$(SHL5TARGET).exp --export-all-symbols \
1281        `$(TYPE) $(foreach,i,$(DEFLIB5NAME) $(SLB)/$(i).lib) | sed s#$(ROUT)#$(PRJ)/$(ROUT)#g`
1282    $(COMMAND_ECHO)tail --lines +3 $(MISC)/$(SHL5TARGET).exp | sed '/^;/d' >>$@.tmpfile
1283    @-$(RM) $(MISC)/$(SHL5TARGET).exp
1284.ELSE
1285.IF "$(SHL5USE_EXPORTS)"==""
1286    @-$(RMHACK5) $(MISC)/$(SHL5TARGET).exp
1287    @$(SOLARENV)/bin/extract-linker-member.sh $(SLB)/$(DEFLIB5NAME).lib $(MISC)/$(SHL5TARGET).exp
1288    @$(LDUMP2) -N $(EXPORT_ALL_SWITCH) -F $(MISC)/$(SHL5TARGET).flt $(MISC)/$(SHL5TARGET).exp              >>$@.tmpfile
1289    $(COMMAND_ECHO)$(RMHACK5) $(MISC)/$(SHL5TARGET).exp
1290.ELSE           # "$(SHL5USE_EXPORTS)"==""
1291    @$(DUMPBIN) -DIRECTIVES  $(foreach,i,$(DEFLIB5NAME) $(SLB)/$(i).lib) | $(GREP) EXPORT: > $(MISC)/$(SHL5TARGET).direct
1292    @$(LDUMP2) -N -D $(EXPORT_ALL_SWITCH) -F $(DEF5FILTER) $(MISC)/$(SHL5TARGET).direct >>$@.tmpfile
1293.ENDIF          # "$(SHL5USE_EXPORTS)"==""
1294.ENDIF
1295.ENDIF              # "$(DEFLIB5NAME)"!=""
1296.IF "$(DEF5EXPORT1)"!=""
1297    @echo $(DEF5EXPORT1)                                        >>$@.tmpfile
1298.ENDIF
1299.IF "$(DEF5EXPORT2)"!=""
1300    @echo $(DEF5EXPORT2)                                        >>$@.tmpfile
1301.ENDIF
1302.IF "$(DEF5EXPORT3)"!=""
1303    @echo $(DEF5EXPORT3)                                        >>$@.tmpfile
1304.ENDIF
1305.IF "$(DEF5EXPORT4)"!=""
1306    @echo $(DEF5EXPORT4)                                        >>$@.tmpfile
1307.ENDIF
1308.IF "$(DEF5EXPORT5)"!=""
1309    @echo $(DEF5EXPORT5)                                        >>$@.tmpfile
1310.ENDIF
1311.IF "$(DEF5EXPORT6)"!=""
1312    @echo $(DEF5EXPORT6)                                        >>$@.tmpfile
1313.ENDIF
1314.IF "$(DEF5EXPORT7)"!=""
1315    @echo $(DEF5EXPORT7)                                        >>$@.tmpfile
1316.ENDIF
1317.IF "$(DEF5EXPORT8)"!=""
1318    @echo $(DEF5EXPORT8)                                        >>$@.tmpfile
1319.ENDIF
1320.IF "$(DEF5EXPORT9)"!=""
1321    @echo $(DEF5EXPORT9)                                        >>$@.tmpfile
1322.ENDIF
1323.IF "$(DEF5EXPORT10)"!=""
1324    @echo $(DEF5EXPORT10)                                       >>$@.tmpfile
1325.ENDIF
1326.IF "$(DEF5EXPORT11)"!=""
1327    @echo $(DEF5EXPORT11)                                       >>$@.tmpfile
1328.ENDIF
1329.IF "$(DEF5EXPORT12)"!=""
1330    @echo $(DEF5EXPORT12)                                       >>$@.tmpfile
1331.ENDIF
1332.IF "$(DEF5EXPORT13)"!=""
1333    @echo $(DEF5EXPORT13)                                       >>$@.tmpfile
1334.ENDIF
1335.IF "$(DEF5EXPORT14)"!=""
1336    @echo $(DEF5EXPORT14)                                       >>$@.tmpfile
1337.ENDIF
1338.IF "$(DEF5EXPORT15)"!=""
1339    @echo $(DEF5EXPORT15)                                       >>$@.tmpfile
1340.ENDIF
1341.IF "$(DEF5EXPORT16)"!=""
1342    @echo $(DEF5EXPORT16)                                       >>$@.tmpfile
1343.ENDIF
1344.IF "$(DEF5EXPORT17)"!=""
1345    @echo $(DEF5EXPORT17)                                       >>$@.tmpfile
1346.ENDIF
1347.IF "$(DEF5EXPORT18)"!=""
1348    @echo $(DEF5EXPORT18)                                       >>$@.tmpfile
1349.ENDIF
1350.IF "$(DEF5EXPORT19)"!=""
1351    @echo $(DEF5EXPORT19)                                       >>$@.tmpfile
1352.ENDIF
1353.IF "$(DEF5EXPORT20)"!=""
1354    @echo $(DEF5EXPORT20)                                       >>$@.tmpfile
1355.ENDIF
1356.IF "$(DEF5EXPORTFILE)"!=""
1357.IF "$(COM)"=="GCC"
1358    $(COMMAND_ECHO)$(TYPE) $(DEF5EXPORTFILE) | sed -e s:PRIVATE:: >> $@.tmpfile
1359.ELSE
1360    $(COMMAND_ECHO)$(TYPE) $(DEF5EXPORTFILE) >> $@.tmpfile
1361.ENDIF
1362.ENDIF
1363    @-$(RM) $@
1364    @$(RENAME) $@.tmpfile $@
1365.ENDIF          # "$(GUI)"=="WNT"
1366
1367.IF "$(GUI)"=="OS2"
1368
1369#21/02/2006 YD dll names must be 8.3, invoke fix script
1370#check osl/os2/module.c/osl_loadModule()
1371SHL5TARGET8=$(shell @fix_shl.cmd $(SHL5TARGETN:f))
1372
1373DEF5FILTER=$(SOLARENV)/inc/dummy.flt
1374DEF5NAMELIST=$(foreach,i,$(DEFLIB5NAME) $(SLB)/$(i).lib)
1375
1376.IF "$(link_always)"==""
1377$(DEF5TARGETN) : \
1378        $(DEF5DEPN) \
1379        $(DEF5EXPORTFILE)
1380.ELSE           # "$(link_always)"==""
1381$(DEF5TARGETN) .PHONY :
1382.ENDIF          # "$(link_always)"==""
1383    @+-$(RM) $@.tmpfile
1384    @echo "Making:    module definition file" $(@:f)
1385    @echo LIBRARY     $(SHL5TARGET8) INITINSTANCE TERMINSTANCE   >$@.tmpfile
1386    @echo DATA MULTIPLE  >>$@.tmpfile
1387    @echo EXPORTS                                                   >>$@.tmpfile
1388.IF "$(VERSIONOBJ)"!=""
1389#   getversioninfo fuer alle!!
1390    @echo _GetVersionInfo       >$@.tmp_ord
1391.ENDIF
1392
1393.IF "$(DEFLIB5NAME)"!=""
1394    @+echo $(SLB)/$(DEFLIB5NAME).lib
1395    @+emxexp $(DEF5NAMELIST) | fix_exp_file >> $@.tmp_ord
1396.ENDIF              # "$(DEFLIB5NAME)"!=""
1397
1398.IF "$(DEF5EXPORT1)"!=""
1399    @echo $(DEF5EXPORT1)                                        >>$@.tmpfile
1400.ENDIF
1401.IF "$(DEF5EXPORT2)"!=""
1402    @echo $(DEF5EXPORT2)                                        >>$@.tmpfile
1403.ENDIF
1404.IF "$(DEF5EXPORT3)"!=""
1405    @echo $(DEF5EXPORT3)                                        >>$@.tmpfile
1406.ENDIF
1407.IF "$(DEF5EXPORT4)"!=""
1408    @echo $(DEF5EXPORT4)                                        >>$@.tmpfile
1409.ENDIF
1410.IF "$(DEF5EXPORT5)"!=""
1411    @echo $(DEF5EXPORT5)                                        >>$@.tmpfile
1412.ENDIF
1413.IF "$(DEF5EXPORT6)"!=""
1414    @echo $(DEF5EXPORT6)                                        >>$@.tmpfile
1415.ENDIF
1416.IF "$(DEF5EXPORT7)"!=""
1417    @echo $(DEF5EXPORT7)                                        >>$@.tmpfile
1418.ENDIF
1419.IF "$(DEF5EXPORT8)"!=""
1420    @echo $(DEF5EXPORT8)                                        >>$@.tmpfile
1421.ENDIF
1422.IF "$(DEF5EXPORT9)"!=""
1423    @echo $(DEF5EXPORT9)                                        >>$@.tmpfile
1424.ENDIF
1425.IF "$(DEF5EXPORT10)"!=""
1426    @echo $(DEF5EXPORT10)                                       >>$@.tmpfile
1427.ENDIF
1428.IF "$(DEF5EXPORT11)"!=""
1429    @echo $(DEF5EXPORT11)                                       >>$@.tmpfile
1430.ENDIF
1431.IF "$(DEF5EXPORT12)"!=""
1432    @echo $(DEF5EXPORT12)                                       >>$@.tmpfile
1433.ENDIF
1434.IF "$(DEF5EXPORT13)"!=""
1435    @echo $(DEF5EXPORT13)                                       >>$@.tmpfile
1436.ENDIF
1437.IF "$(DEF5EXPORT14)"!=""
1438    @echo $(DEF5EXPORT14)                                       >>$@.tmpfile
1439.ENDIF
1440.IF "$(DEF5EXPORT15)"!=""
1441    @echo $(DEF5EXPORT15)                                       >>$@.tmpfile
1442.ENDIF
1443.IF "$(DEF5EXPORT16)"!=""
1444    @echo $(DEF5EXPORT16)                                       >>$@.tmpfile
1445.ENDIF
1446.IF "$(DEF5EXPORT17)"!=""
1447    @echo $(DEF5EXPORT17)                                       >>$@.tmpfile
1448.ENDIF
1449.IF "$(DEF5EXPORT18)"!=""
1450    @echo $(DEF5EXPORT18)                                       >>$@.tmpfile
1451.ENDIF
1452.IF "$(DEF5EXPORT19)"!=""
1453    @echo $(DEF5EXPORT19)                                       >>$@.tmpfile
1454.ENDIF
1455.IF "$(DEF5EXPORT20)"!=""
1456    @echo $(DEF5EXPORT20)                                       >>$@.tmpfile
1457.ENDIF
1458.IF "$(DEF5EXPORTFILE)"!=""
1459    @fix_def_file < $(DEF5EXPORTFILE) >> $@.tmp_ord
1460.ENDIF
1461    @sort < $@.tmp_ord | uniq > $@.exptmpfile
1462    @fix_def_ord < $@.exptmpfile >> $@.tmpfile
1463    @+-$(RM) $@
1464    $(COMMAND_ECHO)+$(RENAME) $@.tmpfile $@
1465    @+-$(RM) $@.tmp_ord
1466    @+-$(RM) $@.exptmpfile
1467.IF "$(SHL5USE_EXPORTS)"=="" || "$(SHL5USE_EXPORTS)"=="ordinal"
1468#03/11/2012  if 'name' is not used, export from def file (with ordinals)
1469    @echo Build import library from DEF file.
1470    @+-$(RM) $(LB)/$(SHL5TARGETN:b).lib
1471    $(COMMAND_ECHO)+$(IMPLIB) $(IMPLIBFLAGS) $(LB)/$(SHL5TARGETN:b).lib $@
1472.ENDIF          # "$(SHL5USE_EXPORTS)"==""
1473
1474.ENDIF          # "$(GUI)"=="OS2"
1475
1476.IF "$(GUI)"=="UNX"
1477$(DEF5TARGETN): \
1478        $(DEF5DEPN) \
1479        $(DEF5EXPORTFILE)
1480    @echo just a dummy for UNIX > $@
1481.ENDIF
1482.ENDIF          # "$(DEF5TARGETN)"!=""
1483
1484
1485# Anweisungen fuer das Linken
1486# unroll begin
1487
1488.IF "$(DEF6TARGETN)"!=""
1489
1490#to make intuitiv naming work
1491.IF "$(DEF6LIBNAME)"!=""
1492DEFLIB6NAME*=$(DEF6LIBNAME)
1493.ENDIF          # "$(DEF6LIBNAME)"!=""
1494
1495.IF "$(DEFLIB6NAME)"!=""
1496DEF6DEPN+=$(foreach,i,$(DEFLIB6NAME) $(SLB)/$(i).lib)
1497.ENDIF
1498
1499.IF "$(SHL6VERSIONMAP)"!=""
1500.IF "$(DEF6EXPORTFILE)"==""
1501.IF "$(GUI)"=="WNT"
1502DEF6EXPORTFILE=$(MISC)/$(SHL6VERSIONMAP:b)_$(SHL6TARGET).dxp
1503.IF "$(COM)"=="GCC"
1504$(DEF6EXPORTFILE) : $(SHL6OBJS) $(SHL6LIBS)
1505.ENDIF # .IF "$(COM)"=="GCC"
1506
1507$(DEF6EXPORTFILE) : $(SHL6VERSIONMAP)
1508    $(COMMAND_ECHO)$(TYPE) $< | $(AWK) -f $(SOLARENV)/bin/getcsym.awk > $@
1509.IF "$(COM)"!="GCC"
1510# Wildcards in a version script are a GCC concept -- the GCC branch below
1511# pulls them out into a .symbols-regexp and matches them against the real
1512# objects.  MSVC has no equivalent, and asking link.exe to export a literal
1513# "_ZTI*" fails with LNK2001, so drop those lines here.  Match "*" alone:
1514# every MSVC-mangled C++ name begins with "?", so "[*?]" would drop the lot.
1515    $(COMMAND_ECHO)-$(GREP) -v "[*]" $@ > $@.nowild
1516    $(COMMAND_ECHO)$(RENAME) $@.nowild $@
1517.ENDIF
1518.IF "$(COM)"=="GCC"
1519    $(COMMAND_ECHO)-$(GREP) -v "\*\|?" $@ | $(SED) -e 's@#.*@@' > $@.exported-symbols
1520    $(COMMAND_ECHO)-$(GREP) "\*\|?" $@ > $@.symbols-regexp
1521# Shared libraries will be build out of the *.obj files specified in SHL?OBJS and SHL?LIBS
1522# Extract RTTI symbols from all the objects that will be used to build a shared library
1523    $(COMMAND_ECHO)nm -gP $(SHL6OBJS) \
1524        `$(TYPE) /dev/null $(foreach,j,$(SHL6LIBS) $j) | $(SED) s\#$(ROUT)\#$(PRJ)$/$(ROUT)\#g` \
1525        | $(SOLARENV)/bin/addsym-mingw.sh $@.symbols-regexp $@.symbols-regexp.tmp >> $@.exported-symbols
1526# overwrite the map file generate into the local output tree with the generated
1527# exported symbols list
1528    $(COMMAND_ECHO)$(RENAME) $@.exported-symbols $@
1529.ENDIF # .IF "$(COM)"=="GCC"
1530
1531.ENDIF          # "$(GUI)"=="WNT"
1532
1533.IF "$(GUI)"=="OS2"
1534DEF6EXPORTFILE=$(MISC)/$(SHL6VERSIONMAP:b)_$(SHL6TARGET).dxp
1535$(DEF6EXPORTFILE) : $(SHL6VERSIONMAP)
1536    $(TYPE) $< | $(AWK) -f $(SOLARENV)/bin/getcsym.awk > $@
1537.ENDIF          # "$(GUI)"=="OS2"
1538
1539.ENDIF          # "$(DEF6EXPORTFILE)"==""
1540.ENDIF          # "$(SHL6VERSIONMAP)"!=""
1541
1542.IF "$(GUI)"=="WNT"
1543
1544DEF6FILTER=$(SOLARENV)/inc/dummy.flt
1545
1546RMHACK6:=$(RM)
1547
1548.IF "$(DEF6CEXP)"!=""
1549EXPORT_ALL_SWITCH=-A $(DEF6CEXP)
1550.ENDIF
1551
1552.IF "$(link_always)"==""
1553$(DEF6TARGETN) : \
1554        $(DEF6DEPN) \
1555        $(DEF6EXPORTFILE)
1556.ELSE           # "$(link_always)"==""
1557$(DEF6TARGETN) .PHONY :
1558.ENDIF          # "$(link_always)"==""
1559    @-$(RM) $@.tmpfile
1560    @echo "Making:    module definition file" $(@:f)
1561    @echo LIBRARY     $(EMQ)"$(SHL6TARGETN:f)$(EMQ)"                                 >$@.tmpfile
1562.IF "$(COM)"!="GCC"
1563    @echo HEAPSIZE    0                                             >>$@.tmpfile
1564.ENDIF
1565    @echo EXPORTS                                                   >>$@.tmpfile
1566.IF "$(VERSIONOBJ)"!=""
1567#   getversioninfo fuer alle!!
1568    @echo GetVersionInfo        >>$@.tmpfile
1569.ENDIF
1570.IF "$(DEFLIB6NAME)"!=""
1571.IF "$(COM)"=="GCC"
1572    @-$(RM) $(MISC)/$(SHL6TARGET).exp
1573    $(COMMAND_ECHO)dlltool --output-def $(MISC)/$(SHL6TARGET).exp --export-all-symbols \
1574        `$(TYPE) $(foreach,i,$(DEFLIB6NAME) $(SLB)/$(i).lib) | sed s#$(ROUT)#$(PRJ)/$(ROUT)#g`
1575    $(COMMAND_ECHO)tail --lines +3 $(MISC)/$(SHL6TARGET).exp | sed '/^;/d' >>$@.tmpfile
1576    @-$(RM) $(MISC)/$(SHL6TARGET).exp
1577.ELSE
1578.IF "$(SHL6USE_EXPORTS)"==""
1579    @-$(RMHACK6) $(MISC)/$(SHL6TARGET).exp
1580    @$(SOLARENV)/bin/extract-linker-member.sh $(SLB)/$(DEFLIB6NAME).lib $(MISC)/$(SHL6TARGET).exp
1581    @$(LDUMP2) -N $(EXPORT_ALL_SWITCH) -F $(MISC)/$(SHL6TARGET).flt $(MISC)/$(SHL6TARGET).exp              >>$@.tmpfile
1582    $(COMMAND_ECHO)$(RMHACK6) $(MISC)/$(SHL6TARGET).exp
1583.ELSE           # "$(SHL6USE_EXPORTS)"==""
1584    @$(DUMPBIN) -DIRECTIVES  $(foreach,i,$(DEFLIB6NAME) $(SLB)/$(i).lib) | $(GREP) EXPORT: > $(MISC)/$(SHL6TARGET).direct
1585    @$(LDUMP2) -N -D $(EXPORT_ALL_SWITCH) -F $(DEF6FILTER) $(MISC)/$(SHL6TARGET).direct >>$@.tmpfile
1586.ENDIF          # "$(SHL6USE_EXPORTS)"==""
1587.ENDIF
1588.ENDIF              # "$(DEFLIB6NAME)"!=""
1589.IF "$(DEF6EXPORT1)"!=""
1590    @echo $(DEF6EXPORT1)                                        >>$@.tmpfile
1591.ENDIF
1592.IF "$(DEF6EXPORT2)"!=""
1593    @echo $(DEF6EXPORT2)                                        >>$@.tmpfile
1594.ENDIF
1595.IF "$(DEF6EXPORT3)"!=""
1596    @echo $(DEF6EXPORT3)                                        >>$@.tmpfile
1597.ENDIF
1598.IF "$(DEF6EXPORT4)"!=""
1599    @echo $(DEF6EXPORT4)                                        >>$@.tmpfile
1600.ENDIF
1601.IF "$(DEF6EXPORT5)"!=""
1602    @echo $(DEF6EXPORT5)                                        >>$@.tmpfile
1603.ENDIF
1604.IF "$(DEF6EXPORT6)"!=""
1605    @echo $(DEF6EXPORT6)                                        >>$@.tmpfile
1606.ENDIF
1607.IF "$(DEF6EXPORT7)"!=""
1608    @echo $(DEF6EXPORT7)                                        >>$@.tmpfile
1609.ENDIF
1610.IF "$(DEF6EXPORT8)"!=""
1611    @echo $(DEF6EXPORT8)                                        >>$@.tmpfile
1612.ENDIF
1613.IF "$(DEF6EXPORT9)"!=""
1614    @echo $(DEF6EXPORT9)                                        >>$@.tmpfile
1615.ENDIF
1616.IF "$(DEF6EXPORT10)"!=""
1617    @echo $(DEF6EXPORT10)                                       >>$@.tmpfile
1618.ENDIF
1619.IF "$(DEF6EXPORT11)"!=""
1620    @echo $(DEF6EXPORT11)                                       >>$@.tmpfile
1621.ENDIF
1622.IF "$(DEF6EXPORT12)"!=""
1623    @echo $(DEF6EXPORT12)                                       >>$@.tmpfile
1624.ENDIF
1625.IF "$(DEF6EXPORT13)"!=""
1626    @echo $(DEF6EXPORT13)                                       >>$@.tmpfile
1627.ENDIF
1628.IF "$(DEF6EXPORT14)"!=""
1629    @echo $(DEF6EXPORT14)                                       >>$@.tmpfile
1630.ENDIF
1631.IF "$(DEF6EXPORT15)"!=""
1632    @echo $(DEF6EXPORT15)                                       >>$@.tmpfile
1633.ENDIF
1634.IF "$(DEF6EXPORT16)"!=""
1635    @echo $(DEF6EXPORT16)                                       >>$@.tmpfile
1636.ENDIF
1637.IF "$(DEF6EXPORT17)"!=""
1638    @echo $(DEF6EXPORT17)                                       >>$@.tmpfile
1639.ENDIF
1640.IF "$(DEF6EXPORT18)"!=""
1641    @echo $(DEF6EXPORT18)                                       >>$@.tmpfile
1642.ENDIF
1643.IF "$(DEF6EXPORT19)"!=""
1644    @echo $(DEF6EXPORT19)                                       >>$@.tmpfile
1645.ENDIF
1646.IF "$(DEF6EXPORT20)"!=""
1647    @echo $(DEF6EXPORT20)                                       >>$@.tmpfile
1648.ENDIF
1649.IF "$(DEF6EXPORTFILE)"!=""
1650.IF "$(COM)"=="GCC"
1651    $(COMMAND_ECHO)$(TYPE) $(DEF6EXPORTFILE) | sed -e s:PRIVATE:: >> $@.tmpfile
1652.ELSE
1653    $(COMMAND_ECHO)$(TYPE) $(DEF6EXPORTFILE) >> $@.tmpfile
1654.ENDIF
1655.ENDIF
1656    @-$(RM) $@
1657    @$(RENAME) $@.tmpfile $@
1658.ENDIF          # "$(GUI)"=="WNT"
1659
1660.IF "$(GUI)"=="OS2"
1661
1662#21/02/2006 YD dll names must be 8.3, invoke fix script
1663#check osl/os2/module.c/osl_loadModule()
1664SHL6TARGET8=$(shell @fix_shl.cmd $(SHL6TARGETN:f))
1665
1666DEF6FILTER=$(SOLARENV)/inc/dummy.flt
1667DEF6NAMELIST=$(foreach,i,$(DEFLIB6NAME) $(SLB)/$(i).lib)
1668
1669.IF "$(link_always)"==""
1670$(DEF6TARGETN) : \
1671        $(DEF6DEPN) \
1672        $(DEF6EXPORTFILE)
1673.ELSE           # "$(link_always)"==""
1674$(DEF6TARGETN) .PHONY :
1675.ENDIF          # "$(link_always)"==""
1676    @+-$(RM) $@.tmpfile
1677    @echo "Making:    module definition file" $(@:f)
1678    @echo LIBRARY     $(SHL6TARGET8) INITINSTANCE TERMINSTANCE   >$@.tmpfile
1679    @echo DATA MULTIPLE  >>$@.tmpfile
1680    @echo EXPORTS                                                   >>$@.tmpfile
1681.IF "$(VERSIONOBJ)"!=""
1682#   getversioninfo fuer alle!!
1683    @echo _GetVersionInfo       >$@.tmp_ord
1684.ENDIF
1685
1686.IF "$(DEFLIB6NAME)"!=""
1687    @+echo $(SLB)/$(DEFLIB6NAME).lib
1688    @+emxexp $(DEF6NAMELIST) | fix_exp_file >> $@.tmp_ord
1689.ENDIF              # "$(DEFLIB6NAME)"!=""
1690
1691.IF "$(DEF6EXPORT1)"!=""
1692    @echo $(DEF6EXPORT1)                                        >>$@.tmpfile
1693.ENDIF
1694.IF "$(DEF6EXPORT2)"!=""
1695    @echo $(DEF6EXPORT2)                                        >>$@.tmpfile
1696.ENDIF
1697.IF "$(DEF6EXPORT3)"!=""
1698    @echo $(DEF6EXPORT3)                                        >>$@.tmpfile
1699.ENDIF
1700.IF "$(DEF6EXPORT4)"!=""
1701    @echo $(DEF6EXPORT4)                                        >>$@.tmpfile
1702.ENDIF
1703.IF "$(DEF6EXPORT5)"!=""
1704    @echo $(DEF6EXPORT5)                                        >>$@.tmpfile
1705.ENDIF
1706.IF "$(DEF6EXPORT6)"!=""
1707    @echo $(DEF6EXPORT6)                                        >>$@.tmpfile
1708.ENDIF
1709.IF "$(DEF6EXPORT7)"!=""
1710    @echo $(DEF6EXPORT7)                                        >>$@.tmpfile
1711.ENDIF
1712.IF "$(DEF6EXPORT8)"!=""
1713    @echo $(DEF6EXPORT8)                                        >>$@.tmpfile
1714.ENDIF
1715.IF "$(DEF6EXPORT9)"!=""
1716    @echo $(DEF6EXPORT9)                                        >>$@.tmpfile
1717.ENDIF
1718.IF "$(DEF6EXPORT10)"!=""
1719    @echo $(DEF6EXPORT10)                                       >>$@.tmpfile
1720.ENDIF
1721.IF "$(DEF6EXPORT11)"!=""
1722    @echo $(DEF6EXPORT11)                                       >>$@.tmpfile
1723.ENDIF
1724.IF "$(DEF6EXPORT12)"!=""
1725    @echo $(DEF6EXPORT12)                                       >>$@.tmpfile
1726.ENDIF
1727.IF "$(DEF6EXPORT13)"!=""
1728    @echo $(DEF6EXPORT13)                                       >>$@.tmpfile
1729.ENDIF
1730.IF "$(DEF6EXPORT14)"!=""
1731    @echo $(DEF6EXPORT14)                                       >>$@.tmpfile
1732.ENDIF
1733.IF "$(DEF6EXPORT15)"!=""
1734    @echo $(DEF6EXPORT15)                                       >>$@.tmpfile
1735.ENDIF
1736.IF "$(DEF6EXPORT16)"!=""
1737    @echo $(DEF6EXPORT16)                                       >>$@.tmpfile
1738.ENDIF
1739.IF "$(DEF6EXPORT17)"!=""
1740    @echo $(DEF6EXPORT17)                                       >>$@.tmpfile
1741.ENDIF
1742.IF "$(DEF6EXPORT18)"!=""
1743    @echo $(DEF6EXPORT18)                                       >>$@.tmpfile
1744.ENDIF
1745.IF "$(DEF6EXPORT19)"!=""
1746    @echo $(DEF6EXPORT19)                                       >>$@.tmpfile
1747.ENDIF
1748.IF "$(DEF6EXPORT20)"!=""
1749    @echo $(DEF6EXPORT20)                                       >>$@.tmpfile
1750.ENDIF
1751.IF "$(DEF6EXPORTFILE)"!=""
1752    @fix_def_file < $(DEF6EXPORTFILE) >> $@.tmp_ord
1753.ENDIF
1754    @sort < $@.tmp_ord | uniq > $@.exptmpfile
1755    @fix_def_ord < $@.exptmpfile >> $@.tmpfile
1756    @+-$(RM) $@
1757    $(COMMAND_ECHO)+$(RENAME) $@.tmpfile $@
1758    @+-$(RM) $@.tmp_ord
1759    @+-$(RM) $@.exptmpfile
1760.IF "$(SHL6USE_EXPORTS)"=="" || "$(SHL6USE_EXPORTS)"=="ordinal"
1761#03/11/2012  if 'name' is not used, export from def file (with ordinals)
1762    @echo Build import library from DEF file.
1763    @+-$(RM) $(LB)/$(SHL6TARGETN:b).lib
1764    $(COMMAND_ECHO)+$(IMPLIB) $(IMPLIBFLAGS) $(LB)/$(SHL6TARGETN:b).lib $@
1765.ENDIF          # "$(SHL6USE_EXPORTS)"==""
1766
1767.ENDIF          # "$(GUI)"=="OS2"
1768
1769.IF "$(GUI)"=="UNX"
1770$(DEF6TARGETN): \
1771        $(DEF6DEPN) \
1772        $(DEF6EXPORTFILE)
1773    @echo just a dummy for UNIX > $@
1774.ENDIF
1775.ENDIF          # "$(DEF6TARGETN)"!=""
1776
1777
1778# Anweisungen fuer das Linken
1779# unroll begin
1780
1781.IF "$(DEF7TARGETN)"!=""
1782
1783#to make intuitiv naming work
1784.IF "$(DEF7LIBNAME)"!=""
1785DEFLIB7NAME*=$(DEF7LIBNAME)
1786.ENDIF          # "$(DEF7LIBNAME)"!=""
1787
1788.IF "$(DEFLIB7NAME)"!=""
1789DEF7DEPN+=$(foreach,i,$(DEFLIB7NAME) $(SLB)/$(i).lib)
1790.ENDIF
1791
1792.IF "$(SHL7VERSIONMAP)"!=""
1793.IF "$(DEF7EXPORTFILE)"==""
1794.IF "$(GUI)"=="WNT"
1795DEF7EXPORTFILE=$(MISC)/$(SHL7VERSIONMAP:b)_$(SHL7TARGET).dxp
1796.IF "$(COM)"=="GCC"
1797$(DEF7EXPORTFILE) : $(SHL7OBJS) $(SHL7LIBS)
1798.ENDIF # .IF "$(COM)"=="GCC"
1799
1800$(DEF7EXPORTFILE) : $(SHL7VERSIONMAP)
1801    $(COMMAND_ECHO)$(TYPE) $< | $(AWK) -f $(SOLARENV)/bin/getcsym.awk > $@
1802.IF "$(COM)"!="GCC"
1803# Wildcards in a version script are a GCC concept -- the GCC branch below
1804# pulls them out into a .symbols-regexp and matches them against the real
1805# objects.  MSVC has no equivalent, and asking link.exe to export a literal
1806# "_ZTI*" fails with LNK2001, so drop those lines here.  Match "*" alone:
1807# every MSVC-mangled C++ name begins with "?", so "[*?]" would drop the lot.
1808    $(COMMAND_ECHO)-$(GREP) -v "[*]" $@ > $@.nowild
1809    $(COMMAND_ECHO)$(RENAME) $@.nowild $@
1810.ENDIF
1811.IF "$(COM)"=="GCC"
1812    $(COMMAND_ECHO)-$(GREP) -v "\*\|?" $@ | $(SED) -e 's@#.*@@' > $@.exported-symbols
1813    $(COMMAND_ECHO)-$(GREP) "\*\|?" $@ > $@.symbols-regexp
1814# Shared libraries will be build out of the *.obj files specified in SHL?OBJS and SHL?LIBS
1815# Extract RTTI symbols from all the objects that will be used to build a shared library
1816    $(COMMAND_ECHO)nm -gP $(SHL7OBJS) \
1817        `$(TYPE) /dev/null $(foreach,j,$(SHL7LIBS) $j) | $(SED) s\#$(ROUT)\#$(PRJ)$/$(ROUT)\#g` \
1818        | $(SOLARENV)/bin/addsym-mingw.sh $@.symbols-regexp $@.symbols-regexp.tmp >> $@.exported-symbols
1819# overwrite the map file generate into the local output tree with the generated
1820# exported symbols list
1821    $(COMMAND_ECHO)$(RENAME) $@.exported-symbols $@
1822.ENDIF # .IF "$(COM)"=="GCC"
1823
1824.ENDIF          # "$(GUI)"=="WNT"
1825
1826.IF "$(GUI)"=="OS2"
1827DEF7EXPORTFILE=$(MISC)/$(SHL7VERSIONMAP:b)_$(SHL7TARGET).dxp
1828$(DEF7EXPORTFILE) : $(SHL7VERSIONMAP)
1829    $(TYPE) $< | $(AWK) -f $(SOLARENV)/bin/getcsym.awk > $@
1830.ENDIF          # "$(GUI)"=="OS2"
1831
1832.ENDIF          # "$(DEF7EXPORTFILE)"==""
1833.ENDIF          # "$(SHL7VERSIONMAP)"!=""
1834
1835.IF "$(GUI)"=="WNT"
1836
1837DEF7FILTER=$(SOLARENV)/inc/dummy.flt
1838
1839RMHACK7:=$(RM)
1840
1841.IF "$(DEF7CEXP)"!=""
1842EXPORT_ALL_SWITCH=-A $(DEF7CEXP)
1843.ENDIF
1844
1845.IF "$(link_always)"==""
1846$(DEF7TARGETN) : \
1847        $(DEF7DEPN) \
1848        $(DEF7EXPORTFILE)
1849.ELSE           # "$(link_always)"==""
1850$(DEF7TARGETN) .PHONY :
1851.ENDIF          # "$(link_always)"==""
1852    @-$(RM) $@.tmpfile
1853    @echo "Making:    module definition file" $(@:f)
1854    @echo LIBRARY     $(EMQ)"$(SHL7TARGETN:f)$(EMQ)"                                 >$@.tmpfile
1855.IF "$(COM)"!="GCC"
1856    @echo HEAPSIZE    0                                             >>$@.tmpfile
1857.ENDIF
1858    @echo EXPORTS                                                   >>$@.tmpfile
1859.IF "$(VERSIONOBJ)"!=""
1860#   getversioninfo fuer alle!!
1861    @echo GetVersionInfo        >>$@.tmpfile
1862.ENDIF
1863.IF "$(DEFLIB7NAME)"!=""
1864.IF "$(COM)"=="GCC"
1865    @-$(RM) $(MISC)/$(SHL7TARGET).exp
1866    $(COMMAND_ECHO)dlltool --output-def $(MISC)/$(SHL7TARGET).exp --export-all-symbols \
1867        `$(TYPE) $(foreach,i,$(DEFLIB7NAME) $(SLB)/$(i).lib) | sed s#$(ROUT)#$(PRJ)/$(ROUT)#g`
1868    $(COMMAND_ECHO)tail --lines +3 $(MISC)/$(SHL7TARGET).exp | sed '/^;/d' >>$@.tmpfile
1869    @-$(RM) $(MISC)/$(SHL7TARGET).exp
1870.ELSE
1871.IF "$(SHL7USE_EXPORTS)"==""
1872    @-$(RMHACK7) $(MISC)/$(SHL7TARGET).exp
1873    @$(SOLARENV)/bin/extract-linker-member.sh $(SLB)/$(DEFLIB7NAME).lib $(MISC)/$(SHL7TARGET).exp
1874    @$(LDUMP2) -N $(EXPORT_ALL_SWITCH) -F $(MISC)/$(SHL7TARGET).flt $(MISC)/$(SHL7TARGET).exp              >>$@.tmpfile
1875    $(COMMAND_ECHO)$(RMHACK7) $(MISC)/$(SHL7TARGET).exp
1876.ELSE           # "$(SHL7USE_EXPORTS)"==""
1877    @$(DUMPBIN) -DIRECTIVES  $(foreach,i,$(DEFLIB7NAME) $(SLB)/$(i).lib) | $(GREP) EXPORT: > $(MISC)/$(SHL7TARGET).direct
1878    @$(LDUMP2) -N -D $(EXPORT_ALL_SWITCH) -F $(DEF7FILTER) $(MISC)/$(SHL7TARGET).direct >>$@.tmpfile
1879.ENDIF          # "$(SHL7USE_EXPORTS)"==""
1880.ENDIF
1881.ENDIF              # "$(DEFLIB7NAME)"!=""
1882.IF "$(DEF7EXPORT1)"!=""
1883    @echo $(DEF7EXPORT1)                                        >>$@.tmpfile
1884.ENDIF
1885.IF "$(DEF7EXPORT2)"!=""
1886    @echo $(DEF7EXPORT2)                                        >>$@.tmpfile
1887.ENDIF
1888.IF "$(DEF7EXPORT3)"!=""
1889    @echo $(DEF7EXPORT3)                                        >>$@.tmpfile
1890.ENDIF
1891.IF "$(DEF7EXPORT4)"!=""
1892    @echo $(DEF7EXPORT4)                                        >>$@.tmpfile
1893.ENDIF
1894.IF "$(DEF7EXPORT5)"!=""
1895    @echo $(DEF7EXPORT5)                                        >>$@.tmpfile
1896.ENDIF
1897.IF "$(DEF7EXPORT6)"!=""
1898    @echo $(DEF7EXPORT6)                                        >>$@.tmpfile
1899.ENDIF
1900.IF "$(DEF7EXPORT7)"!=""
1901    @echo $(DEF7EXPORT7)                                        >>$@.tmpfile
1902.ENDIF
1903.IF "$(DEF7EXPORT8)"!=""
1904    @echo $(DEF7EXPORT8)                                        >>$@.tmpfile
1905.ENDIF
1906.IF "$(DEF7EXPORT9)"!=""
1907    @echo $(DEF7EXPORT9)                                        >>$@.tmpfile
1908.ENDIF
1909.IF "$(DEF7EXPORT10)"!=""
1910    @echo $(DEF7EXPORT10)                                       >>$@.tmpfile
1911.ENDIF
1912.IF "$(DEF7EXPORT11)"!=""
1913    @echo $(DEF7EXPORT11)                                       >>$@.tmpfile
1914.ENDIF
1915.IF "$(DEF7EXPORT12)"!=""
1916    @echo $(DEF7EXPORT12)                                       >>$@.tmpfile
1917.ENDIF
1918.IF "$(DEF7EXPORT13)"!=""
1919    @echo $(DEF7EXPORT13)                                       >>$@.tmpfile
1920.ENDIF
1921.IF "$(DEF7EXPORT14)"!=""
1922    @echo $(DEF7EXPORT14)                                       >>$@.tmpfile
1923.ENDIF
1924.IF "$(DEF7EXPORT15)"!=""
1925    @echo $(DEF7EXPORT15)                                       >>$@.tmpfile
1926.ENDIF
1927.IF "$(DEF7EXPORT16)"!=""
1928    @echo $(DEF7EXPORT16)                                       >>$@.tmpfile
1929.ENDIF
1930.IF "$(DEF7EXPORT17)"!=""
1931    @echo $(DEF7EXPORT17)                                       >>$@.tmpfile
1932.ENDIF
1933.IF "$(DEF7EXPORT18)"!=""
1934    @echo $(DEF7EXPORT18)                                       >>$@.tmpfile
1935.ENDIF
1936.IF "$(DEF7EXPORT19)"!=""
1937    @echo $(DEF7EXPORT19)                                       >>$@.tmpfile
1938.ENDIF
1939.IF "$(DEF7EXPORT20)"!=""
1940    @echo $(DEF7EXPORT20)                                       >>$@.tmpfile
1941.ENDIF
1942.IF "$(DEF7EXPORTFILE)"!=""
1943.IF "$(COM)"=="GCC"
1944    $(COMMAND_ECHO)$(TYPE) $(DEF7EXPORTFILE) | sed -e s:PRIVATE:: >> $@.tmpfile
1945.ELSE
1946    $(COMMAND_ECHO)$(TYPE) $(DEF7EXPORTFILE) >> $@.tmpfile
1947.ENDIF
1948.ENDIF
1949    @-$(RM) $@
1950    @$(RENAME) $@.tmpfile $@
1951.ENDIF          # "$(GUI)"=="WNT"
1952
1953.IF "$(GUI)"=="OS2"
1954
1955#21/02/2006 YD dll names must be 8.3, invoke fix script
1956#check osl/os2/module.c/osl_loadModule()
1957SHL7TARGET8=$(shell @fix_shl.cmd $(SHL7TARGETN:f))
1958
1959DEF7FILTER=$(SOLARENV)/inc/dummy.flt
1960DEF7NAMELIST=$(foreach,i,$(DEFLIB7NAME) $(SLB)/$(i).lib)
1961
1962.IF "$(link_always)"==""
1963$(DEF7TARGETN) : \
1964        $(DEF7DEPN) \
1965        $(DEF7EXPORTFILE)
1966.ELSE           # "$(link_always)"==""
1967$(DEF7TARGETN) .PHONY :
1968.ENDIF          # "$(link_always)"==""
1969    @+-$(RM) $@.tmpfile
1970    @echo "Making:    module definition file" $(@:f)
1971    @echo LIBRARY     $(SHL7TARGET8) INITINSTANCE TERMINSTANCE   >$@.tmpfile
1972    @echo DATA MULTIPLE  >>$@.tmpfile
1973    @echo EXPORTS                                                   >>$@.tmpfile
1974.IF "$(VERSIONOBJ)"!=""
1975#   getversioninfo fuer alle!!
1976    @echo _GetVersionInfo       >$@.tmp_ord
1977.ENDIF
1978
1979.IF "$(DEFLIB7NAME)"!=""
1980    @+echo $(SLB)/$(DEFLIB7NAME).lib
1981    @+emxexp $(DEF7NAMELIST) | fix_exp_file >> $@.tmp_ord
1982.ENDIF              # "$(DEFLIB7NAME)"!=""
1983
1984.IF "$(DEF7EXPORT1)"!=""
1985    @echo $(DEF7EXPORT1)                                        >>$@.tmpfile
1986.ENDIF
1987.IF "$(DEF7EXPORT2)"!=""
1988    @echo $(DEF7EXPORT2)                                        >>$@.tmpfile
1989.ENDIF
1990.IF "$(DEF7EXPORT3)"!=""
1991    @echo $(DEF7EXPORT3)                                        >>$@.tmpfile
1992.ENDIF
1993.IF "$(DEF7EXPORT4)"!=""
1994    @echo $(DEF7EXPORT4)                                        >>$@.tmpfile
1995.ENDIF
1996.IF "$(DEF7EXPORT5)"!=""
1997    @echo $(DEF7EXPORT5)                                        >>$@.tmpfile
1998.ENDIF
1999.IF "$(DEF7EXPORT6)"!=""
2000    @echo $(DEF7EXPORT6)                                        >>$@.tmpfile
2001.ENDIF
2002.IF "$(DEF7EXPORT7)"!=""
2003    @echo $(DEF7EXPORT7)                                        >>$@.tmpfile
2004.ENDIF
2005.IF "$(DEF7EXPORT8)"!=""
2006    @echo $(DEF7EXPORT8)                                        >>$@.tmpfile
2007.ENDIF
2008.IF "$(DEF7EXPORT9)"!=""
2009    @echo $(DEF7EXPORT9)                                        >>$@.tmpfile
2010.ENDIF
2011.IF "$(DEF7EXPORT10)"!=""
2012    @echo $(DEF7EXPORT10)                                       >>$@.tmpfile
2013.ENDIF
2014.IF "$(DEF7EXPORT11)"!=""
2015    @echo $(DEF7EXPORT11)                                       >>$@.tmpfile
2016.ENDIF
2017.IF "$(DEF7EXPORT12)"!=""
2018    @echo $(DEF7EXPORT12)                                       >>$@.tmpfile
2019.ENDIF
2020.IF "$(DEF7EXPORT13)"!=""
2021    @echo $(DEF7EXPORT13)                                       >>$@.tmpfile
2022.ENDIF
2023.IF "$(DEF7EXPORT14)"!=""
2024    @echo $(DEF7EXPORT14)                                       >>$@.tmpfile
2025.ENDIF
2026.IF "$(DEF7EXPORT15)"!=""
2027    @echo $(DEF7EXPORT15)                                       >>$@.tmpfile
2028.ENDIF
2029.IF "$(DEF7EXPORT16)"!=""
2030    @echo $(DEF7EXPORT16)                                       >>$@.tmpfile
2031.ENDIF
2032.IF "$(DEF7EXPORT17)"!=""
2033    @echo $(DEF7EXPORT17)                                       >>$@.tmpfile
2034.ENDIF
2035.IF "$(DEF7EXPORT18)"!=""
2036    @echo $(DEF7EXPORT18)                                       >>$@.tmpfile
2037.ENDIF
2038.IF "$(DEF7EXPORT19)"!=""
2039    @echo $(DEF7EXPORT19)                                       >>$@.tmpfile
2040.ENDIF
2041.IF "$(DEF7EXPORT20)"!=""
2042    @echo $(DEF7EXPORT20)                                       >>$@.tmpfile
2043.ENDIF
2044.IF "$(DEF7EXPORTFILE)"!=""
2045    @fix_def_file < $(DEF7EXPORTFILE) >> $@.tmp_ord
2046.ENDIF
2047    @sort < $@.tmp_ord | uniq > $@.exptmpfile
2048    @fix_def_ord < $@.exptmpfile >> $@.tmpfile
2049    @+-$(RM) $@
2050    $(COMMAND_ECHO)+$(RENAME) $@.tmpfile $@
2051    @+-$(RM) $@.tmp_ord
2052    @+-$(RM) $@.exptmpfile
2053.IF "$(SHL7USE_EXPORTS)"=="" || "$(SHL7USE_EXPORTS)"=="ordinal"
2054#03/11/2012  if 'name' is not used, export from def file (with ordinals)
2055    @echo Build import library from DEF file.
2056    @+-$(RM) $(LB)/$(SHL7TARGETN:b).lib
2057    $(COMMAND_ECHO)+$(IMPLIB) $(IMPLIBFLAGS) $(LB)/$(SHL7TARGETN:b).lib $@
2058.ENDIF          # "$(SHL7USE_EXPORTS)"==""
2059
2060.ENDIF          # "$(GUI)"=="OS2"
2061
2062.IF "$(GUI)"=="UNX"
2063$(DEF7TARGETN): \
2064        $(DEF7DEPN) \
2065        $(DEF7EXPORTFILE)
2066    @echo just a dummy for UNIX > $@
2067.ENDIF
2068.ENDIF          # "$(DEF7TARGETN)"!=""
2069
2070
2071# Anweisungen fuer das Linken
2072# unroll begin
2073
2074.IF "$(DEF8TARGETN)"!=""
2075
2076#to make intuitiv naming work
2077.IF "$(DEF8LIBNAME)"!=""
2078DEFLIB8NAME*=$(DEF8LIBNAME)
2079.ENDIF          # "$(DEF8LIBNAME)"!=""
2080
2081.IF "$(DEFLIB8NAME)"!=""
2082DEF8DEPN+=$(foreach,i,$(DEFLIB8NAME) $(SLB)/$(i).lib)
2083.ENDIF
2084
2085.IF "$(SHL8VERSIONMAP)"!=""
2086.IF "$(DEF8EXPORTFILE)"==""
2087.IF "$(GUI)"=="WNT"
2088DEF8EXPORTFILE=$(MISC)/$(SHL8VERSIONMAP:b)_$(SHL8TARGET).dxp
2089.IF "$(COM)"=="GCC"
2090$(DEF8EXPORTFILE) : $(SHL8OBJS) $(SHL8LIBS)
2091.ENDIF # .IF "$(COM)"=="GCC"
2092
2093$(DEF8EXPORTFILE) : $(SHL8VERSIONMAP)
2094    $(COMMAND_ECHO)$(TYPE) $< | $(AWK) -f $(SOLARENV)/bin/getcsym.awk > $@
2095.IF "$(COM)"!="GCC"
2096# Wildcards in a version script are a GCC concept -- the GCC branch below
2097# pulls them out into a .symbols-regexp and matches them against the real
2098# objects.  MSVC has no equivalent, and asking link.exe to export a literal
2099# "_ZTI*" fails with LNK2001, so drop those lines here.  Match "*" alone:
2100# every MSVC-mangled C++ name begins with "?", so "[*?]" would drop the lot.
2101    $(COMMAND_ECHO)-$(GREP) -v "[*]" $@ > $@.nowild
2102    $(COMMAND_ECHO)$(RENAME) $@.nowild $@
2103.ENDIF
2104.IF "$(COM)"=="GCC"
2105    $(COMMAND_ECHO)-$(GREP) -v "\*\|?" $@ | $(SED) -e 's@#.*@@' > $@.exported-symbols
2106    $(COMMAND_ECHO)-$(GREP) "\*\|?" $@ > $@.symbols-regexp
2107# Shared libraries will be build out of the *.obj files specified in SHL?OBJS and SHL?LIBS
2108# Extract RTTI symbols from all the objects that will be used to build a shared library
2109    $(COMMAND_ECHO)nm -gP $(SHL8OBJS) \
2110        `$(TYPE) /dev/null $(foreach,j,$(SHL8LIBS) $j) | $(SED) s\#$(ROUT)\#$(PRJ)$/$(ROUT)\#g` \
2111        | $(SOLARENV)/bin/addsym-mingw.sh $@.symbols-regexp $@.symbols-regexp.tmp >> $@.exported-symbols
2112# overwrite the map file generate into the local output tree with the generated
2113# exported symbols list
2114    $(COMMAND_ECHO)$(RENAME) $@.exported-symbols $@
2115.ENDIF # .IF "$(COM)"=="GCC"
2116
2117.ENDIF          # "$(GUI)"=="WNT"
2118
2119.IF "$(GUI)"=="OS2"
2120DEF8EXPORTFILE=$(MISC)/$(SHL8VERSIONMAP:b)_$(SHL8TARGET).dxp
2121$(DEF8EXPORTFILE) : $(SHL8VERSIONMAP)
2122    $(TYPE) $< | $(AWK) -f $(SOLARENV)/bin/getcsym.awk > $@
2123.ENDIF          # "$(GUI)"=="OS2"
2124
2125.ENDIF          # "$(DEF8EXPORTFILE)"==""
2126.ENDIF          # "$(SHL8VERSIONMAP)"!=""
2127
2128.IF "$(GUI)"=="WNT"
2129
2130DEF8FILTER=$(SOLARENV)/inc/dummy.flt
2131
2132RMHACK8:=$(RM)
2133
2134.IF "$(DEF8CEXP)"!=""
2135EXPORT_ALL_SWITCH=-A $(DEF8CEXP)
2136.ENDIF
2137
2138.IF "$(link_always)"==""
2139$(DEF8TARGETN) : \
2140        $(DEF8DEPN) \
2141        $(DEF8EXPORTFILE)
2142.ELSE           # "$(link_always)"==""
2143$(DEF8TARGETN) .PHONY :
2144.ENDIF          # "$(link_always)"==""
2145    @-$(RM) $@.tmpfile
2146    @echo "Making:    module definition file" $(@:f)
2147    @echo LIBRARY     $(EMQ)"$(SHL8TARGETN:f)$(EMQ)"                                 >$@.tmpfile
2148.IF "$(COM)"!="GCC"
2149    @echo HEAPSIZE    0                                             >>$@.tmpfile
2150.ENDIF
2151    @echo EXPORTS                                                   >>$@.tmpfile
2152.IF "$(VERSIONOBJ)"!=""
2153#   getversioninfo fuer alle!!
2154    @echo GetVersionInfo        >>$@.tmpfile
2155.ENDIF
2156.IF "$(DEFLIB8NAME)"!=""
2157.IF "$(COM)"=="GCC"
2158    @-$(RM) $(MISC)/$(SHL8TARGET).exp
2159    $(COMMAND_ECHO)dlltool --output-def $(MISC)/$(SHL8TARGET).exp --export-all-symbols \
2160        `$(TYPE) $(foreach,i,$(DEFLIB8NAME) $(SLB)/$(i).lib) | sed s#$(ROUT)#$(PRJ)/$(ROUT)#g`
2161    $(COMMAND_ECHO)tail --lines +3 $(MISC)/$(SHL8TARGET).exp | sed '/^;/d' >>$@.tmpfile
2162    @-$(RM) $(MISC)/$(SHL8TARGET).exp
2163.ELSE
2164.IF "$(SHL8USE_EXPORTS)"==""
2165    @-$(RMHACK8) $(MISC)/$(SHL8TARGET).exp
2166    @$(SOLARENV)/bin/extract-linker-member.sh $(SLB)/$(DEFLIB8NAME).lib $(MISC)/$(SHL8TARGET).exp
2167    @$(LDUMP2) -N $(EXPORT_ALL_SWITCH) -F $(MISC)/$(SHL8TARGET).flt $(MISC)/$(SHL8TARGET).exp              >>$@.tmpfile
2168    $(COMMAND_ECHO)$(RMHACK8) $(MISC)/$(SHL8TARGET).exp
2169.ELSE           # "$(SHL8USE_EXPORTS)"==""
2170    @$(DUMPBIN) -DIRECTIVES  $(foreach,i,$(DEFLIB8NAME) $(SLB)/$(i).lib) | $(GREP) EXPORT: > $(MISC)/$(SHL8TARGET).direct
2171    @$(LDUMP2) -N -D $(EXPORT_ALL_SWITCH) -F $(DEF8FILTER) $(MISC)/$(SHL8TARGET).direct >>$@.tmpfile
2172.ENDIF          # "$(SHL8USE_EXPORTS)"==""
2173.ENDIF
2174.ENDIF              # "$(DEFLIB8NAME)"!=""
2175.IF "$(DEF8EXPORT1)"!=""
2176    @echo $(DEF8EXPORT1)                                        >>$@.tmpfile
2177.ENDIF
2178.IF "$(DEF8EXPORT2)"!=""
2179    @echo $(DEF8EXPORT2)                                        >>$@.tmpfile
2180.ENDIF
2181.IF "$(DEF8EXPORT3)"!=""
2182    @echo $(DEF8EXPORT3)                                        >>$@.tmpfile
2183.ENDIF
2184.IF "$(DEF8EXPORT4)"!=""
2185    @echo $(DEF8EXPORT4)                                        >>$@.tmpfile
2186.ENDIF
2187.IF "$(DEF8EXPORT5)"!=""
2188    @echo $(DEF8EXPORT5)                                        >>$@.tmpfile
2189.ENDIF
2190.IF "$(DEF8EXPORT6)"!=""
2191    @echo $(DEF8EXPORT6)                                        >>$@.tmpfile
2192.ENDIF
2193.IF "$(DEF8EXPORT7)"!=""
2194    @echo $(DEF8EXPORT7)                                        >>$@.tmpfile
2195.ENDIF
2196.IF "$(DEF8EXPORT8)"!=""
2197    @echo $(DEF8EXPORT8)                                        >>$@.tmpfile
2198.ENDIF
2199.IF "$(DEF8EXPORT9)"!=""
2200    @echo $(DEF8EXPORT9)                                        >>$@.tmpfile
2201.ENDIF
2202.IF "$(DEF8EXPORT10)"!=""
2203    @echo $(DEF8EXPORT10)                                       >>$@.tmpfile
2204.ENDIF
2205.IF "$(DEF8EXPORT11)"!=""
2206    @echo $(DEF8EXPORT11)                                       >>$@.tmpfile
2207.ENDIF
2208.IF "$(DEF8EXPORT12)"!=""
2209    @echo $(DEF8EXPORT12)                                       >>$@.tmpfile
2210.ENDIF
2211.IF "$(DEF8EXPORT13)"!=""
2212    @echo $(DEF8EXPORT13)                                       >>$@.tmpfile
2213.ENDIF
2214.IF "$(DEF8EXPORT14)"!=""
2215    @echo $(DEF8EXPORT14)                                       >>$@.tmpfile
2216.ENDIF
2217.IF "$(DEF8EXPORT15)"!=""
2218    @echo $(DEF8EXPORT15)                                       >>$@.tmpfile
2219.ENDIF
2220.IF "$(DEF8EXPORT16)"!=""
2221    @echo $(DEF8EXPORT16)                                       >>$@.tmpfile
2222.ENDIF
2223.IF "$(DEF8EXPORT17)"!=""
2224    @echo $(DEF8EXPORT17)                                       >>$@.tmpfile
2225.ENDIF
2226.IF "$(DEF8EXPORT18)"!=""
2227    @echo $(DEF8EXPORT18)                                       >>$@.tmpfile
2228.ENDIF
2229.IF "$(DEF8EXPORT19)"!=""
2230    @echo $(DEF8EXPORT19)                                       >>$@.tmpfile
2231.ENDIF
2232.IF "$(DEF8EXPORT20)"!=""
2233    @echo $(DEF8EXPORT20)                                       >>$@.tmpfile
2234.ENDIF
2235.IF "$(DEF8EXPORTFILE)"!=""
2236.IF "$(COM)"=="GCC"
2237    $(COMMAND_ECHO)$(TYPE) $(DEF8EXPORTFILE) | sed -e s:PRIVATE:: >> $@.tmpfile
2238.ELSE
2239    $(COMMAND_ECHO)$(TYPE) $(DEF8EXPORTFILE) >> $@.tmpfile
2240.ENDIF
2241.ENDIF
2242    @-$(RM) $@
2243    @$(RENAME) $@.tmpfile $@
2244.ENDIF          # "$(GUI)"=="WNT"
2245
2246.IF "$(GUI)"=="OS2"
2247
2248#21/02/2006 YD dll names must be 8.3, invoke fix script
2249#check osl/os2/module.c/osl_loadModule()
2250SHL8TARGET8=$(shell @fix_shl.cmd $(SHL8TARGETN:f))
2251
2252DEF8FILTER=$(SOLARENV)/inc/dummy.flt
2253DEF8NAMELIST=$(foreach,i,$(DEFLIB8NAME) $(SLB)/$(i).lib)
2254
2255.IF "$(link_always)"==""
2256$(DEF8TARGETN) : \
2257        $(DEF8DEPN) \
2258        $(DEF8EXPORTFILE)
2259.ELSE           # "$(link_always)"==""
2260$(DEF8TARGETN) .PHONY :
2261.ENDIF          # "$(link_always)"==""
2262    @+-$(RM) $@.tmpfile
2263    @echo "Making:    module definition file" $(@:f)
2264    @echo LIBRARY     $(SHL8TARGET8) INITINSTANCE TERMINSTANCE   >$@.tmpfile
2265    @echo DATA MULTIPLE  >>$@.tmpfile
2266    @echo EXPORTS                                                   >>$@.tmpfile
2267.IF "$(VERSIONOBJ)"!=""
2268#   getversioninfo fuer alle!!
2269    @echo _GetVersionInfo       >$@.tmp_ord
2270.ENDIF
2271
2272.IF "$(DEFLIB8NAME)"!=""
2273    @+echo $(SLB)/$(DEFLIB8NAME).lib
2274    @+emxexp $(DEF8NAMELIST) | fix_exp_file >> $@.tmp_ord
2275.ENDIF              # "$(DEFLIB8NAME)"!=""
2276
2277.IF "$(DEF8EXPORT1)"!=""
2278    @echo $(DEF8EXPORT1)                                        >>$@.tmpfile
2279.ENDIF
2280.IF "$(DEF8EXPORT2)"!=""
2281    @echo $(DEF8EXPORT2)                                        >>$@.tmpfile
2282.ENDIF
2283.IF "$(DEF8EXPORT3)"!=""
2284    @echo $(DEF8EXPORT3)                                        >>$@.tmpfile
2285.ENDIF
2286.IF "$(DEF8EXPORT4)"!=""
2287    @echo $(DEF8EXPORT4)                                        >>$@.tmpfile
2288.ENDIF
2289.IF "$(DEF8EXPORT5)"!=""
2290    @echo $(DEF8EXPORT5)                                        >>$@.tmpfile
2291.ENDIF
2292.IF "$(DEF8EXPORT6)"!=""
2293    @echo $(DEF8EXPORT6)                                        >>$@.tmpfile
2294.ENDIF
2295.IF "$(DEF8EXPORT7)"!=""
2296    @echo $(DEF8EXPORT7)                                        >>$@.tmpfile
2297.ENDIF
2298.IF "$(DEF8EXPORT8)"!=""
2299    @echo $(DEF8EXPORT8)                                        >>$@.tmpfile
2300.ENDIF
2301.IF "$(DEF8EXPORT9)"!=""
2302    @echo $(DEF8EXPORT9)                                        >>$@.tmpfile
2303.ENDIF
2304.IF "$(DEF8EXPORT10)"!=""
2305    @echo $(DEF8EXPORT10)                                       >>$@.tmpfile
2306.ENDIF
2307.IF "$(DEF8EXPORT11)"!=""
2308    @echo $(DEF8EXPORT11)                                       >>$@.tmpfile
2309.ENDIF
2310.IF "$(DEF8EXPORT12)"!=""
2311    @echo $(DEF8EXPORT12)                                       >>$@.tmpfile
2312.ENDIF
2313.IF "$(DEF8EXPORT13)"!=""
2314    @echo $(DEF8EXPORT13)                                       >>$@.tmpfile
2315.ENDIF
2316.IF "$(DEF8EXPORT14)"!=""
2317    @echo $(DEF8EXPORT14)                                       >>$@.tmpfile
2318.ENDIF
2319.IF "$(DEF8EXPORT15)"!=""
2320    @echo $(DEF8EXPORT15)                                       >>$@.tmpfile
2321.ENDIF
2322.IF "$(DEF8EXPORT16)"!=""
2323    @echo $(DEF8EXPORT16)                                       >>$@.tmpfile
2324.ENDIF
2325.IF "$(DEF8EXPORT17)"!=""
2326    @echo $(DEF8EXPORT17)                                       >>$@.tmpfile
2327.ENDIF
2328.IF "$(DEF8EXPORT18)"!=""
2329    @echo $(DEF8EXPORT18)                                       >>$@.tmpfile
2330.ENDIF
2331.IF "$(DEF8EXPORT19)"!=""
2332    @echo $(DEF8EXPORT19)                                       >>$@.tmpfile
2333.ENDIF
2334.IF "$(DEF8EXPORT20)"!=""
2335    @echo $(DEF8EXPORT20)                                       >>$@.tmpfile
2336.ENDIF
2337.IF "$(DEF8EXPORTFILE)"!=""
2338    @fix_def_file < $(DEF8EXPORTFILE) >> $@.tmp_ord
2339.ENDIF
2340    @sort < $@.tmp_ord | uniq > $@.exptmpfile
2341    @fix_def_ord < $@.exptmpfile >> $@.tmpfile
2342    @+-$(RM) $@
2343    $(COMMAND_ECHO)+$(RENAME) $@.tmpfile $@
2344    @+-$(RM) $@.tmp_ord
2345    @+-$(RM) $@.exptmpfile
2346.IF "$(SHL8USE_EXPORTS)"=="" || "$(SHL8USE_EXPORTS)"=="ordinal"
2347#03/11/2012  if 'name' is not used, export from def file (with ordinals)
2348    @echo Build import library from DEF file.
2349    @+-$(RM) $(LB)/$(SHL8TARGETN:b).lib
2350    $(COMMAND_ECHO)+$(IMPLIB) $(IMPLIBFLAGS) $(LB)/$(SHL8TARGETN:b).lib $@
2351.ENDIF          # "$(SHL8USE_EXPORTS)"==""
2352
2353.ENDIF          # "$(GUI)"=="OS2"
2354
2355.IF "$(GUI)"=="UNX"
2356$(DEF8TARGETN): \
2357        $(DEF8DEPN) \
2358        $(DEF8EXPORTFILE)
2359    @echo just a dummy for UNIX > $@
2360.ENDIF
2361.ENDIF          # "$(DEF8TARGETN)"!=""
2362
2363
2364# Anweisungen fuer das Linken
2365# unroll begin
2366
2367.IF "$(DEF9TARGETN)"!=""
2368
2369#to make intuitiv naming work
2370.IF "$(DEF9LIBNAME)"!=""
2371DEFLIB9NAME*=$(DEF9LIBNAME)
2372.ENDIF          # "$(DEF9LIBNAME)"!=""
2373
2374.IF "$(DEFLIB9NAME)"!=""
2375DEF9DEPN+=$(foreach,i,$(DEFLIB9NAME) $(SLB)/$(i).lib)
2376.ENDIF
2377
2378.IF "$(SHL9VERSIONMAP)"!=""
2379.IF "$(DEF9EXPORTFILE)"==""
2380.IF "$(GUI)"=="WNT"
2381DEF9EXPORTFILE=$(MISC)/$(SHL9VERSIONMAP:b)_$(SHL9TARGET).dxp
2382.IF "$(COM)"=="GCC"
2383$(DEF9EXPORTFILE) : $(SHL9OBJS) $(SHL9LIBS)
2384.ENDIF # .IF "$(COM)"=="GCC"
2385
2386$(DEF9EXPORTFILE) : $(SHL9VERSIONMAP)
2387    $(COMMAND_ECHO)$(TYPE) $< | $(AWK) -f $(SOLARENV)/bin/getcsym.awk > $@
2388.IF "$(COM)"!="GCC"
2389# Wildcards in a version script are a GCC concept -- the GCC branch below
2390# pulls them out into a .symbols-regexp and matches them against the real
2391# objects.  MSVC has no equivalent, and asking link.exe to export a literal
2392# "_ZTI*" fails with LNK2001, so drop those lines here.  Match "*" alone:
2393# every MSVC-mangled C++ name begins with "?", so "[*?]" would drop the lot.
2394    $(COMMAND_ECHO)-$(GREP) -v "[*]" $@ > $@.nowild
2395    $(COMMAND_ECHO)$(RENAME) $@.nowild $@
2396.ENDIF
2397.IF "$(COM)"=="GCC"
2398    $(COMMAND_ECHO)-$(GREP) -v "\*\|?" $@ | $(SED) -e 's@#.*@@' > $@.exported-symbols
2399    $(COMMAND_ECHO)-$(GREP) "\*\|?" $@ > $@.symbols-regexp
2400# Shared libraries will be build out of the *.obj files specified in SHL?OBJS and SHL?LIBS
2401# Extract RTTI symbols from all the objects that will be used to build a shared library
2402    $(COMMAND_ECHO)nm -gP $(SHL9OBJS) \
2403        `$(TYPE) /dev/null $(foreach,j,$(SHL9LIBS) $j) | $(SED) s\#$(ROUT)\#$(PRJ)$/$(ROUT)\#g` \
2404        | $(SOLARENV)/bin/addsym-mingw.sh $@.symbols-regexp $@.symbols-regexp.tmp >> $@.exported-symbols
2405# overwrite the map file generate into the local output tree with the generated
2406# exported symbols list
2407    $(COMMAND_ECHO)$(RENAME) $@.exported-symbols $@
2408.ENDIF # .IF "$(COM)"=="GCC"
2409
2410.ENDIF          # "$(GUI)"=="WNT"
2411
2412.IF "$(GUI)"=="OS2"
2413DEF9EXPORTFILE=$(MISC)/$(SHL9VERSIONMAP:b)_$(SHL9TARGET).dxp
2414$(DEF9EXPORTFILE) : $(SHL9VERSIONMAP)
2415    $(TYPE) $< | $(AWK) -f $(SOLARENV)/bin/getcsym.awk > $@
2416.ENDIF          # "$(GUI)"=="OS2"
2417
2418.ENDIF          # "$(DEF9EXPORTFILE)"==""
2419.ENDIF          # "$(SHL9VERSIONMAP)"!=""
2420
2421.IF "$(GUI)"=="WNT"
2422
2423DEF9FILTER=$(SOLARENV)/inc/dummy.flt
2424
2425RMHACK9:=$(RM)
2426
2427.IF "$(DEF9CEXP)"!=""
2428EXPORT_ALL_SWITCH=-A $(DEF9CEXP)
2429.ENDIF
2430
2431.IF "$(link_always)"==""
2432$(DEF9TARGETN) : \
2433        $(DEF9DEPN) \
2434        $(DEF9EXPORTFILE)
2435.ELSE           # "$(link_always)"==""
2436$(DEF9TARGETN) .PHONY :
2437.ENDIF          # "$(link_always)"==""
2438    @-$(RM) $@.tmpfile
2439    @echo "Making:    module definition file" $(@:f)
2440    @echo LIBRARY     $(EMQ)"$(SHL9TARGETN:f)$(EMQ)"                                 >$@.tmpfile
2441.IF "$(COM)"!="GCC"
2442    @echo HEAPSIZE    0                                             >>$@.tmpfile
2443.ENDIF
2444    @echo EXPORTS                                                   >>$@.tmpfile
2445.IF "$(VERSIONOBJ)"!=""
2446#   getversioninfo fuer alle!!
2447    @echo GetVersionInfo        >>$@.tmpfile
2448.ENDIF
2449.IF "$(DEFLIB9NAME)"!=""
2450.IF "$(COM)"=="GCC"
2451    @-$(RM) $(MISC)/$(SHL9TARGET).exp
2452    $(COMMAND_ECHO)dlltool --output-def $(MISC)/$(SHL9TARGET).exp --export-all-symbols \
2453        `$(TYPE) $(foreach,i,$(DEFLIB9NAME) $(SLB)/$(i).lib) | sed s#$(ROUT)#$(PRJ)/$(ROUT)#g`
2454    $(COMMAND_ECHO)tail --lines +3 $(MISC)/$(SHL9TARGET).exp | sed '/^;/d' >>$@.tmpfile
2455    @-$(RM) $(MISC)/$(SHL9TARGET).exp
2456.ELSE
2457.IF "$(SHL9USE_EXPORTS)"==""
2458    @-$(RMHACK9) $(MISC)/$(SHL9TARGET).exp
2459    @$(SOLARENV)/bin/extract-linker-member.sh $(SLB)/$(DEFLIB9NAME).lib $(MISC)/$(SHL9TARGET).exp
2460    @$(LDUMP2) -N $(EXPORT_ALL_SWITCH) -F $(MISC)/$(SHL9TARGET).flt $(MISC)/$(SHL9TARGET).exp              >>$@.tmpfile
2461    $(COMMAND_ECHO)$(RMHACK9) $(MISC)/$(SHL9TARGET).exp
2462.ELSE           # "$(SHL9USE_EXPORTS)"==""
2463    @$(DUMPBIN) -DIRECTIVES  $(foreach,i,$(DEFLIB9NAME) $(SLB)/$(i).lib) | $(GREP) EXPORT: > $(MISC)/$(SHL9TARGET).direct
2464    @$(LDUMP2) -N -D $(EXPORT_ALL_SWITCH) -F $(DEF9FILTER) $(MISC)/$(SHL9TARGET).direct >>$@.tmpfile
2465.ENDIF          # "$(SHL9USE_EXPORTS)"==""
2466.ENDIF
2467.ENDIF              # "$(DEFLIB9NAME)"!=""
2468.IF "$(DEF9EXPORT1)"!=""
2469    @echo $(DEF9EXPORT1)                                        >>$@.tmpfile
2470.ENDIF
2471.IF "$(DEF9EXPORT2)"!=""
2472    @echo $(DEF9EXPORT2)                                        >>$@.tmpfile
2473.ENDIF
2474.IF "$(DEF9EXPORT3)"!=""
2475    @echo $(DEF9EXPORT3)                                        >>$@.tmpfile
2476.ENDIF
2477.IF "$(DEF9EXPORT4)"!=""
2478    @echo $(DEF9EXPORT4)                                        >>$@.tmpfile
2479.ENDIF
2480.IF "$(DEF9EXPORT5)"!=""
2481    @echo $(DEF9EXPORT5)                                        >>$@.tmpfile
2482.ENDIF
2483.IF "$(DEF9EXPORT6)"!=""
2484    @echo $(DEF9EXPORT6)                                        >>$@.tmpfile
2485.ENDIF
2486.IF "$(DEF9EXPORT7)"!=""
2487    @echo $(DEF9EXPORT7)                                        >>$@.tmpfile
2488.ENDIF
2489.IF "$(DEF9EXPORT8)"!=""
2490    @echo $(DEF9EXPORT8)                                        >>$@.tmpfile
2491.ENDIF
2492.IF "$(DEF9EXPORT9)"!=""
2493    @echo $(DEF9EXPORT9)                                        >>$@.tmpfile
2494.ENDIF
2495.IF "$(DEF9EXPORT10)"!=""
2496    @echo $(DEF9EXPORT10)                                       >>$@.tmpfile
2497.ENDIF
2498.IF "$(DEF9EXPORT11)"!=""
2499    @echo $(DEF9EXPORT11)                                       >>$@.tmpfile
2500.ENDIF
2501.IF "$(DEF9EXPORT12)"!=""
2502    @echo $(DEF9EXPORT12)                                       >>$@.tmpfile
2503.ENDIF
2504.IF "$(DEF9EXPORT13)"!=""
2505    @echo $(DEF9EXPORT13)                                       >>$@.tmpfile
2506.ENDIF
2507.IF "$(DEF9EXPORT14)"!=""
2508    @echo $(DEF9EXPORT14)                                       >>$@.tmpfile
2509.ENDIF
2510.IF "$(DEF9EXPORT15)"!=""
2511    @echo $(DEF9EXPORT15)                                       >>$@.tmpfile
2512.ENDIF
2513.IF "$(DEF9EXPORT16)"!=""
2514    @echo $(DEF9EXPORT16)                                       >>$@.tmpfile
2515.ENDIF
2516.IF "$(DEF9EXPORT17)"!=""
2517    @echo $(DEF9EXPORT17)                                       >>$@.tmpfile
2518.ENDIF
2519.IF "$(DEF9EXPORT18)"!=""
2520    @echo $(DEF9EXPORT18)                                       >>$@.tmpfile
2521.ENDIF
2522.IF "$(DEF9EXPORT19)"!=""
2523    @echo $(DEF9EXPORT19)                                       >>$@.tmpfile
2524.ENDIF
2525.IF "$(DEF9EXPORT20)"!=""
2526    @echo $(DEF9EXPORT20)                                       >>$@.tmpfile
2527.ENDIF
2528.IF "$(DEF9EXPORTFILE)"!=""
2529.IF "$(COM)"=="GCC"
2530    $(COMMAND_ECHO)$(TYPE) $(DEF9EXPORTFILE) | sed -e s:PRIVATE:: >> $@.tmpfile
2531.ELSE
2532    $(COMMAND_ECHO)$(TYPE) $(DEF9EXPORTFILE) >> $@.tmpfile
2533.ENDIF
2534.ENDIF
2535    @-$(RM) $@
2536    @$(RENAME) $@.tmpfile $@
2537.ENDIF          # "$(GUI)"=="WNT"
2538
2539.IF "$(GUI)"=="OS2"
2540
2541#21/02/2006 YD dll names must be 8.3, invoke fix script
2542#check osl/os2/module.c/osl_loadModule()
2543SHL9TARGET8=$(shell @fix_shl.cmd $(SHL9TARGETN:f))
2544
2545DEF9FILTER=$(SOLARENV)/inc/dummy.flt
2546DEF9NAMELIST=$(foreach,i,$(DEFLIB9NAME) $(SLB)/$(i).lib)
2547
2548.IF "$(link_always)"==""
2549$(DEF9TARGETN) : \
2550        $(DEF9DEPN) \
2551        $(DEF9EXPORTFILE)
2552.ELSE           # "$(link_always)"==""
2553$(DEF9TARGETN) .PHONY :
2554.ENDIF          # "$(link_always)"==""
2555    @+-$(RM) $@.tmpfile
2556    @echo "Making:    module definition file" $(@:f)
2557    @echo LIBRARY     $(SHL9TARGET8) INITINSTANCE TERMINSTANCE   >$@.tmpfile
2558    @echo DATA MULTIPLE  >>$@.tmpfile
2559    @echo EXPORTS                                                   >>$@.tmpfile
2560.IF "$(VERSIONOBJ)"!=""
2561#   getversioninfo fuer alle!!
2562    @echo _GetVersionInfo       >$@.tmp_ord
2563.ENDIF
2564
2565.IF "$(DEFLIB9NAME)"!=""
2566    @+echo $(SLB)/$(DEFLIB9NAME).lib
2567    @+emxexp $(DEF9NAMELIST) | fix_exp_file >> $@.tmp_ord
2568.ENDIF              # "$(DEFLIB9NAME)"!=""
2569
2570.IF "$(DEF9EXPORT1)"!=""
2571    @echo $(DEF9EXPORT1)                                        >>$@.tmpfile
2572.ENDIF
2573.IF "$(DEF9EXPORT2)"!=""
2574    @echo $(DEF9EXPORT2)                                        >>$@.tmpfile
2575.ENDIF
2576.IF "$(DEF9EXPORT3)"!=""
2577    @echo $(DEF9EXPORT3)                                        >>$@.tmpfile
2578.ENDIF
2579.IF "$(DEF9EXPORT4)"!=""
2580    @echo $(DEF9EXPORT4)                                        >>$@.tmpfile
2581.ENDIF
2582.IF "$(DEF9EXPORT5)"!=""
2583    @echo $(DEF9EXPORT5)                                        >>$@.tmpfile
2584.ENDIF
2585.IF "$(DEF9EXPORT6)"!=""
2586    @echo $(DEF9EXPORT6)                                        >>$@.tmpfile
2587.ENDIF
2588.IF "$(DEF9EXPORT7)"!=""
2589    @echo $(DEF9EXPORT7)                                        >>$@.tmpfile
2590.ENDIF
2591.IF "$(DEF9EXPORT8)"!=""
2592    @echo $(DEF9EXPORT8)                                        >>$@.tmpfile
2593.ENDIF
2594.IF "$(DEF9EXPORT9)"!=""
2595    @echo $(DEF9EXPORT9)                                        >>$@.tmpfile
2596.ENDIF
2597.IF "$(DEF9EXPORT10)"!=""
2598    @echo $(DEF9EXPORT10)                                       >>$@.tmpfile
2599.ENDIF
2600.IF "$(DEF9EXPORT11)"!=""
2601    @echo $(DEF9EXPORT11)                                       >>$@.tmpfile
2602.ENDIF
2603.IF "$(DEF9EXPORT12)"!=""
2604    @echo $(DEF9EXPORT12)                                       >>$@.tmpfile
2605.ENDIF
2606.IF "$(DEF9EXPORT13)"!=""
2607    @echo $(DEF9EXPORT13)                                       >>$@.tmpfile
2608.ENDIF
2609.IF "$(DEF9EXPORT14)"!=""
2610    @echo $(DEF9EXPORT14)                                       >>$@.tmpfile
2611.ENDIF
2612.IF "$(DEF9EXPORT15)"!=""
2613    @echo $(DEF9EXPORT15)                                       >>$@.tmpfile
2614.ENDIF
2615.IF "$(DEF9EXPORT16)"!=""
2616    @echo $(DEF9EXPORT16)                                       >>$@.tmpfile
2617.ENDIF
2618.IF "$(DEF9EXPORT17)"!=""
2619    @echo $(DEF9EXPORT17)                                       >>$@.tmpfile
2620.ENDIF
2621.IF "$(DEF9EXPORT18)"!=""
2622    @echo $(DEF9EXPORT18)                                       >>$@.tmpfile
2623.ENDIF
2624.IF "$(DEF9EXPORT19)"!=""
2625    @echo $(DEF9EXPORT19)                                       >>$@.tmpfile
2626.ENDIF
2627.IF "$(DEF9EXPORT20)"!=""
2628    @echo $(DEF9EXPORT20)                                       >>$@.tmpfile
2629.ENDIF
2630.IF "$(DEF9EXPORTFILE)"!=""
2631    @fix_def_file < $(DEF9EXPORTFILE) >> $@.tmp_ord
2632.ENDIF
2633    @sort < $@.tmp_ord | uniq > $@.exptmpfile
2634    @fix_def_ord < $@.exptmpfile >> $@.tmpfile
2635    @+-$(RM) $@
2636    $(COMMAND_ECHO)+$(RENAME) $@.tmpfile $@
2637    @+-$(RM) $@.tmp_ord
2638    @+-$(RM) $@.exptmpfile
2639.IF "$(SHL9USE_EXPORTS)"=="" || "$(SHL9USE_EXPORTS)"=="ordinal"
2640#03/11/2012  if 'name' is not used, export from def file (with ordinals)
2641    @echo Build import library from DEF file.
2642    @+-$(RM) $(LB)/$(SHL9TARGETN:b).lib
2643    $(COMMAND_ECHO)+$(IMPLIB) $(IMPLIBFLAGS) $(LB)/$(SHL9TARGETN:b).lib $@
2644.ENDIF          # "$(SHL9USE_EXPORTS)"==""
2645
2646.ENDIF          # "$(GUI)"=="OS2"
2647
2648.IF "$(GUI)"=="UNX"
2649$(DEF9TARGETN): \
2650        $(DEF9DEPN) \
2651        $(DEF9EXPORTFILE)
2652    @echo just a dummy for UNIX > $@
2653.ENDIF
2654.ENDIF          # "$(DEF9TARGETN)"!=""
2655
2656
2657# Anweisungen fuer das Linken
2658# unroll begin
2659
2660.IF "$(DEF10TARGETN)"!=""
2661
2662#to make intuitiv naming work
2663.IF "$(DEF10LIBNAME)"!=""
2664DEFLIB10NAME*=$(DEF10LIBNAME)
2665.ENDIF          # "$(DEF10LIBNAME)"!=""
2666
2667.IF "$(DEFLIB10NAME)"!=""
2668DEF10DEPN+=$(foreach,i,$(DEFLIB10NAME) $(SLB)/$(i).lib)
2669.ENDIF
2670
2671.IF "$(SHL10VERSIONMAP)"!=""
2672.IF "$(DEF10EXPORTFILE)"==""
2673.IF "$(GUI)"=="WNT"
2674DEF10EXPORTFILE=$(MISC)/$(SHL10VERSIONMAP:b)_$(SHL10TARGET).dxp
2675.IF "$(COM)"=="GCC"
2676$(DEF10EXPORTFILE) : $(SHL10OBJS) $(SHL10LIBS)
2677.ENDIF # .IF "$(COM)"=="GCC"
2678
2679$(DEF10EXPORTFILE) : $(SHL10VERSIONMAP)
2680    $(COMMAND_ECHO)$(TYPE) $< | $(AWK) -f $(SOLARENV)/bin/getcsym.awk > $@
2681.IF "$(COM)"!="GCC"
2682# Wildcards in a version script are a GCC concept -- the GCC branch below
2683# pulls them out into a .symbols-regexp and matches them against the real
2684# objects.  MSVC has no equivalent, and asking link.exe to export a literal
2685# "_ZTI*" fails with LNK2001, so drop those lines here.  Match "*" alone:
2686# every MSVC-mangled C++ name begins with "?", so "[*?]" would drop the lot.
2687    $(COMMAND_ECHO)-$(GREP) -v "[*]" $@ > $@.nowild
2688    $(COMMAND_ECHO)$(RENAME) $@.nowild $@
2689.ENDIF
2690.IF "$(COM)"=="GCC"
2691    $(COMMAND_ECHO)-$(GREP) -v "\*\|?" $@ | $(SED) -e 's@#.*@@' > $@.exported-symbols
2692    $(COMMAND_ECHO)-$(GREP) "\*\|?" $@ > $@.symbols-regexp
2693# Shared libraries will be build out of the *.obj files specified in SHL?OBJS and SHL?LIBS
2694# Extract RTTI symbols from all the objects that will be used to build a shared library
2695    $(COMMAND_ECHO)nm -gP $(SHL10OBJS) \
2696        `$(TYPE) /dev/null $(foreach,j,$(SHL10LIBS) $j) | $(SED) s\#$(ROUT)\#$(PRJ)$/$(ROUT)\#g` \
2697        | $(SOLARENV)/bin/addsym-mingw.sh $@.symbols-regexp $@.symbols-regexp.tmp >> $@.exported-symbols
2698# overwrite the map file generate into the local output tree with the generated
2699# exported symbols list
2700    $(COMMAND_ECHO)$(RENAME) $@.exported-symbols $@
2701.ENDIF # .IF "$(COM)"=="GCC"
2702
2703.ENDIF          # "$(GUI)"=="WNT"
2704
2705.IF "$(GUI)"=="OS2"
2706DEF10EXPORTFILE=$(MISC)/$(SHL10VERSIONMAP:b)_$(SHL10TARGET).dxp
2707$(DEF10EXPORTFILE) : $(SHL10VERSIONMAP)
2708    $(TYPE) $< | $(AWK) -f $(SOLARENV)/bin/getcsym.awk > $@
2709.ENDIF          # "$(GUI)"=="OS2"
2710
2711.ENDIF          # "$(DEF10EXPORTFILE)"==""
2712.ENDIF          # "$(SHL10VERSIONMAP)"!=""
2713
2714.IF "$(GUI)"=="WNT"
2715
2716DEF10FILTER=$(SOLARENV)/inc/dummy.flt
2717
2718RMHACK10:=$(RM)
2719
2720.IF "$(DEF10CEXP)"!=""
2721EXPORT_ALL_SWITCH=-A $(DEF10CEXP)
2722.ENDIF
2723
2724.IF "$(link_always)"==""
2725$(DEF10TARGETN) : \
2726        $(DEF10DEPN) \
2727        $(DEF10EXPORTFILE)
2728.ELSE           # "$(link_always)"==""
2729$(DEF10TARGETN) .PHONY :
2730.ENDIF          # "$(link_always)"==""
2731    @-$(RM) $@.tmpfile
2732    @echo "Making:    module definition file" $(@:f)
2733    @echo LIBRARY     $(EMQ)"$(SHL10TARGETN:f)$(EMQ)"                                >$@.tmpfile
2734.IF "$(COM)"!="GCC"
2735    @echo HEAPSIZE    0                                             >>$@.tmpfile
2736.ENDIF
2737    @echo EXPORTS                                                   >>$@.tmpfile
2738.IF "$(VERSIONOBJ)"!=""
2739#   getversioninfo fuer alle!!
2740    @echo GetVersionInfo        >>$@.tmpfile
2741.ENDIF
2742.IF "$(DEFLIB10NAME)"!=""
2743.IF "$(COM)"=="GCC"
2744    @-$(RM) $(MISC)/$(SHL10TARGET).exp
2745    $(COMMAND_ECHO)dlltool --output-def $(MISC)/$(SHL10TARGET).exp --export-all-symbols \
2746        `$(TYPE) $(foreach,i,$(DEFLIB10NAME) $(SLB)/$(i).lib) | sed s#$(ROUT)#$(PRJ)/$(ROUT)#g`
2747    $(COMMAND_ECHO)tail --lines +3 $(MISC)/$(SHL10TARGET).exp | sed '/^;/d' >>$@.tmpfile
2748    @-$(RM) $(MISC)/$(SHL10TARGET).exp
2749.ELSE
2750.IF "$(SHL10USE_EXPORTS)"==""
2751    @-$(RMHACK10) $(MISC)/$(SHL10TARGET).exp
2752    @$(SOLARENV)/bin/extract-linker-member.sh $(SLB)/$(DEFLIB10NAME).lib $(MISC)/$(SHL10TARGET).exp
2753    @$(LDUMP2) -N $(EXPORT_ALL_SWITCH) -F $(MISC)/$(SHL10TARGET).flt $(MISC)/$(SHL10TARGET).exp            >>$@.tmpfile
2754    $(COMMAND_ECHO)$(RMHACK10) $(MISC)/$(SHL10TARGET).exp
2755.ELSE           # "$(SHL10USE_EXPORTS)"==""
2756    @$(DUMPBIN) -DIRECTIVES  $(foreach,i,$(DEFLIB10NAME) $(SLB)/$(i).lib) | $(GREP) EXPORT: > $(MISC)/$(SHL10TARGET).direct
2757    @$(LDUMP2) -N -D $(EXPORT_ALL_SWITCH) -F $(DEF10FILTER) $(MISC)/$(SHL10TARGET).direct >>$@.tmpfile
2758.ENDIF          # "$(SHL10USE_EXPORTS)"==""
2759.ENDIF
2760.ENDIF              # "$(DEFLIB10NAME)"!=""
2761.IF "$(DEF10EXPORT1)"!=""
2762    @echo $(DEF10EXPORT1)                                       >>$@.tmpfile
2763.ENDIF
2764.IF "$(DEF10EXPORT2)"!=""
2765    @echo $(DEF10EXPORT2)                                       >>$@.tmpfile
2766.ENDIF
2767.IF "$(DEF10EXPORT3)"!=""
2768    @echo $(DEF10EXPORT3)                                       >>$@.tmpfile
2769.ENDIF
2770.IF "$(DEF10EXPORT4)"!=""
2771    @echo $(DEF10EXPORT4)                                       >>$@.tmpfile
2772.ENDIF
2773.IF "$(DEF10EXPORT5)"!=""
2774    @echo $(DEF10EXPORT5)                                       >>$@.tmpfile
2775.ENDIF
2776.IF "$(DEF10EXPORT6)"!=""
2777    @echo $(DEF10EXPORT6)                                       >>$@.tmpfile
2778.ENDIF
2779.IF "$(DEF10EXPORT7)"!=""
2780    @echo $(DEF10EXPORT7)                                       >>$@.tmpfile
2781.ENDIF
2782.IF "$(DEF10EXPORT8)"!=""
2783    @echo $(DEF10EXPORT8)                                       >>$@.tmpfile
2784.ENDIF
2785.IF "$(DEF10EXPORT9)"!=""
2786    @echo $(DEF10EXPORT9)                                       >>$@.tmpfile
2787.ENDIF
2788.IF "$(DEF10EXPORT10)"!=""
2789    @echo $(DEF10EXPORT10)                                      >>$@.tmpfile
2790.ENDIF
2791.IF "$(DEF10EXPORT11)"!=""
2792    @echo $(DEF10EXPORT11)                                      >>$@.tmpfile
2793.ENDIF
2794.IF "$(DEF10EXPORT12)"!=""
2795    @echo $(DEF10EXPORT12)                                      >>$@.tmpfile
2796.ENDIF
2797.IF "$(DEF10EXPORT13)"!=""
2798    @echo $(DEF10EXPORT13)                                      >>$@.tmpfile
2799.ENDIF
2800.IF "$(DEF10EXPORT14)"!=""
2801    @echo $(DEF10EXPORT14)                                      >>$@.tmpfile
2802.ENDIF
2803.IF "$(DEF10EXPORT15)"!=""
2804    @echo $(DEF10EXPORT15)                                      >>$@.tmpfile
2805.ENDIF
2806.IF "$(DEF10EXPORT16)"!=""
2807    @echo $(DEF10EXPORT16)                                      >>$@.tmpfile
2808.ENDIF
2809.IF "$(DEF10EXPORT17)"!=""
2810    @echo $(DEF10EXPORT17)                                      >>$@.tmpfile
2811.ENDIF
2812.IF "$(DEF10EXPORT18)"!=""
2813    @echo $(DEF10EXPORT18)                                      >>$@.tmpfile
2814.ENDIF
2815.IF "$(DEF10EXPORT19)"!=""
2816    @echo $(DEF10EXPORT19)                                      >>$@.tmpfile
2817.ENDIF
2818.IF "$(DEF10EXPORT20)"!=""
2819    @echo $(DEF10EXPORT20)                                      >>$@.tmpfile
2820.ENDIF
2821.IF "$(DEF10EXPORTFILE)"!=""
2822.IF "$(COM)"=="GCC"
2823    $(COMMAND_ECHO)$(TYPE) $(DEF10EXPORTFILE) | sed -e s:PRIVATE:: >> $@.tmpfile
2824.ELSE
2825    $(COMMAND_ECHO)$(TYPE) $(DEF10EXPORTFILE) >> $@.tmpfile
2826.ENDIF
2827.ENDIF
2828    @-$(RM) $@
2829    @$(RENAME) $@.tmpfile $@
2830.ENDIF          # "$(GUI)"=="WNT"
2831
2832.IF "$(GUI)"=="OS2"
2833
2834#21/02/2006 YD dll names must be 8.3, invoke fix script
2835#check osl/os2/module.c/osl_loadModule()
2836SHL10TARGET8=$(shell @fix_shl.cmd $(SHL10TARGETN:f))
2837
2838DEF10FILTER=$(SOLARENV)/inc/dummy.flt
2839DEF10NAMELIST=$(foreach,i,$(DEFLIB10NAME) $(SLB)/$(i).lib)
2840
2841.IF "$(link_always)"==""
2842$(DEF10TARGETN) : \
2843        $(DEF10DEPN) \
2844        $(DEF10EXPORTFILE)
2845.ELSE           # "$(link_always)"==""
2846$(DEF10TARGETN) .PHONY :
2847.ENDIF          # "$(link_always)"==""
2848    @+-$(RM) $@.tmpfile
2849    @echo "Making:    module definition file" $(@:f)
2850    @echo LIBRARY     $(SHL10TARGET8) INITINSTANCE TERMINSTANCE  >$@.tmpfile
2851    @echo DATA MULTIPLE  >>$@.tmpfile
2852    @echo EXPORTS                                                   >>$@.tmpfile
2853.IF "$(VERSIONOBJ)"!=""
2854#   getversioninfo fuer alle!!
2855    @echo _GetVersionInfo       >$@.tmp_ord
2856.ENDIF
2857
2858.IF "$(DEFLIB10NAME)"!=""
2859    @+echo $(SLB)/$(DEFLIB10NAME).lib
2860    @+emxexp $(DEF10NAMELIST) | fix_exp_file >> $@.tmp_ord
2861.ENDIF              # "$(DEFLIB10NAME)"!=""
2862
2863.IF "$(DEF10EXPORT1)"!=""
2864    @echo $(DEF10EXPORT1)                                       >>$@.tmpfile
2865.ENDIF
2866.IF "$(DEF10EXPORT2)"!=""
2867    @echo $(DEF10EXPORT2)                                       >>$@.tmpfile
2868.ENDIF
2869.IF "$(DEF10EXPORT3)"!=""
2870    @echo $(DEF10EXPORT3)                                       >>$@.tmpfile
2871.ENDIF
2872.IF "$(DEF10EXPORT4)"!=""
2873    @echo $(DEF10EXPORT4)                                       >>$@.tmpfile
2874.ENDIF
2875.IF "$(DEF10EXPORT5)"!=""
2876    @echo $(DEF10EXPORT5)                                       >>$@.tmpfile
2877.ENDIF
2878.IF "$(DEF10EXPORT6)"!=""
2879    @echo $(DEF10EXPORT6)                                       >>$@.tmpfile
2880.ENDIF
2881.IF "$(DEF10EXPORT7)"!=""
2882    @echo $(DEF10EXPORT7)                                       >>$@.tmpfile
2883.ENDIF
2884.IF "$(DEF10EXPORT8)"!=""
2885    @echo $(DEF10EXPORT8)                                       >>$@.tmpfile
2886.ENDIF
2887.IF "$(DEF10EXPORT9)"!=""
2888    @echo $(DEF10EXPORT9)                                       >>$@.tmpfile
2889.ENDIF
2890.IF "$(DEF10EXPORT10)"!=""
2891    @echo $(DEF10EXPORT10)                                      >>$@.tmpfile
2892.ENDIF
2893.IF "$(DEF10EXPORT11)"!=""
2894    @echo $(DEF10EXPORT11)                                      >>$@.tmpfile
2895.ENDIF
2896.IF "$(DEF10EXPORT12)"!=""
2897    @echo $(DEF10EXPORT12)                                      >>$@.tmpfile
2898.ENDIF
2899.IF "$(DEF10EXPORT13)"!=""
2900    @echo $(DEF10EXPORT13)                                      >>$@.tmpfile
2901.ENDIF
2902.IF "$(DEF10EXPORT14)"!=""
2903    @echo $(DEF10EXPORT14)                                      >>$@.tmpfile
2904.ENDIF
2905.IF "$(DEF10EXPORT15)"!=""
2906    @echo $(DEF10EXPORT15)                                      >>$@.tmpfile
2907.ENDIF
2908.IF "$(DEF10EXPORT16)"!=""
2909    @echo $(DEF10EXPORT16)                                      >>$@.tmpfile
2910.ENDIF
2911.IF "$(DEF10EXPORT17)"!=""
2912    @echo $(DEF10EXPORT17)                                      >>$@.tmpfile
2913.ENDIF
2914.IF "$(DEF10EXPORT18)"!=""
2915    @echo $(DEF10EXPORT18)                                      >>$@.tmpfile
2916.ENDIF
2917.IF "$(DEF10EXPORT19)"!=""
2918    @echo $(DEF10EXPORT19)                                      >>$@.tmpfile
2919.ENDIF
2920.IF "$(DEF10EXPORT20)"!=""
2921    @echo $(DEF10EXPORT20)                                      >>$@.tmpfile
2922.ENDIF
2923.IF "$(DEF10EXPORTFILE)"!=""
2924    @fix_def_file < $(DEF10EXPORTFILE) >> $@.tmp_ord
2925.ENDIF
2926    @sort < $@.tmp_ord | uniq > $@.exptmpfile
2927    @fix_def_ord < $@.exptmpfile >> $@.tmpfile
2928    @+-$(RM) $@
2929    $(COMMAND_ECHO)+$(RENAME) $@.tmpfile $@
2930    @+-$(RM) $@.tmp_ord
2931    @+-$(RM) $@.exptmpfile
2932.IF "$(SHL10USE_EXPORTS)"=="" || "$(SHL10USE_EXPORTS)"=="ordinal"
2933#03/11/2012  if 'name' is not used, export from def file (with ordinals)
2934    @echo Build import library from DEF file.
2935    @+-$(RM) $(LB)/$(SHL10TARGETN:b).lib
2936    $(COMMAND_ECHO)+$(IMPLIB) $(IMPLIBFLAGS) $(LB)/$(SHL10TARGETN:b).lib $@
2937.ENDIF          # "$(SHL10USE_EXPORTS)"==""
2938
2939.ENDIF          # "$(GUI)"=="OS2"
2940
2941.IF "$(GUI)"=="UNX"
2942$(DEF10TARGETN): \
2943        $(DEF10DEPN) \
2944        $(DEF10EXPORTFILE)
2945    @echo just a dummy for UNIX > $@
2946.ENDIF
2947.ENDIF          # "$(DEF10TARGETN)"!=""
2948
2949
2950# Anweisungen fuer das Linken
2951