323 lines
8.5 KiB
Plaintext
323 lines
8.5 KiB
Plaintext
AC_PREREQ(2.59)
|
|
|
|
AC_INIT(src/torrent.cpp)
|
|
AM_INIT_AUTOMAKE(libtorrent, 0.14)
|
|
|
|
# Nowhere in the source is config.h included, so make defines command line arguments
|
|
# AM_CONFIG_HEADER(config.h)
|
|
|
|
AC_PROG_CC
|
|
|
|
if test -z "$(which $CC)"; then
|
|
AC_MSG_ERROR([Unable to find a working C compiler, giving up.])
|
|
fi
|
|
|
|
AC_PROG_CPP
|
|
AC_PROG_CXX
|
|
|
|
if test -z "$(which $CXX)"; then
|
|
AC_MSG_ERROR([Unable to find a working C++ compiler, giving up.])
|
|
fi
|
|
|
|
AC_CACHE_SAVE
|
|
AC_PROG_INSTALL
|
|
AC_PROG_MAKE_SET
|
|
AC_PROG_LIBTOOL
|
|
# AC_PROG_RANLIB is obsolete by AC_PROC_LIBTOOL
|
|
|
|
AC_SYS_LARGEFILE
|
|
|
|
dnl Check for pthreads.
|
|
ACX_PTHREAD
|
|
dnl Apply pthread config.
|
|
CC=$PTHREAD_CC
|
|
CPPFLAGS="$CPPFLAGS $PTHREAD_CFLAGS"
|
|
LIBS="$LIBS $PTHREAD_LIBS"
|
|
|
|
dnl Check for boost libraries.
|
|
AX_BOOST_BASE([1.35],[
|
|
AX_BOOST_SYSTEM
|
|
dnl check that Boost.System was found:
|
|
if test -z "$BOOST_SYSTEM_LIB"; then
|
|
AC_MSG_ERROR([unable to find Boost.System library, currently this is required.])
|
|
fi
|
|
|
|
AX_BOOST_ASIO
|
|
dnl check that Boost.Asio was found:
|
|
if test -z "$BOOST_ASIO_LIB"; then
|
|
AC_MSG_ERROR([Unable to find Boost.Asio library, currently this is required.])
|
|
fi
|
|
],[
|
|
AX_BOOST_BASE([1.34])
|
|
])
|
|
|
|
AC_MSG_NOTICE([BOOST_CPPFLAGS=$BOOST_CPPFLAGS])
|
|
AC_MSG_NOTICE([BOOST_LDFLAGS=$BOOST_LDFLAGS])
|
|
|
|
AX_BOOST_IOSTREAMS
|
|
dnl check that Boost.IOStreams was found:
|
|
if test -z "$BOOST_IOSTREAMS_LIB"; then
|
|
AC_MSG_ERROR([unable to find Boost.IOStreams library, currently this is required.])
|
|
fi
|
|
|
|
AX_BOOST_DATE_TIME
|
|
dnl check that Boost.DateTime was found:
|
|
if test -z "$BOOST_DATE_TIME_LIB"; then
|
|
AC_MSG_ERROR([Unable to find Boost.DateTime library, currently this is required.])
|
|
fi
|
|
|
|
AX_BOOST_FILESYSTEM
|
|
dnl check that Boost.Filesystem was found:
|
|
if test -z "$BOOST_FILESYSTEM_LIB"; then
|
|
AC_MSG_ERROR([Unable to find Boost.Filesystem library, currently this is required.])
|
|
fi
|
|
|
|
AX_BOOST_THREAD
|
|
dnl check that Boost.Thread was found:
|
|
if test -z "$BOOST_THREAD_LIB"; then
|
|
AC_MSG_ERROR([Unable to find Boost.Thread library, currently this is required.])
|
|
fi
|
|
|
|
AX_BOOST_REGEX
|
|
dnl check that Boost.Regex was found:
|
|
if test -z "$BOOST_REGEX_LIB"; then
|
|
AC_MSG_RESULT([Unable to find Boost.Regex library, example test_client will not be build.])
|
|
BUILD_TESTCLIENT=no;
|
|
fi
|
|
|
|
AX_BOOST_PROGRAM_OPTIONS
|
|
dnl check that Boost.Program_options was found:
|
|
if test -z "$BOOST_PROGRAM_OPTIONS_LIB"; then
|
|
AC_MSG_RESULT([Unable to find Boost.Program_options library, example test_client will not be build.])
|
|
BUILD_TESTCLIENT=no;
|
|
fi
|
|
|
|
dnl Apply boost config.
|
|
CPPFLAGS="$CPPFLAGS $BOOST_CPPFLAGS"
|
|
LDFLAGS="$LDFLAGS $BOOST_LDFLAGS"
|
|
|
|
if [[ "x$BUILD_TESTCLIENT" != "xno" ]]; then
|
|
CLIENT_TEST_BIN=client_test;
|
|
AC_SUBST(CLIENT_TEST_BIN)
|
|
fi
|
|
|
|
dnl try different ways of resolving gethostbyname
|
|
AC_CHECK_FUNC(gethostbyname, ,
|
|
AC_CHECK_LIB(resolv, gethostbyname, ,
|
|
AC_CHECK_LIB(nsl, gethostbyname, ,
|
|
AC_CHECK_LIB(ws2_32, main,
|
|
AC_CHECK_LIB(wsock32, main, [LIBS="$LIBS -lws2_32 -lwsock32";] ,
|
|
AC_MSG_ERROR([wsock32 not found. Stopped.])) ,
|
|
AC_MSG_ERROR([gethostbyname not found. Stopped.]))))
|
|
)
|
|
|
|
dnl find out what kind of logging to use
|
|
AC_ARG_WITH(
|
|
[logging],
|
|
AS_HELP_STRING([--with-logging=none|default|verbose],[Specify how much logging to use. Default is none.]),
|
|
[[logging=$withval]],
|
|
[[logging=none]]
|
|
)
|
|
|
|
COMPILETIME_OPTIONS=""
|
|
dnl Check the value for the --with-logging switch
|
|
AC_MSG_CHECKING([what form of logging to use])
|
|
case "$logging" in
|
|
"none")
|
|
AC_MSG_RESULT(none)
|
|
;;
|
|
"default")
|
|
AC_MSG_RESULT(default)
|
|
AC_DEFINE(TORRENT_LOGGING,,[define to use some logging])
|
|
COMPILETIME_OPTIONS+="-DTORRENT_LOGGING "
|
|
;;
|
|
"verbose")
|
|
AC_MSG_RESULT(verbose)
|
|
AC_DEFINE(TORRENT_VERBOSE_LOGGING,,[define to use verbose logging])
|
|
COMPILETIME_OPTIONS+="-DTORRENT_VERBOSE_LOGGING "
|
|
;;
|
|
*)
|
|
AC_MSG_RESULT()
|
|
AC_MSG_ERROR([Unknown logging option "$logging". Use either "none", "default" or "verbose".])
|
|
;;
|
|
esac
|
|
|
|
dnl find out what kind of dht-support to use
|
|
AC_ARG_WITH(
|
|
[dht],
|
|
AS_HELP_STRING([--with-dht=on|off|logging],[Specify how to use DHT support. Option logging will add extra logging. Default is on.]),
|
|
[[dht=$withval]],
|
|
[[dht=on]]
|
|
)
|
|
dnl Check the value for the --with-dht switch
|
|
AC_MSG_CHECKING([how to use DHT])
|
|
case "$dht" in
|
|
"on")
|
|
AC_MSG_RESULT(on)
|
|
;;
|
|
"off")
|
|
AC_MSG_RESULT(off)
|
|
AC_DEFINE(TORRENT_DISABLE_DHT,,[define not to use DHT support])
|
|
COMPILETIME_OPTIONS+="-DTORRENT_DISABLE_DHT "
|
|
;;
|
|
"logging")
|
|
AC_MSG_RESULT(logging)
|
|
AC_DEFINE(TORRENT_DHT_VERBOSE_LOGGING,,[define to use DHT support with extra logging])
|
|
COMPILETIME_OPTIONS+="-DTORRENT_DHT_VERBOSE_LOGGING "
|
|
;;
|
|
*)
|
|
AC_MSG_RESULT()
|
|
AC_MSG_ERROR([Unknown dht option "$dht". Use either "on", "off" or "logging".])
|
|
;;
|
|
esac
|
|
AM_CONDITIONAL(USE_DHT, test "x$dht" != "xoff")
|
|
|
|
dnl encryption support.
|
|
AC_ARG_WITH(
|
|
[encryption],
|
|
AS_HELP_STRING([--with-encryption=on|off],[Specify how to use encryption support. Default is on.]),
|
|
[[encryption=$withval]],
|
|
[[encryption=on]]
|
|
)
|
|
|
|
dnl Check the value for the --with-encryption switch
|
|
AC_MSG_CHECKING([how to use encryption])
|
|
case "$encryption" in
|
|
"on")
|
|
AC_MSG_RESULT(on)
|
|
CHECK_SSL()
|
|
AC_DEFINE(TORRENT_USE_OPENSSL,,[define to use openssl with libtorrent])
|
|
COMPILETIME_OPTIONS+="-DTORRENT_USE_OPENSSL "
|
|
|
|
;;
|
|
"off")
|
|
AC_MSG_RESULT(off)
|
|
AC_DEFINE(TORRENT_DISABLE_ENCRYPTION,,[define not to use encryption support])
|
|
COMPILETIME_OPTIONS+="-DTORRENT_DISABLE_ENCRYPTION "
|
|
;;
|
|
*)
|
|
AC_MSG_RESULT()
|
|
AC_MSG_ERROR([Unknown encryption option "$encryption". Use either "on" or "off".])
|
|
;;
|
|
esac
|
|
AM_CONDITIONAL(USE_ENCRYPTION, test "x$encryption" != "xoff")
|
|
|
|
dnl the user can choose which zlib to use
|
|
AC_ARG_WITH(
|
|
[zlib],
|
|
AS_HELP_STRING([--with-zlib=shipped|system],[Specify the zlib to use, shipped or system. Default is to autodetect system and fallback to shipped.]),
|
|
[[zlib=$withval]],
|
|
[[zlib=detect]]
|
|
)
|
|
dnl Check the value for the --with-zlib switch
|
|
AC_MSG_CHECKING([which zlib implementation to use])
|
|
case "$zlib" in
|
|
"detect")
|
|
AC_MSG_RESULT([autodetect])
|
|
AC_CHECK_LIB(z, main,
|
|
[zlib="system"],
|
|
[zlib="shipped"]
|
|
)
|
|
;;
|
|
"shipped")
|
|
AC_MSG_RESULT(shipped)
|
|
;;
|
|
"system")
|
|
AC_MSG_RESULT(system)
|
|
AC_CHECK_LIB(z, main, ,
|
|
AC_MSG_ERROR([libtorrent depends on zlib but zlib was not found on your system.])
|
|
)
|
|
;;
|
|
"no")
|
|
AC_MSG_RESULT()
|
|
AC_MSG_ERROR([libtorrent depends on zlib, you must specify either "system" or "shipped".])
|
|
;;
|
|
*)
|
|
AC_MSG_RESULT()
|
|
AC_MSG_ERROR([Unknown zlib option "$zlib". Use either "system" or "shipped".])
|
|
;;
|
|
esac
|
|
if [[ "$zlib" = "shipped" ]]; then
|
|
ZLIB="\$(top_builddir)/zlib/libzlib.la"
|
|
ZLIBDIR="zlib"
|
|
ZLIBINCL="-I\$(top_srcdir)/zlib"
|
|
AC_CONFIG_FILES(zlib/Makefile)
|
|
elif [[ "$zlib" = "system" ]]; then
|
|
ZLIB="-lz"
|
|
ZLIBDIR=""
|
|
ZLIBINCL=""
|
|
fi
|
|
|
|
dnl make ZLIB and ZLIBDIR visible to Makefiles
|
|
AC_SUBST([ZLIB])
|
|
AC_SUBST([ZLIBDIR])
|
|
AC_SUBST([ZLIBINCL])
|
|
|
|
dnl Check whether the examples should be build
|
|
AC_ARG_ENABLE(
|
|
[examples],
|
|
AS_HELP_STRING([--enable-examples],[Build the examples. Default is not to build them.]),
|
|
[[examples=$enableval]],
|
|
[[examples=no]]
|
|
)
|
|
dnl Check the value of the --with-examples switch
|
|
AC_MSG_CHECKING([if the examples should be build])
|
|
case "$examples" in
|
|
"yes")
|
|
AC_MSG_RESULT(yes)
|
|
EXAMPLESDIR="examples"
|
|
;;
|
|
"no")
|
|
AC_MSG_RESULT(no)
|
|
EXAMPLESDIR=""
|
|
;;
|
|
"")
|
|
AC_MSG_RESULT(yes (default))
|
|
EXAMPLESDIR="examples"
|
|
;;
|
|
*)
|
|
AC_MSG_RESULT()
|
|
AC_MSG_ERROR([Unknown --enable-examples option "$examples". Use either "yes" or "no".])
|
|
;;
|
|
esac
|
|
dnl make $examples visible to Makefiles
|
|
AC_SUBST([EXAMPLESDIR])
|
|
|
|
dnl Set some defines if we are building a shared library
|
|
if [[ "x$enable_shared" == "xyes" ]]; then
|
|
AC_DEFINE(TORRENT_BUILDING_SHARED,,[Make sure the functions and classes are exported.])
|
|
AC_DEFINE(TORRENT_LINKING_SHARED,,[Make sure the functions and classes are exported.])
|
|
fi
|
|
|
|
dnl want some debugging symbols with that?
|
|
AC_ARG_ENABLE(
|
|
[debug],
|
|
AS_HELP_STRING([--enable-debug],[Set compiler flags for debug symbols, default is no debugging.]),
|
|
[case "$enableval" in
|
|
no)
|
|
AC_DEFINE(NDEBUG,,[Define to disable debugging])
|
|
DEBUGFLAGS=""
|
|
COMPILETIME_OPTIONS+="-DNDEBUG "
|
|
;;
|
|
yes)
|
|
DEBUGFLAGS="-g"
|
|
COMPILETIME_OPTIONS+="-DLT_DEBUG "
|
|
;;
|
|
*)
|
|
DEBUGFLAGS="$enableval"
|
|
;;
|
|
esac],
|
|
[DEBUGFLAGS=""
|
|
AC_DEFINE(NDEBUG,,[Define to disable debugging])]
|
|
)
|
|
AC_SUBST(DEBUGFLAGS)
|
|
|
|
dnl Compile time options.
|
|
AC_SUBST(COMPILETIME_OPTIONS)
|
|
|
|
AC_CONFIG_FILES(Makefile src/Makefile include/Makefile test/Makefile libtorrent.pc)
|
|
if [[ "x$examples" == "xyes" ]]; then
|
|
AC_CONFIG_FILES(examples/Makefile)
|
|
fi
|
|
AC_OUTPUT
|