You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
265 lines
7.4 KiB
265 lines
7.4 KiB
dnl -*- Autoconf -*-
|
|
dnl Process this file with autoconf to produce a configure script.
|
|
|
|
AC_PREREQ([2.67])
|
|
AC_INIT([shadowsocks-libev], [3.1.0], [max.c.lv@gmail.com])
|
|
AC_CONFIG_SRCDIR([src/crypto.c])
|
|
AC_CONFIG_HEADERS([config.h])
|
|
AC_CONFIG_AUX_DIR(auto)
|
|
AC_CONFIG_MACRO_DIR([m4])
|
|
AC_USE_SYSTEM_EXTENSIONS
|
|
|
|
AM_INIT_AUTOMAKE([subdir-objects foreign -Wno-gnu -Werror])
|
|
m4_ifdef([AM_PROG_AR], [AM_PROG_AR])
|
|
m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([yes])])
|
|
AM_MAINTAINER_MODE
|
|
AM_DEP_TRACK
|
|
|
|
dnl Checks for lib
|
|
AC_DISABLE_STATIC
|
|
AC_DISABLE_SHARED
|
|
LT_INIT([dlopen])
|
|
|
|
dnl Check for pcre library
|
|
TS_CHECK_PCRE
|
|
if test "x${enable_pcre}" != "xyes"; then
|
|
AC_MSG_ERROR([Cannot find pcre library. Configure --with-pcre=DIR])
|
|
fi
|
|
|
|
dnl Checks for using shared libraries from system
|
|
AC_ARG_ENABLE(
|
|
[system-shared-lib],
|
|
AS_HELP_STRING([--enable-system-shared-lib], [build against shared libraries when possible]),
|
|
[
|
|
case "${enableval}" in
|
|
yes) enable_system_shared_lib=true ;;
|
|
no) enable_system_shared_lib=false ;;
|
|
*) AC_MSG_ERROR([bad value ${enableval} for --enable-system-shared-lib]) ;;
|
|
esac], [enable_system_shared_lib=false])
|
|
AM_CONDITIONAL([USE_SYSTEM_SHARED_LIB], [test x$enable_system_shared_lib = xtrue])
|
|
|
|
AC_ARG_ENABLE([documentation],
|
|
AS_HELP_STRING([--disable-documentation], [do not build documentation]),
|
|
[disable_documentation=true],
|
|
[disable_documentation=false])
|
|
AM_CONDITIONAL([ENABLE_DOCUMENTATION], [test x$disable_documentation = xfalse])
|
|
|
|
AM_COND_IF([ENABLE_DOCUMENTATION], [
|
|
AC_PATH_PROG([ASCIIDOC], [asciidoc])
|
|
test x"${ASCIIDOC}" != x || AC_MSG_ERROR([Cannot find `asciidoc` in PATH.])
|
|
AC_PATH_PROG([XMLTO], [xmlto])
|
|
test x"$XMLTO" != x || AC_MSG_ERROR([Cannot find `xmlto` in PATH.])
|
|
AC_PATH_PROG([GZIP], [gzip], [gzip])
|
|
AC_PATH_PROG([MV], [mv], [mv])
|
|
AC_PROG_SED
|
|
])
|
|
|
|
dnl Checks for programs.
|
|
AC_PROG_CC
|
|
AM_PROG_CC_C_O
|
|
AC_PROG_INSTALL
|
|
AC_PROG_LN_S
|
|
AC_PROG_MAKE_SET
|
|
AC_LANG_SOURCE
|
|
|
|
dnl Add library for mingw
|
|
case $host in
|
|
*-mingw*)
|
|
CFLAGS="$CFLAGS -mno-ms-bitfields"
|
|
LIBS="$LIBS -ladvapi32 -lgdi32 -lws2_32 -lcrypt32"
|
|
;;
|
|
*-cygwin*)
|
|
CFLAGS="$CFLAGS -mno-ms-bitfields"
|
|
;;
|
|
*)
|
|
;;
|
|
esac
|
|
|
|
dnl Checks for TLS
|
|
AX_TLS([:], [:])
|
|
|
|
dnl Checks for crypto libraries
|
|
ss_MBEDTLS
|
|
ss_SODIUM
|
|
ss_CARES
|
|
|
|
dnl Checks for inet_ntop
|
|
ss_FUNC_INET_NTOP
|
|
|
|
dnl Checks for host.
|
|
AC_MSG_CHECKING(for what kind of host)
|
|
case $host in
|
|
*-linux*)
|
|
os_support=linux
|
|
AC_MSG_RESULT(Linux)
|
|
;;
|
|
*)
|
|
AC_MSG_RESULT(transparent proxy does not support for $host)
|
|
;;
|
|
esac
|
|
|
|
dnl Checks for pthread
|
|
AX_PTHREAD([LIBS="$PTHREAD_LIBS $LIBS"
|
|
CFLAGS="$CFLAGS $PTHREAD_CFLAGS"
|
|
CC="$PTHREAD_CC"], AC_MSG_ERROR(Can not find pthreads. This is required.))
|
|
|
|
dnl Checks for stack protector
|
|
GGL_CHECK_STACK_PROTECTOR([has_stack_protector=yes], [has_stack_protector=no])
|
|
# XXX - disable -fstack-protector due to missing libssp_nonshared
|
|
case "$host_os" in
|
|
*aix*)
|
|
AC_MSG_NOTICE([-fstack-protector disabled on AIX])
|
|
has_stack_protector=no
|
|
;;
|
|
*sunos*)
|
|
AC_MSG_NOTICE([-fstack-protector disabled on SunOS])
|
|
has_stack_protector=no
|
|
;;
|
|
*solaris*)
|
|
AC_MSG_NOTICE([-fstack-protector disabled on Solaris])
|
|
has_stack_protector=no
|
|
;;
|
|
esac
|
|
|
|
AC_ARG_ENABLE(ssp,
|
|
[AS_HELP_STRING(--disable-ssp,Do not compile with -fstack-protector)],
|
|
[
|
|
enable_ssp="no"
|
|
],
|
|
[
|
|
enable_ssp="yes"
|
|
])
|
|
|
|
if test x$has_stack_protector = xyes && test x$enable_ssp = xyes; then
|
|
CFLAGS="$CFLAGS -fstack-protector"
|
|
AC_MSG_NOTICE([-fstack-protector enabled in CFLAGS])
|
|
fi
|
|
|
|
AM_CONDITIONAL(BUILD_REDIRECTOR, test "$os_support" = "linux")
|
|
AM_CONDITIONAL(BUILD_WINCOMPAT, test "$os_support" = "mingw")
|
|
|
|
dnl Checks for header files.
|
|
AC_CHECK_HEADERS([limits.h stdint.h inttypes.h arpa/inet.h fcntl.h langinfo.h locale.h netdb.h netinet/in.h stdlib.h string.h strings.h unistd.h sys/ioctl.h linux/random.h])
|
|
|
|
dnl A special check required for <net/if.h> on Darwin. See
|
|
dnl http://www.gnu.org/software/autoconf/manual/html_node/Header-Portability.html.
|
|
AC_CHECK_HEADERS([sys/socket.h])
|
|
AC_CHECK_HEADERS([net/if.h], [], [],
|
|
[
|
|
#include <stdio.h>
|
|
#ifdef STDC_HEADERS
|
|
# include <stdlib.h>
|
|
# include <stddef.h>
|
|
#else
|
|
# ifdef HAVE_STDLIB_H
|
|
# include <stdlib.h>
|
|
# endif
|
|
#endif
|
|
#ifdef HAVE_SYS_SOCKET_H
|
|
# include <sys/socket.h>
|
|
#endif
|
|
])
|
|
|
|
case $host in
|
|
*-linux*)
|
|
AC_DEFINE([CONNECT_IN_PROGRESS], [EINPROGRESS], [errno for incomplete non-blocking connect(2)])
|
|
dnl Checks for netfilter headers
|
|
AC_CHECK_HEADERS([linux/if.h linux/netfilter_ipv4.h linux/netfilter_ipv6/ip6_tables.h],
|
|
[], [AC_MSG_ERROR([Missing netfilter headers])],
|
|
[[
|
|
#if HAVE_LIMITS_H
|
|
#include <limits.h>
|
|
#endif
|
|
/* Netfilter ip(6)tables v1.4.0 has broken headers */
|
|
#if HAVE_NETINET_IN_H
|
|
#include <netinet/in.h>
|
|
#endif
|
|
#if HAVE_LINUX_IF_H
|
|
#include <linux/if.h>
|
|
#endif
|
|
#if HAVE_SYS_SOCKET_H
|
|
#include <sys/socket.h>
|
|
#endif
|
|
]])
|
|
;;
|
|
*)
|
|
# These are POSIX-like systems using BSD-like sockets API.
|
|
AC_DEFINE([CONNECT_IN_PROGRESS], [EINPROGRESS], [errno for incomplete non-blocking connect(2)])
|
|
;;
|
|
esac
|
|
|
|
AC_C_BIGENDIAN
|
|
|
|
dnl Checks for typedefs, structures, and compiler characteristics.
|
|
AC_C_INLINE
|
|
AC_TYPE_SSIZE_T
|
|
|
|
dnl Checks for header files.
|
|
AC_HEADER_ASSERT
|
|
AC_HEADER_STDC
|
|
AC_HEADER_SYS_WAIT
|
|
|
|
dnl Checks for typedefs, structures, and compiler characteristics.
|
|
AC_C_CONST
|
|
AC_TYPE_PID_T
|
|
AC_TYPE_SIZE_T
|
|
AC_TYPE_SSIZE_T
|
|
AC_TYPE_UINT16_T
|
|
AC_TYPE_UINT8_T
|
|
AC_HEADER_TIME
|
|
|
|
dnl Checks for library functions.
|
|
AC_FUNC_FORK
|
|
AC_FUNC_SELECT_ARGTYPES
|
|
AC_TYPE_SIGNAL
|
|
AC_CHECK_FUNCS([memset select setresuid setreuid strerror get_current_dir_name getpwnam_r setrlimit])
|
|
|
|
AC_CHECK_LIB(socket, connect)
|
|
|
|
dnl Checks for library functions.
|
|
AC_CHECK_FUNCS([malloc memset posix_memalign socket])
|
|
|
|
AC_CHECK_HEADERS([ev.h libev/ev.h], [], [])
|
|
AC_CHECK_LIB([ev], [ev_loop_destroy], [LIBS="-lev $LIBS"], [AC_MSG_ERROR([Couldn't find libev. Try installing libev-dev@<:@el@:>@.])])
|
|
|
|
AC_CONFIG_FILES([shadowsocks-libev.pc
|
|
Makefile
|
|
doc/Makefile
|
|
src/Makefile])
|
|
|
|
AM_COND_IF([USE_SYSTEM_SHARED_LIB],
|
|
[AC_DEFINE([USE_SYSTEM_SHARED_LIB], [1], [Define if use system shared lib.])],
|
|
[AC_CONFIG_FILES([libbloom/Makefile libcork/Makefile libipset/Makefile])])
|
|
|
|
AC_ARG_ENABLE(connmarktos,
|
|
[AS_HELP_STRING(--enable-connmarktos, Enable saved connmark to IP TOS QoS feature)],
|
|
[
|
|
enable_connmarktos="yes"
|
|
],
|
|
[
|
|
enable_connmarktos="no"
|
|
])
|
|
|
|
if test x"$enable_connmarktos" = "xyes" ; then
|
|
AC_MSG_NOTICE([Linux Netfilter Conntrack support requested by --enable-connmarktos: ${enable_connmarktos}])
|
|
if test "x$enable_connmarktos" != "xno"; then
|
|
AC_SEARCH_LIBS([nfct_query], [netfilter_conntrack],,[
|
|
if test x"$enable_connmarktos" = "xyes"; then
|
|
AC_MSG_ERROR([--enable-connmarktos specified but libnetfilter-conntrack library not found])
|
|
fi
|
|
with_netfilter_conntrack=no])
|
|
AC_CHECK_HEADERS([libnetfilter_conntrack/libnetfilter_conntrack.h \
|
|
libnetfilter_conntrack/libnetfilter_conntrack_tcp.h],,[
|
|
if test x"$enable_connmarktos" = "xyes"; then
|
|
AC_MSG_ERROR([--enable-connmarktos specified but libnetfilter-conntrack headers not found])
|
|
fi
|
|
with_netfilter_conntrack=no])
|
|
# If nothing is broken; enable the libraries usage.
|
|
if test "x$with_netfilter_conntrack" != "xno"; then
|
|
with_netfilter_conntrack=yes
|
|
AC_DEFINE(USE_NFCONNTRACK_TOS, 1, [Enable support for QOS netfilter mark preservation])
|
|
fi
|
|
fi
|
|
fi
|
|
|
|
AC_OUTPUT
|