eliot/configure.ac
2020-04-11 09:43:00 +02:00

260 lines
9.5 KiB
Text
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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.20)
AM_GNU_GETTEXT([external])
dnl Iconv
AM_ICONV
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(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