# required autoconf version
AC_PREREQ([2.54])
#
# Making releases:
# gtkglextmm_micro_version += 1;
# gtkglextmm_interface_age += 1;
# gtkglextmm_binary_age += 1;
# if any functions have been added, set gtkglextmm_interface_age to 0.
# if backwards compatibility has been broken,
# set gtkglextmm_binary_age and gtkglextmm_interface_age to 0.
#
m4_define([gtkglextmm_major_version], [1])
m4_define([gtkglextmm_minor_version], [2])
m4_define([gtkglextmm_micro_version], [0])
m4_define([gtkglextmm_interface_age], [0])
m4_define([gtkglextmm_binary_age], [0])
m4_define([gtkglextmm_version],
[gtkglextmm_major_version.gtkglextmm_minor_version.gtkglextmm_micro_version])
# API version
m4_define([gtkglextmm_api_major_version], [1])
m4_define([gtkglextmm_api_minor_version], [2])
m4_define([gtkglextmm_api_version],
[gtkglextmm_api_major_version.gtkglextmm_api_minor_version])
# libtool version related macros
m4_define([gtkglextmm_lt_release],
[gtkglextmm_major_version.gtkglextmm_minor_version])
m4_define([gtkglextmm_lt_current],
[m4_eval(gtkglextmm_micro_version - gtkglextmm_interface_age)])
m4_define([gtkglextmm_lt_revision],
[gtkglextmm_interface_age])
m4_define([gtkglextmm_lt_age],
[m4_eval(gtkglextmm_binary_age - gtkglextmm_interface_age)])
m4_define([gtkglextmm_lt_current_minus_age],
[m4_eval(gtkglextmm_lt_current - gtkglextmm_lt_age)])
# Versions of dependencies
# GdkGLExt
m4_define([gdkglext_pkg], [gdkglext-1.0])
m4_define([gdkglext_required_version], [1.0.0])
# GtkGLExt
m4_define([gtkglext_pkg], [gtkglext-1.0])
m4_define([gtkglext_required_version], [1.0.0])
# libsigc++
m4_define([sigcxx_pkg], [sigc++-2.0])
m4_define([sigcxx_required_version], [2.0.0])
# glibmm
m4_define([glibmm_pkg], [glibmm-2.4])
m4_define([glibmm_required_version], [2.4.0])
# pangomm
m4_define([pangomm_pkg], [pangomm-1.4])
m4_define([pangomm_required_version], [2.4.0])
# gdkmm
m4_define([gdkmm_pkg], [gdkmm-2.4])
m4_define([gdkmm_required_version], [2.4.0])
# gtkmm
m4_define([gtkmm_pkg], [gtkmm-2.4])
m4_define([gtkmm_required_version], [2.4.0])
# Process this file with autoconf to produce a configure script.
AC_INIT([gtkglextmm], [gtkglextmm_version],
[gtkglext-develop@lists.sourceforge.net])
AC_CONFIG_SRCDIR([gdkglext/gdkglmm.h])
# Save this value here, since automake will set cflags later
cflags_set=${CFLAGS+set}
# Initialize automake stuff
AM_INIT_AUTOMAKE([1.7 no-define dist-bzip2 dist-zip])
# Specify a configuration file
AM_CONFIG_HEADER([config.h])
dnl Initialize maintainer mode
AM_MAINTAINER_MODE
AC_CANONICAL_HOST
# Required GtkGLExt version
GTKGLEXT_REQUIRED_VERSION=gtkglext_required_version
AC_SUBST([GTKGLEXT_REQUIRED_VERSION])
# gtkglextmm version
GTKGLEXTMM_MAJOR_VERSION=gtkglextmm_major_version
GTKGLEXTMM_MINOR_VERSION=gtkglextmm_minor_version
GTKGLEXTMM_MICRO_VERSION=gtkglextmm_micro_version
GTKGLEXTMM_INTERFACE_AGE=gtkglextmm_interface_age
GTKGLEXTMM_BINARY_AGE=gtkglextmm_binary_age
GTKGLEXTMM_VERSION=gtkglextmm_version
GTKGLEXTMM_API_MAJOR_VERSION=gtkglextmm_api_major_version
GTKGLEXTMM_API_MINOR_VERSION=gtkglextmm_api_minor_version
GTKGLEXTMM_API_VERSION=gtkglextmm_api_version
AC_SUBST([GTKGLEXTMM_MAJOR_VERSION])
AC_SUBST([GTKGLEXTMM_MINOR_VERSION])
AC_SUBST([GTKGLEXTMM_MICRO_VERSION])
AC_SUBST([GTKGLEXTMM_INTERFACE_AGE])
AC_SUBST([GTKGLEXTMM_BINARY_AGE])
AC_SUBST([GTKGLEXTMM_VERSION])
AC_SUBST([GTKGLEXTMM_API_MAJOR_VERSION])
AC_SUBST([GTKGLEXTMM_API_MINOR_VERSION])
AC_SUBST([GTKGLEXTMM_API_VERSION])
# This is the X.Y used in -lgtkglextmm-FOO-X.Y
#LIB_MJR=$GTKGLEXTMM_API_MAJOR_VERSION
#LIB_MNR=$GTKGLEXTMM_API_MINOR_VERSION
LIB_MJR=$GTKGLEXTMM_MAJOR_VERSION
LIB_MNR=$GTKGLEXTMM_MINOR_VERSION
AC_SUBST([LIB_MJR])
AC_SUBST([LIB_MNR])
# libtool versioning
LT_RELEASE=gtkglextmm_lt_release
LT_CURRENT=gtkglextmm_lt_current
LT_REVISION=gtkglextmm_lt_revision
LT_AGE=gtkglextmm_lt_age
LT_CURRENT_MINUS_AGE=gtkglextmm_lt_current_minus_age
AC_SUBST([LT_RELEASE])
AC_SUBST([LT_CURRENT])
AC_SUBST([LT_REVISION])
AC_SUBST([LT_AGE])
AC_SUBST([LT_CURRENT_MINUS_AGE])
dnl Initialize libtool
AC_PROG_CC
AC_PROG_CPP
AC_PROG_CXX
AC_PROG_CXXCPP
AC_ISC_POSIX
#AM_DISABLE_STATIC
AC_LIBTOOL_WIN32_DLL
AC_PROG_LIBTOOL
platform_win32=no
AC_MSG_CHECKING([for some Win32 platform])
case "$host_os" in
*mingw*|*cygwin*)
platform_win32=yes
;;
*)
;;
esac
AC_MSG_RESULT([$platform_win32])
AM_CONDITIONAL([PLATFORM_WIN32], [test "x$platform_win32" = "xyes"])
os_win32=no
LIBSTDCXX_LIBS=
AC_MSG_CHECKING([for native Win32])
case "$host_os" in
*mingw*)
os_win32=yes
LIBSTDCXX_LIBS=-lstdc++
;;
*)
;;
esac
AC_MSG_RESULT([$os_win32])
AM_CONDITIONAL([OS_WIN32], [test "x$os_win32" = "xyes"])
if test "x$platform_win32" = "xyes"; then
gdktarget=win32
else
gdktarget=x11
fi
AC_ARG_WITH(gdktarget,
[AC_HELP_STRING([--with-gdktarget=@<:@x11/win32@:>@],
[select GDK target])],
[gdktarget=$with_gdktarget])
AC_SUBST([gdktarget])
case $gdktarget in
x11|win32) ;;
*) AC_MSG_ERROR([Invalid target for GDK: use x11 or win32.]);;
esac
gdkglextmm_targetlib=libgdkglextmm-$gdktarget-$LIB_MJR.$LIB_MNR.la
gtkglextmm_targetlib=libgtkglextmm-$gdktarget-$LIB_MJR.$LIB_MNR.la
AC_SUBST([gdkglextmm_targetlib])
AC_SUBST([gtkglextmm_targetlib])
# Build time sanity check...
AM_SANITY_CHECK
# Checks for programs.
AM_PROG_CC_STDC
AC_PROG_INSTALL
AC_PROG_MAKE_SET
AC_PROG_LN_S
AC_PROG_AWK
AL_PROG_GNU_M4(AC_MSG_ERROR([dnl
SUN m4 does not work for building gtkmm.
Please install GNU m4.]))
AL_PROG_GNU_MAKE(AC_MSG_ERROR([dnl
SUN make does not work for building gtkmm.
Please install GNU make.]))
# Evaluate the --enable-warnings=level option.
GTKMM_ARG_ENABLE_WARNINGS()
# Ensure MSVC-compatible struct packing convention is used when
# compiling for Win32 with gcc.
# What flag to depends on gcc version: gcc3 uses "-mms-bitfields", while
# gcc2 uses "-fnative-struct".
if test "x$os_win32" = "xyes"; then
if test "x$GCC" = "xyes"; then
msnative_struct=''
AC_MSG_CHECKING([how to get MSVC-compatible struct packing])
if test -z "$ac_cv_prog_CC"; then
our_gcc="$CC"
else
our_gcc="$ac_cv_prog_CC"
fi
case `$our_gcc --version | sed -e 's,\..*,.,' -e q` in
2.)
if $our_gcc -v --help 2>/dev/null | grep fnative-struct >/dev/null; then
msnative_struct='-fnative-struct'
fi
;;
*)
if $our_gcc -v --help 2>/dev/null | grep ms-bitfields >/dev/null; then
msnative_struct='-mms-bitfields'
fi
;;
esac
if test x"$msnative_struct" = x ; then
AC_MSG_RESULT([no way])
AC_MSG_WARN([produced libraries might be incompatible with MSVC-compiled code])
else
CXXFLAGS="$CXXFLAGS $msnative_struct"
AC_MSG_RESULT([${msnative_struct}])
fi
fi
fi
# --export-all-symbols option to build Win32 DLL using MinGW ld.
WIN32_LD_EXPORT_ALL_SYMBOLS=''
if test "x$os_win32" = "xyes"; then
AC_MSG_CHECKING([whether ld accepts --export-all-symbols])
if $LD --help 2>&1 | egrep 'export-all-symbols' > /dev/null; then
WIN32_LD_EXPORT_ALL_SYMBOLS='-Wl,--export-all-symbols'
AC_MSG_RESULT([yes])
else
AC_MSG_RESULT([no])
fi
fi
AC_SUBST([WIN32_LD_EXPORT_ALL_SYMBOLS])
# Honor aclocal flags
ACLOCAL="$ACLOCAL $ACLOCAL_FLAGS -I $srcdir/m4macros"
## Initial sanity check, done here so that users get told they
## have the wrong dependencies as early in the process as possible.
## Later on we actually use the cflags/libs from separate pkg-config
## calls. Oh, also the later pkg-config calls don't include
## the version requirements since those make the module lists
## annoying to construct
PKG_CHECK_MODULES([BASE_DEPENDENCIES], [dnl
gtkglext_pkg >= gtkglext_required_version dnl
gdkglext_pkg >= gdkglext_required_version dnl
gtkmm_pkg >= gtkmm_required_version dnl
gdkmm_pkg >= gdkmm_required_version dnl
pangomm_pkg >= pangomm_required_version dnl
])
# Checks for GtkGLExt
AM_PATH_GTKGLEXT_1_0([gtkglext_required_version], ,
[AC_MSG_ERROR([GtkGLExt not found])])
save_CPPFLAGS="$CPPFLAGS"
CPPFLAGS="$CPPFLAGS $GTKGLEXT_CFLAGS"
save_LIBS="$LIBS"
LIBS="$LIBS $GTKGLEXT_LIBS"
AC_GTKGLEXT_SUPPORTS_MULTIHEAD([GTKGLEXT_SUPPORTS_MULTIHEAD=yes],
[GTKGLEXT_SUPPORTS_MULTIHEAD=no])
CPPFLAGS="$save_CPPFLAGS"
LIBS="$save_LIBS"
# gmmproc
GLIBMM_CHECK_PERL([5.6.0])
GLIBMM_PREFIX=`$PKG_CONFIG --variable=prefix glibmm_pkg`
GMMPROC_DIR=$GLIBMM_PREFIX/lib/glibmm_pkg/proc
AC_SUBST(GMMPROC_DIR)
GMMPROC=$GMMPROC_DIR/gmmproc
AC_SUBST(GMMPROC)
# Checks for libraries.
# Checks for header files.
AC_HEADER_STDC
# Checks for typedefs, structures, and compiler characteristics.
AC_C_CONST
# Checks for library functions.
##################################################
# Checks for gdkmm multihead support
##################################################
GDKGLEXTMM_MULTIHEAD_SUPPORT=no
save_CPPFLAGS="$CPPFLAGS"
CPPFLAGS="$CPPFLAGS $BASE_DEPENDENCIES_CFLAGS"
save_LIBS="$LIBS"
LIBS="$LIBS $BASE_DEPENDENCIES_LIBS"
if test "x$GTKGLEXT_SUPPORTS_MULTIHEAD" = "xyes"; then
AC_LANG_SAVE
AC_LANG_CPLUSPLUS
AC_CHECK_HEADERS([gdkmm/display.h gdkmm/screen.h],
[GDKGLEXTMM_MULTIHEAD_SUPPORT=yes],
[GDKGLEXTMM_MULTIHEAD_SUPPORT=no])
if test "x$GDKGLEXTMM_MULTIHEAD_SUPPORT" = "xyes"; then
AC_MSG_CHECKING([for Gdk::Display::get_default in gdkmm library])
AC_TRY_LINK([#include <gdkmm/display.h>],
[Gdk::Display::get_default();],
[GDKGLEXTMM_MULTIHEAD_SUPPORT=yes],
[GDKGLEXTMM_MULTIHEAD_SUPPORT=no])
AC_MSG_RESULT([$GDKGLEXTMM_MULTIHEAD_SUPPORT])
fi
AC_LANG_RESTORE
if test "x$GDKGLEXTMM_MULTIHEAD_SUPPORT" = "xyes"; then
AC_MSG_NOTICE([gdkmm supports multihead])
else
AC_MSG_NOTICE([gdkmm doesn't support multihead])
fi
fi
CPPFLAGS="$save_CPPFLAGS"
LIBS="$save_LIBS"
AC_SUBST([GDKGLEXTMM_MULTIHEAD_SUPPORT])
AM_CONDITIONAL([MULTIHEAD_SUPPORT],
[test "x$GDKGLEXTMM_MULTIHEAD_SUPPORT" = "xyes"])
##################################################
# CFLAGS and LIBS
##################################################
GDKGLEXTMM_PACKAGES="gdkglext_pkg gdkmm_pkg pangomm_pkg"
GDKGLEXTMM_EXTRA_LIBS=""
GDKGLEXTMM_EXTRA_CFLAGS=""
GDKGLEXTMM_DEP_LIBS="`$PKG_CONFIG --libs $GDKGLEXTMM_PACKAGES` $GDKGLEXTMM_EXTRA_LIBS $LIBSTDCXX_LIBS"
GDKGLEXTMM_DEP_CFLAGS="`$PKG_CONFIG --cflags $GDKGLEXTMM_PACKAGES` $GDKGLEXTMM_EXTRA_CFLAGS $MULTIHEAD_SAFE"
AC_SUBST([GDKGLEXTMM_PACKAGES])
AC_SUBST([GDKGLEXTMM_EXTRA_LIBS])
AC_SUBST([GDKGLEXTMM_EXTRA_CFLAGS])
AC_SUBST([GDKGLEXTMM_DEP_LIBS])
AC_SUBST([GDKGLEXTMM_DEP_CFLAGS])
GTKGLEXTMM_PACKAGES="gtkglext_pkg gtkmm_pkg"
GTKGLEXTMM_EXTRA_LIBS=""
GTKGLEXTMM_EXTRA_CFLAGS=""
GTKGLEXTMM_DEP_LIBS="`$PKG_CONFIG --libs $GDKGLEXTMM_PACKAGES $GTKGLEXTMM_PACKAGES` $GTKGLEXTMM_EXTRA_LIBS $GDKGLEXTMM_EXTRA_LIBS $LIBSTDCXX_LIBS"
GTKGLEXTMM_DEP_CFLAGS="`$PKG_CONFIG --cflags $GDKGLEXTMM_PACKAGES $GTKGLEXTMM_PACKAGES` $GDKGLEXTMM_EXTRA_CFLAGS $GTKGLEXTMM_EXTRA_CFLAGS $MULTIHEAD_SAFE"
AC_SUBST([GTKGLEXTMM_PACKAGES])
AC_SUBST([GTKGLEXTMM_EXTRA_LIBS])
AC_SUBST([GTKGLEXTMM_EXTRA_CFLAGS])
AC_SUBST([GTKGLEXTMM_DEP_LIBS])
AC_SUBST([GTKGLEXTMM_DEP_CFLAGS])
##################################################
# Checks for doxygen
##################################################
AC_ARG_WITH(html-dir,
[AC_HELP_STRING([--with-html-dir=PATH],
[path to installed docs [DATADIR/doc]])])
if test "x$with_html_dir" = "x" ; then
# doxygen's default docdir
HTML_DIR='${datadir}/doc'
else
HTML_DIR=$with_html_dir
fi
AC_SUBST([HTML_DIR])
DOXYGEN_DOC=false
PERL_PATH=""
AC_PATH_PROGS([PERL_PATH], [perl perl5])
AC_SUBST([PERL_PATH])
DOT_PATH=""
HAVE_DOT=NO
AC_PATH_PROGS([DOT_PATH], [dot])
if test "x$DOT_PATH" != "x"; then
HAVE_DOT=YES
fi
AC_SUBST([HAVE_DOT])
AC_SUBST([DOT_PATH])
DOXYGEN_PATH=""
AC_PATH_PROGS([DOXYGEN_PATH], [doxygen])
AC_SUBST([DOXYGEN_PATH])
GLIBMM_INCLUDE_PATH=`$PKG_CONFIG --variable=includedir glibmm_pkg`/glibmm_pkg
PANGOMM_INCLUDE_PATH=`$PKG_CONFIG --variable=includedir pangomm_pkg`/pangomm_pkg
GDKMM_INCLUDE_PATH=`$PKG_CONFIG --variable=includedir gdkmm_pkg`/gdkmm_pkg
GTKMM_INCLUDE_PATH=`$PKG_CONFIG --variable=includedir gtkmm_pkg`/gtkmm_pkg
AC_SUBST([GLIBMM_INCLUDE_PATH])
AC_SUBST([PANGOMM_INCLUDE_PATH])
AC_SUBST([GDKMM_INCLUDE_PATH])
AC_SUBST([GTKMM_INCLUDE_PATH])
if test "x$PERL_PATH" != "x" -a "x$DOXYGEN_PATH" != "x"; then
DOXYGEN_DOC=true
fi
AC_ARG_ENABLE(doxygen-doc,
[AC_HELP_STRING([--enable-doxygen-doc],
[use doxygen to build documentation [default=no]])], ,
[enable_doxygen_doc=no])
if test "x$enable_doxygen_doc" = "xyes"; then
if test "x$DOXYGEN_DOC" != "xtrue"; then
enable_doxygen_doc=no
fi
fi
AM_CONDITIONAL([ENABLE_DOXYGEN_DOC],
[test "x$enable_doxygen_doc" = "xyes"])
##################################################
# Output configuration header
##################################################
dnl this section will only be run if config.status is invoked with no
dnl arguments, or with "gdkglext/gdkglextmm-config.h" as an argument.
AC_CONFIG_COMMANDS([gdkglext/gdkglextmm-config.h],
[
outfile=gdkglextmm-config.h-tmp
cat > $outfile <<\_______EOF
/* gdkglextmm-config.h
*
* This is a generated file. Please modify `configure.in'
*/
#ifndef GDKGLEXTMM_CONFIG_H
#define GDKGLEXTMM_CONFIG_H
#include <gdkglext-config.h>
_______EOF
cat >>$outfile <<_______EOF
$gdkglextmm_windowing
$gdkglextmm_multihead_support
_______EOF
cat >>$outfile <<_______EOF
#if !defined(GDKGLEXT_MULTIHEAD_SUPPORT) && defined(GDKGLEXTMM_MULTIHEAD_SUPPORT)
#error "Installed GdkGLExt library doesn't have multihead support."
#endif
_______EOF
cat >>$outfile <<_______EOF
#endif /* GDKGLEXTMM_CONFIG_H */
_______EOF
if cmp -s $outfile gdkglext/gdkglextmm-config.h; then
AC_MSG_NOTICE([gdkglext/gdkglextmm-config.h is unchanged])
rm -f $outfile
else
mv $outfile gdkglext/gdkglextmm-config.h
fi
],[
if test "x$gdktarget" = "xx11" ; then
gdkglextmm_windowing='
#define GDKGLEXTMM_WINDOWING_X11'
elif test "x$gdktarget" = "xwin32" ; then
gdkglextmm_windowing='
#define GDKGLEXTMM_WINDOWING_WIN32'
fi
if test "x$GDKGLEXTMM_MULTIHEAD_SUPPORT" = "xyes"; then
gdkglextmm_multihead_support='
#define GDKGLEXTMM_MULTIHEAD_SUPPORT'
fi
])
##################################################
# Config files
##################################################
AC_CONFIG_FILES([
gdkglextmm.pc
gtkglextmm.pc
gdkglextmm-uninstalled.pc
gtkglextmm-uninstalled.pc
gtkglextmm.spec
gtkglextmm.nsi
Makefile
tools/Makefile
tools/extra_defs_gen/Makefile
tools/m4/Makefile
gdkglext/Makefile
gdkglext/src/Makefile
gdkglext/gdkmm/Makefile
gdkglext/gdkmm/gl/Makefile
gdkglext/gdkmm/gl/version.h
gdkglext/gdkmm/gl/private/Makefile
gtkglext/Makefile
gtkglext/src/Makefile
gtkglext/gtkmm/Makefile
gtkglext/gtkmm/gl/Makefile
gtkglext/gtkmm/gl/version.h
gtkglext/gtkmm/gl/private/Makefile
examples/Makefile
docs/Makefile
docs/reference/Makefile
docs/reference/Doxyfile
m4macros/Makefile
])
AC_OUTPUT
##################################################
# Print configuration
##################################################
echo "
configuration:
multihead support: $GDKGLEXTMM_MULTIHEAD_SUPPORT
"