|
1
|
# Copyright (c) 2010 WorkWare Systems http://www.workware.net.au/ |
|
2
|
# All rights reserved |
|
3
|
|
|
4
|
# @synopsis: |
|
5
|
# |
|
6
|
# The 'cc-shared' module provides support for shared libraries and shared objects. |
|
7
|
# It defines the following variables: |
|
8
|
# |
|
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 |
|
22
|
|
|
23
|
options {} |
|
24
|
|
|
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" |
|
32
|
define SH_SOEXT .so |
|
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 |
|
37
|
|
|
38
|
# Note: This is a helpful reference for identifying the toolchain |
|
39
|
# http://sourceforge.net/apps/mediawiki/predef/index.php?title=Compilers |
|
40
|
|
|
41
|
switch -glob -- [get-define host] { |
|
42
|
*-*-darwin* { |
|
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, |
|
52
|
define SH_SOFULLPATH |
|
53
|
define LD_LIBRARY_PATH DYLD_LIBRARY_PATH |
|
54
|
define STRIPLIBFLAGS -x |
|
55
|
} |
|
56
|
*-*-ming* - *-*-cygwin - *-*-msys { |
|
57
|
define SHOBJ_CFLAGS "" |
|
58
|
define SHOBJ_LDFLAGS -shared |
|
59
|
define SH_CFLAGS "" |
|
60
|
define SH_LDFLAGS -shared |
|
61
|
define SH_LINKRPATH "" |
|
62
|
define SH_LINKFLAGS "" |
|
63
|
define SH_SOEXT .dll |
|
64
|
define SH_SOEXTVER .dll |
|
65
|
define SH_SOPREFIX "" |
|
66
|
define LD_LIBRARY_PATH PATH |
|
67
|
} |
|
68
|
sparc* { |
|
69
|
if {[msg-quiet cc-check-decls __SUNPRO_C]} { |
|
70
|
msg-result "Found sun stdio compiler" |
|
71
|
# 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, |
|
78
|
} |
|
79
|
} |
|
80
|
*-*-solaris* { |
|
81
|
if {[msg-quiet cc-check-decls __SUNPRO_C]} { |
|
82
|
msg-result "Found sun stdio compiler" |
|
83
|
# 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, |
|
90
|
} |
|
91
|
} |
|
92
|
*-*-hpux { |
|
93
|
# XXX: These haven't been tested |
|
94
|
define SHOBJ_CFLAGS "+O3 +z" |
|
95
|
define SHOBJ_LDFLAGS -b |
|
96
|
define SH_CFLAGS +z |
|
97
|
define SH_LINKFLAGS -Wl,+s |
|
98
|
define LD_LIBRARY_PATH SHLIB_PATH |
|
99
|
} |
|
100
|
*-*-haiku { |
|
101
|
define SHOBJ_CFLAGS "" |
|
102
|
define SHOBJ_LDFLAGS -shared |
|
103
|
define SH_CFLAGS "" |
|
104
|
define SH_LDFLAGS -shared |
|
105
|
define SH_LINKFLAGS "" |
|
106
|
define SH_SOPREFIX "" |
|
107
|
define LD_LIBRARY_PATH LIBRARY_PATH |
|
108
|
} |
|
109
|
} |
|
110
|
|
|
111
|
if {![is-defined SHOBJ_LDFLAGS_R]} { |
|
112
|
define SHOBJ_LDFLAGS_R [get-define SHOBJ_LDFLAGS] |
|
113
|
} |
|
114
|
|