10Sigor@sysoev.ru 20Sigor@sysoev.ru# Copyright (C) Igor Sysoev 30Sigor@sysoev.ru# Copyright (C) NGINX, Inc. 40Sigor@sysoev.ru 50Sigor@sysoev.ru 60Sigor@sysoev.ru# To support dynamically loaded modules libnxt library must be a shared 70Sigor@sysoev.ru# object itself because an application linked with static libnxt library 80Sigor@sysoev.ru# may lack code required by the modules. Dynamic linkers allow to specify 90Sigor@sysoev.ru# relative path in SONAME library entry or in RPATH executable entry. 100Sigor@sysoev.ru# 110Sigor@sysoev.ru# Solaris 7, Linux 2.2, and FreeBSD 7.3 support $ORIGIN variable. 120Sigor@sysoev.ru# MacOSX supports @executable_path variable. 130Sigor@sysoev.ru# NetBSD does not support $ORIGIN variable. 140Sigor@sysoev.ru# 150Sigor@sysoev.ru# "ar -r" is enough to create a static library, ranlib is surplus. 160Sigor@sysoev.ru# "ar -c" disables the "creating archive" warning. 170Sigor@sysoev.ru 180Sigor@sysoev.ru 190Sigor@sysoev.rucase "$NXT_SYSTEM" in 200Sigor@sysoev.ru 210Sigor@sysoev.ru Linux) 220Sigor@sysoev.ru nxt_have=NXT_LINUX . auto/have 230Sigor@sysoev.ru 240Sigor@sysoev.ru NXT_STATIC_LINK="ar -r -c" 250Sigor@sysoev.ru NXT_SHARED_LINK="\$(CC) -shared -Wl,-soname,libnxt.so" 260Sigor@sysoev.ru NXT_SHARED_LOCAL_LINK="\$(CC) -shared \ 270Sigor@sysoev.ru -Wl,-soname,\\\$\$ORIGIN/libnxt.so" 280Sigor@sysoev.ru NXT_MODULE_LINK="\$(CC) -shared" 290Sigor@sysoev.ru 300Sigor@sysoev.ru # "-Wl,-E" exports symbols of executable file. 310Sigor@sysoev.ru NXT_EXEC_LINK="\$(CC) -Wl,-E" 320Sigor@sysoev.ru NXT_SHARED_LOCAL_EXEC_LINK= 330Sigor@sysoev.ru 340Sigor@sysoev.ru NXT_LIB_STATIC="libnxt.a" 350Sigor@sysoev.ru NXT_LIB_SHARED="libnxt.so" 360Sigor@sysoev.ru NXT_LIB_SHARED_LOCAL="$NXT_BUILD_DIR/libnxt.so" 370Sigor@sysoev.ru 380Sigor@sysoev.ru NXT_LIBM="-lm" 390Sigor@sysoev.ru NXT_LIBS="$NXT_LIBRT $NXT_LIBDL $NXT_PTHREAD" 400Sigor@sysoev.ru ;; 410Sigor@sysoev.ru 420Sigor@sysoev.ru FreeBSD) 430Sigor@sysoev.ru nxt_have=NXT_FREEBSD . auto/have 440Sigor@sysoev.ru 450Sigor@sysoev.ru NXT_STATIC_LINK="ar -r -c" 460Sigor@sysoev.ru NXT_SHARED_LINK="\$(CC) -shared -Wl,-soname,libnxt.so" 470Sigor@sysoev.ru NXT_SHARED_LOCAL_LINK="\$(CC) -shared \ 480Sigor@sysoev.ru -Wl,-soname,\\\$\$ORIGIN/libnxt.so" 490Sigor@sysoev.ru NXT_MODULE_LINK="\$(CC) -shared" 500Sigor@sysoev.ru 510Sigor@sysoev.ru # "-Wl,-E" exports symbols of executable file. 520Sigor@sysoev.ru NXT_EXEC_LINK="\$(CC) -Wl,-E" 530Sigor@sysoev.ru # "-Wl,-z,origin" enables $ORIGIN processing. 540Sigor@sysoev.ru NXT_SHARED_LOCAL_EXEC_LINK="-Wl,-z,origin" 550Sigor@sysoev.ru 560Sigor@sysoev.ru NXT_LIB_STATIC="libnxt.a" 570Sigor@sysoev.ru NXT_LIB_SHARED="libnxt.so" 580Sigor@sysoev.ru NXT_LIB_SHARED_LOCAL="$NXT_BUILD_DIR/libnxt.so" 590Sigor@sysoev.ru 600Sigor@sysoev.ru NXT_LIBM="-lm" 610Sigor@sysoev.ru NXT_LIBS="$NXT_PTHREAD" 620Sigor@sysoev.ru ;; 630Sigor@sysoev.ru 640Sigor@sysoev.ru SunOS) 650Sigor@sysoev.ru nxt_have=NXT_SOLARIS . auto/have 660Sigor@sysoev.ru 670Sigor@sysoev.ru case "$NXT_CC_NAME" in 680Sigor@sysoev.ru 690Sigor@sysoev.ru SunC): 700Sigor@sysoev.ru NXT_STATIC_LINK="ar -r -c" 710Sigor@sysoev.ru NXT_SHARED_LINK="\$(CC) -G -h libnxt.so" 720Sigor@sysoev.ru NXT_SHARED_LOCAL_LINK="\$(CC) -G -h \\\$\$ORIGIN/libnxt.so" 730Sigor@sysoev.ru NXT_MODULE_LINK="\$(CC) -G" 740Sigor@sysoev.ru ;; 750Sigor@sysoev.ru 760Sigor@sysoev.ru *) 770Sigor@sysoev.ru NXT_STATIC_LINK="ar -r -c" 780Sigor@sysoev.ru NXT_SHARED_LINK="\$(CC) -shared -Wl,-soname,libnxt.so" 790Sigor@sysoev.ru NXT_SHARED_LOCAL_LINK="\$(CC) -shared \ 800Sigor@sysoev.ru -Wl,-soname,\\\$\$ORIGIN/libnxt.so" 810Sigor@sysoev.ru NXT_MODULE_LINK="\$(CC) -shared" 820Sigor@sysoev.ru ;; 830Sigor@sysoev.ru esac 840Sigor@sysoev.ru 850Sigor@sysoev.ru NXT_LIB_STATIC="libnxt.a" 860Sigor@sysoev.ru NXT_LIB_SHARED="libnxt.so" 870Sigor@sysoev.ru NXT_LIB_SHARED_LOCAL="$NXT_BUILD_DIR/libnxt.so" 880Sigor@sysoev.ru 890Sigor@sysoev.ru NXT_EXEC_LINK="\$(CC)" 900Sigor@sysoev.ru NXT_SHARED_LOCAL_EXEC_LINK= 910Sigor@sysoev.ru 920Sigor@sysoev.ru NXT_LIBM="-lm" 930Sigor@sysoev.ru NXT_LIBS="-lsocket $NXT_LIBSENDFILE" 940Sigor@sysoev.ru NXT_LIBS="$NXT_LIBS $NXT_LIBRT $NXT_LIBDL $NXT_PTHREAD" 950Sigor@sysoev.ru ;; 960Sigor@sysoev.ru 970Sigor@sysoev.ru Darwin) 980Sigor@sysoev.ru nxt_have=NXT_MACOSX . auto/have 990Sigor@sysoev.ru 1000Sigor@sysoev.ru # HFS+ volumes are caseless by default. 1010Sigor@sysoev.ru nxt_have=NXT_HAVE_CASELESS_FILESYSTEM . auto/have 1020Sigor@sysoev.ru 1030Sigor@sysoev.ru # MacOSX 10.6 (Snow Leopard) has deprecated ucontext(3). 1040Sigor@sysoev.ru # MacOSX 10.7 (Lion) has deprecated system OpenSSL. 1050Sigor@sysoev.ru # MAC_OS_X_VERSION_MIN_REQUIRED macro does not help. 106*216Sigor@sysoev.ru # "-rpath" is supported since MacOSX 10.5 (Leopard). 107*216Sigor@sysoev.ru NXT_CFLAGS="$NXT_CFLAGS -mmacosx-version-min=10.5" 1080Sigor@sysoev.ru 1090Sigor@sysoev.ru NXT_STATIC_LINK="ar -r -c" 1100Sigor@sysoev.ru NXT_SHARED_LINK="\$(CC) -dynamiclib" 1110Sigor@sysoev.ru NXT_SHARED_LOCAL_LINK="\$(CC) -dynamiclib \ 1120Sigor@sysoev.ru -install_name @executable_path/libnxt.dylib" 1130Sigor@sysoev.ru 1140Sigor@sysoev.ru # Prior to MacOSX 10.5 (Leopard) only bundles could be unloaded. 115*216Sigor@sysoev.ru # NXT_MODULE_LINK="\$(CC) -bundle -undefined dynamic_lookup" 116*216Sigor@sysoev.ru NXT_MODULE_LINK="\$(CC) -dynamiclib -undefined dynamic_lookup" 1170Sigor@sysoev.ru 1180Sigor@sysoev.ru NXT_EXEC_LINK="\$(CC)" 1190Sigor@sysoev.ru NXT_SHARED_LOCAL_EXEC_LINK= 1200Sigor@sysoev.ru 1210Sigor@sysoev.ru NXT_LIB_STATIC="libnxt.a" 1220Sigor@sysoev.ru NXT_LIB_SHARED="libnxt.dylib" 1230Sigor@sysoev.ru NXT_LIB_SHARED_LOCAL="$NXT_BUILD_DIR/libnxt.dylib" 1240Sigor@sysoev.ru 1250Sigor@sysoev.ru # MacOSX libm.dylib is a symlink to libSystem.dylib. 1260Sigor@sysoev.ru NXT_LIBM= 1270Sigor@sysoev.ru NXT_LIBS= 1280Sigor@sysoev.ru 1290Sigor@sysoev.ru ;; 1300Sigor@sysoev.ru 1310Sigor@sysoev.ru NetBSD) 1320Sigor@sysoev.ru nxt_have=NXT_NETBSD . auto/have 1330Sigor@sysoev.ru 1340Sigor@sysoev.ru NXT_STATIC_LINK="ar -r -c" 1350Sigor@sysoev.ru NXT_SHARED_LINK="\$(CC) -shared" 1360Sigor@sysoev.ru NXT_SHARED_LOCAL_LINK="\$(CC) -shared" 1370Sigor@sysoev.ru NXT_MODULE_LINK="\$(CC) -shared" 1380Sigor@sysoev.ru 1390Sigor@sysoev.ru NXT_EXEC_LINK="\$(CC)" 1400Sigor@sysoev.ru NXT_SHARED_LOCAL_EXEC_LINK= 1410Sigor@sysoev.ru 1420Sigor@sysoev.ru NXT_LIB_STATIC="libnxt.a" 1430Sigor@sysoev.ru NXT_LIB_SHARED="libnxt.so" 1440Sigor@sysoev.ru NXT_LIB_SHARED_LOCAL="$NXT_BUILD_DIR/libnxt.so" 1450Sigor@sysoev.ru 1460Sigor@sysoev.ru NXT_LIBM="-lm" 1470Sigor@sysoev.ru NXT_LIBS="$NXT_PTHREAD" 1480Sigor@sysoev.ru ;; 1490Sigor@sysoev.ru 1500Sigor@sysoev.ru OpenBSD) 1510Sigor@sysoev.ru nxt_have=NXT_OPENBSD . auto/have 1520Sigor@sysoev.ru 1530Sigor@sysoev.ru NXT_STATIC_LINK="ar -r -c" 1540Sigor@sysoev.ru NXT_SHARED_LINK="\$(CC) -shared" 1550Sigor@sysoev.ru NXT_SHARED_LOCAL_LINK="\$(CC) -shared" 1560Sigor@sysoev.ru NXT_MODULE_LINK="\$(CC) -shared" 1570Sigor@sysoev.ru 1580Sigor@sysoev.ru NXT_EXEC_LINK="\$(CC)" 1590Sigor@sysoev.ru NXT_SHARED_LOCAL_EXEC_LINK= 1600Sigor@sysoev.ru 1610Sigor@sysoev.ru NXT_LIB_STATIC="libnxt.a" 1620Sigor@sysoev.ru NXT_LIB_SHARED="libnxt.so" 1630Sigor@sysoev.ru NXT_LIB_SHARED_LOCAL="$NXT_BUILD_DIR/libnxt.so" 1640Sigor@sysoev.ru 1650Sigor@sysoev.ru NXT_LIBM="-lm" 1660Sigor@sysoev.ru NXT_LIBS="$NXT_PTHREAD" 1670Sigor@sysoev.ru ;; 1680Sigor@sysoev.ru 1690Sigor@sysoev.ru AIX) 1700Sigor@sysoev.ru nxt_have=NXT_AIX . auto/have 1710Sigor@sysoev.ru 1720Sigor@sysoev.ru NXT_STATIC_LINK="ar -r -c" 1730Sigor@sysoev.ru NXT_SHARED_LINK="\$(CC) -G" 1740Sigor@sysoev.ru NXT_SHARED_LOCAL_LINK="\$(CC) -G" 1750Sigor@sysoev.ru NXT_MODULE_LINK="\$(CC) -G" 1760Sigor@sysoev.ru 1770Sigor@sysoev.ru NXT_EXEC_LINK="\$(CC)" 1780Sigor@sysoev.ru NXT_SHARED_LOCAL_EXEC_LINK= 1790Sigor@sysoev.ru 1800Sigor@sysoev.ru NXT_LIB_STATIC="libnxt.a" 1810Sigor@sysoev.ru NXT_LIB_SHARED="libnxt.so" 1820Sigor@sysoev.ru NXT_LIB_SHARED_LOCAL="$NXT_BUILD_DIR/libnxt.so" 1830Sigor@sysoev.ru 1840Sigor@sysoev.ru NXT_LIBM="-lm" 1850Sigor@sysoev.ru NXT_LIBS="$NXT_PTHREAD" 1860Sigor@sysoev.ru ;; 1870Sigor@sysoev.ru 1880Sigor@sysoev.ru HP-UX) 1890Sigor@sysoev.ru nxt_have=NXT_HPUX . auto/have 1900Sigor@sysoev.ru 1910Sigor@sysoev.ru NXT_EXEC_LINK="\$(CC)" 1920Sigor@sysoev.ru NXT_SHARED_LOCAL_EXEC_LINK= 1930Sigor@sysoev.ru 1940Sigor@sysoev.ru NXT_STATIC_LINK="ar -r -c" 1950Sigor@sysoev.ru NXT_SHARED_LINK="\$(CC) -shared" 1960Sigor@sysoev.ru NXT_SHARED_LOCAL_LINK="\$(CC) -shared" 1970Sigor@sysoev.ru NXT_MODULE_LINK="\$(CC) -shared" 1980Sigor@sysoev.ru 1990Sigor@sysoev.ru NXT_LIB_STATIC="libnxt.a" 2000Sigor@sysoev.ru NXT_LIB_SHARED="libnxt.so" 2010Sigor@sysoev.ru NXT_LIB_SHARED_LOCAL="$NXT_BUILD_DIR/libnxt.so" 2020Sigor@sysoev.ru 2030Sigor@sysoev.ru NXT_LIBM="-lm" 2040Sigor@sysoev.ru NXT_LIBS="$NXT_PTHREAD $NXT_LIBHG" 2050Sigor@sysoev.ru ;; 2060Sigor@sysoev.ru 2070Sigor@sysoev.ru QNX) 2080Sigor@sysoev.ru nxt_have=NXT_QNX . auto/have 2090Sigor@sysoev.ru 2100Sigor@sysoev.ru NXT_STATIC_LINK="ar -r -c" 2110Sigor@sysoev.ru NXT_SHARED_LINK="\$(CC) -shared" 2120Sigor@sysoev.ru NXT_SHARED_LOCAL_LINK="\$(CC) -shared" 2130Sigor@sysoev.ru NXT_MODULE_LINK="\$(CC) -shared" 2140Sigor@sysoev.ru 2150Sigor@sysoev.ru NXT_EXEC_LINK="\$(CC)" 2160Sigor@sysoev.ru NXT_SHARED_LOCAL_EXEC_LINK= 2170Sigor@sysoev.ru 2180Sigor@sysoev.ru NXT_LIB_STATIC="libnxt.a" 2190Sigor@sysoev.ru NXT_LIB_SHARED="libnxt.so" 2200Sigor@sysoev.ru NXT_LIB_SHARED_LOCAL="$NXT_BUILD_DIR/libnxt.so" 2210Sigor@sysoev.ru 2220Sigor@sysoev.ru NXT_LIBM="-lm" 2230Sigor@sysoev.ru NXT_LIBS="$NXT_PTHREAD" 2240Sigor@sysoev.ru ;; 2250Sigor@sysoev.ru 2260Sigor@sysoev.ru *) 2270Sigor@sysoev.ru NXT_STATIC_LINK="ar -r -c" 2280Sigor@sysoev.ru NXT_SHARED_LINK="\$(CC) -shared" 2290Sigor@sysoev.ru NXT_SHARED_LOCAL_LINK="\$(CC) -shared" 2300Sigor@sysoev.ru NXT_MODULE_LINK="\$(CC) -shared" 2310Sigor@sysoev.ru 2320Sigor@sysoev.ru # "-Wl,-E" exports symbols of executable file. 2330Sigor@sysoev.ru NXT_EXEC_LINK="\$(CC) -Wl,-E" 2340Sigor@sysoev.ru NXT_SHARED_LOCAL_EXEC_LINK= 2350Sigor@sysoev.ru 2360Sigor@sysoev.ru NXT_LIB_STATIC="libnxt.a" 2370Sigor@sysoev.ru NXT_LIB_SHARED="libnxt.so" 2380Sigor@sysoev.ru NXT_LIB_SHARED_LOCAL="$NXT_BUILD_DIR/libnxt.so" 2390Sigor@sysoev.ru 2400Sigor@sysoev.ru NXT_LIBM="-lm" 2410Sigor@sysoev.ru NXT_LIBS="$NXT_LIBRT $NXT_LIBDL $NXT_PTHREAD" 2420Sigor@sysoev.ru ;; 2430Sigor@sysoev.ruesac 244