xref: /unit/auto/os/conf (revision 709:e1af38445a13)
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        NXT_STATIC_LINK="ar -r -c"
104        NXT_SHARED_LINK="\$(CC) -dynamiclib"
105        NXT_SHARED_LOCAL_LINK="\$(CC) -dynamiclib \
106                               -install_name @executable_path/libnxt.dylib"
107        NXT_MODULE_LINK="\$(CC) -dynamiclib -undefined dynamic_lookup"
108
109        NXT_EXEC_LINK="\$(CC)"
110        NXT_SHARED_LOCAL_EXEC_LINK=
111
112        NXT_LIB_STATIC="libnxt.a"
113        NXT_LIB_SHARED="libnxt.dylib"
114        NXT_LIB_SHARED_LOCAL="$NXT_BUILD_DIR/libnxt.dylib"
115
116        # MacOSX libm.dylib is a symlink to libSystem.dylib.
117        NXT_LIBM=
118        NXT_LIBS=
119
120    ;;
121
122    NetBSD)
123        nxt_have=NXT_NETBSD . auto/have
124
125        NXT_STATIC_LINK="ar -r -c"
126        NXT_SHARED_LINK="\$(CC) -shared"
127        NXT_SHARED_LOCAL_LINK="\$(CC) -shared"
128        NXT_MODULE_LINK="\$(CC) -shared"
129
130        # "-Wl,-E" exports symbols of executable file.
131        NXT_EXEC_LINK="\$(CC) -Wl,-E"
132        NXT_SHARED_LOCAL_EXEC_LINK=
133
134        NXT_LIB_STATIC="libnxt.a"
135        NXT_LIB_SHARED="libnxt.so"
136        NXT_LIB_SHARED_LOCAL="$NXT_BUILD_DIR/libnxt.so"
137
138        NXT_LIBM="-lm"
139        NXT_LIBS="$NXT_LIBRT $NXT_PTHREAD"
140    ;;
141
142    OpenBSD)
143        nxt_have=NXT_OPENBSD . auto/have
144
145        NXT_STATIC_LINK="ar -r -c"
146        NXT_SHARED_LINK="\$(CC) -shared"
147        NXT_SHARED_LOCAL_LINK="\$(CC) -shared"
148        NXT_MODULE_LINK="\$(CC) -shared"
149
150        # "-Wl,-E" exports symbols of executable file.
151        NXT_EXEC_LINK="\$(CC) -Wl,-E"
152        NXT_SHARED_LOCAL_EXEC_LINK=
153
154        NXT_LIB_STATIC="libnxt.a"
155        NXT_LIB_SHARED="libnxt.so"
156        NXT_LIB_SHARED_LOCAL="$NXT_BUILD_DIR/libnxt.so"
157
158        NXT_LIBM="-lm"
159        NXT_LIBS="$NXT_PTHREAD"
160    ;;
161
162    DragonFly)
163        nxt_have=NXT_DRAGONFLY . auto/have
164
165        NXT_STATIC_LINK="ar -r -c"
166        NXT_SHARED_LINK="\$(CC) -shared"
167        NXT_SHARED_LOCAL_LINK="\$(CC) -shared"
168        NXT_MODULE_LINK="\$(CC) -shared"
169
170        # "-Wl,-E" exports symbols of executable file.
171        NXT_EXEC_LINK="\$(CC) -Wl,-E"
172        NXT_SHARED_LOCAL_EXEC_LINK=
173
174        NXT_LIB_STATIC="libnxt.a"
175        NXT_LIB_SHARED="libnxt.so"
176        NXT_LIB_SHARED_LOCAL="$NXT_BUILD_DIR/libnxt.so"
177
178        NXT_LIBM="-lm"
179        NXT_LIBS="$NXT_LIBRT $NXT_PTHREAD"
180    ;;
181
182    AIX)
183        nxt_have=NXT_AIX . auto/have
184
185        NXT_STATIC_LINK="ar -r -c"
186        NXT_SHARED_LINK="\$(CC) -G"
187        NXT_SHARED_LOCAL_LINK="\$(CC) -G"
188        NXT_MODULE_LINK="\$(CC) -G"
189
190        NXT_EXEC_LINK="\$(CC)"
191        NXT_SHARED_LOCAL_EXEC_LINK=
192
193        NXT_LIB_STATIC="libnxt.a"
194        NXT_LIB_SHARED="libnxt.so"
195        NXT_LIB_SHARED_LOCAL="$NXT_BUILD_DIR/libnxt.so"
196
197        NXT_LIBM="-lm"
198        NXT_LIBS="$NXT_PTHREAD"
199    ;;
200
201    HP-UX)
202        nxt_have=NXT_HPUX . auto/have
203
204        NXT_EXEC_LINK="\$(CC)"
205        NXT_SHARED_LOCAL_EXEC_LINK=
206
207        NXT_STATIC_LINK="ar -r -c"
208        NXT_SHARED_LINK="\$(CC) -shared"
209        NXT_SHARED_LOCAL_LINK="\$(CC) -shared"
210        NXT_MODULE_LINK="\$(CC) -shared"
211
212        NXT_LIB_STATIC="libnxt.a"
213        NXT_LIB_SHARED="libnxt.so"
214        NXT_LIB_SHARED_LOCAL="$NXT_BUILD_DIR/libnxt.so"
215
216        NXT_LIBM="-lm"
217        NXT_LIBS="$NXT_PTHREAD $NXT_LIBHG"
218    ;;
219
220    QNX)
221        nxt_have=NXT_QNX . auto/have
222
223        NXT_STATIC_LINK="ar -r -c"
224        NXT_SHARED_LINK="\$(CC) -shared"
225        NXT_SHARED_LOCAL_LINK="\$(CC) -shared"
226        NXT_MODULE_LINK="\$(CC) -shared"
227
228        NXT_EXEC_LINK="\$(CC)"
229        NXT_SHARED_LOCAL_EXEC_LINK=
230
231        NXT_LIB_STATIC="libnxt.a"
232        NXT_LIB_SHARED="libnxt.so"
233        NXT_LIB_SHARED_LOCAL="$NXT_BUILD_DIR/libnxt.so"
234
235        NXT_LIBM="-lm"
236        NXT_LIBS="$NXT_PTHREAD"
237    ;;
238
239    *)
240        NXT_STATIC_LINK="ar -r -c"
241        NXT_SHARED_LINK="\$(CC) -shared"
242        NXT_SHARED_LOCAL_LINK="\$(CC) -shared"
243        NXT_MODULE_LINK="\$(CC) -shared"
244
245        # "-Wl,-E" exports symbols of executable file.
246        NXT_EXEC_LINK="\$(CC) -Wl,-E"
247        NXT_SHARED_LOCAL_EXEC_LINK=
248
249        NXT_LIB_STATIC="libnxt.a"
250        NXT_LIB_SHARED="libnxt.so"
251        NXT_LIB_SHARED_LOCAL="$NXT_BUILD_DIR/libnxt.so"
252
253        NXT_LIBM="-lm"
254        NXT_LIBS="$NXT_LIBRT $NXT_LIBDL $NXT_PTHREAD"
255    ;;
256esac
257