1 # Copyright (c) 2010 WorkWare Systems http://www.workware.net.au/
6 # The 'cc-shared' module provides support for shared libraries and shared objects.
7 # It defines the following variables:
9 ## SH_CFLAGS Flags to use compiling sources destined for a shared library
10 ## SH_LDFLAGS Flags to use linking (creating) a shared library
11 ## SH_SOPREFIX Prefix to use to set the soname when creating a shared library
12 ## SH_SOFULLPATH Set to 1 if the shared library soname should include the full install path
13 ## SH_SOEXT Extension for shared libs
14 ## SH_SOEXTVER Format for versioned shared libs - %s = version
15 ## SHOBJ_CFLAGS Flags to use compiling sources destined for a shared object
16 ## SHOBJ_LDFLAGS Flags to use linking a shared object, undefined symbols allowed
17 ## SHOBJ_LDFLAGS_R - as above, but all symbols must be resolved
18 ## SH_LINKRPATH Format for setting the rpath when linking an executable, %s = path
19 ## SH_LINKFLAGS Flags to use linking an executable which will load shared objects
20 ## LD_LIBRARY_PATH Environment variable which specifies path to shared libraries
21 ## STRIPLIBFLAGS Arguments to strip a dynamic library
25 # Defaults: gcc on unix
26 define SHOBJ_CFLAGS
-fPIC
27 define SHOBJ_LDFLAGS
-shared
28 define SH_CFLAGS
-fPIC
29 define SH_LDFLAGS
-shared
30 define SH_LINKFLAGS
-rdynamic
31 define SH_LINKRPATH
"-Wl,-rpath -Wl,%s"
33 define SH_SOEXTVER .so.
%s
34 define SH_SOPREFIX
-Wl,-soname,
35 define LD_LIBRARY_PATH LD_LIBRARY_PATH
36 define STRIPLIBFLAGS
--strip-unneeded
38 # Note: This is a helpful reference for identifying the toolchain
39 # http://sourceforge.net/apps/mediawiki/predef/index.php?title=Compilers
41 switch -glob -- [get-define host
] {
43 define SHOBJ_CFLAGS
"-dynamic -fno-common"
44 define SHOBJ_LDFLAGS
"-bundle -undefined dynamic_lookup"
45 define SHOBJ_LDFLAGS_R
-bundle
46 define SH_CFLAGS
-dynamic
47 define SH_LDFLAGS
-dynamiclib
48 define SH_LINKFLAGS
""
49 define SH_SOEXT .dylib
50 define SH_SOEXTVER .
%s.dylib
51 define SH_SOPREFIX
-Wl,-install_name,
53 define LD_LIBRARY_PATH DYLD_LIBRARY_PATH
54 define STRIPLIBFLAGS
-x
56 *-*-ming* - *-*-cygwin - *-*-msys {
57 define SHOBJ_CFLAGS
""
58 define SHOBJ_LDFLAGS
-shared
60 define SH_LDFLAGS
-shared
61 define SH_LINKRPATH
""
62 define SH_LINKFLAGS
""
64 define SH_SOEXTVER .dll
66 define LD_LIBRARY_PATH PATH
69 if {[msg-quiet cc-check-decls __SUNPRO_C
]} {
70 msg-result
"Found sun stdio compiler"
72 # XXX: These haven't been fully tested.
73 define SHOBJ_CFLAGS
-KPIC
74 define SHOBJ_LDFLAGS
"-G"
75 define SH_CFLAGS
-KPIC
76 define SH_LINKFLAGS
-Wl,-export-dynamic
77 define SH_SOPREFIX
-Wl,-h,
81 if {[msg-quiet cc-check-decls __SUNPRO_C
]} {
82 msg-result
"Found sun stdio compiler"
84 # XXX: These haven't been fully tested.
85 define SHOBJ_CFLAGS
-KPIC
86 define SHOBJ_LDFLAGS
"-G"
87 define SH_CFLAGS
-KPIC
88 define SH_LINKFLAGS
-Wl,-export-dynamic
89 define SH_SOPREFIX
-Wl,-h,
93 # XXX: These haven't been tested
94 define SHOBJ_CFLAGS
"+O3 +z"
95 define SHOBJ_LDFLAGS
-b
97 define SH_LINKFLAGS
-Wl,+s
98 define LD_LIBRARY_PATH SHLIB_PATH
101 define SHOBJ_CFLAGS
""
102 define SHOBJ_LDFLAGS
-shared
104 define SH_LDFLAGS
-shared
105 define SH_LINKFLAGS
""
106 define SH_SOPREFIX
""
107 define LD_LIBRARY_PATH LIBRARY_PATH
111 if {![is-defined SHOBJ_LDFLAGS_R
]} {
112 define SHOBJ_LDFLAGS_R
[get-define SHOBJ_LDFLAGS
]