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