icewm icewm-src
Brought to you by:
captnmark
dnl Process this file with autoconf to produce a configure script.
AC_INIT(src/icerun.cc)
AC_PREREQ([2.13])
AC_CONFIG_HEADER(src/config.h)
dnl Checking for C in hope that it understands C++ too
ice_PROG_CXX_LIGHT
dnl Setting language to C++
AC_LANG_CPLUSPLUS
AC_PROG_CXX
dnl If both CC and CXX are GNU compilers, it is better to use CC
dnl for linking. Also check how to turn off RTTI and exception handling
if test x"$ac_cv_prog_gxx" != x; then
AC_PROG_CC
if test x"$ac_cv_prog_gcc" != x; then
CXX_LINK=${CC}
fi
ice_CXX_FLAG_ACCEPT(no_rtti, -fno-rtti)
ice_CXX_FLAG_ACCEPT(no_exceptions, -fno-exceptions)
if test x"$no_exceptions_ok" = xno; then
ice_CXX_FLAG_ACCEPT(no_exceptions, -fno-handle-exceptions)
fi
fi
if test x"$ac_cv_prog_gxx" != x; then
ice_CXX_FLAG_ACCEPT(warn_xxx, -Wall -Wpointer-arith -Wconversion -Wwrite-strings -Wmissing-prototypes -Wmissing-declarations -Winline -Woverloaded-virtual -W)
ice_CXX_FLAG_ACCEPT(permissive, -fpermissive)
fi
if test x"$CXX_LINK" = x; then
CXX_LINK=$CXX
fi
AC_SUBST(CXX_LINK)
AC_MSG_CHECKING([if we need our own C++ allocation operators])
AC_TRY_LINK([ void icewm_alloc() {
char * cp = new char; delete cp;
char *ca = new char[23]; delete[] ca; } ],,
[ AC_MSG_RESULT(no) ],
[ AC_MSG_RESULT(yes)
AC_DEFINE(NEED_ALLOC_OPERATORS, 1,
[ Define if you need an implementation of the allocation operators. (gcc 3.0) ]) ])
AC_CYGWIN
AC_PROG_INSTALL
dnl Checks for things which don't require X
dnl Checks for header files.
AC_HEADER_DIRENT
AC_HEADER_SYS_WAIT
AC_CHECK_HEADERS(fcntl.h limits.h strings.h sys/ioctl.h sys/time.h unistd.h)
AC_CHECK_HEADERS(linux/threads.h linux/tasks.h)
AC_CHECK_HEADERS(kstat.h,
[ CORE_LIBS="${CORE_LIBS} -lkstat"
AC_MSG_CHECKING([if have old kstat])
AC_TRY_COMPILE([#include <kstat.h>], [kstat_named_t k; k.value.ui32],
[ AC_MSG_RESULT(no) ],
[ AC_MSG_RESULT(yes); AC_DEFINE(HAVE_OLD_KSTAT)]) ])
dnl Checks for typedefs, structures, and compiler characteristics.
AC_TYPE_SIZE_T
AC_HEADER_TIME
AC_STRUCT_TM
AC_CHECK_SIZEOF(char, 1)
AC_CHECK_SIZEOF(short, 2)
AC_CHECK_SIZEOF(int, 4)
AC_CHECK_SIZEOF(long, 4)
dnl Checks for library functions.
AC_TYPE_SIGNAL
AC_FUNC_STRFTIME
AC_FUNC_VPRINTF
AC_CHECK_FUNCS(gettimeofday putenv select socket strtol strtoul basename)
AC_FUNC_SELECT_ARGTYPES
dnl Configuring features
TARGETS='base docs'
APPLICATIONS='genpref icewm icewmhint icewmbg'
dnl Checking for X11
AC_PATH_XTRA
if test x"$no_x" != x; then
AC_MSG_ERROR([X Window System not found])
fi
AC_ARG_ENABLE(debug,
[ --enable-debug Use this option if you want to debug IceWM],
[ if test "$enable_debug" != "no"; then
AC_DEFINE(DEBUG, 1, [Define if you want to debug IceWM])
DEBUG="-g -DDEBUG"
features="${features} debugging-symbols"
else
DEBUG=
fi ])
dnl =========================================================== I18N Support ===
dnl
AC_ARG_ENABLE(i18n,
[ --enable-i18n Enable internationalization],
[ if test "$enable_i18n" != "no"; then
AC_DEFINE(I18N, 1, [Define to enable internationalization])
features="${features} i18n"
fi ])
dnl ============================================================ NLS Support ===
dnl
AC_ARG_ENABLE(nls,
[ --disable-nls Disable internationalized message])
if test "$enable_nls" != "no"; then
AC_CHECK_FUNC(gettext,,
[ AC_CHECK_LIB(intl, gettext,,
[ AC_MSG_ERROR([NLS support has been requested but libintl wasn´t found.
*** Install your vendor´s version or GNU gettext available at your next
*** GNU mirror.])])])
AC_DEFINE(ENABLE_NLS, 1, [Define to enable internationalized message])
features="${features} nls"
TARGETS=$TARGETS' nls'
localedir='${datadir}/locale'
fi
dnl ======================================================= /proc/wm-session ===
dnl
AC_ARG_ENABLE(wm-session,
[ --enable-wm-session Enable /proc/wm-session support (experimental)])
if test "$enable_wmresource" = "yes"; then
AC_DEFINE(CONFIG_WM_SESSION, 1, [Define to enable /proc/wm-session resource management.])
features="${features} wm-session"
fi
dnl ============================================================= GUI Events ===
dnl
AC_ARG_ENABLE(guievents,
[ --enable-guievents Enable GUI events (experimental)],
[ if test "$enable_guievents" != "no"; then
AC_DEFINE(CONFIG_GUIEVENTS, 1, [Define to enable GUI events support.])
features="${features} gui-events"
AC_ARG_WITH(icesound,
[ --with-icesound=interfaces]
[ List of audio interfaces for icesound. Requires]
[ support for GUI events. Default: OSS,Y,ESound],,
[ with_icesound='OSS,Y,ESound' ])
for iface in `[ echo ${with_icesound} |
sed -e 's/\([^,][^,]*\)\(,\|$\)/\1 /g' ]`; do
case ${iface} in
OSS|oss)
AC_DEFINE(ENABLE_OSS, 1, [Define to enable OSS support.])
CONFIG_OSS=yes;;
Y|Y2|YIFF|y|y2|yiff)
AC_CHECK_HEADERS(Y2/Y.h,
AC_CHECK_LIB(Y2, YOpenConnection,
[ AC_DEFINE(ENABLE_YIFF, 1, [Define to enable YIFF support.])
AUDIO_LIBS="${AUDIO_LIBS} -lY2"
CONFIG_YIFF=yes ]));;
ESound|ESD|esound|esd)
AC_ARG_WITH(esd-config,
[ --with-esd-config=path Path to esd-config],
[ ESD_CONFIG=$with_esd_config ],
[ AC_PATH_PROG(ESD_CONFIG, esd-config) ])
if test "${ESD_CONFIG}" != ""; then
ESD_FLAGS="`${ESD_CONFIG} --cflags`"
ESD_LIBS="`${ESD_CONFIG} --libs`"
ac_flags=$CXXFLAGS
ac_libs=$LIBS
CXXFLAGS="${CXXFLAGS} ${ESD_FLAGS}"
LIBS="${LIBS} ${ESD_LIBS}"
AC_CHECK_HEADERS(esd.h,,
[ AC_MSG_ERROR([Invalid compiler flags returned by ${ESD_CONFIG}.
*** Check your installation.])])
AC_CHECK_LIB(esd, esd_open_sound,,
[ AC_MSG_ERROR([Invalid linker flags returned by ${ESD_CONFIG}.
*** Check your installation.])])
CXXFLAGS=$ac_flags
LIBS=$ac_libs
AC_DEFINE(ENABLE_ESD, 1, [Define to enable ESD support.])
AUDIO_FLAGS="${AUDIO_FLAGS} ${ESD_FLAGS}"
AUDIO_LIBS="${AUDIO_LIBS} ${ESD_LIBS}"
CONFIG_ESD=yes
fi;;
*)
AC_MSG_WARN([Invalid audio interface: ${iface}])
esac
done
for iface in OSS YIFF ESD; do
eval test \"\${CONFIG_${iface}}\" = "yes" &&
audio_support="${audio_support} ${iface}"
done
if test "${audio_support}" = ""; then
AC_MSG_ERROR([You have to specify at least one valid audio interface.])
else
APPLICATIONS="$APPLICATIONS icesound"
fi
fi ])
dnl ================================================ Features of the XServer ===
dnl
CORE_CFLAGS="${X_CFLAGS}"
CORE_LIBS="${X_PRE_LIBS} ${CORE_LIBS} -lX11 ${X_LIBS} ${X_EXTRA_LIBS}"
no_x_libs=$LIBS
LIBS=$CORE_LIBS
AC_CHECK_LIB(X11, XInternAtoms,
[ AC_DEFINE(HAVE_XINTERNATOMS, 1, [Define to enable XInternAtoms]) ])
AC_ARG_ENABLE(sm,
[ --disable-sm Don't support the X session managment protocol])
if test "$enable_sm" != "no"; then
AC_CHECK_LIB(ICE, IceConnectionNumber,
[ AC_DEFINE(SM, 1, [Define to support the X session managment protocol]) ],
[ AC_MSG_WARN([Unable to use X shared memory extension]) ])
fi
ac_have_shape=no
AC_ARG_ENABLE(shape,
[ --disable-shape Don't use X shape extension])
if test "$enable_shape" != "no"; then
AC_CHECK_LIB(Xext, XShapeCombineRectangles,
[ CORE_LIBS="${CORE_LIBS} -lXext"
AC_DEFINE(SHAPE, 1, [Define to enable X shape extension])
ac_have_shape=yes ],
[ AC_MSG_WARN([Unable to use X shape extension]) ])
fi
if test "$ac_have_shape" = "yes"; then
AC_ARG_ENABLE(shaped-decorations,
[ --enable-shaped-decorations ]
[ Allow transparent frame decoration (titlebar, ]
[ borders), requires X shape extension (experimental) ])
if test "$enable_shaped_decorations" = "yes"; then
AC_DEFINE(CONFIG_SHAPED_DECORATION, 1, [Define to allow transparent frame borders.])
features="${features} shaped-decorations"
fi
fi
AC_ARG_ENABLE(gradients,
[ --enable-gradients Support gradients (experimental) ])
if test "$enable_gradients" = "yes"; then
AC_DEFINE(CONFIG_GRADIENTS, 1, [Define to enable gradient support.])
enable_antialiasing=yes
features="${features} gradients"
fi
AC_ARG_ENABLE(antialiasing,
[ --enable-antialiasing Support antialiasing (experimental, ]
[ implicitly enables XFreeType support) ])
if test "$enable_antialiasing" = "yes"; then
AC_DEFINE(CONFIG_ANTIALIASING, 1, [Define to enable antialiasing.])
features="${features} antialiasing"
if test "$enable_xfreetype" = "" ; then
enable_xfreetype=implied
fi
fi
AC_ARG_ENABLE(xfreetype,
[ --enable-xfreetype Use XFreeType for text antialiasing (experimental) ])
if test "$enable_xfreetype" = "yes" -o "$enable_xfreetype" = "implied"; then
AC_CHECK_HEADERS(X11/Xft/Xft.h,
[ AC_CHECK_LIB(Xft, XftDrawCreate,
[ AC_DEFINE(CONFIG_XFREETYPE, 1, [Define to enable XFreeType support.])
CORE_LIBS="${CORE_LIBS} -lXft"
features="${features} xfreetype" ],
[ if test "$enable_xfreetype" != "implied"; then
AC_MSG_ERROR([Xft support has been requested but libraries were not found.
*** Configure your X server to support XFreeType.
*** Information about how to do this can be found in RELNOTES for XFree86.])
fi ])],
[ if test "$enable_xfreetype" != "implied"; then
AC_MSG_ERROR([Xft support has been requested but headers were not found.
*** Configure your X server to support XFreeType.
*** Information about how to do this can be found in RELNOTES for XFree86.])
fi ])
fi
AC_ARG_ENABLE(movesize-fx,
[ --enable-movesize-fx Move/Resize FX (experimental bloat) ])
if test "$enable_movesize_fx" = "yes"; then
AC_DEFINE(CONFIG_MOVESIZE_FX, 1, [Define to enable Move/Resize FX.])
features="${features} movesize-fx"
fi
AC_ARG_ENABLE(x86-asm,
[ --disable-x86-asm Don't use optimized x86 assembly code ])
if test "$enable_x86_asm" != "no"; then
AC_DEFINE(CONFIG_X86_ASM, 1, [Define to enable x86 assembly code.])
features="${features} x86-asm"
fi
AC_ARG_ENABLE(prefs,
[ --disable-prefs Disable configurable preferences])
if test "$enable_prefs" = "no"; then
AC_DEFINE(NO_CONFIGURE, 1, [Define to disable preferences support.])
fi
AC_ARG_ENABLE(keyconf,
[ --disable-keyconf Disable configurable keybindings])
if test "$enable_keyconf" = "no"; then
AC_DEFINE(NO_KEYBIND, 1, [Define to disable keybinding support.])
fi
AC_ARG_ENABLE(menuconf,
[ --disable-menuconf Disable configurable menus])
if test "$enable_menuconf" = "no"; then
AC_DEFINE(NO_CONFIGURE_MENUS, 1, [Define to disable configurable menu support.])
fi
AC_ARG_ENABLE(winoptions,
[ --disable-winoptions Disable configurable window options])
if test "$enable_winoptions" = "no"; then
AC_DEFINE(NO_WINDOW_OPTIONS, 1, [Define to disable configurable window options support.])
fi
dnl ======================================== Stripped down versions of IceWM ===
dnl
AC_ARG_ENABLE(lite,
[ --enable-lite Build lightweight version of IceWM],,
[ enable_lite=no ])
if test "${enable_lite}" != "yes"; then
AC_DEFINE(CONFIG_TOOLTIP, 1, [Tooltips])
AC_DEFINE(CONFIG_TASKBAR, 1, [Taskbar])
AC_DEFINE(CONFIG_TRAY, 1, [Window tray])
AC_DEFINE(CONFIG_APPLET_MAILBOX, 1, [Mailbox applet])
AC_DEFINE(CONFIG_APPLET_CPU_STATUS, 1, [CPU status applet])
AC_DEFINE(CONFIG_APPLET_NET_STATUS, 1, [Network status applet])
AC_DEFINE(CONFIG_APPLET_CLOCK, 1, [LCD clock applet])
AC_DEFINE(CONFIG_APPLET_APM, 1, [APM status applet])
AC_DEFINE(CONFIG_ADDRESSBAR, 1, [Address bar])
AC_DEFINE(CONFIG_WINLIST, 1, [OS/2 like window list])
AC_DEFINE(CONFIG_WINMENU, 1, [Window menu])
APPLICATIONS="$APPLICATIONS icehelp"
else
AC_DEFINE(LITE, 1, [Lite version])
fi
dnl ============================================================ GNOME stuff ===
dnl
ice_ARG_WITH(gnome-menus,
[ --with-gnome-menus[=path]]
[ Read GNOME and KDE menus [path to gnome-config]],
[ if test "${with_gnome_menus_sign}" = "yes"; then
AC_PATH_PROG(GNOME_CONFIG, gnome-config, ,${with_gnome_arg-${PATH}})
if test "${GNOME_CONFIG}" != ""; then
GNOME_CFLAGS=`$GNOME_CONFIG --cflags gnome`
GNOME_LIBS=`$GNOME_CONFIG --libs gnome`
AC_DEFINE(CONFIG_GNOME_MENUS, 1, [Define to make IceWM more GNOME-friendly])
else
AC_MSG_ERROR([gnome-config can not be found.
*** Install the GNOME´s development packages or use the argument of the
*** --with-gnome-menus switch to pass gnome-config´s location.])
fi
fi ])
AC_ARG_WITH(gnome-root-property,
[ --with-gnome-root-property[=atom]]
[ Name of a root window property indicating that]
[ GNOME is active. Default: GNOME_SM_PROXY.]
[--without-gnome-root-property]
[ Assume that GNOME is active when \$SESSION_MANAGER]
[ is set. Most session managers set this variable.])
if test "${with_gnome_root_property}" != "no"; then
if test "${with_gnome_root_property}" = ""; then
with_gnome_root_property="GNOME_SM_PROXY"
fi
AC_DEFINE_UNQUOTED(CONFIG_GNOME_ROOT_PROPERTY,
[ "${with_gnome_root_property}" ],
[ Name of a root window property indicating that GNOME is active.])
fi
dnl ========================================================== Image library ===
dnl
ice_ARG_WITH(imlib,
[ --with-imlib[=path] Use Imlib for images [path to imlib-config]])
ice_ARG_WITH(xpm,
[ --with-xpm[=prefix] Use libXpm for images [search it in prefix/lib]])
dnl --------------------- Checking for Xpm unless we are forced to use Imlib ---
dnl
if test "${with_imlib_sign}" != "yes"; then
if test "${with_xpm_sign}" = "no"; then
AC_MSG_ERROR([You have to enable libXpm or Imlib])
else
if test x"$with_xpm_arg" != x; then
xpm_cflags="-I${with_xpm_arg}/include"
xpm_lflags="-L${with_xpm_arg}/lib"
fi
AC_CHECK_LIB(Xpm, XpmReadFileToPixmap,
[ IMAGE_CFLAGS="${xpm_cflags}"
IMAGE_LIBS="${xpm_lflags} -lXpm"
AC_DEFINE(CONFIG_XPM, 1, [Define to use libXpm for image rendering])
no_imlib=yes ],
[ if test "${with_xpm_sign}" = ""; then
AC_MSG_ERROR([libXpm can not be found])
fi ],
[ $xpm_lflags ])
image_library=libXpm
fi
else
if test "${with_xpm_sign}" = "yes"; then
AC_MSG_ERROR([libXpm and Imlib can not be used in the same time])
fi
fi
dnl ----------------------------- Without libXpm we have to use Imlib or die ---
dnl
if test "${no_imlib}" != "yes"; then
if test "${with_imlib_sign}" = "no"; then
AC_MSG_ERROR([libXpm can not be found, you have to enable Imlib])
fi
AC_PATH_PROG(IMLIB_CONFIG, imlib-config, ,${with_imlib_arg-${PATH}})
if test "${IMLIB_CONFIG}" = ""; then
AC_MSG_ERROR([imlib-config can not be found])
fi
IMAGE_CFLAGS=`$IMLIB_CONFIG --cflags`
IMAGE_LIBS=`$IMLIB_CONFIG --libs`
AC_DEFINE(CONFIG_IMLIB, 1, [Define to use Imlib for image rendering])
image_library=Imlib
fi
dnl --------------------- We need mkfontdir to create fonts.dir for Infadel2 ---
AC_ARG_WITH(mkfontdir,
[ --with-mkfontdir=path Path to mkfontdir],
[ MKFONTDIR=$with_mkfontdir ],
[ AC_PATH_PROG(MKFONTDIR, mkfontdir,, $PATH:/usr/X11R6/bin) ])
LIBS=$no_x_libs
dnl Path adjustment
AC_ARG_WITH(kdedatadir,
[ --with-kdedatadir=path KDE's data directory (\$KDEDIR/share)],
[ if test x"$with_kdedatadir" = x -o "$with_kdedatadir" = "yes"; then
AC_MSG_ERROR([Invalid usage of --with-kdedatadir argument])
else
kdedatadir=$with_kdedatadir
fi ],
[ if test x"$KDEDIR" != x; then
kdedatadir="${KDEDIR}/share"
else
kdedatadir='${datadir}'
fi ])
AC_ARG_WITH(libdir,
[ --with-libdir=path Default configuration directory (\$libdir/X11/icewm)],
[ if test x"$with_libdir" = x -o "$with_libdir" = "yes"; then
AC_MSG_ERROR([Invalid usage of --with-libdir argument])
else
libdatadir=$with_libdir
fi ],
[ libdatadir='${libdir}/X11/icewm' ])
AC_ARG_WITH(cfgdir,
[ --with-cfgdir=path System configuration directory (\$sysconfdir/X11/icewm)],
[ if test x"$with_cfgdir" = x -o "$with_cfgdir" = "yes"; then
AC_MSG_ERROR([Invalid usage of --with-cfgdir argument])
else
cfgdatadir=$with_cfgdir
fi ],
[ cfgdatadir='${sysconfdir}/X11/icewm' ])
AC_ARG_WITH(docdir,
[ --with-docdir=path Documentation directory (\$prefix/doc)],
[ if test x"$with_docdir" = x -o "$with_docdir" = "yes"; then
AC_MSG_ERROR([Invalid usage of --with-docdir argument])
else
docdir=$with_docdir
fi ],
[ docdir='${prefix}/doc' ])
dnl Done! Write out what we have found...
for t in $TARGETS; do
TARGETS_INSTALL="$TARGETS_INSTALL install-$t"
done
AC_SUBST(TARGETS)
AC_SUBST(TARGETS_INSTALL)
AC_SUBST(APPLICATIONS)
AC_SUBST(DEBUG)
AC_SUBST(CORE_CFLAGS)
AC_SUBST(IMAGE_CFLAGS)
AC_SUBST(AUDIO_CFLAGS)
AC_SUBST(GNOME_CFLAGS)
AC_SUBST(CORE_LIBS)
AC_SUBST(IMAGE_LIBS)
AC_SUBST(AUDIO_LIBS)
AC_SUBST(GNOME_LIBS)
AC_SUBST(datadir)
AC_SUBST(localedir)
AC_SUBST(libdatadir)
AC_SUBST(cfgdatadir)
AC_SUBST(kdedatadir)
AC_SUBST(docdir)
AC_OUTPUT(
Makefile
sysdep.inc:sysdep.in
install.inc:install.in
)
AC_MSG_RESULT("")
ice_MSG_VALUE(Build targets, TARGETS)
ice_MSG_VALUE(Applications, APPLICATIONS)
ice_MSG_VALUE(Image library, image_library)
ice_MSG_VALUE(Audio support, audio_support)
ice_MSG_VALUE(Features, features)
ice_MSG_VALUE("Paths: PREFIX", prefix)
ice_MSG_VALUE(" BINDIR", bindir)
ice_MSG_VALUE(" LOCDIR", localedir)
ice_MSG_VALUE(" LIBDIR", libdatadir)
ice_MSG_VALUE(" CFGDIR", cfgdatadir)
ice_MSG_VALUE(" KDEDIR", kdedatadir)
ice_MSG_VALUE(" DOCDIR", docdir)