dnl -*-m4-*- dnl Process this file with autoconf to produce a configure script. dnl -------------------------------------------------------------- dnl configure.ac for Eliot dnl -------------------------------------------------------------- AC_INIT([eliot],[2.2]) AC_CONFIG_SRCDIR(qt/main.cpp) dnl See http://www.flameeyes.eu/autotools-mythbuster/automake/nonrecursive.html dnl for the subdir-objets arguments (used at the moment for game/cmd/) AM_INIT_AUTOMAKE([subdir-objects]) AC_CONFIG_HEADERS([config.h]) AC_CANONICAL_HOST AC_CANONICAL_BUILD dnl -------------------------------------------------------------- dnl Checks for programs. dnl -------------------------------------------------------------- AC_PROG_INSTALL AC_PROG_CC dnl Needed for gettext AC_USE_SYSTEM_EXTENSIONS AC_PROG_CXX AC_PROG_MAKE_SET AC_PROG_RANLIB AM_PROG_AR PKG_PROG_PKG_CONFIG AC_CHECK_HEADERS_ONCE(execinfo.h) AX_CXX_GCC_ABI_DEMANGLE dnl -------------------------------------------------------------- dnl Checks for compilation flags dnl -------------------------------------------------------------- CFLAGS_save="${CFLAGS}" AC_CACHE_CHECK([if \$CC accepts -Wall], [ac_cv_c_Wall], [CFLAGS="-Wall ${CFLAGS_save}" AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[]])],[ac_cv_c_Wall=yes],[ac_cv_c_Wall=no])]) CFLAGS="${CFLAGS_save}" if test "${ac_cv_c_Wall}" != "no"; then CFLAGS+=" -Wall" CXXFLAGS+=" -Wall" fi CFLAGS_save="${CFLAGS}" AC_CACHE_CHECK([if \$CC accepts -Wextra], [ac_cv_c_Wextra], [CFLAGS="-Wextra ${CFLAGS_save}" AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[]])],[ac_cv_c_Wextra=yes],[ac_cv_c_Wextra=no])]) CFLAGS="${CFLAGS_save}" if test "${ac_cv_c_Wextra}" != "no"; then CFLAGS+=" -Wextra" CXXFLAGS+=" -Wextra" fi dnl Logging AC_ARG_ENABLE([logging],AS_HELP_STRING([--enable-logging],[logging (default disabled)])) if test "${enable_logging}" = "yes"; then want_logging=1 else want_logging=0 fi dnl Debug mode AC_ARG_ENABLE([debug],AS_HELP_STRING([--enable-debug],[debug mode (default disabled)])) if test "${enable_debug}" = "yes"; then CPPFLAGS+=" -DDEBUG" CFLAGS+=" -g" CXXFLAGS+=" -g" fi dnl Profile mode AC_ARG_ENABLE([profile],AS_HELP_STRING([--enable-profile],[profile mode (default disabled)])) if test "${enable_profile}" = "yes"; then CPPFLAGS+=" -DPROFILE" CFLAGS+=" -pg" CXXFLAGS+=" -pg" LDFLAGS+=" -pg" fi dnl Regexp / Listdic / Compdic build enable AC_ARG_ENABLE([dictools],AS_HELP_STRING([--enable-dictools],[build independant dictionary tools (default enabled)])) AM_CONDITIONAL([BUILD_DICTOOLS], [test "${enable_dictools}" != "no"]) dnl Define WIN32_BUILD if the compiler is i586-mingw32msvc-g++ AM_CONDITIONAL([WIN32_BUILD], [test "${CXX}" = "i586-mingw32msvc-g++"]) dnl -------------------------------------------------------------- dnl Checks for header files. dnl -------------------------------------------------------------- AC_HEADER_STDC AC_CHECK_HEADERS(fcntl.h unistd.h sys/stats.h sys/types.h) AC_CHECK_HEADERS(arpa/inet.h netinet/in.h) AC_CHECK_HEADERS([readline/readline.h], [has_readline=1], [has_readline=0]) AM_CONDITIONAL(HAS_READLINE, test "$has_readline" = "1") dnl -------------------------------------------------------------- dnl Checks for typedefs, structures, and compiler characteristics. dnl -------------------------------------------------------------- AC_C_CONST AC_TYPE_SIZE_T AC_C_BIGENDIAN AC_C_INLINE dnl AC_CHECK_SIZEOF(char, 1) dnl AC_CHECK_SIZEOF(short, 2) dnl AC_CHECK_SIZEOF(int *, 4) dnl AC_CHECK_SIZEOF(int, 4) dnl AC_CHECK_SIZEOF(long, 4) dnl AC_CHECK_SIZEOF(long long, 0) dnl -------------------------------------------------------------- dnl Checks for library functions. dnl -------------------------------------------------------------- AC_FUNC_MEMCMP AC_CHECK_FUNCS([wcwidth]) dnl -------------------------------------------------------------- dnl Checks for libraries. dnl -------------------------------------------------------------- dnl Check for the Boost libraries (in fact we only need the headers) dnl We need at least version 1.36, for Boost.Unordered AX_BOOST_BASE([1.36.0]) PKG_CHECK_MODULES(LIBCONFIG, [libconfig++], [has_libconfig=1 AC_DEFINE(HAVE_LIBCONFIG, 1, [Define to 1 if you have the libconfig library])], [has_libconfig=0]) dnl Check for liblog4cxx PKG_CHECK_MODULES(LOG4CXX, [liblog4cxx], [has_log4cxx=1 AC_DEFINE(HAVE_LIBLOG4CXX, 1, [Define to 1 if you have the liblog4cxx library])], [has_log4cxx=0]) AS_IF([test "${want_logging}" = "1"], [AS_IF([test "${has_log4cxx}" = "1"], [with_logging=1 AC_DEFINE(USE_LOGGING, 1, [Define to 1 if you want to enable logging])], [AC_MSG_ERROR([Logging requested, but liblog4cxx could not be found on your system (using pkg-config)])])]) # Conditional, to avoid a useless dependency (in the case of shared library) AM_CONDITIONAL([WITH_LOGGING], [test "${with_logging}" = "1"]) dnl Check for Expat AX_LIB_EXPAT([2.0.1]) dnl Check for arabica and libxml2 PKG_CHECK_MODULES(ARABICA, [arabica], [], [AC_MSG_ERROR([Could not find Arabica on your system (using pkg-config)])]) dnl PKG_CHECK_MODULES(LIBXML2, [libxml-2.0], [], dnl [AC_MSG_ERROR([Could not find libxml2 on your system (using pkg-config)])]) dnl Check for ncurses dnl We enable it if asked by the user, or if ncursesw is found AC_ARG_ENABLE([ncurses],AS_HELP_STRING([--enable-ncurses], [ncurses interface support (default enabled if ncursesw found on your system)])) AX_WITH_CURSES([--without-ncurses --with-ncursesw]) if test "${enable_ncurses}" != "no" -a "${ax_cv_ncursesw}" = "yes"; then want_ncurses=1 else want_ncurses=0 if test "${enable_ncurses}" = "yes"; then AC_MSG_ERROR([Could not find the ncursesw library on your system]) fi fi AM_CONDITIONAL([BUILD_NCURSES], [test "${want_ncurses}" = "1"]) dnl Check for Qt AC_ARG_ENABLE([qt],AS_HELP_STRING([--enable-qt], [Qt4 interface support (default enabled)])) qt4_ok=0 AS_IF([test "${enable_qt}" != "no"], [PKG_CHECK_MODULES(QT, [QtCore QtGui QtNetwork >= 4.2.0], [qt4_ok=1 dnl Check for the qt4 suffix first (useful on Archlinux, which uses qt5 by default) AC_PATH_PROGS(MOC, [moc-qt4 moc], moc,`$PKG_CONFIG --variable=exec_prefix QtCore`/bin) AC_PATH_PROGS(UIC, [uic-qt4 uic], uic,`$PKG_CONFIG --variable=exec_prefix QtCore`/bin) AC_PATH_PROGS(RCC, [rcc-qt4 rcc], rcc,`$PKG_CONFIG --variable=exec_prefix QtCore`/bin) QT4LOCALEDIR="$($PKG_CONFIG --variable=prefix QtCore)/share/qt4/translations/" AC_SUBST(QT4LOCALEDIR) ], [AC_MSG_ERROR([Could not find Qt on your system (using pkg-config)])] ) ]) dnl Check for Qt5 AC_ARG_ENABLE([qt5],AS_HELP_STRING([--enable-qt5], [Qt5 interface support (default disabled)])) qt5_ok=0 AS_IF([test "${enable_qt5}" = "yes"], [PKG_CHECK_MODULES(QT, [Qt5Core Qt5Gui Qt5Widgets Qt5PrintSupport Qt5Network >= 5.1.0], [qt5_ok=1 AC_PATH_PROGS(MOC, moc, moc,`$PKG_CONFIG --variable=exec_prefix Qt5Core`/bin) AC_PATH_PROGS(UIC, uic, uic,`$PKG_CONFIG --variable=exec_prefix Qt5Core`/bin) AC_PATH_PROGS(RCC, rcc, rcc,`$PKG_CONFIG --variable=exec_prefix Qt5Core`/bin) QT4LOCALEDIR="$($PKG_CONFIG --variable=prefix QtCore)/share/qt4/translations/" AC_SUBST(QT4LOCALEDIR) ], [AC_MSG_ERROR([Could not find Qt5 on your system (using pkg-config)])] ) ]) dnl We biuld either with Qt4 or Qt5, but not both if test "${qt5_ok}" = "1" && "${qt4_ok}" = "1"; then AC_MSG_ERROR([Please deactivate Qt4 explicitly if you want to build with Qt5]) fi AM_CONDITIONAL([BUILD_QT], [test "${qt4_ok}" = "1" -o "${qt5_ok}" = "1" ]) dnl Enable/disable text version AC_ARG_ENABLE([text],AS_HELP_STRING([--enable-text],[text interface support (default enabled)])) AM_CONDITIONAL([BUILD_TEXT], [test "${enable_text}" != "no"]) dnl Internationalization macros AM_GNU_GETTEXT_VERSION(0.18.1) AM_GNU_GETTEXT dnl Iconv dnl This test depends on AM_GNU_GETTEXT executed before AS_IF([test "$am_cv_func_iconv" != "yes"], [AC_MSG_ERROR([libiconv is needed for Eliot to work properly])]) dnl Information about who built eliot (useful for the dictionary) AC_DEFINE_UNQUOTED(ELIOT_COMPILE_BY, "`whoami`", [user who ran configure]) AC_DEFINE_UNQUOTED(ELIOT_COMPILE_HOST, "`hostname`", [host which ran configure]) dnl Check the operating system case "${host_os}" in *mingw32* | *cygwin*) SYS=mingw32 ;; *) dnl nothing to do ;; esac if test "$SYS" = "mingw32"; then # For ntohl, in particular LIBS="${LIBS} -lws2_32" fi dnl -------------------------------------------------------------- dnl Output dnl -------------------------------------------------------------- AC_CONFIG_FILES(intl/Makefile po/Makefile.in dic/Makefile game/Makefile utils/Makefile qt/Makefile extras/Makefile extras/innosetup/eliot-setup.iss Makefile) AC_OUTPUT if test "$has_libconfig" != "1"; then echo echo "@@@@@@@@@@@" echo "Warning!" echo "libconfig++ was not detected on your system: saving and loading the configuration will be impossible!" echo "libconfig++ can be downloaded here: http://www.hyperrealm.com/main.php?s=libconfig" echo "@@@@@@@@@@@" fi