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 + -
显示快捷键?