xref: /unit/auto/os/conf (revision 510:4979fe09d9cd)
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_LIBRT $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.6"
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        # "-Wl,-E" exports symbols of executable file.
140        NXT_EXEC_LINK="\$(CC) -Wl,-E"
141        NXT_SHARED_LOCAL_EXEC_LINK=
142
143        NXT_LIB_STATIC="libnxt.a"
144        NXT_LIB_SHARED="libnxt.so"
145        NXT_LIB_SHARED_LOCAL="$NXT_BUILD_DIR/libnxt.so"
146
147        NXT_LIBM="-lm"
148        NXT_LIBS="$NXT_LIBRT $NXT_PTHREAD"
149    ;;
150
151    OpenBSD)
152        nxt_have=NXT_OPENBSD . auto/have
153
154        NXT_STATIC_LINK="ar -r -c"
155        NXT_SHARED_LINK="\$(CC) -shared"
156        NXT_SHARED_LOCAL_LINK="\$(CC) -shared"
157        NXT_MODULE_LINK="\$(CC) -shared"
158
159        NXT_EXEC_LINK="\$(CC)"
160        NXT_SHARED_LOCAL_EXEC_LINK=
161
162        NXT_LIB_STATIC="libnxt.a"
163        NXT_LIB_SHARED="libnxt.so"
164        NXT_LIB_SHARED_LOCAL="$NXT_BUILD_DIR/libnxt.so"
165
166        NXT_LIBM="-lm"
167        NXT_LIBS="$NXT_PTHREAD"
168    ;;
169
170    DragonFly)
171        nxt_have=NXT_DRAGONFLY . auto/have
172
173        NXT_STATIC_LINK="ar -r -c"
174        NXT_SHARED_LINK="\$(CC) -shared"
175        NXT_SHARED_LOCAL_LINK="\$(CC) -shared"
176        NXT_MODULE_LINK="\$(CC) -shared"
177
178        # "-Wl,-E" exports symbols of executable file.
179        NXT_EXEC_LINK="\$(CC) -Wl,-E"
180        NXT_SHARED_LOCAL_EXEC_LINK=
181
182        NXT_LIB_STATIC="libnxt.a"
183        NXT_LIB_SHARED="libnxt.so"
184        NXT_LIB_SHARED_LOCAL="$NXT_BUILD_DIR/libnxt.so"
185
186        NXT_LIBM="-lm"
187        NXT_LIBS="$NXT_LIBRT $NXT_PTHREAD"
188    ;;
189
190    AIX)
191        nxt_have=NXT_AIX . auto/have
192
193        NXT_STATIC_LINK="ar -r -c"
194        NXT_SHARED_LINK="\$(CC) -G"
195        NXT_SHARED_LOCAL_LINK="\$(CC) -G"
196        NXT_MODULE_LINK="\$(CC) -G"
197
198        NXT_EXEC_LINK="\$(CC)"
199        NXT_SHARED_LOCAL_EXEC_LINK=
200
201        NXT_LIB_STATIC="libnxt.a"
202        NXT_LIB_SHARED="libnxt.so"
203        NXT_LIB_SHARED_LOCAL="$NXT_BUILD_DIR/libnxt.so"
204
205        NXT_LIBM="-lm"
206        NXT_LIBS="$NXT_PTHREAD"
207    ;;
208
209    HP-UX)
210        nxt_have=NXT_HPUX . auto/have
211
212        NXT_EXEC_LINK="\$(CC)"
213        NXT_SHARED_LOCAL_EXEC_LINK=
214
215        NXT_STATIC_LINK="ar -r -c"
216        NXT_SHARED_LINK="\$(CC) -shared"
217        NXT_SHARED_LOCAL_LINK="\$(CC) -shared"
218        NXT_MODULE_LINK="\$(CC) -shared"
219
220        NXT_LIB_STATIC="libnxt.a"
221        NXT_LIB_SHARED="libnxt.so"
222        NXT_LIB_SHARED_LOCAL="$NXT_BUILD_DIR/libnxt.so"
223
224        NXT_LIBM="-lm"
225        NXT_LIBS="$NXT_PTHREAD $NXT_LIBHG"
226    ;;
227
228    QNX)
229        nxt_have=NXT_QNX . auto/have
230
231        NXT_STATIC_LINK="ar -r -c"
232        NXT_SHARED_LINK="\$(CC) -shared"
233        NXT_SHARED_LOCAL_LINK="\$(CC) -shared"
234        NXT_MODULE_LINK="\$(CC) -shared"
235
236        NXT_EXEC_LINK="\$(CC)"
237        NXT_SHARED_LOCAL_EXEC_LINK=
238
239        NXT_LIB_STATIC="libnxt.a"
240        NXT_LIB_SHARED="libnxt.so"
241        NXT_LIB_SHARED_LOCAL="$NXT_BUILD_DIR/libnxt.so"
242
243        NXT_LIBM="-lm"
244        NXT_LIBS="$NXT_PTHREAD"
245    ;;
246
247    *)
248        NXT_STATIC_LINK="ar -r -c"
249        NXT_SHARED_LINK="\$(CC) -shared"
250        NXT_SHARED_LOCAL_LINK="\$(CC) -shared"
251        NXT_MODULE_LINK="\$(CC) -shared"
252
253        # "-Wl,-E" exports symbols of executable file.
254        NXT_EXEC_LINK="\$(CC) -Wl,-E"
255        NXT_SHARED_LOCAL_EXEC_LINK=
256
257        NXT_LIB_STATIC="libnxt.a"
258        NXT_LIB_SHARED="libnxt.so"
259        NXT_LIB_SHARED_LOCAL="$NXT_BUILD_DIR/libnxt.so"
260
261        NXT_LIBM="-lm"
262        NXT_LIBS="$NXT_LIBRT $NXT_LIBDL $NXT_PTHREAD"
263    ;;
264esac
265