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