2 # Process this file with autoconf to produce a configure script.
4 # This file is part of the aMule Project.
6 # Copyright (c) 2003-2008 aMule Team ( admin@amule.org / http://www.amule.org )
8 # Any parts of this program derived from the xMule, lMule or eMule project,
9 # or contributed by third-party developers are copyrighted by their
12 # This program is free software; you can redistribute it and/or modify
13 # it under the terms of the GNU General Public License as published by
14 # the Free Software Foundation; either version 2 of the License, or
15 # (at your option) any later version.
17 # This program is distributed in the hope that it will be useful,
18 # but WITHOUT ANY WARRANTY; without even the implied warranty of
19 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
20 # GNU General Public License for more details.
22 # You should have received a copy of the GNU General Public License
23 # along with this program; if not, write to the Free Software
24 # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
27 AC_INIT([aMule],[SVN],[admin@amule.org])
30 AC_CONFIG_SRCDIR([src/amule.cpp])
31 AC_CONFIG_HEADERS([config.h])
34 dnl Check host system.
37 dnl Checks for programs.
38 dnl Workaround for these checks may alter CFLAGS and CXXFLAGS, especially if they were empty
40 MULE_BACKUP([CXXFLAGS])
41 MULE_BACKUP([BUILD_CFLAGS])
46 AS_IF([test "$cross_compiling" = yes], [AC_PROG_BUILD_CC], [BUILD_CC="$CC" ; BUILD_EXEEXT=$EXEEXT])
47 MULE_RESTORE([CFLAGS])
48 MULE_RESTORE([CXXFLAGS])
49 MULE_RESTORE([BUILD_CFLAGS])
58 dnl Find the right ranlib, even when cross-compiling
59 dnl And for some other tools for cross compilation
60 AC_CHECK_TOOL(RANLIB, ranlib)
61 AC_CHECK_TOOL(STRIP, strip)
66 dnl Add args to configure
71 [--disable-monolithic],
72 [disable building of the monolithic aMule app])],
73 [MONOLITHIC=$enableval], [MONOLITHIC=yes])
78 [--enable-amule-daemon],
79 [compile aMule daemon version])],
80 [AMULE_DAEMON=$enableval], [AMULE_DAEMON=no])
86 [compile aMule command line client])],
87 [AMULECMD=$enableval], [AMULECMD=no])
93 [compile aMule WebServer])],
94 [WEB=$enableval], [WEB=no])
100 [compile aMule remote GUI (EXPERIMENTAL)])],
101 [AMULE_GUI=$enableval], [AMULE_GUI=no])
107 [compile C aMule Statistics])],
108 [CAS=$enableval], [CAS=no])
114 [compile aMule GUI Statistics])],
115 [WXCAS=$enableval], [WXCAS=no])
121 [don't compile aMule ed2k links handler])],
122 [ED2K=$enableval], [ED2K=yes])
128 [compile aMuleLinkCreator GUI version])],
129 [ALC=$enableval], [ALC=no])
135 [compile aMuleLinkCreator for console])],
136 [ALCC=$enableval], [ALCC=no])
141 [--disable-monolithic],
142 [disable building of the monolithic aMule app])],
143 [MONOLITHIC=$enableval], [MONOLITHIC=yes])
149 [do not compile UPnP code])],
150 [ENABLE_UPNP=$enableval], [ENABLE_UPNP=yes])
156 [do not install xas XChat2 plugin])],
157 [XAS=$enableval], [XAS=yes])
163 [compile with GeoIP IP2Country library])],
164 [ENABLE_IP2COUNTRY=$enableval], [ENABLE_IP2COUNTRY=no])
166 AS_IF([test ${ENABLE_IP2COUNTRY:-no} = yes], [GEOIP_LIBS="-lGeoIP"])
170 AS_HELP_STRING([--with-geoip-headers=DIR],
171 [GeoIP include files location]),
172 [GEOIP_CPPFLAGS="-I$withval"])
176 AS_HELP_STRING([--with-geoip-lib=DIR],
177 [GeoIP library location]),
178 [GEOIP_LDFLAGS="-L$withval"])
182 AS_HELP_STRING([--with-geoip-static],
183 [Explicitly link GeoIP statically (default=no)]),
184 [AS_IF([test "$withval" != "no"], [GEOIP_LIBS="-Wl,-Bstatic $GEOIP_LIBS -Wl,-Bdynamic"])])
186 # Default is yes, because they're most likely compatible.
187 # However, this is only used when cross-compiling.
190 [AS_HELP_STRING([--without-gnu-malloc],
191 [Don't assume that we use GNU libc compatible malloc/realloc when cross-compiling])],
192 [gnumalloc=$withval], [gnumalloc=yes])
195 # Checking for libs before all other stuff to break
196 # configure as soon as possible in case of a missing one
197 # to avoid losing too much time
200 MULE_CHECK_ZLIB([1.1.4],, [AC_MSG_ERROR([zlib >= 1.1.4 is required for aMule])])
202 AS_IF([test x$CAS = xyes], [
204 MULE_CHECK_GDLIB([2.0.0], [
206 MULE_PREPEND([GDLIB_LIBS], [-lgd])
208 AS_IF([test -z "$CAS_DEFS"], [
210 gd-lib >= 2.0.0, or a functional gd.h (from gd-devel) not found.
211 Please check that gdlib-config is in your default path, check out
212 LD_LIBRARY_PATH or equivalent variable.
213 Or this might also be that your gdlib-config has other name.
214 Please try again with --with-gdlib-config=/usr/bin/gdlib-config
215 (replace /usr/bin/gdlib-config with a valid path to your gdlib-config).
216 If you use compiled packages check if you have devel pack installed.
217 To download the latest version check http://www.boutell.com/gd
220 ], [GDLIB_VERSION="not_needed"])
221 AC_SUBST([CAS_DEFS])dnl
224 AS_IF([test x$WEB = xyes], [MULE_CHECK_REGEX(, [WEB=disabled])])
225 AS_IF([test x$WEB = xyes],
226 [MULE_CHECK_LIBPNG([1.2.0], [AMULEWEB_DEFS="-DWITH_LIBPNG"], [AC_MSG_WARN([libpng-devel >= 1.2.0 is needed for amuleweb])])],
227 [LIBPNG_VERSION="not_needed"])
228 AC_SUBST([AMULEWEB_DEFS])dnl
231 # Check for perl File::Copy
232 AC_MSG_CHECKING([for File::Copy])
233 AS_IF([perl -e "require File::Copy" 2>/dev/null], [AC_MSG_RESULT([ok])], [AC_MSG_ERROR([File::Copy perl module is required])])
236 # Check if we need the GUI
237 AC_MSG_CHECKING([whether we need the GUI])
238 AS_IF([test x$MONOLITHIC = xyes], [need_gui=yes])
239 AS_IF([test x$WXCAS = xyes], [need_gui=yes])
240 AS_IF([test x$ALC = xyes], [need_gui=yes])
241 AS_IF([test x$AMULE_GUI = xyes], [need_gui=yes])
242 AS_IF([test x${need_gui:+set} != xset], [need_gui=no])
243 AC_MSG_RESULT($need_gui)
246 # Check for GeoIP (required for IP2Country capability)
247 AS_IF([test ${ENABLE_IP2COUNTRY:-no} = yes], [
248 MULE_APPEND([GEOIP_CPPFLAGS], [-DENABLE_IP2COUNTRY=1])
249 MULE_BACKUP([CPPFLAGS])
250 MULE_APPEND([CPPFLAGS], [$GEOIP_CPPFLAGS])
251 MULE_BACKUP([LDFLAGS])
252 MULE_APPEND([LDFLAGS], [$GEOIP_LDFLAGS])
253 AC_CHECK_HEADER([GeoIP.h],,
254 [AC_MSG_ERROR([--enable-geoip passed to configure, but the GeoIP header files were not found])])
255 AC_CHECK_LIB([GeoIP], [GeoIP_open],
256 [AC_DEFINE(SUPPORT_GEOIP, 1, Define if you want GeoIP support.)],
257 [AC_MSG_ERROR([--enable-geoip passed to configure, but the GeoIP libraries were not found])])
258 MULE_RESTORE([CPPFLAGS])
259 MULE_RESTORE([LDFLAGS])
261 AC_SUBST([GEOIP_CPPFLAGS])dnl
262 AC_SUBST([GEOIP_LDFLAGS])dnl
263 AC_SUBST([GEOIP_LIBS])dnl
268 WX_STANDARD_OPTIONS([toolkit,wxshared,wxdebug,wxversion])
269 # Force using a static wxWidgets library if the executable is to be linked statically.
270 AS_IF([test ${enable_static:-no} = yes], [WX_SHARED=0])
271 # Force using a unicode build of the library
274 WX_CONVERT_STANDARD_OPTIONS_TO_WXCONFIG_FLAGS
275 WX_CONFIG_CHECK([2.8.0], [wxWin=1],,, [$WXCONFIG_FLAGS])
276 if test "$wxWin" != 1; then
278 wxWidgets must be installed on your system but wx-config
279 script couldn't be found. Please check that wx-config is
280 in path or specified by --with-wx-config=path flag, the
281 directory where wxWidgets libraries are installed (returned
282 by 'wx-config --libs' command) is in LD_LIBRARY_PATH or
283 equivalent variable and wxWidgets version is 2.8.0 or above.
286 WX_DETECT_STANDARD_OPTION_VALUES
288 # We also need wxBase
289 WX_LIBS=`$WX_CONFIG_WITH_ARGS --libs adv,core,net`
290 WXBASE_LIBS=`$WX_CONFIG_WITH_ARGS --libs net`
291 WXBASE_CPPFLAGS="$WX_CPPFLAGS -DwxUSE_GUI=0"
292 AC_SUBST([WXBASE_LIBS])
293 AC_SUBST([WXBASE_CPPFLAGS])
295 dnl Get flags for windres
296 AC_ARG_VAR([RC], [Resource Compiler])dnl
297 AC_ARG_VAR([RCFLAGS], [Resource Compiler Flags])dnl
298 AS_IF([test ${SYS:-unknown} = win32],
300 AC_CHECK_TOOL([RC], [windres], [:])
301 MULERCFLAGS=`$WX_CONFIG_WITH_ARGS --cflags | $AWK ['{ for (i = 1; i <= NF; i++) if (index($i, "-I") != 1 && index($i, "-D") != 1) $i = ""; print }']`
306 AS_IF([test "${ENABLE_UPNP:-yes}" = yes], [
309 [MULE_APPEND([LIBUPNP_CPPFLAGS], [-DENABLE_UPNP=1])],
310 [ENABLE_UPNP=disabled]
316 MULE_CHECK_CRYPTOPP([5.1], [
317 # Check for CryptoPP >= 5.5
318 AS_IF([test $CRYPTOPP_VERSION_NUMBER -ge "5005000"], [MULE_APPEND([CRYPTOPP_CPPFLAGS], [-D__WEAK_CRYPTO__])])
321 Could not find crypto++ header file "$cryptopp_file_with_version".
322 Please try again with --with-crypto-prefix=/my_crypto_prefix
323 (replace /my_crypto_prefix with a valid path to your crypto++
324 installation directory).])
327 dnl Checks requiring C++
330 MULE_CHECK_WX_SUPPORTS_LARGEFILE
332 # Check if the compiler is broken, wrt. exceptions.
333 MULE_CHECK_EXCEPTIONS
338 # Check for bfd.h (to have proper backtraces without using wxExecute)
342 # Ok, we have all needed libs, now checking for other stuff
343 AS_IF([test "$LEX" = "flex"], [MULE_CHECK_FLEX_EXTENDED], [HAVE_FLEX_EXTENDED=no])
345 # Flush standard test results for speeding cache
348 dnl -------------------------------------------------------------------------------
349 dnl Start of autoscan stuff
350 dnl -------------------------------------------------------------------------------
351 # Checks for header files.
356 AC_CHECK_HEADERS([argz.h arpa/inet.h fcntl.h inttypes.h langinfo.h libintl.h limits.h locale.h malloc.h mntent.h netdb.h netinet/in.h stddef.h nl_types.h stdint.h stdio_ext.h stdlib.h string.h strings.h sys/ioctl.h sys/mntent.h sys/mnttab.h sys/mount.h sys/param.h sys/resource.h sys/select.h sys/socket.h sys/statvfs.h sys/time.h sys/timeb.h sys/types.h unistd.h])
359 # Checks for typedefs, structures, and compiler characteristics.
370 AC_CHECK_TYPES([ptrdiff_t])
372 # Checks for library functions.
373 AC_FUNC_CLOSEDIR_VOID
374 AC_PROG_GCC_TRADITIONAL
376 AS_IF([test x$SYS != xwin32], [
379 AC_FUNC_LSTAT_FOLLOWS_SLASHED_SYMLINK
383 AC_FUNC_SELECT_ARGTYPES
384 AC_FUNC_SETVBUF_REVERSED
390 dnl Some other functions that worth checking deeper:
391 dnl AC_FUNC_CLOSEDIR_VOID
396 dnl AC_FUNC_SETVBUF_REVERSED
397 dnl Anyways, do we actually USE them?
398 AS_IF([test $cross_compiling = yes -a $gnumalloc = yes], [
400 configure cannot check whether malloc() and realloc() are GNU libc
401 compatible. You have to be ABSOLUTELY sure that they are, otherwise
402 run configure with the --without-gnu-malloc switch.])
403 ac_cv_func_malloc_0_nonnull=yes
404 ac_cv_func_realloc_0_nonnull=yes
408 AC_CHECK_FUNCS([__argz_count __argz_next __argz_stringify endpwent floor ftruncate getcwd gethostbyaddr gethostbyname gethostname getpass gettimeofday inet_ntoa localeconv memmove mempcpy memset munmap nl_langinfo pow select setlocale socket sqrt stpcpy strcasecmp strchr strcspn strdup strerror strncasecmp strstr strtoul])
409 #-------------------------------------------------------------------------------
410 # End of autoscan stuff
411 #-------------------------------------------------------------------------------
414 dnl autoscan has missed these ones.
416 AC_CHECK_FUNCS([mkdir getrlimit setrlimit getopt_long])
418 MULE_BACKUP([CPPFLAGS])
419 MULE_APPEND([CPPFLAGS], [-D_XOPEN_SOURCE=600])
421 MULE_RESTORE([CPPFLAGS])
423 # Look for a way to preallocate disk space for files.
426 # Checking Native Language Support
427 dnl Sets gettext version.
428 dnl AM_GNU_GETTEXT_VERSION *must not* be moved away from configure.in!
429 AM_GNU_GETTEXT_VERSION(0.11.5)
432 # Flush standard test results for speeding cache
437 MULE_COMPILATION_FLAGS
439 # autoconf >= 2.60 already defines ${docdir}, but we always need it.
440 AC_MSG_CHECKING([for docdir])
441 AS_IF([test -z "$docdir"], [docdir="${datadir}/doc/${PACKAGE_NAME}-${PACKAGE_VERSION}"])
442 AC_SUBST([docdir])dnl
443 AC_MSG_RESULT([$docdir])
445 # Try to set the SVN checkout-date
446 AC_MSG_CHECKING([for SVNDATE])
447 if test -f "$srcdir/SVNDATE" # SVNDATE for tarballs
449 svndate=`cat $srcdir/SVNDATE`
450 elif test -d $srcdir/.svn # SVNDATE for svn
452 svndate="rev. `svnversion $srcdir | sed -e 's/[[0-9]][[0-9]]*:\(.*\)/\1/' -e 's/\([[0-9]][[0-9]]*\).*/\1/'`"
454 AC_MSG_RESULT(${svndate:-None required})
455 AS_IF([test -n "$svndate"], [
456 AC_DEFINE_UNQUOTED([SVNDATE], ["$svndate"], [The checkout date or svn revision number.])
457 MULE_ADDFLAG([RC], [-D__PRERELEASE__])
459 AC_SUBST([SVNDATE], [$svndate])dnl
461 dnl Set up the denoiser
464 AM_CONDITIONAL(WEB, test x$WEB = xyes)
465 AM_CONDITIONAL(ED2K, test x$ED2K = xyes)
466 AM_CONDITIONAL(CAS, test x$CAS = xyes)
467 AM_CONDITIONAL(WXCAS, test x$WXCAS = xyes)
468 AM_CONDITIONAL(ALC, test x$ALC = xyes)
469 AM_CONDITIONAL(ALCC, test x$ALCC = xyes)
470 AM_CONDITIONAL(AMULE_GUI, test x$AMULE_GUI = xyes)
471 AM_CONDITIONAL(AMULE_DAEMON, test x$AMULE_DAEMON = xyes)
472 AM_CONDITIONAL(COMPILE_CMD, test x$AMULECMD = xyes)
473 AM_CONDITIONAL(MONOLITHIC, test x$MONOLITHIC = xyes)
474 AM_CONDITIONAL(XAS, test x$XAS = xyes)
475 AM_CONDITIONAL(ENABLE_UPNP, test x$ENABLE_UPNP = xyes)
476 AM_CONDITIONAL(ENABLE_IP2COUNTRY, test x$ENABLE_IP2COUNTRY = xyes)
477 AM_CONDITIONAL(SYS_WIN32, test x$SYS = xwin32)
478 AM_CONDITIONAL(NEED_RC, test x$SYS = xwin32 -a "$RC" != ":")
479 AM_CONDITIONAL(NEED_CORESERVICES, test x$SYS = xdarwin)
480 AM_CONDITIONAL(COMPILE_NLS, test x$USE_NLS = xyes)
481 AM_CONDITIONAL(GENERATE_FLEX_HEADER, test x$HAVE_FLEX_EXTENDED = xyes)
483 # Check for readline library
484 if test x$AMULECMD = xyes -o x$WEB = xyes; then
488 # DO NOT MOVE UP... THERE'S A REASON TO BE HERE!!
493 dnl Generate the Makefiles
495 AC_CONFIG_FILES([Makefile
501 src/pixmaps/flags_xpm/Makefile
504 src/libs/ec/cpp/Makefile
505 src/libs/common/Makefile
507 src/utils/aLinkCreator/Makefile
508 src/utils/aLinkCreator/docs/Makefile
509 src/utils/aLinkCreator/src/Makefile
510 src/utils/cas/Makefile
511 src/utils/cas/docs/Makefile
512 src/utils/fileview/Makefile
513 src/utils/wxCas/Makefile
514 src/utils/wxCas/docs/Makefile
515 src/utils/wxCas/src/Makefile
516 src/utils/xas/Makefile
517 src/utils/xas/autostart-xas
518 src/utils/xas/docs/Makefile
520 src/webserver/Makefile
521 src/webserver/src/Makefile
522 src/webserver/default/Makefile
523 src/webserver/php-default/Makefile
524 src/webserver/chicane/Makefile
525 src/webserver/litoral/Makefile
527 unittests/muleunit/Makefile
528 unittests/tests/Makefile])
530 dnl autoscan has missed these, i wonder why...
532 AC_CONFIG_FILES([po/Makefile.in
534 AS_IF([test x$SYS = xwin32], [AC_CONFIG_FILES([version.rc])])
539 echo " Configure script has finished system check."
541 echo " Configured aMule ${PACKAGE_VERSION} for '${host}'."
543 echo " aMule enabled options:"
545 echo " **** aMule Core ****"
546 echo " Prefix where aMule should be installed? ${prefix:-none}"
547 echo " Should aMule be compiled with i18n support? ${USE_NLS:-no}"
548 echo " Should aMule be compiled in debug mode? ${USE_DEBUG:-no}"
549 echo " Should aMule be compiled with profiling? ${USE_PROFILE:-no}"
550 echo " Should aMule be compiled with optimizations? ${USE_OPTIMIZE:-no}"
551 echo " Should aMule be compiled with UPnP support? ${ENABLE_UPNP:-yes}"
552 echo " Should aMule be compiled with IP2country support? ${ENABLE_IP2COUNTRY:-no}"
553 echo " Should aMule monolithic application be built? ${MONOLITHIC:-yes}"
554 echo " Should aMule daemon version be built? ${AMULE_DAEMON:-no}"
555 echo " Should aMule remote gui be built? (EXPERIMENTAL) ${AMULE_GUI:-no}"
556 echo " Crypto++ library/headers style? ${CRYPTOPP_STYLE:-not found}"
559 echo " **** aMule TextClient ****"
560 echo " Should aMule Command Line Client be built? ${AMULECMD:-no}"
562 echo " **** aMule WebServer ****"
563 echo " Should aMule WebServer be built? ${WEB:-no}"
565 echo " **** aMule ED2K Links Handler ****"
566 echo " Should aMule ED2K Links Handler be built? ${ED2K:-yes}"
568 echo " **** aMuleLinkCreator ****"
569 echo " Should aMuleLinkCreator GUI version (alc) be built? ${ALC:-no}"
570 echo " Should aMuleLinkCreator for console (alcc) be built? ${ALCC:-no}"
572 echo " **** aMule Statistics ****"
573 echo " Should C aMule Statistics (CAS) be built? ${CAS:-no}"
574 echo " Should aMule GUI Statistics (wxCas) be built? ${WXCAS:-no}"
575 echo " Should xas XChat2 plugin be installed? ${XAS:-yes}"
578 echo " **** General Libraries and Tools ****"
579 echo " Should ccache support be enabled? ${enable_ccache:-no}"
580 echo " Libraries aMule will use to build:"
582 AS_IF([test $WX_DEBUG -eq 1], [wxinfo="$wxinfo,debug"])
583 AS_IF([test $WX_SHARED -eq 1], [wxinfo="$wxinfo,shared"], [wxinfo="$wxinfo,static"])
584 echo " wxWidgets ${WX_VERSION_FULL} ($wxinfo)"
585 echo " crypto++ ${CRYPTOPP_VERSION_STRING} (${CRYPTOPP_STYLE}, in ${CRYPTOPP_PREFIX})"
586 AS_IF([test -n "$with_libupnp_prefix"], [libupnp_place=" (in $with_libupnp_prefix)"])
587 AS_IF([test x${ENABLE_UPNP} = xyes], [dnl
588 echo " libupnp ${LIBUPNP_VERSION:-Not detected}${libupnp_place:-}"
590 if test x${WEB:-no} != xno; then
591 AS_IF([test $regex_found = no],
592 [regex_found="Not detected"],
593 [AS_IF([test -z "$REGEX_LIB"],
594 [regex_found=system],
595 [regex_found="standalone (in $REGEX_LIB)"])])
596 echo " regex $regex_found"
598 if test ${enable_nls:-yes} = yes; then
599 AS_IF([test x$USE_NLS = xno],
600 [libintl_found="Not detected"],
601 [AS_IF([test x$USE_INCLUDED_LIBINTL = xyes],
602 [libintl_found="included"],
603 [libintl_found="system"])])
604 echo " libintl $libintl_found"
606 if test x$LIBPNG_VERSION != xnot_needed; then
607 echo " libpng ${LIBPNG_VERSION:-Not detected}"
609 if test x$GDLIB_VERSION != xnot_needed; then
610 echo " libgd ${GDLIB_VERSION:-Not detected}"
612 echo " zlib ${ZLIB_VERSION:-Not detected}"
613 if test x$WEB = xdisabled; then
616 echo "WARNING! amuleweb has been disabled because configure could not find"
617 echo "a POSIX compliant regex library."
620 if test -z "$LIBPNG_VERSION"; then
623 echo "WARNING! libpng >= 1.2.0 not found."
624 echo "amuleweb will be compiled but file download progress bar images will NOT be generated."
627 if test x$ENABLE_UPNP = xdisabled; then
630 echo "WARNING! UPnP code has been disabled because ${libupnp_error}."