| # 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 [[A-Z]] [[a-z]]` |
| |
| #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 [[A-Z]] [[a-z]]` |
| |
| # 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 |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |