2 # Process this file with autoconf to produce a configure script.
4 # This file is part of the aMule Project.
6 # Copyright (c) 2003-2011 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])
29 m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES])
33 AC_CONFIG_SRCDIR([src/amule.cpp])
34 AC_CONFIG_HEADERS([config.h])
35 AC_CONFIG_MACRO_DIR([m4])
38 dnl Check host system.
41 dnl Checks for programs.
42 dnl Workaround for these checks may alter CFLAGS and CXXFLAGS, especially if they were empty
44 MULE_BACKUP([CXXFLAGS])
45 MULE_BACKUP([BUILD_CFLAGS])
50 AS_IF([test "$cross_compiling" = yes], [AC_PROG_BUILD_CC], [BUILD_CC="$CC" ; BUILD_EXEEXT=$EXEEXT])
51 MULE_RESTORE([CFLAGS])
52 MULE_RESTORE([CXXFLAGS])
53 MULE_RESTORE([BUILD_CFLAGS])
63 dnl Find the right ranlib, even when cross-compiling
64 dnl And for some other tools for cross compilation
65 AC_CHECK_TOOL(RANLIB, ranlib)
66 AC_CHECK_TOOL(STRIP, strip)
70 dnl Selectable components
71 MULE_ARG_ENABLE([monolithic], [yes], [disable building of the monolithic aMule app], [MONOLITHIC])
72 MULE_ARG_ENABLE([amule-daemon], [no], [compile aMule daemon version], [AMULE_DAEMON])
73 MULE_ARG_ENABLE([amulecmd], [no], [compile aMule command line client], [COMPILE_CMD])
74 MULE_ARG_ENABLE([webserver], [no], [compile aMule WebServer], [WEB])
75 MULE_ARG_ENABLE([amule-gui], [no], [compile aMule remote GUI], [AMULE_GUI])
76 MULE_ARG_ENABLE([cas], [no], [compile C aMule Statistics], [CAS])
77 MULE_ARG_ENABLE([wxcas], [no], [compile aMule GUI Statistics], [WXCAS])
78 MULE_ARG_ENABLE([ed2k], [yes], [don't compile aMule ed2k links handler], [ED2K])
79 MULE_ARG_ENABLE([alc], [no], [compile aMuleLinkCreator GUI version], [ALC])
80 MULE_ARG_ENABLE([alcc], [no], [compile aMuleLinkCreator for console], [ALCC])
81 MULE_ARG_ENABLE([xas], [no], [install xas XChat2 plugin], [XAS])
82 MULE_ARG_ENABLE([fileview], [no], [compile aMule file viewer for console (EXPERIMENTAL)], [FILEVIEW])
83 MULE_ARG_ENABLE([plasmamule], [no], [compile aMule plasma applet and engine])
85 # Run all the tests with static linkage if we want a statically linked binary
86 MULE_ARG_ENABLE([static], [no], [produce a statically linked executable])
87 MULE_IF_ENABLED([static], [MULE_APPEND([LDFLAGS], [-static])])
92 # Default is yes, because they're most likely compatible.
93 # However, this is only used when cross-compiling.
96 [AS_HELP_STRING([--without-gnu-malloc],
97 [Don't assume that we use GNU libc compatible malloc/realloc when cross-compiling])],
98 [gnumalloc=$withval], [gnumalloc=yes])
101 # Checking for libs before all other stuff to break
102 # configure as soon as possible in case of a missing one
103 # to avoid losing too much time
106 MULE_IF_ENABLED_ANY([monolithic, amule-daemon, amulecmd, webserver, amule-gui],
107 [MULE_CHECK_ZLIB([1.1.4],, [AC_MSG_ERROR([zlib >= 1.1.4 is required for aMule])])])
109 MULE_IF_ENABLED([cas], [
111 MULE_CHECK_GDLIB([2.0.0], [
113 MULE_PREPEND([GDLIB_LIBS], [-lgd])
115 AS_IF([test -z "$CAS_DEFS"],
117 [gd-lib >= 2.0.0, or a functional gd.h (from gd-devel) not found.
118 Please check that gdlib-config is in your default path, check out LD_LIBRARY_PATH or equivalent variable.
119 Or this might also be that your gdlib-config has other name.
120 Please try again with --with-gdlib-config=/usr/bin/gdlib-config (replace /usr/bin/gdlib-config with a valid path to your gdlib-config).
121 If you use compiled packages check if you have devel pack installed.
122 To download the latest version check http://www.boutell.com/gd for sources.])])
124 AC_SUBST([CAS_DEFS])dnl
126 MULE_IF_ENABLED([webserver],
127 [MULE_CHECK_LIBPNG([1.2.0], [AMULEWEB_DEFS="-DWITH_LIBPNG"], [
129 [libpng >= 1.2.0 not found.
130 amuleweb will be compiled but file download progress bar images will NOT be generated.])
133 AC_SUBST([AMULEWEB_DEFS])dnl
135 # Check for perl File::Copy
136 AC_MSG_CHECKING([for File::Copy])
137 AS_IF([perl -e "require File::Copy" 2>/dev/null], [AC_MSG_RESULT([ok])],
139 [File::Copy perl module is required by the mldonkey_importer script.
140 If you want to use this script please install File::Copy from CPAN.])])
142 # Check for GeoIP (required for IP2Country capability)
143 MULE_IF_ENABLED_ANY([monolithic, amule-gui], [MULE_CHECK_GEOIP])
146 MULE_IF_ENABLED_ANY([monolithic, amule-daemon, amule-gui, amulecmd, webserver, alc, alcc, wxcas, fileview],
148 WX_STANDARD_OPTIONS([toolkit,wxshared,wxdebug,wxversion])
149 # Force using a static wxWidgets library if the executable is to be linked statically.
150 MULE_IF_ENABLED([static], [WX_SHARED=0])
151 # Force using a unicode build of the library
152 MULE_IF_ENABLED_ANY([monolithic, amule-daemon, amule-gui, amulecmd, webserver, fileview], [WX_UNICODE=1])
154 WX_CONVERT_STANDARD_OPTIONS_TO_WXCONFIG_FLAGS
155 WX_CONFIG_CHECK([2.8.12], [wxWin=1],,, [$WXCONFIG_FLAGS])
156 AS_IF([test "$wxWin" != 1],
158 wxWidgets must be installed on your system but wx-config
159 script couldn't be found. Please check that wx-config is
160 in path or specified by --with-wx-config=path flag, the
161 directory where wxWidgets libraries are installed (returned
162 by 'wx-config --libs' command) is in LD_LIBRARY_PATH or
163 equivalent variable and wxWidgets version is 2.8.12 or above.
166 AS_IF([test "${WX_VERSION_FULL}" = "2.9.0"], [AC_MSG_ERROR([
167 This version of wxWidgets is known to not work with aMule.
168 Please upgrade to a newer version.]
171 WX_DETECT_STANDARD_OPTION_VALUES
173 # We also need wxBase
174 WX_LIBS=`$WX_CONFIG_WITH_ARGS --libs adv,core,net`
175 WXBASE_LIBS=`$WX_CONFIG_WITH_ARGS --libs net`
176 WXBASE_CPPFLAGS="$WX_CPPFLAGS -DwxUSE_GUI=0"
178 MULERCFLAGS=`$WX_CONFIG_WITH_ARGS --cflags | $AWK ['{ for (i = 1; i <= NF; i++) if (index($i, "-I") != 1 && index($i, "-D") != 1) $i = ""; print }']`
180 AC_SUBST([WXBASE_LIBS])dnl
181 AC_SUBST([WXBASE_CPPFLAGS])dnl
183 MULE_IF_ENABLED_ANY([monolithic, amule-gui, wxcas, alc],
184 [AS_IF([test "${WX_PORT}" = base],
186 The selected components need a wxWidgets library with GUI,
187 but your installation is base-only. Please install a GUI
188 enabled version of wxWidgets and then retry.
192 dnl Resource compiler for W32
193 AC_ARG_VAR([RC], [Resource Compiler])dnl
194 AC_ARG_VAR([RCFLAGS], [Resource Compiler Flags])dnl
195 AS_IF([test ${SYS:-unknown} = win32], [AC_CHECK_TOOL([RC], [windres], [:])])
199 MULE_ARG_ENABLE([upnp], [yes], [do not compile UPnP code])
200 MULE_IF_ENABLED_ANY([monolithic, amule-daemon],, [MULE_ENABLEVAR([upnp])=no])
201 MULE_IF_ENABLED([upnp], [
204 [MULE_APPEND([LIBUPNP_CPPFLAGS], [-DENABLE_UPNP=1])],
205 [MULE_ENABLEVAR([upnp])=disabled
206 MULE_WARNING([UPnP code has been disabled because ${libupnp_error}.])]
212 MULE_IF_ENABLED_ANY([monolithic, amule-daemon, amule-gui, fileview],
213 [MULE_CHECK_CRYPTOPP([5.1], [
214 # Check for CryptoPP >= 5.5
215 AS_IF([test $CRYPTOPP_VERSION_NUMBER -ge "5005000"], [MULE_APPEND([CRYPTOPP_CPPFLAGS], [-D__WEAK_CRYPTO__])])
218 Could not find crypto++ header file "$cryptopp_file_with_version".
219 Please try again with --with-crypto-prefix=/my_crypto_prefix
220 (replace /my_crypto_prefix with a valid path to your crypto++
221 installation directory).])
224 MULE_COMPILATION_FLAGS
226 dnl Checks requiring C++
227 MULE_IF_ENABLED_ANY([monolithic, amule-daemon, amule-gui, amulecmd, webserver, ed2k, alc, alcc, wxcas, fileview],
229 dnl MULE_CHECK_GLIBCXX
230 MULE_CHECK_STRICT_ALIASING
231 MULE_IF_ENABLED_ANY([monolithic, amule-daemon, alc, alcc], [MULE_CHECK_WX_SUPPORTS_LARGEFILE])
233 # Check if the compiler is broken, wrt. exceptions.
234 MULE_CHECK_EXCEPTIONS
238 MULE_IF_ENABLED_ANY([monolithic, amule-daemon, amule-gui, amulecmd, webserver], [MULE_CHECK_BOOST([1.47])])
242 # Ok, we have all needed libs, now checking for other stuff
243 AS_IF([test "$LEX" = "flex"], [MULE_CHECK_FLEX_EXTENDED], [HAVE_FLEX_EXTENDED=no])
245 # Flush standard test results for speeding cache
248 dnl -------------------------------------------------------------------------------
249 dnl Start of autoscan stuff
250 dnl -------------------------------------------------------------------------------
251 # Checks for header files.
255 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 errno.h signal.h])
258 # Checks for typedefs, structures, and compiler characteristics.
269 AC_CHECK_TYPES([ptrdiff_t])
271 # Checks for library functions.
272 AC_FUNC_CLOSEDIR_VOID
273 AC_PROG_GCC_TRADITIONAL
275 AS_IF([test x$SYS != xwin32], [
278 AC_FUNC_LSTAT_FOLLOWS_SLASHED_SYMLINK
281 AC_FUNC_SELECT_ARGTYPES
282 AC_FUNC_SETVBUF_REVERSED
288 dnl Some other functions that worth checking deeper:
289 dnl AC_FUNC_CLOSEDIR_VOID
294 dnl AC_FUNC_SETVBUF_REVERSED
295 dnl Anyways, do we actually USE them?
296 AS_IF([test $cross_compiling = yes -a $gnumalloc = yes], [
297 MULE_WARNING([configure cannot check whether malloc() and realloc() are GNU libc compatible. You have to be ABSOLUTELY sure that they are, otherwise run configure with the --without-gnu-malloc switch.])
298 ac_cv_func_malloc_0_nonnull=yes
299 ac_cv_func_realloc_0_nonnull=yes
303 AC_CHECK_FUNCS([__argz_count __argz_next __argz_stringify endpwent floor ftruncate getcwd gethostbyaddr gethostbyname gethostname getpass gettimeofday inet_ntoa localeconv memmove mempcpy memset nl_langinfo pow select setlocale socket sqrt stpcpy strcasecmp strchr strcspn strdup strerror strncasecmp strstr strtoul sigaction])
304 #-------------------------------------------------------------------------------
305 # End of autoscan stuff
306 #-------------------------------------------------------------------------------
309 dnl autoscan has missed these ones.
311 AC_CHECK_FUNCS([mkdir getrlimit setrlimit getopt_long])
313 dnl This must be *before* MULE_CHECK_NLS
314 MULE_IF_ENABLED_ANY([monolithic, amule-daemon], [MULE_CHECK_MMAP])
316 MULE_BACKUP([CPPFLAGS])
317 MULE_APPEND([CPPFLAGS], [-D_XOPEN_SOURCE=600])
319 MULE_RESTORE([CPPFLAGS])
321 # Look for a way to preallocate disk space for files.
322 MULE_IF_ENABLED_ANY([monolithic, amule-daemon], [MULE_CHECK_FALLOCATE])
324 # Checking Native Language Support
325 dnl Sets gettext version.
326 dnl AM_GNU_GETTEXT_VERSION *must not* be moved away from configure.in!
327 AM_GNU_GETTEXT_VERSION(0.11.5)
330 # Check for bfd.h (to have proper backtraces without using wxExecute)
334 # Flush standard test results for speeding cache
339 # autoconf >= 2.60 already defines ${docdir}, but we always need it.
340 AC_MSG_CHECKING([for docdir])
341 AS_IF([test -z "$docdir"], [docdir="${datadir}/doc/${PACKAGE_NAME}-${PACKAGE_VERSION}"])
342 AC_SUBST([docdir])dnl
343 AC_MSG_RESULT([$docdir])
345 # Try to set the SVN checkout-date
346 AC_MSG_CHECKING([for SVNDATE])
347 if test -f "$srcdir/.svn-revision" # SVNDATE for tarballs
349 svndate="rev. `cat $srcdir/.svn-revision`"
350 elif test -d $srcdir/.svn # SVNDATE for svn
352 svndate="rev. `svnversion $srcdir | sed -e 's/[[0-9]][[0-9]]*:\(.*\)/\1/' -e 's/\([[0-9]][[0-9]]*\).*/\1/'`"
354 AC_MSG_RESULT(${svndate:-None required})
355 AS_IF([test -n "$svndate"], [
356 AC_DEFINE_UNQUOTED([SVNDATE], ["$svndate"], [The checkout date or svn revision number.])
357 MULE_ADDFLAG([RC], [-D__PRERELEASE__])
359 AC_SUBST([SVNDATE], [$svndate])dnl
361 dnl Set up the denoiser
364 MULE_IF_ENABLED([plasmamule], [PLASMAMULE_CHECKS])
366 AM_CONDITIONAL(SYS_WIN32, test x$SYS = xwin32)
367 AM_CONDITIONAL(NEED_RC, test x$SYS = xwin32 -a "$RC" != ":")
368 AM_CONDITIONAL(NEED_CORESERVICES, test x$SYS = xdarwin)
369 AM_CONDITIONAL(COMPILE_NLS, test x$USE_NLS = xyes)
370 AM_CONDITIONAL(GENERATE_FLEX_HEADER, test x$HAVE_FLEX_EXTENDED = xyes)
371 AM_CONDITIONAL(INSTALL_SKINS, test MULE_IS_ENABLED_ANY([monolithic, amule-gui]))
372 AM_CONDITIONAL(PLASMAMULE, test MULE_IS_ENABLED([plasmamule]))
374 AM_CONDITIONAL([COMPILE_LIB_COMMON], [test MULE_IS_ENABLED_ANY([monolithic, amule-daemon, amulecmd, webserver, amule-gui, fileview])])
375 AM_CONDITIONAL([COMPILE_LIB_EC], [test MULE_IS_ENABLED_ANY([monolithic, amule-daemon, amulecmd, webserver, amule-gui])])
377 # Check for readline library
378 MULE_IF_ENABLED_ANY([amulecmd, webserver], [VL_LIB_READLINE])
380 # DO NOT MOVE UP... THERE'S A REASON TO BE HERE!!
385 dnl Generate the Makefiles
387 AC_CONFIG_FILES([Makefile
393 src/pixmaps/flags_xpm/Makefile
396 src/libs/ec/cpp/Makefile
397 src/libs/common/Makefile
399 src/utils/aLinkCreator/Makefile
400 src/utils/aLinkCreator/docs/Makefile
401 src/utils/aLinkCreator/src/Makefile
402 src/utils/cas/Makefile
403 src/utils/cas/docs/Makefile
404 src/utils/fileview/Makefile
405 src/utils/plasmamule/Makefile
406 src/utils/wxCas/Makefile
407 src/utils/wxCas/docs/Makefile
408 src/utils/wxCas/src/Makefile
409 src/utils/xas/Makefile
410 src/utils/xas/autostart-xas
411 src/utils/xas/docs/Makefile
413 src/webserver/Makefile
414 src/webserver/src/Makefile
415 src/webserver/default/Makefile
417 unittests/muleunit/Makefile
418 unittests/tests/Makefile])
420 dnl autoscan has missed these, i wonder why...
422 AC_CONFIG_FILES([po/Makefile.in
424 AS_IF([test x$SYS = xwin32], [AC_CONFIG_FILES([version.rc])])
427 AS_IF([test -n "$svndate"], [SVN_REVISION=" ($svndate)"], [SVN_REVISION=])
431 echo " Configure script has finished system check."
433 echo " Configured aMule ${PACKAGE_VERSION}${SVN_REVISION} for '${host}'."
435 echo " aMule enabled options:"
437 echo " **** aMule Core ****"
438 echo " Prefix where aMule should be installed? ${prefix:-none}"
439 echo " Should aMule be compiled with i18n support? ${USE_NLS:-no}"
440 echo " Should aMule be compiled in debug mode? MULE_STATUSOF([debug])"
441 echo " Should aMule be compiled with profiling? MULE_STATUSOF([profile])"
442 echo " Should aMule be compiled with optimizations? MULE_STATUSOF([optimize])"
443 echo " Should aMule be compiled with UPnP support? MULE_STATUSOF([upnp])"
444 echo " Should aMule be compiled with IP2country support? MULE_STATUSOF([geoip])"
445 echo " Should aMule monolithic application be built? MULE_STATUSOF([monolithic])"
446 echo " Should aMule daemon version be built? MULE_STATUSOF([amule-daemon])"
447 echo " Should aMule remote gui be built? MULE_STATUSOF([amule-gui])"
448 echo " Crypto++ library/headers style? ${CRYPTOPP_STYLE:-not found}"
451 echo " **** aMule TextClient ****"
452 echo " Should aMule Command Line Client be built? MULE_STATUSOF([amulecmd])"
454 echo " **** aMule WebServer ****"
455 echo " Should aMule WebServer be built? MULE_STATUSOF([webserver])"
457 echo " **** aMule ED2K Links Handler ****"
458 echo " Should aMule ED2K Links Handler be built? MULE_STATUSOF([ed2k])"
460 echo " **** aMuleLinkCreator ****"
461 echo " Should aMuleLinkCreator GUI version (alc) be built? MULE_STATUSOF([alc])"
462 echo " Should aMuleLinkCreator for console (alcc) be built? MULE_STATUSOF([alcc])"
464 echo " **** aMule Statistics ****"
465 echo " Should C aMule Statistics (CAS) be built? MULE_STATUSOF([cas])"
466 echo " Should aMule GUI Statistics (wxCas) be built? MULE_STATUSOF([wxcas])"
467 echo " Should xas XChat2 plugin be installed? MULE_STATUSOF([xas])"
468 echo " Should plasmaMule plasma-applet be build? MULE_STATUSOF([plasmamule])"
471 echo " **** General Libraries and Tools ****"
472 echo " Should ccache support be enabled? MULE_STATUSOF([ccache])"
473 echo " Libraries aMule will use to build:"
474 MULE_IF_ENABLED_ANY([monolithic, amule-daemon, amule-gui, amulecmd, webserver, alc, alcc, wxcas, fileview], [
476 AS_IF([test $WX_DEBUG -eq 1], [wxinfo="$wxinfo,debug"])
477 AS_IF([test $WX_SHARED -eq 1], [wxinfo="$wxinfo,shared"], [wxinfo="$wxinfo,static"])
478 echo " wxWidgets ${WX_VERSION_FULL} ($wxinfo)"
480 AS_IF([test ${with_boost:-no} != no],
482 [test ${with_boost:-no} = disabled],
483 [echo " boost Not detected"],
484 [test ${boost_cv_inc_path:-yes} != yes],
485 [echo " boost `echo ${boost_cv_lib_version} | sed -e 's/_/./g'` (in ${boost_cv_inc_path})"],
486 [echo " boost `echo ${boost_cv_lib_version} | sed -e 's/_/./g'`"],
488 MULE_IF_ENABLED_ANY([monolithic, amule-daemon, amule-gui, fileview],
489 [echo " crypto++ ${CRYPTOPP_VERSION_STRING} (${CRYPTOPP_STYLE}, in ${CRYPTOPP_PREFIX})"])
490 MULE_IF_ENABLED([upnp], [
491 AS_IF([test -n "$with_libupnp_prefix"], [libupnp_place=" (in $with_libupnp_prefix)"])
492 echo " libupnp ${LIBUPNP_VERSION:-Not detected}${libupnp_place:-}"
494 if test ${enable_nls:-yes} = yes; then
495 AS_IF([test x$USE_NLS = xno],
496 [libintl_found="Not detected"],
497 [AS_IF([test x$USE_INCLUDED_LIBINTL = xyes],
498 [libintl_found="included"],
499 [libintl_found="system"])])
500 echo " libintl $libintl_found"
502 MULE_IF_ENABLED([geoip],
503 [AS_IF([test -z "${with_geoip_headers:-}${with_geoip_lib:-}"], [geoip_style=system], [geoip_style=user])
504 MULE_IF_ENABLED_ANY([monolithic, amule-gui],
505 [echo " libGeoIP ${geoip_style}"])])
506 MULE_IF_ENABLED([webserver],
507 [echo " libpng ${LIBPNG_VERSION:-Not detected}"])
508 MULE_IF_ENABLED([cas],
509 [echo " libgd ${GDLIB_VERSION:-Not detected}"])
510 MULE_IF_ENABLED_ANY([monolithic, amule-daemon, amulecmd, webserver, amule-gui],
511 [echo " zlib ${ZLIB_VERSION:-Not detected}"])
512 MULE_IF_ENABLED([plasmamule],
513 [echo " qt-moc ${QT_MOC} ${QT_MOC_VERSION}"
514 echo " qt-core-libs ${QT_CORE_LIBS}"
515 echo " qt-gui-libs ${QT_GUI_LIBS}"
516 echo " kde4-config ${KDE4_CONFIG} (${KDE_CONF_VER})"
517 echo " kde-headers ${KDE_HEADER_DIR}"
518 echo " kde-services-path ${KDE_SERVICE_PATH}"
519 echo " kde-module-path ${KDE_MODULE_PATH}"
520 echo " kde-icon-path ${KDE_ICON_PATH}"
521 echo " kde-mime-path ${KDE_MIME_PATH}"
522 echo " kde-applinks-path ${KDE_APPLNK_PATH}"