1 #*************************************************************************
3 # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
5 # Copyright 2008 by Sun Microsystems, Inc.
7 # OpenOffice.org - a multi-platform office productivity suite
9 # $RCSfile: tg_shl.mk,v $
13 # This file is part of OpenOffice.org.
15 # OpenOffice.org is free software: you can redistribute it and/or modify
16 # it under the terms of the GNU Lesser General Public License version 3
17 # only, as published by the Free Software Foundation.
19 # OpenOffice.org is distributed in the hope that it will be useful,
20 # but WITHOUT ANY WARRANTY; without even the implied warranty of
21 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
22 # GNU Lesser General Public License version 3 for more details
23 # (a copy is included in the LICENSE file that accompanied this code).
25 # You should have received a copy of the GNU Lesser General Public License
26 # version 3 along with OpenOffice.org. If not, see
27 # <http://www.openoffice.org/license.html>
28 # for a copy of the LGPLv3 License.
30 #*************************************************************************
32 #######################################################
36 .IF
"$(SHL$(TNR)TARGETN)"!=""
42 .IF
"$(SHLLINKARCONLY)" != ""
50 .IF
"$(SHL$(TNR)CODETYPE)"=="C"
51 SHL
$(TNR
)LINKER
=$(LINKC
)
52 SHL
$(TNR
)STDSHL
=$(subst,CPPRUNTIME
, $(STDSHL
))
53 SHL
$(TNR
)LINKFLAGS
+=$(LINKCFLAGS
)
54 .ELSE
# "$(SHL$(TNR)CODETYPE)"=="C"
55 SHL
$(TNR
)LINKER
=$(LINK
)
56 SHL
$(TNR
)STDSHL
=$(subst,CPPRUNTIME
,$(STDLIBCPP
) $(STDSHL
))
57 SHL
$(TNR
)LINKFLAGS
+=$(LINKFLAGS
)
58 .ENDIF
# "$(SHL$(TNR)CODETYPE)"=="C"
61 LINKFLAGSRUNPATH_
$(SHL
$(TNR
)RPATH
)*=/ERROR
:/Bad_SHL
$(TNR
)RPATH_value
62 SHL
$(TNR
)LINKFLAGS
+=$(LINKFLAGSRUNPATH_
$(SHL
$(TNR
)RPATH
))
64 .IF
"$(SHL$(TNR)USE_EXPORTS)"==""
65 SHL
$(TNR
)DEF
*=$(MISC
)$/$(SHL
$(TNR
)TARGET
).def
66 .ENDIF
# "$(SHL$(TNR)USE_EXPORTS)"==""
68 #+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
69 #+++++++++++ version object ++++++++++++++++++++++++++++++++++++++++
70 #+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
72 .IF
"$(VERSIONOBJ)"!=""
73 SHL
$(TNR
)VERSIONOBJ
:=$(VERSIONOBJ
:d
){$(subst,$(DLLPOSTFIX
),_dflt
$(SHL
$(TNR
)TARGET
))}$(VERSIONOBJ
:f
)
74 USE_VERSIONH
:=$(INCCOM
)$/$(SHL
$(TNR
)VERSIONOBJ
:b
).h
76 SHL
$(TNR
)VERSIONOBJDEP
:=$(VERSIONOBJ
:d
){$(subst,$(DLLPOSTFIX
),_dflt
$(SHL
$(TNR
)TARGET
))}$(VERSIONOBJ
:f
:s
/.o
/.obj
/)
77 .ELSE
# "$(GUI)" == "UNX"
78 SHL
$(TNR
)VERSIONOBJDEP
:=$(VERSIONOBJ
:d
){$(subst,$(DLLPOSTFIX
),_dflt
$(SHL
$(TNR
)TARGET
))}$(VERSIONOBJ
:f
)
79 .ENDIF
# "$(GUI)" == "UNX"
80 $(MISC
)$/$(SHL
$(TNR
)VERSIONOBJ
:b
).c
: $(SOLARENV
)$/src
$/version.c
$(INCCOM
)$/$(SHL
$(TNR
)VERSIONOBJ
:b
).h
81 # $(COPY) $(SOLARENV)$/src$/version.c $@
82 $(QUIET_BUILD
) $(TYPE
) $(SOLARENV
)$/src
$/version.c |
$(SED
) s
/_version.h
/$(SHL
$(TNR
)VERSIONOBJ
:b
).h
/ > $@
84 .INIT
: $(SHL
$(TNR
)VERSIONOBJDEP
)
85 .ENDIF
# "$(VERSIONOBJ)"!=""
88 .IF
"$(GUI)" == "WNT" ||
"$(GUI)" == "OS2"
89 .IF
"$(SHL$(TNR)IMPLIB)" == ""
90 SHL
$(TNR
)IMPLIB
=i
$(TARGET
)_t
$(TNR
)
91 .ENDIF
# "$(SHL$(TNR)IMPLIB)" == ""
93 USE_
$(TNR
)IMPLIB
=-implib
:$(LB
)$/$(SHL
$(TNR
)IMPLIB
).lib
94 .ENDIF
# "$(COM)" != "GCC"
95 SHL
$(TNR
)IMPLIBN
=$(LB
)$/$(SHL
$(TNR
)IMPLIB
).lib
96 ALLTAR
: $(SHL
$(TNR
)IMPLIBN
)
98 .IF
"$(USE_DEFFILE)"==""
99 USE_
$(TNR
)IMPLIB_DEPS
=$(LB
)$/$(SHL
$(TNR
)IMPLIB
).lib
100 .ENDIF
# "$(USE_DEFFILE)"==""
101 .ENDIF
# "$(GUI)" == "WNT" || "$(GUI)" == "OS2"
102 USE_SHL
$(TNR
)DEF
=$(SHL
$(TNR
)DEF
)
103 .ELSE
# "$(GUI)" != "UNX"
105 SHL
$(TNR
)DEPN
+:=$(SHL
$(TNR
)DEPNU
)
107 .IF
"$(SHL$(TNR)VERSIONMAP)"==""
108 # to activate vmaps remove "#"
109 USE_SHL
$(TNR
)VERSIONMAP
=$(MISC
)$/$(SHL
$(TNR
)TARGET
).vmap
110 .ENDIF
# "$(SHL$(TNR)VERSIONMAP)"==""
112 .IF
"$(USE_SHL$(TNR)VERSIONMAP)"!=""
114 .IF
"$(SHL$(TNR)FILTERFILE)"!=""
115 .IF
"$(SHL$(TNR)VERSIONMAP)"!=""
116 #eine von beiden ist zuviel
117 USE_SHL
$(TNR
)VERSIONMAP
=$(MISC
)$/$(SHL
$(TNR
)TARGET
).vmap
118 $(USE_SHL
$(TNR
)VERSIONMAP
) .PHONY
:
119 @echo
-----------------------------
120 @echo you should only use versionmap OR exportfile
121 @echo
-----------------------------
122 # force_dmake_to_error
124 .ENDIF
# "$(SHL$(TNR)VERSIONMAP)"!=""
127 SHL
$(TNR
)VERSIONMAPPARA
=$(LINKVERSIONMAPFLAG
) $(USE_SHL
$(TNR
)VERSIONMAP
)
130 $(USE_SHL
$(TNR
)VERSIONMAP
): \
133 $(SHL
$(TNR
)FILTERFILE
)
135 .IF
"$(SHL$(TNR)OBJS)"!=""
136 # dump remaining objects on the fly
137 .IF
"$(OS)"=="MACOSX"
138 @
-nm
$(SHL
$(TNR
)OBJS
:s
/.obj
/.o
/) > $@.dump
140 @nm
$(SHL
$(TNR
)OBJS
:s
/.obj
/.o
/) > $@.dump
142 .ENDIF
# "$(SHL$(TNR)OBJS)!"=""
143 @
$(TYPE
) /dev
/null
$(SHL
$(TNR
)LIBS
:s
/.lib
/.dump
/) >> $@.dump
144 $(QUIET_BUILD
) $(PERL
) $(SOLARENV
)$/bin
$/mapgen.pl
-d
$@.dump
-s
$(SHL
$(TNR
)INTERFACE
) -f
$(SHL
$(TNR
)FILTERFILE
) -m
$@
146 .ELSE
# "$(SHL$(TNR)FILTERFILE)"!=""
147 USE_SHL
$(TNR
)VERSIONMAP
=$(MISC
)$/$(SHL
$(TNR
)TARGET
).vmap
148 $(USE_SHL
$(TNR
)VERSIONMAP
) :
149 .IF
"$(QUIET_BUILD)"==""
150 @echo
-----------------------------
151 @echo SHL
$(TNR
)FILTERFILE not set
!
152 @echo
-----------------------------
154 @echo dummy file to keep the dependencies for later use.
158 # force_dmake_to_error
159 .ENDIF
# "$(SHL$(TNR)FILTERFILE)"!=""
160 .ELSE
# "$(USE_SHL$(TNR)VERSIONMAP)"!=""
162 #and now for the plain non-generic way...
163 .IF
"$(SHL$(TNR)VERSIONMAP)"!=""
164 USE_SHL
$(TNR
)VERSIONMAP
=$(MISC
)$/$(SHL
$(TNR
)VERSIONMAP
:b
)_
$(SHL
$(TNR
)TARGET
)$(SHL
$(TNR
)VERSIONMAP
:e
)
166 SHL
$(TNR
)VERSIONMAPPARA
=$(LINKVERSIONMAPFLAG
) $(USE_SHL
$(TNR
)VERSIONMAP
)
169 .IF
"$(OS)"=="MACOSX"
170 $(USE_SHL
$(TNR
)VERSIONMAP
): $(SHL
$(TNR
)OBJS
) $(SHL
$(TNR
)LIBS
)
173 $(USE_SHL
$(TNR
)VERSIONMAP
): $(SHL
$(TNR
)VERSIONMAP
)
175 # The following files will only be generated and needed on Mac OS X as temporary files
176 # in order to generate exported symbols list out of Linux/Solaris map files
177 .IF
"$(OS)"=="MACOSX"
178 @
-$(RM
) -f
$@.symregexp
>& $(NULLDEV
)
179 @
-$(RM
) -f
$@.expsymlist
>& $(NULLDEV
)
181 # Its questionable if the following condition '.IF "$(COMID)"=="gcc3"' makes sense and what
182 # happens if somebody will change it in the future
183 .IF
"$(COMID)"=="gcc3"
184 $(QUIET_BUILD
) tr
-d
"\015" < $(SHL
$(TNR
)VERSIONMAP
) |
$(AWK
) -f
$(SOLARENV
)$/bin
$/addsym.awk
> $@
185 .ELIF
"$(COMNAME)"=="sunpro5"
186 $(QUIET_BUILD
) tr
-d
"\015" < $(SHL
$(TNR
)VERSIONMAP
) |
$(GREP
) -v
$(IGNORE_SYMBOLS
) > $@
187 .ELSE
# "$(COMID)"=="gcc3"
188 $(QUIET_BUILD
) tr
-d
"\015" < $(SHL
$(TNR
)VERSIONMAP
) > $@
189 .ENDIF
# "$(COMID)"=="gcc3"
191 # Mac OS X post-processing generate an exported symbols list from the generated map file
192 # for details on exported symbols list see man ld on Mac OS X
193 .IF
"$(OS)"=="MACOSX"
194 -cat
$@ |
$(AWK
) -f
$(SOLARENV
)$/bin
$/unxmap-to-macosx-explist.awk | grep
-v
"\*\|?" > $@.exported-symbols
195 -cat
$@ |
$(AWK
) -f
$(SOLARENV
)$/bin
$/unxmap-to-macosx-explist.awk | grep
"\*\|?" > $@.symbols-regexp
196 # Shared libraries will be build out of the *.obj files specified in SHL?OBJS and SHL?LIBS
197 # Extract RTTI symbols from all the objects that will be used to build a shared library
198 .IF
"$(SHL$(TNR)OBJS)"!=""
199 -echo
$(foreach,i
,$(SHL
$(TNR
)OBJS
:s
/.obj
/.o
/) $i) | xargs
-n1 nm
-gx |
$(SOLARENV
)$/bin
$/addsym-macosx.sh
$@.symbols-regexp
$@.symbols-regexp.tmp
>> $@.exported-symbols
201 .IF
"$(SHL$(TNR)LIBS)"!=""
202 -$(TYPE
) $(foreach,j
,$(SHL
$(TNR
)LIBS
) $j) |
$(SED
) s\
#$(ROUT)\#$(PRJ)$/$(ROUT)\#g | xargs -n1 nm -gx | $(SOLARENV)$/bin$/addsym-macosx.sh $@.symbols-regexp $@.symbols-regexp.tmp >> $@.exported-symbols
204 # overwrite the map file generate into the local output tree with the generated
205 # exported symbols list
206 cp
$@.exported-symbols
$@
207 .ENDIF
# .IF "$(OS)"=="MACOSX"
208 .ENDIF
# "$(SHL$(TNR)VERSIONMAP)"!=""
209 .ENDIF
# "$(USE_SHL$(TNR)VERSIONMAP)"!=""
210 .ENDIF
# "$(GUI)" != "UNX"
212 .IF
"$(UNIXVERSIONNAMES)"!=""
213 .IF
"$(OS)"!="MACOSX"
216 SHL
$(TNR
)SONAME
=$(SONAME_SWITCH
)$(SHL
$(TNR
)TARGETN
:f
)
218 SHL
$(TNR
)SONAME
=\"$(SONAME_SWITCH
)$(SHL
$(TNR
)TARGETN
:f
)\"
220 .ENDIF
# "$(GUI)"!="UNX"
221 .ENDIF
# "$(OS)"!="MACOSX"
222 .ENDIF
# "$(UNIXVERSIONNAMES)"!=""
224 .IF
"$(SHL$(TNR)RES)"!=""
225 SHL
$(TNR
)ALLRES
+=$(SHL
$(TNR
)RES
)
226 SHL
$(TNR
)LINKRES
*=$(MISC
)$/$(SHL
$(TNR
)TARGET
).res
227 SHL
$(TNR
)LINKRESO
*=$(MISC
)$/$(SHL
$(TNR
)TARGET
)_res.o
228 .ENDIF
# "$(SHL$(TNR)RES)"!=""
230 .IF
"$(SHL$(TNR)DEFAULTRES)$(use_shl_versions)"!=""
231 SHL
$(TNR
)DEFAULTRES
*=$(MISC
)$/$(SHL
$(TNR
)TARGET
)_def.res
232 SHL
$(TNR
)ALLRES
+=$(SHL
$(TNR
)DEFAULTRES
)
233 SHL
$(TNR
)LINKRES
*=$(MISC
)$/$(SHL
$(TNR
)TARGET
).res
234 SHL
$(TNR
)LINKRESO
*=$(MISC
)$/$(SHL
$(TNR
)TARGET
)_res.o
235 .ENDIF
# "$(SHL$(TNR)DEFAULTRES)$(use_shl_versions)"!=""
237 #.IF "$(SHL$(TNR)TARGETN)"!=""
240 .IF
"$(GUI)"=="WNT" ||
"$(GUI)" == "OS2"
241 .IF
"$(SHL$(TNR)LIBS)"!=""
242 $(MISC
)$/$(SHL
$(TNR
)TARGET
)_linkinc.ls .PHONY
:
244 $(SED
) -f
$(SOLARENV
)$/bin
$/chrel.sed
$(foreach,i
,$(SHL
$(TNR
)LIBS
) $(i
:s
/.lib
/.lin
/)) >> $@
245 .ENDIF
# "$(SHL$(TNR)LIBS)"!=""
248 LINKINCTARGETS
+=$(MISC
)$/$(SHL
$(TNR
)TARGETN
:b
)_linkinc.ls
249 $(SHL
$(TNR
)TARGETN
) : $(LINKINCTARGETS
)
252 .IF
"$(SHL$(TNR)USE_EXPORTS)"=="name"
253 .IF
"$(GUI)"=="WNT" ||
"$(GUI)" == "OS2"
255 .IF
"$(SHL$(TNR)LIBS)"!=""
256 SHL
$(TNR
)LINKLIST
=$(MISC
)$/$(SHL
$(TNR
)TARGET
)_link.lst
257 SHL
$(TNR
)LINKLISTPARAM
=@
$(SHL
$(TNR
)LINKLIST
)
258 $(SHL
$(TNR
)LINKLIST
) : $(SHL
$(TNR
)LIBS
)
260 $(SED
) -f
$(SOLARENV
)$/bin
$/chrel.sed
$(foreach,i
,$(SHL
$(TNR
)LIBS
) $(i
:s
/.lib
/.lin
/)) >> $@
261 .ENDIF
# "$(SHL$(TNR)LIBS)"!=""
262 .ENDIF
# "$(COM)"!="GCC"
264 .ENDIF
# "$(SHL$(TNR)USE_EXPORTS)"=="name"
266 $(MISC
)$/%linkinc.ls
:
268 .ENDIF
# "$(linkinc)"!=""
270 .IF
"$(GUI)" == "OS2"
271 #21/02/2006 YD dll names must be 8.3, invoke fix script
272 #check osl/os2/module.c/osl_loadModule()
273 SHL
$(TNR
)TARGET8
=$(shell @fix_shl
$(SHL
$(TNR
)TARGET
))
276 .IF
"$(GUI)" == "OS2"
277 _SHL
$(TNR
)IMP_ORD
= $(SHL
$(TNR
)STDLIBS
:^
"$(SOLARVERSION)$/$(INPATH)$/lib$/") $(SHL
$(TNR
)STDLIBS
:^
"$(LB)$/")
278 SHL
$(TNR
)IMP_ORD
= $(foreach,i
,$(_SHL
$(TNR
)IMP_ORD
) $(shell @
-ls
$i))
284 $(SHL
$(TNR
)TARGETN
) : \
287 $(USE_
$(TNR
)IMPLIB_DEPS
)\
289 $(USE_SHL
$(TNR
)VERSIONMAP
)\
292 $(SHL
$(TNR
)IMP_ORD
) \
294 .IF
"$(QUIET_BUILD)"==""
295 @echo
------------------------------
297 @echo
"Making: " $(@
:f
)
298 .IF
"$(GUI)" == "WNT"
299 .IF
"$(SHL$(TNR)DEFAULTRES)"!=""
300 @@
-$(RM
) $(MISC
)$/$(SHL
$(TNR
)DEFAULTRES
:b
).rc
301 .IF
"$(SHL$(TNR)ICON)" != ""
302 @echo
1 ICON
$(SHL
$(TNR
)ICON
) >> $(MISC
)$/$(SHL
$(TNR
)DEFAULTRES
:b
).rc
304 .IF
"$(use_shl_versions)" != ""
305 .IF
"$(SHL$(TNR)ADD_VERINFO)"!=""
306 @echo
$(EMQ
)#include $(EMQ)"$(SHL$(TNR)ADD_VERINFO)$(EMQ)" >> $(MISC)$/$(SHL$(TNR)DEFAULTRES:b).rc
307 .ELSE
# "$(SHL$(TNR)ADD_VERINFO)"!=""
308 @echo
$(EMQ
)#define ADDITIONAL_VERINFO1 >> $(MISC)$/$(SHL$(TNR)DEFAULTRES:b).rc
309 @echo
$(EMQ
)#define ADDITIONAL_VERINFO2 >> $(MISC)$/$(SHL$(TNR)DEFAULTRES:b).rc
310 @echo
$(EMQ
)#define ADDITIONAL_VERINFO3 >> $(MISC)$/$(SHL$(TNR)DEFAULTRES:b).rc
311 .ENDIF
# "$(SHL$(TNR)ADD_VERINFO)"!=""
312 @echo
$(EMQ
)#define VERVARIANT $(BUILD) >> $(MISC)$/$(SHL$(TNR)DEFAULTRES:b).rc
313 @echo
$(EMQ
)#define ORG_NAME $(SHL$(TNR)TARGET)$(DLLPOST) >> $(MISC)$/$(SHL$(TNR)DEFAULTRES:b).rc
314 @echo
$(EMQ
)#define INTERNAL_NAME $(SHL$(TNR)TARGET:b) >> $(MISC)$/$(SHL$(TNR)DEFAULTRES:b).rc
315 @echo
$(EMQ
)#include $(EMQ)"shlinfo.rc$(EMQ)" >> $(MISC)$/$(SHL$(TNR)DEFAULTRES:b).rc
316 .ENDIF
# "$(use_shl_versions)" != ""
317 $(RC
) -DWIN32
$(INCLUDE
) $(RCLINKFLAGS
) $(MISC
)$/$(SHL
$(TNR
)DEFAULTRES
:b
).rc
318 .ENDIF
# "$(SHL$(TNR)DEFAULTRES)"!=""
319 .IF
"$(SHL$(TNR)ALLRES)"!=""
320 .IF
"$(USE_SHELL)"=="4nt"
321 $(COPY
) /b
$(SHL
$(TNR
)ALLRES
:s
/res
/res
+/) $(SHL
$(TNR
)LINKRES
)
322 .ELSE
# "$(USE_SHELL)"=="4nt"
323 $(TYPE
) $(SHL
$(TNR
)ALLRES
) > $(SHL
$(TNR
)LINKRES
)
325 windres
$(SHL
$(TNR
)LINKRES
) $(SHL
$(TNR
)LINKRESO
)
326 .ENDIF
# "$(COM)"=="GCC"
327 .ENDIF
# "$(USE_SHELL)"=="4nt"
328 .ENDIF
# "$(SHL$(TNR)ALLRES)"!=""
329 .IF
"$(COM)"=="GCC" # always have to call dlltool explicitly as ld cannot handle # comment in .def
330 .IF
"$(DEFLIB$(TNR)NAME)"!="" # do not have to include objs
331 @echo dlltool
--input-def
$(SHL
$(TNR
)DEF
) \
332 --dllname
$(SHL
$(TNR
)TARGET
)$(DLLPOST
) \
334 --output-exp
$(MISC
)$/$(@
:b
)_exp.o
> $(MISC
)$/$(TARGET
).
$(@
:b
)_
$(TNR
).cmd
335 .ELSE
# "$(DEFLIB$(TNR)NAME)"!="" # do not have to include objs
336 @echo dlltool
--input-def
$(SHL
$(TNR
)DEF
) \
337 --dllname
$(SHL
$(TNR
)TARGET
)$(DLLPOST
) \
339 --output-exp
$(MISC
)$/$(@
:b
)_exp.o \
340 $(STDOBJ
) $(SHL
$(TNR
)OBJS
) $(SHL
$(TNR
)LINKRESO
) \
341 `$(TYPE) /dev/null $(SHL$(TNR)LIBS) | $(SED) s\#$(ROUT)\#$(PRJ)$/$(ROUT)\#g` > $(MISC
)$/$(TARGET
).
$(@
:b
)_
$(TNR
).cmd
342 .ENDIF
# "$(DEFLIB$(TNR)NAME)"!=""
343 @echo
$(LINK
) $(LINKFLAGS
) $(LINKFLAGSSHL
) -o
$@ \
344 $(STDOBJ
) $(SHL
$(TNR
)VERSIONOBJ
) $(SHL
$(TNR
)DESCRIPTIONOBJ
) $(SHL
$(TNR
)OBJS
) $(SHL
$(TNR
)LINKRESO
) \
345 `$(TYPE) /dev/null $(SHL$(TNR)LIBS) | $(SED) s\#$(ROUT)\#$(PRJ)$/$(ROUT)\#g` \
346 -Wl
,--exclude-libs
,ALL
$(SHL
$(TNR
)STDLIBS
) $(SHL
$(TNR
)STDSHL
) $(STDSHL
$(TNR
)) \
347 $(MISC
)$/$(@
:b
)_exp.o \
348 -Wl
,-Map
,$(MISC
)$/$(@
:b
).map
>> $(MISC
)$/$(TARGET
).
$(@
:b
)_
$(TNR
).cmd
349 @
$(TYPE
) $(MISC
)$/$(TARGET
).
$(@
:b
)_
$(TNR
).cmd
350 @
+source
$(MISC
)$/$(TARGET
).
$(@
:b
)_
$(TNR
).cmd
353 .IF
"$(SHL$(TNR)USE_EXPORTS)"!="name"
354 .IF
"$(USE_DEFFILE)"!=""
355 $(SHL
$(TNR
)LINKER
) @
$(mktmp \
356 $(SHL
$(TNR
)LINKFLAGS
) \
358 $(SHL
$(TNR
)STACK
) $(SHL
$(TNR
)BASEX
) \
360 -map
:$(MISC
)$/$(@
:b
).map \
361 -def
:$(SHL
$(TNR
)DEF
) \
362 $(USE_
$(TNR
)IMPLIB
) \
364 $(SHL
$(TNR
)VERSIONOBJ
) $(SHL
$(TNR
)OBJS
) \
366 $(SHL
$(TNR
)STDLIBS
) \
367 $(SHL
$(TNR
)STDSHL
) $(STDSHL
$(TNR
)) \
368 $(SHL
$(TNR
)LINKRES
) \
369 ) $(LINKOUTPUTFILTER
)
370 # double check if target was really written... still making sense?
372 @echo linking
$@.manifest ...
373 .IF
"$(VISTA_MANIFEST)"!=""
374 $(IFEXIST
) $@.manifest
$(THEN
) mt.exe
-manifest
$@.manifest
-manifest
$(TRUSTED_MANIFEST_LOCATION
)$/trustedinfo.manifest
-out
:$@.tmanifest
$(EMQ
) $(FI
)
375 $(IFEXIST
) $@.manifest
$(THEN
) mt.exe
-manifest
$@.tmanifest
-outputresource
:$@
$(EMQ
);2 $(FI
)
377 $(IFEXIST
) $@.manifest
$(THEN
) mt.exe
-manifest
$@.manifest
-outputresource
:$@
$(EMQ
);2 $(FI
)
378 .ENDIF
# "$(VISTA_MANIFEST)"!=""
379 $(IFEXIST
) $@.manifest
$(THEN
) $(RM
:s
/+//) $@.manifest
$(FI
)
380 $(IFEXIST
) $@.tmanifest
$(THEN
) $(RM
:s
/+//) $@.tmanifest
$(FI
)
381 .ELSE
# "$(USE_DEFFILE)"!=""
382 $(SHL
$(TNR
)LINKER
) @
$(mktmp
$(SHL
$(TNR
)LINKFLAGS
) \
383 $(LINKFLAGSSHL
) $(SHL
$(TNR
)BASEX
) \
384 $(SHL
$(TNR
)STACK
) -out
:$(SHL
$(TNR
)TARGETN
) \
385 -map
:$(MISC
)$/$(@
:B
).map \
386 $(LB
)$/$(SHL
$(TNR
)IMPLIB
).exp \
388 $(SHL
$(TNR
)OBJS
) $(SHL
$(TNR
)VERSIONOBJ
) \
390 $(SHL
$(TNR
)STDLIBS
) \
391 $(SHL
$(TNR
)STDSHL
) $(STDSHL
$(TNR
)) \
392 $(SHL
$(TNR
)LINKRES
) \
393 ) $(LINKOUTPUTFILTER
)
394 # double check if target was really written... still making sense?
396 @echo linking
$@.manifest ...
397 .IF
"$(VISTA_MANIFEST)"!=""
398 $(IFEXIST
) $@.manifest
$(THEN
) mt.exe
-manifest
$@.manifest
-manifest
$(TRUSTED_MANIFEST_LOCATION
)$/trustedinfo.manifest
-out
:$@.tmanifest
$(EMQ
) $(FI
)
399 $(IFEXIST
) $@.manifest
$(THEN
) mt.exe
-manifest
$@.tmanifest
-outputresource
:$@
$(EMQ
);2 $(FI
)
401 $(IFEXIST
) $@.manifest
$(THEN
) mt.exe
-manifest
$@.manifest
-outputresource
:$@
$(EMQ
);2 $(FI
)
402 .ENDIF
# "$(VISTA_MANIFEST)"!=""
403 $(IFEXIST
) $@.manifest
$(THEN
) $(RM
:s
/+//) $@.manifest
$(FI
)
404 $(IFEXIST
) $@.tmanifest
$(THEN
) $(RM
:s
/+//) $@.tmanifest
$(FI
)
405 .ENDIF
# "$(USE_DEFFILE)"!=""
406 .ELSE
# "$(SHL$(TNR)USE_EXPORTS)"!="name"
407 $(SHL
$(TNR
)LINKER
) @
$(mktmp
$(SHL
$(TNR
)LINKFLAGS
) \
408 $(LINKFLAGSSHL
) $(SHL
$(TNR
)BASEX
) \
409 $(SHL
$(TNR
)STACK
) -out
:$(SHL
$(TNR
)TARGETN
) \
410 -map
:$(MISC
)$/$(@
:B
).map \
411 $(USE_
$(TNR
)IMPLIB
) \
413 $(SHL
$(TNR
)OBJS
) $(SHL
$(TNR
)VERSIONOBJ
)) \
414 $(SHL
$(TNR
)LINKLISTPARAM
) \
415 @
$(mktmp
$(SHL
$(TNR
)STDLIBS
) \
416 $(SHL
$(TNR
)STDSHL
) $(STDSHL
$(TNR
)) \
417 $(SHL
$(TNR
)LINKRES
) \
419 @echo linking
$@.manifest ...
420 .IF
"$(VISTA_MANIFEST)"!=""
421 $(IFEXIST
) $@.manifest
$(THEN
) mt.exe
-manifest
$@.manifest
-manifest
$(TRUSTED_MANIFEST_LOCATION
)$/trustedinfo.manifest
-out
:$@.tmanifest
$(EMQ
) $(FI
)
422 $(IFEXIST
) $@.manifest
$(THEN
) mt.exe
-manifest
$@.tmanifest
-outputresource
:$@
$(EMQ
);2 $(FI
)
424 $(IFEXIST
) $@.manifest
$(THEN
) mt.exe
-manifest
$@.manifest
-outputresource
:$@
$(EMQ
);2 $(FI
)
425 .ENDIF
# "$(VISTA_MANIFEST)"!=""
426 $(IFEXIST
) $@.manifest
$(THEN
) $(RM
:s
/+//) $@.manifest
$(FI
)
427 $(IFEXIST
) $@.tmanifest
$(THEN
) $(RM
:s
/+//) $@.tmanifest
$(FI
)
428 .ENDIF
# "$(SHL$(TNR)USE_EXPORTS)"!="name"
429 .ELSE
# "$(linkinc)"==""
430 -$(RM
) del
$(MISC
)$/$(SHL
$(TNR
)TARGET
).lnk
431 -$(RM
) $(MISC
)$/$(SHL
$(TNR
)TARGET
).lst
433 $(SHL
$(TNR
)LINKFLAGS
) \
434 $(LINKFLAGSSHL
) $(SHL
$(TNR
)BASEX
) \
435 $(SHL
$(TNR
)STACK
) $(MAPFILE
) \
437 $(LB
)$/$(SHL
$(TNR
)IMPLIB
).exp \
440 $(SHL
$(TNR
)STDLIBS
) \
441 $(SHL
$(TNR
)STDSHL
) $(STDSHL
$(TNR
)) \
442 $(SHL
$(TNR
)LINKRES
) \
443 ) >> $(MISC
)$/$(SHL
$(TNR
)TARGET
).lnk
444 $(TYPE
) $(MISC
)$/$(SHL
$(TNR
)TARGETN
:b
)_linkinc.ls
>> $(MISC
)$/$(SHL
$(TNR
)TARGET
).lnk
445 $(SHL
$(TNR
)LINKER
) @
$(MISC
)$/$(SHL
$(TNR
)TARGET
).lnk
446 @echo linking
$@.manifest ...
447 .IF
"$(VISTA_MANIFEST)"!=""
448 $(IFEXIST
) $@.manifest
$(THEN
) mt.exe
-manifest
$@.manifest
-manifest
$(TRUSTED_MANIFEST_LOCATION
)$/trustedinfo.manifest
-out
:$@.tmanifest
$(EMQ
) $(FI
)
449 $(IFEXIST
) $@.manifest
$(THEN
) mt.exe
-manifest
$@.tmanifest
-outputresource
:$@
$(EMQ
);2 $(FI
)
451 $(IFEXIST
) $@.manifest
$(THEN
) mt.exe
-manifest
$@.manifest
-outputresource
:$@
$(EMQ
);2 $(FI
)
452 .ENDIF
# "$(VISTA_MANIFEST)"!=""
453 $(IFEXIST
) $@.manifest
$(THEN
) $(RM
:s
/+//) $@.manifest
$(FI
)
454 $(IFEXIST
) $@.tmanifest
$(THEN
) $(RM
:s
/+//) $@.tmanifest
$(FI
)
455 .ENDIF
# "$(linkinc)"==""
456 .ENDIF
# "$(COM)"=="GCC"
457 .ENDIF
# "$(GUI)" == "WNT"
459 .IF
"$(OS)"=="MACOSX"
460 @
-$(RM
) $(MISC
)$/$(@
:b
).list
461 @
-$(RM
) $(MISC
)$/$(TARGET
).
$(@
:b
)_
$(TNR
).cmd
462 @echo
$(STDSLO
) $(SHL
$(TNR
)OBJS
:s
/.obj
/.o
/) \
463 $(SHL
$(TNR
)VERSIONOBJ
) \
464 `cat /dev/null $(SHL$(TNR)LIBS) | sed s\#$(ROUT)\#$(PRJ)$/$(ROUT)\#g` | tr
-s
" " "\n" > $(MISC
)$/$(@
:b
).list
465 @echo
-n
$(SHL
$(TNR
)LINKER
) $(SHL
$(TNR
)LINKFLAGS
) $(SHL
$(TNR
)VERSIONMAPPARA
) $(LINKFLAGSSHL
) -L
$(PRJ
)$/$(ROUT
)$/lib
$(SOLARLIB
) -o
$@ \
466 $(SHL
$(TNR
)STDLIBS
) $(SHL
$(TNR
)ARCHIVES
) $(SHL
$(TNR
)STDSHL
) $(STDSHL
$(TNR
)) -filelist
$(MISC
)$/$(@
:b
).list
$(LINKOUTPUT_FILTER
) > $(MISC
)$/$(TARGET
).
$(@
:b
)_
$(TNR
).cmd
467 @
$(PERL
) $(SOLARENV
)$/bin
$/macosx-dylib-link-list.pl \
468 `cat $(MISC)$/$(TARGET).$(@:b)_$(TNR).cmd` \
469 >> $(MISC
)$/$(TARGET
).
$(@
:b
)_
$(TNR
).cmd
470 @cat
$(MISC
)$/$(TARGET
).
$(@
:b
)_
$(TNR
).cmd
471 @
+source
$(MISC
)$/$(TARGET
).
$(@
:b
)_
$(TNR
).cmd
472 @
$(PERL
) $(SOLARENV
)$/bin
$/macosx-change-install-names.pl \
473 shl
$(SHL
$(TNR
)RPATH
) $@
474 @echo
"Making: " $(@
:f
).jnilib
475 @macosx-create-bundle
$@
476 .IF
"$(UPDATER)"=="YES"
477 .IF
"$(SHL$(TNR)NOCHECK)"==""
478 $(SOLARENV
)$/bin
$/checkdll.sh
-L
$(LB
) -L
$(SOLARLIBDIR
) $(EXTRALIBPATHS
) $(SHL
$(TNR
)TARGETN
)
479 .ENDIF
# "$(SHL$(TNR)NOCHECK)"!=""
481 .ELSE
# "$(OS)"=="MACOSX"
482 @
-$(RM
) $(MISC
)$/$(TARGET
).
$(@
:b
)_
$(TNR
).cmd
483 @echo
$(SHL
$(TNR
)LINKER
) $(SHL
$(TNR
)LINKFLAGS
) $(SHL
$(TNR
)SONAME
) $(LINKFLAGSSHL
) $(SHL
$(TNR
)VERSIONMAPPARA
) -L
$(PRJ
)$/$(ROUT
)$/lib
$(SOLARLIB
) $(STDSLO
) $(SHL
$(TNR
)OBJS
:s
/.obj
/.o
/) \
484 $(SHL
$(TNR
)VERSIONOBJ
) -o
$@ \
485 `cat /dev/null $(SHL$(TNR)LIBS) | tr -s " " "\n" | $(SED) s\#$(ROUT)\#$(PRJ)$/$(ROUT)\#g` \
486 $(SHL
$(TNR
)STDLIBS
) $(SHL
$(TNR
)ARCHIVES
) $(SHL
$(TNR
)STDSHL
) $(STDSHL
$(TNR
)) $(LINKOUTPUT_FILTER
) > $(MISC
)$/$(TARGET
).
$(@
:b
)_
$(TNR
).cmd
487 .IF
"$(QUIET_BUILD)"==""
488 @cat
$(MISC
)$/$(TARGET
).
$(@
:b
)_
$(TNR
).cmd
490 @
+source
$(MISC
)$/$(TARGET
).
$(@
:b
)_
$(TNR
).cmd
491 .IF
"$(UPDATER)"=="YES"
492 .IF
"$(SHL$(TNR)NOCHECK)"==""
493 $(QUIET_BUILD
) -$(RM
) $(SHL
$(TNR
)TARGETN
:d
)check_
$(SHL
$(TNR
)TARGETN
:f
)
494 $(QUIET_BUILD
) $(RENAME
) $(SHL
$(TNR
)TARGETN
) $(SHL
$(TNR
)TARGETN
:d
)check_
$(SHL
$(TNR
)TARGETN
:f
)
495 .IF
"$(QUIET_BUILD)"==""
496 $(SOLARENV
)$/bin
$/checkdll.sh
-L
$(LB
) -L
$(SOLARLIBDIR
) $(EXTRALIBPATHS
) $(SHL
$(TNR
)TARGETN
:d
)check_
$(SHL
$(TNR
)TARGETN
:f
)
498 $(QUIET_BUILD
) $(SOLARENV
)$/bin
$/checkdll.sh
-L
$(LB
) -L
$(SOLARLIBDIR
) $(EXTRALIBPATHS
) -- -s
$(SHL
$(TNR
)TARGETN
:d
)check_
$(SHL
$(TNR
)TARGETN
:f
)
500 .ENDIF
# "$(SHL$(TNR)NOCHECK)"!=""
501 .ENDIF
# "$(UPDATER)"=="YES"
502 .ENDIF
# "$(OS)"=="MACOSX"
503 .IF
"$(UNIXVERSIONNAMES)"!=""
504 $(QUIET_BUILD
) $(RM
) $(LB
)$/$(SHL
$(TNR
)TARGETN
:b
)
505 $(QUIET_BUILD
) cd
$(LB
) && ln
-s
$(SHL
$(TNR
)TARGETN
:f
) $(SHL
$(TNR
)TARGETN
:b
)
506 .ENDIF
# "$(UNIXVERSIONNAMES)"!=""
507 .IF
"$(QUIET_BUILD)"==""
510 .ENDIF
# "$(GUI)" == "UNX"
512 .IF
"$(GUI)" == "OS2"
514 .IF
"$(SHL$(TNR)DEFAULTRES)"!=""
515 @
+-$(RM
) $(MISC
)$/$(SHL
$(TNR
)DEFAULTRES
:b
).rc
>& $(NULLDEV
)
516 .IF
"$(SHL$(TNR)ICON)" != ""
517 @
-+echo
1 ICON
$(SHL
$(TNR
)ICON
) >> $(MISC
)$/$(SHL
$(TNR
)DEFAULTRES
:b
).rc
519 .IF
"$(use_shl_versions)" != ""
520 .IF
"$(SHL$(TNR)ADD_VERINFO)"!=""
521 @
-+echo
$(EMQ
)#include $(EMQ)"$(SHL$(TNR)ADD_VERINFO)$(EMQ)" >> $(MISC)$/$(SHL$(TNR)DEFAULTRES:b).rc
522 .ENDIF
# "$(SHL$(TNR)ADD_VERINFO)"!=""
523 @
-+echo MENU
1 BEGIN END
>> $(MISC
)$/$(SHL
$(TNR
)DEFAULTRES
:b
).rc
524 # @-+echo $(EMQ)RCDATA 1 { "Build string here" }$(EMQ) >> $(MISC)$/$(SHL$(TNR)DEFAULTRES:b).rc
525 .ENDIF
# "$(use_shl_versions)" != ""
526 # YD 04/07/06 seems null, confuses rc cli: -i $(SOLARTESDIR)
527 $(RC
) -r
-DOS2
$(INCLUDE
) $(RCLINKFLAGS
) $(MISC
)$/$(SHL
$(TNR
)DEFAULTRES
:b
).rc
528 .ENDIF
# "$(SHL$(TNR)DEFAULTRES)"!=""
530 .IF
"$(SHL$(TNR)ALLRES)"!=""
531 .IF
"$(USE_SHELL)"=="4nt"
532 +$(COPY
) $(SHL
$(TNR
)ALLRES
:s
/res
/res
+/) $(SHL
$(TNR
)LINKRES
)
533 .ELSE
# "$(USE_SHELL)"=="4nt"
534 +$(TYPE
) $(SHL
$(TNR
)ALLRES
) > $(SHL
$(TNR
)LINKRES
)
535 .ENDIF
# "$(USE_SHELL)"=="4nt"
536 .ENDIF
# "$(SHL$(TNR)ALLRES)"!=""
538 .IF
"$(USE_DEFFILE)"!=""
540 $(SHL
$(TNR
)LINKER
) $(SHL
$(TNR
)LINKFLAGS
) $(LINKFLAGSSHL
) -o
$@ \
544 -L
$(SOLARVERSION
)$/$(INPATH
)$/lib \
545 $(SHL
$(TNR
)OBJS
) $(SHL
$(TNR
)VERSIONOBJ
) \
547 $(SHL
$(TNR
)STDLIBS
:^
"-l") \
548 $(SHL
$(TNR
)LINKRES
) \
549 $(SHL
$(TNR
)STDSHL
:^
"-l") $(STDSHL
$(TNR
):^
"-l")
551 .ELSE
# "$(USE_DEFFILE)"!=""
553 $(SHL
$(TNR
)LINKER
) -v
$(SHL
$(TNR
)LINKFLAGS
) \
554 $(LINKFLAGSSHL
) $(SHL
$(TNR
)BASEX
) \
555 $(SHL
$(TNR
)STACK
) -o
$(SHL
$(TNR
)TARGETN
) \
559 -L
$(SOLARVERSION
)$/$(INPATH
)$/lib \
560 $(SHL
$(TNR
)OBJS
) $(SHL
$(TNR
)VERSIONOBJ
) \
562 $(SHL
$(TNR
)STDLIBS
:^
"-l") \
563 $(SHL
$(TNR
)LINKRES
) \
564 $(SHL
$(TNR
)STDSHL
:^
"-l") $(STDSHL
$(TNR
):^
"-l") \
566 @
$(LS
) $@
>& $(NULLDEV
)
568 .ENDIF
# "$(USE_DEFFILE)"!=""
570 .IF
"$(SHL$(TNR)TARGET8)" != "$(SHL$(TNR)TARGET)"
571 +$(COPY
) $@
$(@
:d
)$(SHL
$(TNR
)TARGET8
).dll
574 .ENDIF
# "$(GUI)" == "OS2"
578 .IF
"$(NO_TESTS)"==""
580 ALLTAR
: runtest_
$(SHL
$(TNR
)TARGET
)
582 runtest_
$(SHL
$(TNR
)TARGET
) : $(SHL
$(TNR
)TARGETN
)
583 testshl
$(SHL
$(TNR
)TARGETN
) sce
$/$(SHL
$(TNR
)TARGET
).sce
-msg
-skip
584 .ENDIF
# "$(NO_TESTS)"==""
585 .ENDIF
# "$(TESTDIR)"!=""
586 .ENDIF
# "$(SHL$(TNR)TARGETN)"!=""
589 #######################################################
591 #-------------------------------------------------------------------------
593 #######################################################
594 # Anweisungen fuer das Linken
597 .IF
"$(SHL$(TNR)IMPLIBN)" != ""
599 .IF
"$(UPDATER)"=="YES"
600 USELIB
$(TNR
)DEPN
+=$(SHL
$(TNR
)LIBS
)
604 .IF
"$(USE_DEFFILE)"!=""
605 USE_SHL
$(TNR
)TARGET
=$(SHL
$(TNR
)TARGETN
)
608 .IF
"$(GUI)" != "UNX"
609 $(SHL
$(TNR
)IMPLIBN
): \
611 $(USE_SHL
$(TNR
)TARGET
) \
612 $(USELIB
$(TNR
)DEPN
) \
615 $(SHL
$(TNR
)IMPLIBN
): \
618 .IF
"$(QUIET_BUILD)"==""
619 @echo
------------------------------1
621 @echo
"Making: " $(@
:f
)
622 .IF
"$(GUI)" == "WNT"
624 @echo no ImportLibs on mingw
627 .ELSE
# "$(COM)=="GCC"
628 # bei use_deffile implib von linker erstellt
629 .IF
"$(USE_DEFFILE)"==""
630 $(IMPLIB
) $(IMPLIBFLAGS
) @
$(mktmp
-out
:$(SHL
$(TNR
)IMPLIBN
) \
631 -def
:$(SHL
$(TNR
)DEF
) )
632 .ELSE
# "$(USE_DEFFILE)==""
633 @echo build of
$(SHL
$(TNR
)TARGETN
) creates
$@
635 .ENDIF
# "$(USE_DEFFILE)==""
636 .ENDIF
# "$(COM)"=="GCC"
638 .ELIF
"$(GUI)" == "OS2"
640 # touch creates an empty file, but this is not good for emxomfar, so
641 # create a dummy lib here
642 -$(LIBMGR
) $(LIBFLAGS
) $@
$(SHL
$(TNR
)VERSIONOBJ
)
643 +@echo build of
$(SHL
$(TNR
)TARGETN
) creates
$@
646 @echo no ImportLibs on Mac and
*ix
653 #######################################################