ed79ada80e
# Please enter a commit message to explain why this merge is necessary, # especially if it merges an updated upstream into a topic branch. # # Lines starting with '#' will be ignored, and an empty message aborts # the commit.
464 lines
9.7 KiB
Plaintext
464 lines
9.7 KiB
Plaintext
# 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
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|