xref: /AOO41X/main/solenv/inc/tg_def.mk (revision 41163fb6bc5f228f840590e3b299c791cded5b6e)
1#**************************************************************
2#
3#  Licensed to the Apache Software Foundation (ASF) under one
4#  or more contributor license agreements.  See the NOTICE file
5#  distributed with this work for additional information
6#  regarding copyright ownership.  The ASF licenses this file
7#  to you under the Apache License, Version 2.0 (the
8#  "License"); you may not use this file except in compliance
9#  with the License.  You may obtain a copy of the License at
10#
11#    http://www.apache.org/licenses/LICENSE-2.0
12#
13#  Unless required by applicable law or agreed to in writing,
14#  software distributed under the License is distributed on an
15#  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16#  KIND, either express or implied.  See the License for the
17#  specific language governing permissions and limitations
18#  under the License.
19#
20#**************************************************************
21
22
23
24#######################################################
25# Anweisungen fuer das Linken
26# unroll begin
27
28.IF "$(DEF$(TNR)TARGETN)"!=""
29
30#to make intuitiv naming work
31.IF "$(DEF$(TNR)LIBNAME)"!=""
32DEFLIB$(TNR)NAME*=$(DEF$(TNR)LIBNAME)
33.ENDIF          # "$(DEF$(TNR)LIBNAME)"!=""
34
35.IF "$(DEFLIB$(TNR)NAME)"!=""
36DEF$(TNR)DEPN+=$(foreach,i,$(DEFLIB$(TNR)NAME) $(SLB)/$(i).lib)
37.ENDIF
38
39.IF "$(SHL$(TNR)VERSIONMAP)"!=""
40.IF "$(DEF$(TNR)EXPORTFILE)"==""
41.IF "$(GUI)"=="WNT"
42DEF$(TNR)EXPORTFILE=$(MISC)/$(SHL$(TNR)VERSIONMAP:b)_$(SHL$(TNR)TARGET).dxp
43.IF "$(COM)"=="GCC"
44$(DEF$(TNR)EXPORTFILE) : $(SHL$(TNR)OBJS) $(SHL$(TNR)LIBS)
45.ENDIF # .IF "$(COM)"=="GCC"
46
47$(DEF$(TNR)EXPORTFILE) : $(SHL$(TNR)VERSIONMAP)
48    $(COMMAND_ECHO)$(TYPE) $< | $(AWK) -f $(SOLARENV)/bin/getcsym.awk > $@
49.IF "$(COM)"=="GCC"
50    $(COMMAND_ECHO)-$(GREP) -v "\*\|?" $@ | $(SED) -e 's@#.*@@' > $@.exported-symbols
51    $(COMMAND_ECHO)-$(GREP) "\*\|?" $@ > $@.symbols-regexp
52# Shared libraries will be build out of the *.obj files specified in SHL?OBJS and SHL?LIBS
53# Extract RTTI symbols from all the objects that will be used to build a shared library
54    $(COMMAND_ECHO)nm -gP $(SHL$(TNR)OBJS) \
55        `$(TYPE) /dev/null $(foreach,j,$(SHL$(TNR)LIBS) $j) | $(SED) s\#$(ROUT)\#$(PRJ)$/$(ROUT)\#g` \
56        | $(SOLARENV)/bin/addsym-mingw.sh $@.symbols-regexp $@.symbols-regexp.tmp >> $@.exported-symbols
57# overwrite the map file generate into the local output tree with the generated
58# exported symbols list
59    $(COMMAND_ECHO)$(RENAME) $@.exported-symbols $@
60.ENDIF # .IF "$(COM)"=="GCC"
61
62.ENDIF          # "$(GUI)"=="WNT"
63
64.IF "$(GUI)"=="OS2"
65DEF$(TNR)EXPORTFILE=$(MISC)/$(SHL$(TNR)VERSIONMAP:b)_$(SHL$(TNR)TARGET).dxp
66$(DEF$(TNR)EXPORTFILE) : $(SHL$(TNR)VERSIONMAP)
67    $(TYPE) $< | $(AWK) -f $(SOLARENV)/bin/getcsym.awk > $@
68.ENDIF          # "$(GUI)"=="OS2"
69
70.ENDIF          # "$(DEF$(TNR)EXPORTFILE)"==""
71.ENDIF          # "$(SHL$(TNR)VERSIONMAP)"!=""
72
73.IF "$(GUI)"=="WNT"
74
75DEF$(TNR)FILTER=$(SOLARENV)/inc/dummy.flt
76
77RMHACK$(TNR):=$(RM)
78
79.IF "$(DEF$(TNR)CEXP)"!=""
80EXPORT_ALL_SWITCH=-A $(DEF$(TNR)CEXP)
81.ENDIF
82
83.IF "$(link_always)"==""
84$(DEF$(TNR)TARGETN) : \
85        $(DEF$(TNR)DEPN) \
86        $(DEF$(TNR)EXPORTFILE)
87.ELSE           # "$(link_always)"==""
88$(DEF$(TNR)TARGETN) .PHONY :
89.ENDIF          # "$(link_always)"==""
90    @-$(RM) $@.tmpfile
91    @echo "Making:    module definition file" $(@:f)
92    @echo LIBRARY     $(EMQ)"$(SHL$(TNR)TARGETN:f)$(EMQ)"                                >$@.tmpfile
93.IF "$(COM)"!="GCC"
94    @echo HEAPSIZE    0                                             >>$@.tmpfile
95.ENDIF
96    @echo EXPORTS                                                   >>$@.tmpfile
97.IF "$(VERSIONOBJ)"!=""
98#   getversioninfo fuer alle!!
99    @echo GetVersionInfo        >>$@.tmpfile
100.ENDIF
101.IF "$(DEFLIB$(TNR)NAME)"!=""
102.IF "$(COM)"=="GCC"
103    @-$(RM) $(MISC)/$(SHL$(TNR)TARGET).exp
104    $(COMMAND_ECHO)dlltool --output-def $(MISC)/$(SHL$(TNR)TARGET).exp --export-all-symbols \
105        `$(TYPE) $(foreach,i,$(DEFLIB$(TNR)NAME) $(SLB)/$(i).lib) | sed s#$(ROUT)#$(PRJ)/$(ROUT)#g`
106    $(COMMAND_ECHO)tail --lines +3 $(MISC)/$(SHL$(TNR)TARGET).exp | sed '/^;/d' >>$@.tmpfile
107    @-$(RM) $(MISC)/$(SHL$(TNR)TARGET).exp
108.ELSE
109.IF "$(SHL$(TNR)USE_EXPORTS)"==""
110    @-$(RMHACK$(TNR)) $(MISC)/$(SHL$(TNR)TARGET).exp
111    @$(LIBMGR) -EXTRACT:/ /OUT:$(MISC)/$(SHL$(TNR)TARGET).exp $(SLB)/$(DEFLIB$(TNR)NAME).lib
112    @$(LDUMP2) -N $(EXPORT_ALL_SWITCH) -F $(MISC)/$(SHL$(TNR)TARGET).flt $(MISC)/$(SHL$(TNR)TARGET).exp            >>$@.tmpfile
113    $(COMMAND_ECHO)$(RMHACK$(TNR)) $(MISC)/$(SHL$(TNR)TARGET).exp
114.ELSE           # "$(SHL$(TNR)USE_EXPORTS)"==""
115    @$(DUMPBIN) -DIRECTIVES  $(foreach,i,$(DEFLIB$(TNR)NAME) $(SLB)/$(i).lib) | $(GREP) EXPORT: > $(MISC)/$(SHL$(TNR)TARGET).direct
116    @$(LDUMP2) -N -D $(EXPORT_ALL_SWITCH) -F $(DEF$(TNR)FILTER) $(MISC)/$(SHL$(TNR)TARGET).direct >>$@.tmpfile
117.ENDIF          # "$(SHL$(TNR)USE_EXPORTS)"==""
118.ENDIF
119.ENDIF              # "$(DEFLIB$(TNR)NAME)"!=""
120.IF "$(DEF$(TNR)EXPORT1)"!=""
121    @echo $(DEF$(TNR)EXPORT1)                                       >>$@.tmpfile
122.ENDIF
123.IF "$(DEF$(TNR)EXPORT2)"!=""
124    @echo $(DEF$(TNR)EXPORT2)                                       >>$@.tmpfile
125.ENDIF
126.IF "$(DEF$(TNR)EXPORT3)"!=""
127    @echo $(DEF$(TNR)EXPORT3)                                       >>$@.tmpfile
128.ENDIF
129.IF "$(DEF$(TNR)EXPORT4)"!=""
130    @echo $(DEF$(TNR)EXPORT4)                                       >>$@.tmpfile
131.ENDIF
132.IF "$(DEF$(TNR)EXPORT5)"!=""
133    @echo $(DEF$(TNR)EXPORT5)                                       >>$@.tmpfile
134.ENDIF
135.IF "$(DEF$(TNR)EXPORT6)"!=""
136    @echo $(DEF$(TNR)EXPORT6)                                       >>$@.tmpfile
137.ENDIF
138.IF "$(DEF$(TNR)EXPORT7)"!=""
139    @echo $(DEF$(TNR)EXPORT7)                                       >>$@.tmpfile
140.ENDIF
141.IF "$(DEF$(TNR)EXPORT8)"!=""
142    @echo $(DEF$(TNR)EXPORT8)                                       >>$@.tmpfile
143.ENDIF
144.IF "$(DEF$(TNR)EXPORT9)"!=""
145    @echo $(DEF$(TNR)EXPORT9)                                       >>$@.tmpfile
146.ENDIF
147.IF "$(DEF$(TNR)EXPORT10)"!=""
148    @echo $(DEF$(TNR)EXPORT10)                                      >>$@.tmpfile
149.ENDIF
150.IF "$(DEF$(TNR)EXPORT11)"!=""
151    @echo $(DEF$(TNR)EXPORT11)                                      >>$@.tmpfile
152.ENDIF
153.IF "$(DEF$(TNR)EXPORT12)"!=""
154    @echo $(DEF$(TNR)EXPORT12)                                      >>$@.tmpfile
155.ENDIF
156.IF "$(DEF$(TNR)EXPORT13)"!=""
157    @echo $(DEF$(TNR)EXPORT13)                                      >>$@.tmpfile
158.ENDIF
159.IF "$(DEF$(TNR)EXPORT14)"!=""
160    @echo $(DEF$(TNR)EXPORT14)                                      >>$@.tmpfile
161.ENDIF
162.IF "$(DEF$(TNR)EXPORT15)"!=""
163    @echo $(DEF$(TNR)EXPORT15)                                      >>$@.tmpfile
164.ENDIF
165.IF "$(DEF$(TNR)EXPORT16)"!=""
166    @echo $(DEF$(TNR)EXPORT16)                                      >>$@.tmpfile
167.ENDIF
168.IF "$(DEF$(TNR)EXPORT17)"!=""
169    @echo $(DEF$(TNR)EXPORT17)                                      >>$@.tmpfile
170.ENDIF
171.IF "$(DEF$(TNR)EXPORT18)"!=""
172    @echo $(DEF$(TNR)EXPORT18)                                      >>$@.tmpfile
173.ENDIF
174.IF "$(DEF$(TNR)EXPORT19)"!=""
175    @echo $(DEF$(TNR)EXPORT19)                                      >>$@.tmpfile
176.ENDIF
177.IF "$(DEF$(TNR)EXPORT20)"!=""
178    @echo $(DEF$(TNR)EXPORT20)                                      >>$@.tmpfile
179.ENDIF
180.IF "$(DEF$(TNR)EXPORTFILE)"!=""
181.IF "$(COM)"=="GCC"
182    $(COMMAND_ECHO)$(TYPE) $(DEF$(TNR)EXPORTFILE) | sed -e s:PRIVATE:: >> $@.tmpfile
183.ELSE
184    $(COMMAND_ECHO)$(TYPE) $(DEF$(TNR)EXPORTFILE) >> $@.tmpfile
185.ENDIF
186.ENDIF
187    @-$(RM) $@
188    @$(RENAME) $@.tmpfile $@
189.ENDIF          # "$(GUI)"=="WNT"
190
191.IF "$(GUI)"=="OS2"
192
193#21/02/2006 YD dll names must be 8.3, invoke fix script
194#check osl/os2/module.c/osl_loadModule()
195SHL$(TNR)TARGET8=$(shell @fix_shl.cmd $(SHL$(TNR)TARGETN:f))
196
197DEF$(TNR)FILTER=$(SOLARENV)/inc/dummy.flt
198DEF$(TNR)NAMELIST=$(foreach,i,$(DEFLIB$(TNR)NAME) $(SLB)/$(i).lib)
199
200.IF "$(link_always)"==""
201$(DEF$(TNR)TARGETN) : \
202        $(DEF$(TNR)DEPN) \
203        $(DEF$(TNR)EXPORTFILE)
204.ELSE           # "$(link_always)"==""
205$(DEF$(TNR)TARGETN) .PHONY :
206.ENDIF          # "$(link_always)"==""
207    @+-$(RM) $@.tmpfile
208    @echo "Making:    module definition file" $(@:f)
209    @echo LIBRARY     $(SHL$(TNR)TARGET8) INITINSTANCE TERMINSTANCE  >$@.tmpfile
210    @echo DATA MULTIPLE  >>$@.tmpfile
211    @echo EXPORTS                                                   >>$@.tmpfile
212.IF "$(VERSIONOBJ)"!=""
213#   getversioninfo fuer alle!!
214    @echo _GetVersionInfo       >$@.tmp_ord
215.ENDIF
216
217.IF "$(DEFLIB$(TNR)NAME)"!=""
218    @+echo $(SLB)/$(DEFLIB$(TNR)NAME).lib
219    @+emxexp $(DEF$(TNR)NAMELIST) | fix_exp_file >> $@.tmp_ord
220.ENDIF              # "$(DEFLIB$(TNR)NAME)"!=""
221
222.IF "$(DEF$(TNR)EXPORT1)"!=""
223    @echo $(DEF$(TNR)EXPORT1)                                       >>$@.tmpfile
224.ENDIF
225.IF "$(DEF$(TNR)EXPORT2)"!=""
226    @echo $(DEF$(TNR)EXPORT2)                                       >>$@.tmpfile
227.ENDIF
228.IF "$(DEF$(TNR)EXPORT3)"!=""
229    @echo $(DEF$(TNR)EXPORT3)                                       >>$@.tmpfile
230.ENDIF
231.IF "$(DEF$(TNR)EXPORT4)"!=""
232    @echo $(DEF$(TNR)EXPORT4)                                       >>$@.tmpfile
233.ENDIF
234.IF "$(DEF$(TNR)EXPORT5)"!=""
235    @echo $(DEF$(TNR)EXPORT5)                                       >>$@.tmpfile
236.ENDIF
237.IF "$(DEF$(TNR)EXPORT6)"!=""
238    @echo $(DEF$(TNR)EXPORT6)                                       >>$@.tmpfile
239.ENDIF
240.IF "$(DEF$(TNR)EXPORT7)"!=""
241    @echo $(DEF$(TNR)EXPORT7)                                       >>$@.tmpfile
242.ENDIF
243.IF "$(DEF$(TNR)EXPORT8)"!=""
244    @echo $(DEF$(TNR)EXPORT8)                                       >>$@.tmpfile
245.ENDIF
246.IF "$(DEF$(TNR)EXPORT9)"!=""
247    @echo $(DEF$(TNR)EXPORT9)                                       >>$@.tmpfile
248.ENDIF
249.IF "$(DEF$(TNR)EXPORT10)"!=""
250    @echo $(DEF$(TNR)EXPORT10)                                      >>$@.tmpfile
251.ENDIF
252.IF "$(DEF$(TNR)EXPORT11)"!=""
253    @echo $(DEF$(TNR)EXPORT11)                                      >>$@.tmpfile
254.ENDIF
255.IF "$(DEF$(TNR)EXPORT12)"!=""
256    @echo $(DEF$(TNR)EXPORT12)                                      >>$@.tmpfile
257.ENDIF
258.IF "$(DEF$(TNR)EXPORT13)"!=""
259    @echo $(DEF$(TNR)EXPORT13)                                      >>$@.tmpfile
260.ENDIF
261.IF "$(DEF$(TNR)EXPORT14)"!=""
262    @echo $(DEF$(TNR)EXPORT14)                                      >>$@.tmpfile
263.ENDIF
264.IF "$(DEF$(TNR)EXPORT15)"!=""
265    @echo $(DEF$(TNR)EXPORT15)                                      >>$@.tmpfile
266.ENDIF
267.IF "$(DEF$(TNR)EXPORT16)"!=""
268    @echo $(DEF$(TNR)EXPORT16)                                      >>$@.tmpfile
269.ENDIF
270.IF "$(DEF$(TNR)EXPORT17)"!=""
271    @echo $(DEF$(TNR)EXPORT17)                                      >>$@.tmpfile
272.ENDIF
273.IF "$(DEF$(TNR)EXPORT18)"!=""
274    @echo $(DEF$(TNR)EXPORT18)                                      >>$@.tmpfile
275.ENDIF
276.IF "$(DEF$(TNR)EXPORT19)"!=""
277    @echo $(DEF$(TNR)EXPORT19)                                      >>$@.tmpfile
278.ENDIF
279.IF "$(DEF$(TNR)EXPORT20)"!=""
280    @echo $(DEF$(TNR)EXPORT20)                                      >>$@.tmpfile
281.ENDIF
282.IF "$(DEF$(TNR)EXPORTFILE)"!=""
283    @fix_def_file < $(DEF$(TNR)EXPORTFILE) >> $@.tmp_ord
284.ENDIF
285    @sort < $@.tmp_ord | uniq > $@.exptmpfile
286    @fix_def_ord < $@.exptmpfile >> $@.tmpfile
287    @+-$(RM) $@
288    $(COMMAND_ECHO)+$(RENAME) $@.tmpfile $@
289    @+-$(RM) $@.tmp_ord
290    @+-$(RM) $@.exptmpfile
291.IF "$(SHL$(TNR)USE_EXPORTS)"=="" || "$(SHL$(TNR)USE_EXPORTS)"=="ordinal"
292#03/11/2012  if 'name' is not used, export from def file (with ordinals)
293    @echo Build import library from DEF file.
294    @+-$(RM) $(LB)/$(SHL$(TNR)TARGETN:b).lib
295    $(COMMAND_ECHO)+$(IMPLIB) $(IMPLIBFLAGS) $(LB)/$(SHL$(TNR)TARGETN:b).lib $@
296.ENDIF          # "$(SHL$(TNR)USE_EXPORTS)"==""
297
298.ENDIF          # "$(GUI)"=="OS2"
299
300.IF "$(GUI)"=="UNX"
301$(DEF$(TNR)TARGETN): \
302        $(DEF$(TNR)DEPN) \
303        $(DEF$(TNR)EXPORTFILE)
304    @echo just a dummy for UNIX > $@
305.ENDIF
306.ENDIF          # "$(DEF$(TNR)TARGETN)"!=""
307
308
309# Anweisungen fuer das Linken
310# unroll end
311#######################################################
312
313