configure.in
来自「Boost provides free peer-reviewed portab」· IN 代码 · 共 464 行
IN
464 行
# 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], )dnldefine([AC_CACHE_SAVE], )dnlAC_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"ficat << 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 approximateconfiguration - you will need to test the results carefullyusing the boost regression test suite before using the results.EOFif test $enable_test = 'yes'; thencat << EOFThis script reports only the difference between the detectedconfiguration, and the existing boost configuration. Its primary aim is to quickly report how well boost is configuredfor one compiler.***EOFelsecat << EOF***EOFfiAC_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=$enablevalesac],[AC_MSG_RESULT(Info : .cpp used as extension for tests) ac_ext=cpp])dnl figure out which version of sed to use, on some platformsdnl the version in the path is not Unix conforming (MacOS X ? )if test -f /bin/sed ; then SED=/bin/sedelse if test -f /usr/bin/sed ; then SED=/usr/bin/sed else SED=sed fifidnl 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= fifiif 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_extAC_PROG_CXXac_ext=$use_ac_extAC_LANG_CPLUSPLUSOLD_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 onlyif test $CXX = 'aCC'; then CXXFLAGS="-AA $CXXFLAGS"fidnl check for some standard librariesdnl 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"#elsenamespace ${namespace} = empty_boost;#endifint 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"#endifint main() { return ${namespace}::test(); }] , [AC_MSG_RESULT(failed) required_undefs="$macroname $required_undefs"] , [AC_MSG_RESULT(OK)] ) fidone## 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"#elsenamespace ${namespace} = empty_boost;#endifint 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"#endifint 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) ] ) fidone#echo $required_defs#echo $required_undefsif test $enable_test = 'yes'; thenif test "$required_defs" = ""; thenecho no boost macros need to be definedecho no boost macros need to be defined >&5elseecho the following macros need to be definedecho $required_defsecho the following macros need to be defined >&5echo $required_defs >&5fiif test "$required_undefs" = ""; thenecho no boost macros need to be undefinedecho no boost macros need to be undefined >&5elseecho "the following macros need to be undef'ed"echo $required_undefsecho "the following macros need to be undef'ed" >&5echo $required_undefs >&5fielsedate_string=`date`echo boost_base=$boost_basecat > 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://EOFfor name in $required_defs; doecho '#define '"$name" >> user.hppdonecat_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>&1AC_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>&1AC_MSG_RESULT(done)AC_OUTPUT([],[cat > user.hpp << EEEOF${cat_conts}EEEOFcat << EEEOFAdjustments to boost configuration have been written touser.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
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?