xref: /unit/auto/os/conf (revision 216:07257705cd64)
1
2# Copyright (C) Igor Sysoev
3# Copyright (C) NGINX, Inc.
4
5
6# To support dynamically loaded modules libnxt library must be a shared
7# object itself because an application linked with static libnxt library
8# may lack code required by the modules.  Dynamic linkers allow to specify
9# relative path in SONAME library entry or in RPATH executable entry.
10#
11# Solaris 7, Linux 2.2, and FreeBSD 7.3 support $ORIGIN variable.
12# MacOSX supports @executable_path variable.
13# NetBSD does not support $ORIGIN variable.
14#
15# "ar -r" is enough to create a static library, ranlib is surplus.
16# "ar -c" disables the "creating archive" warning.
17
18
19case "$NXT_SYSTEM" in
20
21    Linux)
22        nxt_have=NXT_LINUX . auto/have
23
24        NXT_STATIC_LINK="ar -r -c"
25        NXT_SHARED_LINK="\$(CC) -shared -Wl,-soname,libnxt.so"
26        NXT_SHARED_LOCAL_LINK="\$(CC) -shared \
27                               -Wl,-soname,\\\$\$ORIGIN/libnxt.so"
28        NXT_MODULE_LINK="\$(CC) -shared"
29
30        # "-Wl,-E" exports symbols of executable file.
31        NXT_EXEC_LINK="\$(CC) -Wl,-E"
32        NXT_SHARED_LOCAL_EXEC_LINK=
33
34        NXT_LIB_STATIC="libnxt.a"
35        NXT_LIB_SHARED="libnxt.so"
36        NXT_LIB_SHARED_LOCAL="$NXT_BUILD_DIR/libnxt.so"
37
38        NXT_LIBM="-lm"
39        NXT_LIBS="$NXT_LIBRT $NXT_LIBDL $NXT_PTHREAD"
40    ;;
41
42    FreeBSD)
43        nxt_have=NXT_FREEBSD . auto/have
44
45        NXT_STATIC_LINK="ar -r -c"
46        NXT_SHARED_LINK="\$(CC) -shared -Wl,-soname,libnxt.so"
47        NXT_SHARED_LOCAL_LINK="\$(CC) -shared \
48                               -Wl,-soname,\\\$\$ORIGIN/libnxt.so"
49        NXT_MODULE_LINK="\$(CC) -shared"
50
51        # "-Wl,-E" exports symbols of executable file.
52        NXT_EXEC_LINK="\$(CC) -Wl,-E"
53        # "-Wl,-z,origin" enables $ORIGIN processing.
54        NXT_SHARED_LOCAL_EXEC_LINK="-Wl,-z,origin"
55
56        NXT_LIB_STATIC="libnxt.a"
57        NXT_LIB_SHARED="libnxt.so"
58        NXT_LIB_SHARED_LOCAL="$NXT_BUILD_DIR/libnxt.so"
59
60        NXT_LIBM="-lm"
61        NXT_LIBS="$NXT_PTHREAD"
62    ;;
63
64    SunOS)
65        nxt_have=NXT_SOLARIS . auto/have
66
67        case "$NXT_CC_NAME" in
68
69            SunC):
70                NXT_STATIC_LINK="ar -r -c"
71                NXT_SHARED_LINK="\$(CC) -G -h libnxt.so"
72                NXT_SHARED_LOCAL_LINK="\$(CC) -G -h \\\$\$ORIGIN/libnxt.so"
73                NXT_MODULE_LINK="\$(CC) -G"
74            ;;
75
76            *)
77                NXT_STATIC_LINK="ar -r -c"
78                NXT_SHARED_LINK="\$(CC) -shared -Wl,-soname,libnxt.so"
79                NXT_SHARED_LOCAL_LINK="\$(CC) -shared \
80                                       -Wl,-soname,\\\$\$ORIGIN/libnxt.so"
81                NXT_MODULE_LINK="\$(CC) -shared"
82            ;;
83        esac
84
85        NXT_LIB_STATIC="libnxt.a"
86        NXT_LIB_SHARED="libnxt.so"
87        NXT_LIB_SHARED_LOCAL="$NXT_BUILD_DIR/libnxt.so"
88
89        NXT_EXEC_LINK="\$(CC)"
90        NXT_SHARED_LOCAL_EXEC_LINK=
91
92        NXT_LIBM="-lm"
93        NXT_LIBS="-lsocket $NXT_LIBSENDFILE"
94        NXT_LIBS="$NXT_LIBS $NXT_LIBRT $NXT_LIBDL $NXT_PTHREAD"
95    ;;
96
97    Darwin)
98        nxt_have=NXT_MACOSX . auto/have
99
100        # HFS+ volumes are caseless by default.
101        nxt_have=NXT_HAVE_CASELESS_FILESYSTEM . auto/have
102
103        # MacOSX 10.6 (Snow Leopard) has deprecated ucontext(3).
104        # MacOSX 10.7 (Lion) has deprecated system OpenSSL.
105        # MAC_OS_X_VERSION_MIN_REQUIRED macro does not help.
106        # "-rpath" is supported since MacOSX 10.5 (Leopard).
107        NXT_CFLAGS="$NXT_CFLAGS -mmacosx-version-min=10.5"
108
109        NXT_STATIC_LINK="ar -r -c"
110        NXT_SHARED_LINK="\$(CC) -dynamiclib"
111        NXT_SHARED_LOCAL_LINK="\$(CC) -dynamiclib \
112                               -install_name @executable_path/libnxt.dylib"
113
114        # Prior to MacOSX 10.5 (Leopard) only bundles could be unloaded.
115        # NXT_MODULE_LINK="\$(CC) -bundle -undefined dynamic_lookup"
116        NXT_MODULE_LINK="\$(CC) -dynamiclib -undefined dynamic_lookup"
117
118        NXT_EXEC_LINK="\$(CC)"
119        NXT_SHARED_LOCAL_EXEC_LINK=
120
121        NXT_LIB_STATIC="libnxt.a"
122        NXT_LIB_SHARED="libnxt.dylib"
123        NXT_LIB_SHARED_LOCAL="$NXT_BUILD_DIR/libnxt.dylib"
124
125        # MacOSX libm.dylib is a symlink to libSystem.dylib.
126        NXT_LIBM=
127        NXT_LIBS=
128
129    ;;
130
131    NetBSD)
132        nxt_have=NXT_NETBSD . auto/have
133
134        NXT_STATIC_LINK="ar -r -c"
135        NXT_SHARED_LINK="\$(CC) -shared"
136        NXT_SHARED_LOCAL_LINK="\$(CC) -shared"
137        NXT_MODULE_LINK="\$(CC) -shared"
138
139        NXT_EXEC_LINK="\$(CC)"
140        NXT_SHARED_LOCAL_EXEC_LINK=
141
142        NXT_LIB_STATIC="libnxt.a"
143        NXT_LIB_SHARED="libnxt.so"
144        NXT_LIB_SHARED_LOCAL="$NXT_BUILD_DIR/libnxt.so"
145
146        NXT_LIBM="-lm"
147        NXT_LIBS="$NXT_PTHREAD"
148    ;;
149
150    OpenBSD)
151        nxt_have=NXT_OPENBSD . auto/have
152
153        NXT_STATIC_LINK="ar -r -c"
154        NXT_SHARED_LINK="\$(CC) -shared"
155        NXT_SHARED_LOCAL_LINK="\$(CC) -shared"
156        NXT_MODULE_LINK="\$(CC) -shared"
157
158        NXT_EXEC_LINK="\$(CC)"
159        NXT_SHARED_LOCAL_EXEC_LINK=
160
161        NXT_LIB_STATIC="libnxt.a"
162        NXT_LIB_SHARED="libnxt.so"
163        NXT_LIB_SHARED_LOCAL="$NXT_BUILD_DIR/libnxt.so"
164
165        NXT_LIBM="-lm"
166        NXT_LIBS="$NXT_PTHREAD"
167    ;;
168
169    AIX)
170        nxt_have=NXT_AIX . auto/have
171
172        NXT_STATIC_LINK="ar -r -c"
173        NXT_SHARED_LINK="\$(CC) -G"
174        NXT_SHARED_LOCAL_LINK="\$(CC) -G"
175        NXT_MODULE_LINK="\$(CC) -G"
176
177        NXT_EXEC_LINK="\$(CC)"
178        NXT_SHARED_LOCAL_EXEC_LINK=
179
180        NXT_LIB_STATIC="libnxt.a"
181        NXT_LIB_SHARED="libnxt.so"
182        NXT_LIB_SHARED_LOCAL="$NXT_BUILD_DIR/libnxt.so"
183
184        NXT_LIBM="-lm"
185        NXT_LIBS="$NXT_PTHREAD"
186    ;;
187
188    HP-UX)
189        nxt_have=NXT_HPUX . auto/have
190
191        NXT_EXEC_LINK="\$(CC)"
192        NXT_SHARED_LOCAL_EXEC_LINK=
193
194        NXT_STATIC_LINK="ar -r -c"
195        NXT_SHARED_LINK="\$(CC) -shared"
196        NXT_SHARED_LOCAL_LINK="\$(CC) -shared"
197        NXT_MODULE_LINK="\$(CC) -shared"
198
199        NXT_LIB_STATIC="libnxt.a"
200        NXT_LIB_SHARED="libnxt.so"
201        NXT_LIB_SHARED_LOCAL="$NXT_BUILD_DIR/libnxt.so"
202
203        NXT_LIBM="-lm"
204        NXT_LIBS="$NXT_PTHREAD $NXT_LIBHG"
205    ;;
206
207    QNX)
208        nxt_have=NXT_QNX . auto/have
209
210        NXT_STATIC_LINK="ar -r -c"
211        NXT_SHARED_LINK="\$(CC) -shared"
212        NXT_SHARED_LOCAL_LINK="\$(CC) -shared"
213        NXT_MODULE_LINK="\$(CC) -shared"
214
215        NXT_EXEC_LINK="\$(CC)"
216        NXT_SHARED_LOCAL_EXEC_LINK=
217
218        NXT_LIB_STATIC="libnxt.a"
219        NXT_LIB_SHARED="libnxt.so"
220        NXT_LIB_SHARED_LOCAL="$NXT_BUILD_DIR/libnxt.so"
221
222        NXT_LIBM="-lm"
223        NXT_LIBS="$NXT_PTHREAD"
224    ;;
225
226    *)
227        NXT_STATIC_LINK="ar -r -c"
228        NXT_SHARED_LINK="\$(CC) -shared"
229        NXT_SHARED_LOCAL_LINK="\$(CC) -shared"
230        NXT_MODULE_LINK="\$(CC) -shared"
231
232        # "-Wl,-E" exports symbols of executable file.
233        NXT_EXEC_LINK="\$(CC) -Wl,-E"
234        NXT_SHARED_LOCAL_EXEC_LINK=
235
236        NXT_LIB_STATIC="libnxt.a"
237        NXT_LIB_SHARED="libnxt.so"
238        NXT_LIB_SHARED_LOCAL="$NXT_BUILD_DIR/libnxt.so"
239
240        NXT_LIBM="-lm"
241        NXT_LIBS="$NXT_LIBRT $NXT_LIBDL $NXT_PTHREAD"
242    ;;
243esac
244