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.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 # "-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 AIX) 171 nxt_have=NXT_AIX . auto/have 172 173 NXT_STATIC_LINK="ar -r -c" 174 NXT_SHARED_LINK="\$(CC) -G" 175 NXT_SHARED_LOCAL_LINK="\$(CC) -G" 176 NXT_MODULE_LINK="\$(CC) -G" 177 178 NXT_EXEC_LINK="\$(CC)" 179 NXT_SHARED_LOCAL_EXEC_LINK= 180 181 NXT_LIB_STATIC="libnxt.a" 182 NXT_LIB_SHARED="libnxt.so" 183 NXT_LIB_SHARED_LOCAL="$NXT_BUILD_DIR/libnxt.so" 184 185 NXT_LIBM="-lm" 186 NXT_LIBS="$NXT_PTHREAD" 187 ;; 188 189 HP-UX) 190 nxt_have=NXT_HPUX . auto/have 191 192 NXT_EXEC_LINK="\$(CC)" 193 NXT_SHARED_LOCAL_EXEC_LINK= 194 195 NXT_STATIC_LINK="ar -r -c" 196 NXT_SHARED_LINK="\$(CC) -shared" 197 NXT_SHARED_LOCAL_LINK="\$(CC) -shared" 198 NXT_MODULE_LINK="\$(CC) -shared" 199 200 NXT_LIB_STATIC="libnxt.a" 201 NXT_LIB_SHARED="libnxt.so" 202 NXT_LIB_SHARED_LOCAL="$NXT_BUILD_DIR/libnxt.so" 203 204 NXT_LIBM="-lm" 205 NXT_LIBS="$NXT_PTHREAD $NXT_LIBHG" 206 ;; 207 208 QNX) 209 nxt_have=NXT_QNX . auto/have 210 211 NXT_STATIC_LINK="ar -r -c" 212 NXT_SHARED_LINK="\$(CC) -shared" 213 NXT_SHARED_LOCAL_LINK="\$(CC) -shared" 214 NXT_MODULE_LINK="\$(CC) -shared" 215 216 NXT_EXEC_LINK="\$(CC)" 217 NXT_SHARED_LOCAL_EXEC_LINK= 218 219 NXT_LIB_STATIC="libnxt.a" 220 NXT_LIB_SHARED="libnxt.so" 221 NXT_LIB_SHARED_LOCAL="$NXT_BUILD_DIR/libnxt.so" 222 223 NXT_LIBM="-lm" 224 NXT_LIBS="$NXT_PTHREAD" 225 ;; 226 227 *) 228 NXT_STATIC_LINK="ar -r -c" 229 NXT_SHARED_LINK="\$(CC) -shared" 230 NXT_SHARED_LOCAL_LINK="\$(CC) -shared" 231 NXT_MODULE_LINK="\$(CC) -shared" 232 233 # "-Wl,-E" exports symbols of executable file. 234 NXT_EXEC_LINK="\$(CC) -Wl,-E" 235 NXT_SHARED_LOCAL_EXEC_LINK= 236 237 NXT_LIB_STATIC="libnxt.a" 238 NXT_LIB_SHARED="libnxt.so" 239 NXT_LIB_SHARED_LOCAL="$NXT_BUILD_DIR/libnxt.so" 240 241 NXT_LIBM="-lm" 242 NXT_LIBS="$NXT_LIBRT $NXT_LIBDL $NXT_PTHREAD" 243 ;; 244esac 245