dnl Initialize autoconf and automake AC_INIT(src/main.cc) AC_PREREQ(2.52) AM_INIT_AUTOMAKE(fluxbox,svn, no-define) dnl Determine default prefix test x$prefix = "xNONE" && prefix="$ac_default_prefix" dnl Check for various flavors of UNIX(r) dnl AC_AIX dnl AC_ISC_POSIX AC_LANG_CPLUSPLUS dnl Locate required external software AC_PROG_CC AC_PROG_CXX AC_PROG_INSTALL AC_PROG_RANLIB AC_CHECK_PROGS(regex_cmd, sed) if test x$regex_cmd = "x"; then AC_MSG_ERROR([error. sed is required to build the data files.]) fi dnl Check for system header files AC_HEADER_STDC AC_CHECK_HEADERS(errno.h ctype.h dirent.h fcntl.h libgen.h \ locale.h nl_types.h process.h signal.h stdarg.h \ stdio.h time.h unistd.h \ sys/param.h sys/select.h sys/signal.h sys/stat.h \ sys/time.h sys/types.h sys/wait.h \ iconv.h) AC_CHECK_HEADERS(sstream, , [ AC_CHECK_HEADERS(strstream,, [AC_MSG_ERROR([Your libstdc++ doesn't have the sstream or strstream classes])] )] ) AC_CHECK_HEADERS(cassert cctype cerrno cmath cstdarg cstdio cstdlib cstring ctime) AC_HEADER_TIME dnl Check for existance of basename(), setlocale() and strftime() AC_CHECK_FUNCS(basename, , AC_CHECK_LIB(gen, basename, LIBS="$LIBS -lgen")) AC_CHECK_FUNCS(getpid setlocale sigaction strcasestr snprintf vsnprintf catopen catgets catclose) dnl The autoconf test for strftime is broken now (due to gcc 3.3 bug?): dnl Gcc 3.3 testprog = ``extern "C" char strftime;'', build with g++ test.cc dnl breaks with: dnl test.cc:1: error: nonnull argument with out-of-range operand number dnl (arg 1, operand 3) AC_MSG_CHECKING(for strftime) AC_COMPILE_IFELSE( [AC_LANG_PROGRAM([#include ], [[ char * s; time_t t = time(NULL); size_t x = strftime(s, 5, "%a", localtime(&t)); ]] )], [ AC_DEFINE(HAVE_STRFTIME, 1, [Define to 1 if you have the 'strftime' function.]) AC_MSG_RESULT(yes) ], [AC_MSG_RESULT(no)]) dnl --------------- dnl CHECK FOR ICONV dnl --------------- dnl Find iconv. It may be in libiconv and may be iconv() or libiconv() if test "x$ac_cv_header_iconv_h" = "xyes"; then ac_found_iconv=no AC_COMPILE_IFELSE( [AC_LANG_PROGRAM( [[#include #include ]], [[ iconv_open(NULL, NULL); return 0; ]] )], [ ac_found_iconv=yes ], [ ]) AC_COMPILE_IFELSE( [AC_LANG_PROGRAM( [[#include #include ]], [[ libiconv_open(NULL, NULL); return 0; ]] )], [ ac_found_iconv=yes ], [ ]) if test "x$ac_found_iconv" = xyes; then AC_DEFINE(HAVE_ICONV, 1, [Define if you have the iconv() function.]) AC_CHECK_LIB([iconv], [iconv_open], [ LIBS="$LIBS -liconv" ], []) AC_CHECK_LIB([iconv], [libiconv_open], [ LIBS="$LIBS -liconv" ], []) dnl Check if iconv uses const in prototype declaration AC_CACHE_CHECK(for iconv declaration, ac_cv_iconv_const, [AC_COMPILE_IFELSE( [AC_LANG_PROGRAM( [[#include #include ]], [[ char **msg, **new_msg; size_t result, inleft, outleft; result = iconv((iconv_t)(-1), msg, &inleft, new_msg, &outleft); return 0; ]] )], [ac_cv_iconv_const=no], [ac_cv_iconv_const=yes]) ]) if test "x$ac_cv_iconv_const" = xyes; then AC_DEFINE(HAVE_CONST_ICONV, 1, [Define if you have the iconv() function.]) fi fi fi AC_CHECK_LIB(nsl, t_open, LIBS="$LIBS -lnsl") AC_CHECK_LIB(socket, socket, LIBS="$LIBS -lsocket") dnl Check for X headers and libraries AC_PATH_X AC_PATH_XTRA test x$no_x = "xyes" && AC_MSG_ERROR([Fluxbox requires the X Window System libraries and headers.]) test x$x_includes = "x" && x_includes="/usr/include" test x$x_libraries = "x" && x_libraries="/usr/lib" CFLAGS="$CFLAGS $X_CFLAGS" CXXFLAGS="$CXXFLAGS $X_CFLAGS" LIBS="$LIBS $X_LIBS" LDFLAGS="$LDFLAGS $LIBS $X_PRE_LIBS" dnl Check for required functions in -lX11 AC_CHECK_LIB(X11, XOpenDisplay, LIBS="$LIBS -lX11", AC_MSG_ERROR([Could not find XOpenDisplay in -lX11.]) ) LIBS="$LIBS $X_EXTRA_LIBS" AC_CHECK_LIB(xpg4, setlocale, LIBS="$LIBS -lxpg4") AC_CHECK_PROGS(gencat_cmd, gencat) if test x$gencat_cmd = "x"; then NLS="" fi Xext_lib="" dnl Check for XShape extension support and proper library files. SHAPE="" AC_MSG_CHECKING([whether to build support for the XShape extension]) AC_ARG_ENABLE( shape, [ --enable-shape enable support of the XShape extension ([default=yes])]) : ${enableval="yes"} if test x$enableval = "xyes"; then AC_MSG_RESULT([yes]) AC_CHECK_LIB(Xext, XShapeCombineShape, AC_MSG_CHECKING([for X11/extensions/shape.h]) AC_TRY_LINK( #include #include #include , long foo = ShapeSet, AC_MSG_RESULT([yes]) SHAPE="-DSHAPE"; Xext_lib="-lXext", AC_MSG_RESULT([no]) ) ) else AC_MSG_RESULT([no]) fi AC_SUBST(SHAPE) CXXFLAGS="$CXXFLAGS $SHAPE" LIBS="$LIBS $Xext_lib" dnl Check for the Slit AC_MSG_CHECKING([whether to include the Slit]) AC_ARG_ENABLE( slit, [ --enable-slit include code for the Slit ([default=yes])], if test x$enableval = "xyes"; then AC_MSG_RESULT([yes]) AC_DEFINE(SLIT, 1, " compile with slit") else AC_MSG_RESULT([no]) fi, AC_MSG_RESULT([yes]) AC_DEFINE(SLIT, 1, " compile with slit") ) dnl Check for Remember options AC_MSG_CHECKING([whether to include remember functionality]) AC_ARG_ENABLE( remember, [ --enable-remember include code for Remembering attributes ([default=yes])], if test x$enableval = "xyes"; then AC_MSG_RESULT([yes]) AC_DEFINE(REMEMBER, 1, " compile with remember") REMEMBER_SRC=true else AC_MSG_RESULT([no]) REMEMBER_SRC=false fi, AC_MSG_RESULT([yes]) AC_DEFINE(REMEMBER, 1, " compile with remember") REMEMBER_SRC=true ) AM_CONDITIONAL(REMEMBER_SRC, test x$REMEMBER_SRC = xtrue) dnl Check for Toolbar options AC_MSG_CHECKING([whether to include Toolbar]) AC_ARG_ENABLE( toolbar, [ --enable-toolbar include code for Toolbar ([default=yes])], if test x$enableval = "xyes"; then AC_MSG_RESULT([yes]) AC_DEFINE(USE_TOOLBAR, 1, " compile with toolbar") TOOLBAR_SRC=true else AC_MSG_RESULT([no]) TOOLBAR_SRC=false fi, AC_MSG_RESULT([yes]) AC_DEFINE(USE_TOOLBAR, 1, " compile with toolbar") TOOLBAR_SRC=true ) AM_CONDITIONAL(TOOLBAR_SRC, test x$TOOLBAR_SRC = xtrue) AC_MSG_CHECKING([whether to have (POSIX) regular expression support]) AC_ARG_ENABLE( regexp, [ --enable-regexp regular expression support ([default=yes])], if test x$enableval = "xyes"; then AC_EGREP_HEADER([regex_t],regex.h, AC_DEFINE(USE_REGEXP, 1, "Regular Expression support") AC_MSG_RESULT([yes]) REGEXP_SRC=true, AC_MSG_RESULT([no]) REGEXP_SRC=false ) else AC_MSG_RESULT([no]) REGEXP_SRC=false fi, AC_EGREP_HEADER([regex_t],regex.h, AC_DEFINE(USE_REGEXP, 1, "Regular Expression support") AC_MSG_RESULT([yes]) REGEXP_SRC=true, AC_MSG_RESULT([no]) REGEXP_SRC=false ) ) AM_CONDITIONAL(REGEXP_SRC, test x$REGEXP_SRC = xtrue) AC_MSG_CHECKING([whether to include the new WM Spec]) AC_ARG_ENABLE( newwmspec, [ --enable-newwmspec include code for the new WM Spec ([default=yes])], if test x$enableval = "xyes"; then AC_MSG_RESULT([yes]) NEWWMSPEC=true AC_DEFINE(USE_NEWWMSPEC, 1, " use extened window manager hints") else AC_MSG_RESULT([no]) NEWWMSPEC=false fi, AC_MSG_RESULT([yes]) AC_DEFINE(USE_NEWWMSPEC, 1, " use extened window manager hints") NEWWMSPEC=true ) AM_CONDITIONAL(NEWWMSPEC, test x$NEWWMSPEC = xtrue) dnl Check for ordered 8bpp dithering AC_MSG_CHECKING([whether to include Pseudocolor ordered dithering code]) AC_ARG_ENABLE(ordered-pseudo, [ --enable-ordered-pseudo include code for ordered pseudocolor (8bpp) dithering ([default=no])], if test x$enableval = "xyes"; then AC_MSG_RESULT([yes]) AC_DEFINE(ORDEREDPSEUDO, 1, "ordered dithering code") else AC_MSG_RESULT([no]) fi, AC_MSG_RESULT([no]) ) dnl Check whether to include debugging code DEBUG="" AC_MSG_CHECKING([whether to include verbose debugging code]) AC_ARG_ENABLE(debug, [ --enable-debug include verbose debugging code ([default=no])], if test x$enableval = "xyes"; then AC_MSG_RESULT([yes]) DEBUG="-DDEBUG -Wall" else AC_MSG_RESULT([no]) fi, AC_MSG_RESULT([no]) ) AC_SUBST(DEBUG) CXXFLAGS="$CXXFLAGS $DEBUG" dnl Check whether to include native language support (i18n) AC_MSG_CHECKING([whether to include NLS support]) AC_ARG_ENABLE(nls, [ --enable-nls include native language support ([default=no])], if test x$enableval = "xyes"; then AC_MSG_RESULT([yes]) AC_DEFINE(NLS, 1, "Native language support") NLS="-DNLS" else AC_MSG_RESULT([no]) fi, AC_MSG_RESULT([no]) ) AC_SUBST(NLS) dnl Check for new timed pixmap cache AC_MSG_CHECKING([whether to use the new timed pixmap cache]) AC_ARG_ENABLE( timed-cache, [ --enable-timed-cache use new timed pixmap cache ([default=yes])], if test x$enableval = "xyes"; then AC_MSG_RESULT([yes]) AC_DEFINE(TIMEDCACHE, 1, "timed cache") else AC_MSG_RESULT([no]) fi, AC_MSG_RESULT([yes]) AC_DEFINE(TIMEDCACHE, 1, "timed cache") ) dnl Check KDE AC_MSG_CHECKING([whether to have KDE slit support]) AC_ARG_ENABLE( kde, [ --enable-kde KDE slit support ([default=yes])], if test x$enableval = "xyes"; then AC_MSG_RESULT([yes]) AC_DEFINE(KDE, 1, "KDE slit support") else AC_MSG_RESULT([no]) fi, AC_MSG_RESULT([yes]) AC_DEFINE(KDE, 1, "KDE slit support") ) dnl Check GNOME AC_MSG_CHECKING([whether to have GNOME support]) AC_ARG_ENABLE( gnome, [ --enable-gnome GNOME support ([default=yes])], if test x$enableval = "xyes"; then AC_MSG_RESULT([yes]) AC_DEFINE(USE_GNOME, 1, "Gnome 1 support") GNOME=true else AC_MSG_RESULT([no]) GNOME=false fi, AC_MSG_RESULT([yes]) AC_DEFINE(USE_GNOME, 1, "Gnome 1 support") GNOME=true ) AM_CONDITIONAL(GNOME, test x$GNOME = xtrue) AC_MSG_CHECKING([whether to have Xft support]) AM_PATH_XFT(yes, XFT=true, XFT=false ) if test "x$XFT" = "xtrue" ; then AC_TRY_LINK([ #include ], [ XftFontClose(0, 0); return 1; ], [ AC_DEFINE(USE_XFT, 1, "antialias support") AC_MSG_CHECKING([Xft UTF-8 support]) AC_TRY_LINK([ #include ], [ XftDrawStringUtf8(0, 0, 0, 0, 0, 0, 0); return 0; ], AC_DEFINE(HAVE_XFT_UTF8_STRING, 1, "Xft UTF8 support") AC_MSG_RESULT(yes), AC_MSG_RESULT(no) ) ], [ AC_MSG_RESULT([Could not link with Xft. Install Xft if you want support for it.]) XFT=false ]) fi AM_CONDITIONAL(XFT, test x$XFT = xtrue) AC_MSG_CHECKING([whether to have Xrender (transparent) support]) AC_ARG_ENABLE( xrender, [ --enable-xrender Xrender (transparent) support ([default=yes])], if test x$enableval = "xyes"; then AC_MSG_RESULT([yes]) AC_CHECK_LIB(Xrender, XRenderCreatePicture, AC_DEFINE(HAVE_XRENDER, 1, "Xrender support") LIBS="$LIBS -lXrender") else AC_MSG_RESULT([no]) fi, AC_MSG_RESULT([yes]) AC_CHECK_LIB(Xrender, XRenderCreatePicture, AC_DEFINE(HAVE_XRENDER, 1, "Xrender support") LIBS="$LIBS -lXrender") ) XPM=false AC_MSG_CHECKING([whether to have Xpm (pixmap themes) support]) AC_ARG_ENABLE( xpm, [ --enable-xpm Xpm (pixmap themes) support ([default=yes])], if test x$enableval = "xyes"; then AC_MSG_RESULT([yes]) AC_CHECK_LIB(Xpm, XpmReadFileToPixmap, AC_DEFINE(HAVE_XPM, 1, "Xpm support") XPM=true LIBS="$LIBS -lXpm") else AC_MSG_RESULT([no]) fi, AC_MSG_RESULT([yes]) AC_CHECK_LIB(Xpm, XpmReadFileToPixmap, AC_DEFINE(HAVE_XPM, 1, "Xpm support") XPM=true LIBS="$LIBS -lXpm") ) AM_CONDITIONAL(XPM, test x$XPM = xtrue) dnl Check whether to use imlib2 IMLIB2=false AC_MSG_CHECKING([whether to have Imlib2 (pixmap themes) support]) AC_ARG_ENABLE(imlib2, AC_HELP_STRING([--enable-imlib2], [Imlib2 (pixmap themes) support ([default=yes])]), , [enable_imlib2=yes]) if test x$enable_imlib2 = "xyes"; then AC_MSG_RESULT([yes]) AC_PATH_GENERIC(imlib2, 1.0.0, [ IMLIB2=true AC_DEFINE(HAVE_IMLIB2, [], [Imlib2 support]) IMLIB2_LIBS=`imlib2-config --libs` IMLIB2_CFLAGS=`imlib2-config --cflags` LIBS="$LIBS $IMLIB2_LIBS" CXXFLAGS="$CXXFLAGS $IMLIB2_CFLAGS" ], [ AC_MSG_RESULT(no)] ) else AC_MSG_RESULT([no]) fi AM_CONDITIONAL(IMLIB2, test x$IMLIB2 = xtrue) AC_MSG_CHECKING([whether to have Xmb (multibyte font, utf-8) support]) AC_ARG_ENABLE( xmb, [ --enable-xmb Xmb (multibyte font, utf-8) support ([default=yes])], if test x$enableval = "xyes"; then AC_MSG_RESULT([yes]) AC_DEFINE(USE_XMB, 1, "multibyte support") MULTIBYTE=true else AC_MSG_RESULT([no]) MULTIBYTE=false fi, AC_MSG_RESULT([yes]) AC_DEFINE(USE_XMB, 1, "multibyte support") MULTIBYTE=true ) AM_CONDITIONAL(MULTIBYTE, test x$MULTIBYTE = xtrue) AC_MSG_CHECKING([whether to have RANDR (The X Resize and Rotate Extension) support]) AC_ARG_ENABLE( randr, [ --enable-randr RANDR (The X Resize and Rotate Extension) support ([default=yes])], if test x$enableval = "xyes"; then AC_MSG_RESULT([yes]) AC_CHECK_LIB(Xrandr, XRRQueryExtension, AC_DEFINE(HAVE_RANDR, 1, "randr support") LIBS="$LIBS -lXrandr") else AC_MSG_RESULT([no]) fi, AC_MSG_RESULT([yes]) AC_CHECK_LIB(Xrandr, XRRQueryExtension, AC_DEFINE(HAVE_RANDR, 1, "randr support") LIBS="$LIBS -lXrandr") ) dnl Check for Xinerama support AC_MSG_CHECKING([whether to build support for the Xinerama extension]) AC_ARG_ENABLE( xinerama, [ --enable-xinerama enable xinerama extension ([default=yes])], if test x$enableval = "xyes"; then AC_MSG_RESULT([yes]) AC_CHECK_LIB(Xinerama, XineramaQueryScreens, AC_DEFINE(XINERAMA, 1, "Xinerama support") LIBS="$LIBS -lXinerama") else AC_MSG_RESULT([no]) fi, AC_MSG_RESULT([yes]) AC_CHECK_LIB(Xinerama, XineramaQueryScreens, AC_DEFINE(XINERAMA, 1, "Xinerama support") LIBS="$LIBS -lXinerama") ) AC_ARG_WITH( menu, [ --with-menu=path location menu file (PREFIX/share/fluxbox/menu)], DEFAULT_MENU=$with_menu, DEFAULT_MENU=\$\(prefix\)/share/fluxbox/menu ) AC_SUBST(DEFAULT_MENU) AC_ARG_WITH( style, [ --with-style=path style by default (PREFIX/share/fluxbox/styles/Meta)], DEFAULT_STYLE=$with_style, DEFAULT_STYLE=\$\(prefix\)/share/fluxbox/styles/Meta ) AC_SUBST(DEFAULT_STYLE) AC_ARG_WITH( keys, [ --with-keys=path location keys file (PREFIX/share/fluxbox/keys)], DEFAULT_KEYS=$with_keys, DEFAULT_KEYS=\$\(prefix\)/share/fluxbox/keys ) AC_SUBST(DEFAULT_KEYS) AC_ARG_WITH( init, [ --with-init=path location init file (PREFIX/share/fluxbox/init)], DEFAULT_INIT=$with_init, DEFAULT_INIT=\$\(prefix\)/share/fluxbox/init ) AC_SUBST(DEFAULT_INIT) # we have to expand locale_path in the config.h file, but NOT in the makefiles! AC_ARG_WITH( locale, [ --with-locale=path location for nls files (PREFIX/share/fluxbox/nls)], LOCALE_PATH=$with_locale AC_DEFINE_UNQUOTED(LOCALEPATH, "$LOCALE_PATH", "location for nls files") , LOCALE_PATH=\$\(prefix\)/share/fluxbox/nls AC_DEFINE_UNQUOTED(LOCALEPATH, "$prefix/share/fluxbox/nls", "location for nls files") ) AC_SUBST(LOCALE_PATH) AC_SUBST(program_prefix) AC_SUBST(program_suffix) dnl Determine the return type of signal handlers AC_TYPE_SIGNAL dnl Determine if maintainer portions of the Makefiles should be included. dnl AM_MAINTAINER_MODE dnl Print results AC_MSG_RESULT([]) AC_MSG_RESULT([ $PACKAGE version $VERSION configured successfully.]) AC_MSG_RESULT([]) AC_MSG_RESULT([Using '$prefix' for installation.]) AC_MSG_RESULT([Using '$DEFAULT_MENU' for location menu file.]) AC_MSG_RESULT([Using '$DEFAULT_STYLE' by default style.]) AC_MSG_RESULT([Using '$DEFAULT_KEYS' for location keys file.]) AC_MSG_RESULT([Using '$DEFAULT_INIT' for location init file.]) AC_MSG_RESULT([Using '$LOCALE_PATH' for nls files.]) AC_MSG_RESULT([Using '$CXX' for C++ compiler.]) AC_MSG_RESULT([Building with '$CXXFLAGS' for C++ compiler flags.]) AC_MSG_RESULT([Building with '$LIBS' for linker flags.]) AC_MSG_RESULT([]) dnl Output files AM_CONFIG_HEADER(config.h) AC_OUTPUT(Makefile version.h src/Makefile src/FbTk/Makefile util/Makefile util/fbrun/Makefile data/Makefile data/styles/Makefile data/styles/BlueFlux/Makefile data/styles/BlueFlux/pixmaps/Makefile data/styles/Emerge/Makefile data/styles/Emerge/pixmaps/Makefile doc/Makefile doc/ru/Makefile nls/Makefile nls/C/Makefile nls/be_BY/Makefile nls/bg_BG/Makefile nls/cs_CZ/Makefile nls/da_DK/Makefile nls/de_AT/Makefile nls/de_CH/Makefile nls/de_DE/Makefile nls/el_GR/Makefile nls/en_GB/Makefile nls/en_US/Makefile nls/es_AR/Makefile nls/es_ES/Makefile nls/et_EE/Makefile nls/fi_FI/Makefile nls/fr_CH/Makefile nls/fr_FR/Makefile nls/it_IT/Makefile nls/ja_JP/Makefile nls/ko_KR/Makefile nls/lv_LV/Makefile nls/nb_NO/Makefile nls/nl_NL/Makefile nls/no_NO/Makefile nls/pl_PL/Makefile nls/pt_BR/Makefile nls/pt_PT/Makefile nls/ru_RU/Makefile nls/sl_SI/Makefile nls/sv_SE/Makefile nls/tr_TR/Makefile nls/uk_UA/Makefile nls/vi_VN/Makefile nls/zh_CN/Makefile )