378 lines
11 KiB
Plaintext
Executable File
378 lines
11 KiB
Plaintext
Executable File
dnl
|
|
dnl Main authors:
|
|
dnl Guido Tack <tack@gecode.org>
|
|
dnl
|
|
dnl Contributing authors:
|
|
dnl Samuel Gagnon <samuel.gagnon92@gmail.com>
|
|
dnl
|
|
dnl Copyright:
|
|
dnl Guido Tack, 2004, 2005
|
|
dnl Samuel Gagnon, 2018
|
|
dnl
|
|
dnl This file is part of Gecode, the generic constraint
|
|
dnl development environment:
|
|
dnl http://www.gecode.org
|
|
dnl
|
|
dnl Permission is hereby granted, free of charge, to any person obtaining
|
|
dnl a copy of this software and associated documentation files (the
|
|
dnl "Software"), to deal in the Software without restriction, including
|
|
dnl without limitation the rights to use, copy, modify, merge, publish,
|
|
dnl distribute, sublicense, and/or sell copies of the Software, and to
|
|
dnl permit persons to whom the Software is furnished to do so, subject to
|
|
dnl the following conditions:
|
|
dnl
|
|
dnl The above copyright notice and this permission notice shall be
|
|
dnl included in all copies or substantial portions of the Software.
|
|
dnl
|
|
dnl THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
|
dnl EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
|
dnl MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
|
dnl NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
|
dnl LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
|
dnl OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
|
dnl WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|
dnl
|
|
dnl
|
|
|
|
AC_REVISION([$Id$])
|
|
AC_PREREQ(2.53)
|
|
AC_INIT(GECODE, 6.3.1, users@gecode.org)
|
|
AC_CONFIG_HEADERS([gecode/support/config.hpp])
|
|
AC_CONFIG_SRCDIR(gecode/kernel.hh)
|
|
|
|
ac_gecode_soversion=52
|
|
AC_SUBST(GECODE_SOVERSION, ${ac_gecode_soversion})
|
|
ac_gecode_flatzincversion=1.6
|
|
AC_SUBST(GECODE_FLATZINC_VERSION, ${ac_gecode_flatzincversion})
|
|
|
|
# checks for programs
|
|
|
|
: ${CXXFLAGS=""} dnl we do not want autoconf's default
|
|
: ${CFLAGS=""} dnl we do not want autoconf's default
|
|
: ${DLLFLAGS=""} dnl we do not want autoconf's default
|
|
: ${GLDFLAGS=""} dnl we do not want autoconf's default
|
|
|
|
dnl include Gecode specific macros
|
|
m4_include([gecode.m4])
|
|
|
|
dnl determine the operating system
|
|
AC_GECODE_GET_OS
|
|
|
|
if test "${CXX}x" = "x" -a "${CC}x" = "x" -a "${host_os}" = "windows"; then
|
|
CC=cl
|
|
CXX=cl
|
|
fi
|
|
|
|
AC_PROG_CXX
|
|
AC_PROG_CC
|
|
AC_LANG(C++)
|
|
|
|
AC_PROG_RANLIB
|
|
|
|
dnl check whether we have certain programs we need
|
|
AC_CHECK_PROG(PROG_DIFF, diff, [ok])
|
|
if test "${PROG_DIFF}x" = "x"; then
|
|
AC_MSG_ERROR([In order to compile Gecode, you need the diff tool.])
|
|
fi
|
|
AC_CHECK_PROG(PROG_TAR, tar, [ok])
|
|
if test "${PROG_TAR}x" = "x"; then
|
|
AC_MSG_ERROR([In order to compile Gecode, you need the tar tool.])
|
|
fi
|
|
AC_CHECK_PROG(PROG_MAKE, make, [ok])
|
|
if test "${PROG_MAKE}x" = "x"; then
|
|
AC_MSG_ERROR([In order to compile Gecode, you need the make tool.])
|
|
fi
|
|
AC_CHECK_PROG(PROG_SED, sed, [ok])
|
|
if test "${PROG_SED}x" = "x"; then
|
|
AC_MSG_ERROR([In order to compile Gecode, you need the sed tool.])
|
|
fi
|
|
AC_CHECK_PROG(PROG_PERL, perl, [ok])
|
|
if test "${PROG_PERL}x" = "x"; then
|
|
AC_MSG_ERROR([In order to compile Gecode, you need perl.])
|
|
fi
|
|
|
|
dnl Check for environment to use when running programs in the Makefile
|
|
AC_GECODE_RUNENVIRONMENT
|
|
|
|
dnl determine which compiler we are using
|
|
AC_CXX_COMPILER_VENDOR(ac_gecode_compiler_vendor)
|
|
case $ac_gecode_compiler_vendor in
|
|
gnu)
|
|
AC_CHECK_GCC_VERSION(4,2)
|
|
;;
|
|
intel)
|
|
;;
|
|
microsoft)
|
|
AC_CHECK_MSVC_VERSION(1800,2013)
|
|
;;
|
|
*)
|
|
;;
|
|
esac
|
|
|
|
AC_GECODE_RESOURCE
|
|
|
|
AC_LANG(C++)
|
|
|
|
dnl check whether we want to build universal binaries on Mac OS X
|
|
AC_GECODE_UNIVERSAL
|
|
|
|
dnl check whether the user wants a prefix or suffixes for the libraries
|
|
AC_GECODE_USER_SUFFIX
|
|
|
|
dnl check whether we want to build a framework bundle on Mac OS X
|
|
AC_GECODE_FRAMEWORK
|
|
|
|
dnl check whether we want to build static libraries
|
|
AC_GECODE_STATICLIBS
|
|
|
|
dnl check whether we want to have assertions and debugging options
|
|
AC_GECODE_DEBUG
|
|
|
|
dnl check whether we want to have peak heap size tracking
|
|
AC_GECODE_PEAKHEAP
|
|
|
|
dnl check whether to optimize for code size
|
|
AC_GECODE_CODESIZE
|
|
|
|
dnl check whether we want to have support for finding memory leaks
|
|
AC_GECODE_LEAK_DEBUG
|
|
|
|
dnl check whether we want to use default memory allocator
|
|
AC_GECODE_ALLOCATOR
|
|
|
|
dnl check whether we want audit code in our build
|
|
AC_GECODE_AUDIT
|
|
|
|
dnl check whether we want to produce code suitable for profiling
|
|
AC_GECODE_PROFILE
|
|
|
|
dnl check whether we want to produce code instrumented for gcov
|
|
AC_GECODE_GCOV
|
|
|
|
dnl check platform specific behaviour of arithmetic
|
|
AC_GECODE_CHECK_ARITH
|
|
|
|
dnl checking for thread support
|
|
AC_GECODE_THREADS
|
|
|
|
dnl checking for timer to use
|
|
AC_GECODE_TIMER
|
|
|
|
dnl checking for freelist sizes to use
|
|
AC_GECODE_FREELIST_32_SIZE
|
|
AC_GECODE_FREELIST_64_SIZE
|
|
|
|
case $ac_gecode_compiler_vendor in
|
|
gnu)
|
|
dnl general compiler flags
|
|
AC_GECODE_UNIX_PATHS
|
|
AC_GECODE_GCC_GENERAL_SWITCHES
|
|
dnl check whether we want to use visibility attributes with gcc
|
|
AC_GECODE_GCC_VISIBILITY
|
|
|
|
if test "${enable_debug:-no}" = "no" -a "${enable_gcov:-no}" = "no"; then
|
|
dnl compiler flags for an optimized build
|
|
AC_GECODE_GCC_OPTIMIZED_SWITCHES
|
|
dnl compiler flags for optimize float computings
|
|
dnl AC_GECODE_CHECK_COMPILERFLAG([-ffast-math])
|
|
dnl ffast-math implies:-fno-math-errno -funsafe-math-optimizations -ffinite-math-only -fno-rounding-math -fno-signaling-nans -fcx-limited-range
|
|
dnl but -funsafe-math-optimizations break IEEE float comptability, so we have to avoid it
|
|
AC_GECODE_CHECK_COMPILERFLAG([-fno-math-errno])
|
|
AC_GECODE_CHECK_COMPILERFLAG([-ffinite-math-only])
|
|
AC_GECODE_CHECK_COMPILERFLAG([-fno-rounding-math])
|
|
AC_GECODE_CHECK_COMPILERFLAG([-fno-signaling-nans])
|
|
AC_GECODE_CHECK_COMPILERFLAG([-fcx-limited-range])
|
|
AC_GECODE_CHECK_COMPILERFLAG([-mthreads])
|
|
else
|
|
if test "${enable_debug:-no}" = "yes"; then
|
|
dnl compiler flags for a debug build
|
|
AC_GECODE_GCC_DEBUG_SWITCHES
|
|
fi
|
|
fi
|
|
AC_GECODE_CHECK_COMPILERFLAG([-Qunused-arguments])
|
|
|
|
;;
|
|
intel)
|
|
dnl flags for creating dlls
|
|
case $host_os in
|
|
windows*)
|
|
AC_GECODE_MSVC_SWITCHES
|
|
;;
|
|
*)
|
|
dnl check whether we want to use visibility attributes with gcc
|
|
AC_GECODE_GCC_VISIBILITY
|
|
dnl general compiler flags
|
|
AC_GECODE_UNIX_PATHS
|
|
AC_GECODE_GCC_GENERAL_SWITCHES
|
|
|
|
if test "${enable_debug:-no}" = "no"; then
|
|
dnl compiler flags for an optimized build
|
|
AC_GECODE_GCC_OPTIMIZED_SWITCHES
|
|
else
|
|
dnl compiler flags for a debug build
|
|
AC_GECODE_GCC_DEBUG_SWITCHES
|
|
fi
|
|
;;
|
|
esac
|
|
;;
|
|
microsoft)
|
|
AC_GECODE_MSVC_SWITCHES
|
|
;;
|
|
*)
|
|
AC_MSG_ERROR(Gecode currently only supports the GNU and Microsoft compilers.)
|
|
;;
|
|
esac
|
|
|
|
dnl check whether we can use GNU hash_map
|
|
AC_CHECK_HEADER([ext/hash_map],
|
|
[AC_DEFINE([GECODE_HAS_GNU_HASH_MAP],[],
|
|
[Whether GNU hash_map is available])])
|
|
|
|
dnl check whether we can use unordered_map
|
|
AC_CHECK_HEADER([unordered_map],
|
|
[AC_DEFINE([GECODE_HAS_UNORDERED_MAP],[],
|
|
[Whether unordered_map is available])])
|
|
|
|
dnl find out what parts the user wants to build
|
|
|
|
AC_GECODE_DOC_SWITCHES
|
|
|
|
dnl ------------------------------------------------------------------
|
|
dnl Enabling of non-variable contribs
|
|
dnl @CONTRIBS@
|
|
|
|
dnl ------------------------------------------------------------------
|
|
dnl Definition of variable types
|
|
|
|
dnl Include contributor's vtis
|
|
dnl @VTIS@
|
|
|
|
AC_GECODE_VIS
|
|
|
|
AC_GECODE_VTI(float,
|
|
[float variable library (implies --enable-int-vars)],
|
|
yes,
|
|
[\$(top_srcdir)/gecode/float/var-imp/float.vis],
|
|
[enable_int_vars="yes";
|
|
AC_SUBST(LINKFLOAT,[${LINKLIBDIR}${LINKPREFIX}${FLOAT}${DLL_ARCH}${LINKSUFFIX}])
|
|
],
|
|
[
|
|
AC_SUBST(LINKFLOAT,[])
|
|
]
|
|
)
|
|
|
|
AC_GECODE_VTI(set,
|
|
[finite set library (implies --enable-int-vars)],
|
|
yes,
|
|
[\$(top_srcdir)/gecode/set/var-imp/set.vis],
|
|
[enable_int_vars="yes";
|
|
AC_SUBST(LINKSET,[${LINKLIBDIR}${LINKPREFIX}${SET}${DLL_ARCH}${LINKSUFFIX}])
|
|
],
|
|
[
|
|
AC_SUBST(LINKSET,[])
|
|
]
|
|
)
|
|
|
|
AC_GECODE_VTI(int, finite domain library, yes,
|
|
[\$(top_srcdir)/gecode/int/var-imp/int.vis \$(top_srcdir)/gecode/int/var-imp/bool.vis],
|
|
[
|
|
AC_SUBST(LINKINT,[${LINKLIBDIR}${LINKPREFIX}${INT}${DLL_ARCH}${LINKSUFFIX}])
|
|
],
|
|
[
|
|
AC_SUBST(LINKINT,[])
|
|
])
|
|
|
|
dnl End of definition of variable types
|
|
dnl ------------------------------------------------------------------
|
|
|
|
AC_GECODE_MPFR
|
|
AC_GECODE_QT
|
|
AC_GECODE_GIST
|
|
AC_GECODE_CBS
|
|
AC_GECODE_CPPROFILER
|
|
AC_GECODE_FLEXBISON
|
|
AC_FUNC_MMAP
|
|
|
|
AC_GECODE_ENABLE_MODULE(driver, yes,
|
|
[build script commandline driver library],
|
|
[enable_search="yes";
|
|
enable_int="yes";
|
|
])
|
|
|
|
AC_GECODE_ENABLE_MODULE(flatzinc, yes,
|
|
[build FlatZinc interpreter],
|
|
[enable_search="yes";
|
|
enable_driver="yes";
|
|
enable_minimodel="yes";
|
|
])
|
|
|
|
AC_GECODE_ENABLE_MODULE(driver, yes,
|
|
[build script commandline driver library],
|
|
[enable_search="yes";
|
|
enable_int="yes";
|
|
])
|
|
|
|
AC_GECODE_ENABLE_MODULE(examples, yes,
|
|
[build examples for the enabled variable types],
|
|
[enable_search="yes";
|
|
enable_driver="yes";
|
|
enable_minimodel="yes";
|
|
])
|
|
|
|
AC_GECODE_ENABLE_MODULE(minimodel, yes,
|
|
[build modeling support library for the enabled variable types])
|
|
|
|
AC_GECODE_ENABLE_MODULE(search, yes,
|
|
[build search engines])
|
|
|
|
dnl Configure contributions
|
|
AC_CONFIG_SUBDIRS()
|
|
dnl @SUBDIRS@
|
|
|
|
AC_SUBST(VERSION, ${PACKAGE_VERSION})
|
|
AC_SUBST(GECODE_VERSION, ${PACKAGE_VERSION})
|
|
AC_SUBST(DLLFLAGS, ${DLLFLAGS})
|
|
AC_SUBST(GLDFLAGS, ${GLDFLAGS})
|
|
AC_SUBST(ALLVIS, ${ac_gecode_vis})
|
|
|
|
VERSION_DASHES=`echo $PACKAGE_VERSION | sed -e s/\\\\./-/g`
|
|
|
|
PACKAGE_VERSION_NUMBER=`echo $PACKAGE_VERSION | awk -F. '{print $1 * 100000 + $2 * 100 + $3}'`
|
|
|
|
AC_DEFINE_UNQUOTED(GECODE_VERSION,
|
|
"${PACKAGE_VERSION}",
|
|
[Gecode version])
|
|
AC_DEFINE_UNQUOTED(GECODE_LIBRARY_VERSION,
|
|
"${VERSION_DASHES}",
|
|
[Gecode version])
|
|
AC_DEFINE_UNQUOTED(GECODE_VERSION_NUMBER,
|
|
${PACKAGE_VERSION_NUMBER},
|
|
[Gecode version])
|
|
|
|
AC_DEFINE_UNQUOTED(GECODE_FLATZINC_VERSION,
|
|
"${GECODE_FLATZINC_VERSION}",
|
|
[Supported version of FlatZinc]
|
|
)
|
|
|
|
ac_gecode_library_architecture=-${VERSION_DASHES}${ac_gecode_library_architecture}
|
|
if test "$ac_gecode_compiler_vendor" == "microsoft" \
|
|
-o \( "$ac_gecode_compiler_vendor" == "intel" \
|
|
-a "$host_os" == "windows" \) ; then
|
|
AC_SUBST(DLL_ARCH,[${ac_gecode_library_architecture}])
|
|
else
|
|
AC_SUBST(DLL_ARCH,[""])
|
|
fi
|
|
|
|
AC_CONFIG_FILES([Makefile])
|
|
if test "${host_os}" = "windows"; then
|
|
AC_SUBST(BATCHFILE, ".bat")
|
|
AC_CONFIG_FILES([tools/flatzinc/mzn-gecode.bat:tools/flatzinc/mzn-gecode.bat.in],[chmod +x tools/flatzinc/mzn-gecode.bat])
|
|
else
|
|
AC_SUBST(BATCHFILE, "")
|
|
AC_CONFIG_FILES([tools/flatzinc/mzn-gecode:tools/flatzinc/mzn-gecode.in],[chmod +x tools/flatzinc/mzn-gecode])
|
|
fi
|
|
AC_CONFIG_FILES([tools/flatzinc/gecode.msc:tools/flatzinc/gecode.msc.in])
|
|
AC_CONFIG_FILES([doxygen.conf:doxygen/doxygen.conf.in])
|
|
AC_CONFIG_FILES([doxygen.hh:doxygen/doxygen.hh.in])
|
|
AC_OUTPUT
|