123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463 |
- # copyright John Maddock 2003
- # Use, modification and distribution are subject to the
- # Boost Software License, Version 1.0. (See accompanying file
- # LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
- #
- # the following variables contain our macro definitions:
- #
- required_defs=""
- required_undefs=""
- dnl Process this file with autoconf to produce a configure script.
- dnl disable cache processing, it has no effect here:
- define([AC_CACHE_LOAD], )dnl
- define([AC_CACHE_SAVE], )dnl
- AC_INIT(./tools/configure.in)
- AC_ARG_ENABLE(test, --enable-test tests current settings rather than defining new ones)
- if test "foo"$enable_test = "foo"; then
- enable_test="no"
- fi
- cat << EOF
- *** $0: boost configuration utility ***
- Please stand by while exploring compiler capabilities...
- Be patient - this could take some time...
- Note that this test script only gives an approximate
- configuration - you will need to test the results carefully
- using the boost regression test suite before using the results.
- EOF
- if test $enable_test = 'yes'; then
- cat << EOF
- This script reports only the difference between the detected
- configuration, and the existing boost configuration. Its
- primary aim is to quickly report how well boost is configured
- for one compiler.
- ***
- EOF
- else
- cat << EOF
- ***
- EOF
- fi
- AC_ARG_ENABLE(extension,[--enable-extension=<ext>],
- [
- case "$enableval" in
- no) AC_MSG_RESULT(Info :.cpp used as extension for tests)
- ac_ext=cpp
- ;;
- *) AC_MSG_RESULT(Argument : .$enableval used as extension)
- ac_ext=$enableval
- esac
- ],
- [AC_MSG_RESULT(Info : .cpp used as extension for tests)
- ac_ext=cpp
- ]
- )
- dnl figure out which version of sed to use, on some platforms
- dnl the version in the path is not Unix conforming (MacOS X ? )
- if test -f /bin/sed ; then
- SED=/bin/sed
- else
- if test -f /usr/bin/sed ; then
- SED=/usr/bin/sed
- else
- SED=sed
- fi
- fi
- dnl Set the boost main directory.
- AC_MSG_CHECKING(for boost main tree)
- boost_base=
- AC_ARG_WITH(boost,
- AC_HELP_STRING([--with-boost=DIR],[path to the boost main tree]),
- [
- #echo "--with boost is set"
- if test "x$withval" != "x"; then
- if test "x$withval" != no; then
- boost_base=`echo "$withval" | $SED 's,//*,/,g' | $SED 's,/$,,'`
- #echo boost_base=$boost_base
- if test -f "$boost_base/boost/config.hpp"; then
- if test -f "$boost_base/libs/config/configure"; then :; else
- boost_base=
- #echo "$boost_base/libs/config/configure" not found
- fi
- else
- #echo "$boost_base/boost/config.hpp" not found
- boost_base=
- fi
- fi
- fi
- ]
- )
- if test "x$boost_base" = "x"; then
- #echo '$0 = ' $0
- boost_base=`expr "x$0" : 'x\(.*\)/@<:@/@:>@*' \| '.'`
- boost_base="$boost_base/../.."
- #echo boost_base=$boost_base
- if test -f "$boost_base/boost/config.hpp"; then
- if test -f "$boost_base/libs/config/configure"; then :; else
- boost_base=
- fi
- else
- boost_base=
- fi
- fi
- if test "x$boost_base" != "x"; then
- AC_MSG_RESULT([$boost_base])
- else
- AC_MSG_RESULT([not found])
- AC_MSG_ERROR([The boost main tree was not found.
- Specify its location by the --with-boost option.])
- fi
-
- # Save that, as it is being redefined several times
- use_ac_ext=$ac_ext
- AC_PROG_CXX
- ac_ext=$use_ac_ext
- AC_LANG_CPLUSPLUS
- OLD_CXXFLAGS="$CXXFLAGS"
- if test $enable_test = 'yes'; then
- CXXFLAGS="-I$boost_base -I$boost_base/libs/config/test $CXXFLAGS"
- else
- CXXFLAGS="-I$boost_base -I$boost_base/libs/config/test $CXXFLAGS -DBOOST_NO_CONFIG"
- fi
- # add the -AA conformance option to CXXFLAGS for HP aCC only
- if test $CXX = 'aCC'; then
- CXXFLAGS="-AA $CXXFLAGS"
- fi
- dnl check for some standard libraries
- dnl without these some of the tests may fail:
- AC_CHECK_LIB(pthread, pthread_exit)
- AC_CHECK_LIB(m, cos)
- AC_CHECK_LIB(rt, clock)
- #
- # enumerate test files and test each one:
- #
- for file in $boost_base/libs/config/test/boost_no*.ipp; do
- basename=`echo $file | $SED 's/.*boost_\(.*\)\.ipp/\1/'`
- macroname=`cat $file | grep '^//[[ ]]*MACRO:' | $SED 's/.*MACRO:[[ ]]*\([[_A-Z0-9]]*\).*/\1/'`
- title=`cat $file | grep '^//[[ ]]*TITLE:' | $SED 's/.*TITLE:[[ ]]*\([[^ ]].*\)/\1/'`
- namespace=`echo $macroname | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz`
- #echo file = $file
- #echo basename = $basename
- #echo macroname = $macroname
- #echo title = $title
- #echo namespace = $namespace
- ac_ext=$use_ac_ext
- if test $enable_test = 'yes'; then
- AC_MSG_CHECKING($title (pass expected) )
- else
- AC_MSG_CHECKING($title )
- fi
- AC_TRY_RUN(
- [
- #include <boost/config.hpp>
- #include "test.hpp"
- #if !defined($macroname) || defined(BOOST_NO_CONFIG)
- #include "boost_$basename.ipp"
- #else
- namespace ${namespace} = empty_boost;
- #endif
- int main(){ return ${namespace}::test(); } ]
- ,
- [AC_MSG_RESULT(OK)]
- ,
- [AC_MSG_RESULT(Failed)
- required_defs="$macroname $required_defs"]
- )
- if test $enable_test = 'yes'; then
-
- ac_ext=$use_ac_ext
- AC_MSG_CHECKING($title (fail expected) )
- AC_TRY_RUN(
- [
- #include <boost/config.hpp>
- #include "test.hpp"
- #ifdef $macroname
- #include "boost_$basename.ipp"
- #else
- #error "this file should not compile"
- #endif
- int main() { return ${namespace}::test(); }]
- ,
- [AC_MSG_RESULT(failed)
- required_undefs="$macroname $required_undefs"]
- ,
- [AC_MSG_RESULT(OK)]
- )
-
- fi
- done
- #
- # enumerate optional test files and test each one:
- #
- for file in $boost_base/libs/config/test/boost_has*.ipp; do
- basename=`echo $file | $SED 's/.*boost_\(.*\)\.ipp/\1/'`
- macroname=`cat $file | grep '^//[[ ]]*MACRO:' | $SED 's/.*MACRO:[[ ]]*\([[_A-Z0-9]]*\).*/\1/'`
- title=`cat $file | grep '^//[[ ]]*TITLE:' | $SED 's/.*TITLE:[[ ]]*\([[^ ]].*\)/\1/'`
- namespace=`echo $macroname | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz`
- # echo $file
- # echo $basename
- # echo $macroname
- # echo $title
- ac_ext=$use_ac_ext
- if test $enable_test = 'yes'; then
- AC_MSG_CHECKING($title (pass expected) )
- AC_TRY_RUN(
- [
- #include <boost/config.hpp>
- #include "test.hpp"
- #ifdef $macroname
- #include "boost_$basename.ipp"
- #else
- namespace ${namespace} = empty_boost;
- #endif
- int main(){ return ${namespace}::test(); }]
- ,
- [AC_MSG_RESULT(OK)]
- ,
- [AC_MSG_RESULT(Failed)
- required_undefs="$macroname $required_undefs"]
- )
-
- AC_MSG_CHECKING($title (fail expected) )
- AC_TRY_RUN(
- [
- #include <boost/config.hpp>
- #include "test.hpp"
- #ifndef $macroname
- #include "boost_$basename.ipp"
- #else
- #error "this file should not compile"
- #endif
- int main(){ return ${namespace}::test(); }]
- ,
- [
- AC_MSG_RESULT(failed)
- required_defs="$macroname $required_defs"
- ]
- ,
- [
- AC_MSG_RESULT(OK)
- ]
- )
- else
- ac_ext=$use_ac_ext
- AC_MSG_CHECKING($title)
- AC_TRY_RUN(
- [
- #include <boost/config.hpp>
- #include "test.hpp"
- #include "boost_$basename.ipp"
- int main(){ return ${namespace}::test(); }]
- ,
- [
- AC_MSG_RESULT(Yes)
- required_defs="$macroname $required_defs"
- ]
- ,
- [
- AC_MSG_RESULT(no)
- ]
- )
-
- fi
- done
- #echo $required_defs
- #echo $required_undefs
- if test $enable_test = 'yes'; then
- if test "$required_defs" = ""; then
- echo no boost macros need to be defined
- echo no boost macros need to be defined >&5
- else
- echo the following macros need to be defined
- echo $required_defs
- echo the following macros need to be defined >&5
- echo $required_defs >&5
- fi
- if test "$required_undefs" = ""; then
- echo no boost macros need to be undefined
- echo no boost macros need to be undefined >&5
- else
- echo "the following macros need to be undef'ed"
- echo $required_undefs
- echo "the following macros need to be undef'ed" >&5
- echo $required_undefs >&5
- fi
- else
- date_string=`date`
- echo boost_base=$boost_base
- cat > user.hpp << EOF
- // (C) Copyright Boost.org 2001.
- // Do not check in modified versions of this file,
- // This file may be customised by the end user, but not by boost.
- //
- // Use this file to define a site and compiler specific
- // configuration policy, this version was auto-generated by
- // configure on ${date_string}
- // With the following options:
- // CXX = ${CXX}
- // CXXFLAGS = ${CXXFLAGS}
- // LDFLAGS = ${LDFLAGS}
- // LIBS = ${LIBS}
- //
- // define this to disable all config options,
- // excluding the user config. Use if your
- // setup is fully ISO complient, and has no
- // useful extentions, or for autoconf generated
- // setups:
- #ifndef BOOST_NO_CONFIG
- # define BOOST_NO_CONFIG
- #endif
- // define if you want to disable threading support, even
- // when available:
- // #define BOOST_DISABLE_THREADS
- // define if you want the regex library to use the C locale
- // even on Win32:
- // #define BOOST_REGEX_USE_C_LOCALE
- // define this is you want the regex library to use the C++
- // locale:
- // #define BOOST_REGEX_USE_CPP_LOCALE
- //
- // options added by configure:
- //
- EOF
- for name in $required_defs; do
- echo '#define '"$name" >> user.hpp
- done
- cat_conts=`cat user.hpp`
- #
- # post configuration step:
- #
- AC_MSG_CHECKING(original configuration )
- rm -f conftest$ac_exeext
- $CXX -I$boost_base $OLD_CXXFLAGS -DBOOST_NO_USER_CONFIG -o conftest$ac_exeext $LDFLAGS $boost_base/libs/config/test/config_info.cpp $LIBS >&5 2>&1
- ./conftest >&5 2>&1
- AC_MSG_RESULT(done)
- AC_MSG_CHECKING(new configuration )
- rm -f conftest$ac_exeext
- $CXX -I$boost_base -I$boost_base/libs/config $OLD_CXXFLAGS -DBOOST_USER_CONFIG='"user.hpp"' -o conftest$ac_exeext $LDFLAGS $boost_base/libs/config/test/config_info.cpp $LIBS >&5 2>&1
- ./conftest >&5 2>&1
- AC_MSG_RESULT(done)
- AC_OUTPUT(
- [],
- [
- cat > user.hpp << EEEOF
- ${cat_conts}
- EEEOF
- cat << EEEOF
- Adjustments to boost configuration have been written to
- user.hpp. Copy this to boost/config/user.hpp to use "as is",
- or define BOOST_SITE_CONFIG to point to its location.
- TREAT THIS FILE WITH CARE.
- Autoconf generated options are not infallible!
- EEEOF
- ],
- [
- cat_conts="$cat_conts"
- ]
- )
- fi
|