diff options
author | Anas Nashif <anas.nashif@intel.com> | 2012-10-30 12:57:26 -0700 |
---|---|---|
committer | Anas Nashif <anas.nashif@intel.com> | 2012-10-30 12:57:26 -0700 |
commit | 1a78a62555be32868418fe52f8e330c9d0f95d5a (patch) | |
tree | d3765a80e7d3b9640ec2e930743630cd6b9fce2b /libs/config | |
download | boost-1a78a62555be32868418fe52f8e330c9d0f95d5a.tar.gz boost-1a78a62555be32868418fe52f8e330c9d0f95d5a.tar.bz2 boost-1a78a62555be32868418fe52f8e330c9d0f95d5a.zip |
Imported Upstream version 1.49.0upstream/1.49.0
Diffstat (limited to 'libs/config')
549 files changed, 38931 insertions, 0 deletions
diff --git a/libs/config/config.htm b/libs/config/config.htm new file mode 100644 index 0000000000..df7430bd0e --- /dev/null +++ b/libs/config/config.htm @@ -0,0 +1,15 @@ +<html> + <head> + <meta http-equiv="refresh" content="0; URL=doc/html/index.html"> + </head> + <body> + <P> + Automatic redirection failed, please go to <a href="doc/html/index.html">doc/html/index.html</a>. + </P> + <P>Copyright John Maddock 2001</P> + <P>Distributed under the Boost Software License, Version 1.0. (See accompanying file <A href="../../LICENSE_1_0.txt"> + LICENSE_1_0.txt</A> or copy at <A href="http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</A>).</P> + </body> +</html> + + diff --git a/libs/config/configure b/libs/config/configure new file mode 100644 index 0000000000..82d3db9669 --- /dev/null +++ b/libs/config/configure @@ -0,0 +1,3894 @@ +#! /bin/sh +# Guess values for system-dependent variables and create Makefiles. +# Generated by GNU Autoconf 2.61. +# +# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, +# 2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc. +# This configure script is free software; the Free Software Foundation +# gives unlimited permission to copy, distribute and modify it. +## --------------------- ## +## M4sh Initialization. ## +## --------------------- ## + +# Be more Bourne compatible +DUALCASE=1; export DUALCASE # for MKS sh +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then + emulate sh + NULLCMD=: + # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' + setopt NO_GLOB_SUBST +else + case `(set -o) 2>/dev/null` in + *posix*) set -o posix ;; +esac + +fi + + + + +# PATH needs CR +# Avoid depending upon Character Ranges. +as_cr_letters='abcdefghijklmnopqrstuvwxyz' +as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' +as_cr_Letters=$as_cr_letters$as_cr_LETTERS +as_cr_digits='0123456789' +as_cr_alnum=$as_cr_Letters$as_cr_digits + +# The user is always right. +if test "${PATH_SEPARATOR+set}" != set; then + echo "#! /bin/sh" >conf$$.sh + echo "exit 0" >>conf$$.sh + chmod +x conf$$.sh + if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then + PATH_SEPARATOR=';' + else + PATH_SEPARATOR=: + fi + rm -f conf$$.sh +fi + +# Support unset when possible. +if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then + as_unset=unset +else + as_unset=false +fi + + +# IFS +# We need space, tab and new line, in precisely that order. Quoting is +# there to prevent editors from complaining about space-tab. +# (If _AS_PATH_WALK were called with IFS unset, it would disable word +# splitting by setting IFS to empty value.) +as_nl=' +' +IFS=" "" $as_nl" + +# Find who we are. Look in the path if we contain no directory separator. +case $0 in + *[\\/]* ) as_myself=$0 ;; + *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break +done +IFS=$as_save_IFS + + ;; +esac +# We did not find ourselves, most probably we were run as `sh COMMAND' +# in which case we are not to be found in the path. +if test "x$as_myself" = x; then + as_myself=$0 +fi +if test ! -f "$as_myself"; then + echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 + { (exit 1); exit 1; } +fi + +# Work around bugs in pre-3.0 UWIN ksh. +for as_var in ENV MAIL MAILPATH +do ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var +done +PS1='$ ' +PS2='> ' +PS4='+ ' + +# NLS nuisances. +for as_var in \ + LANG LANGUAGE LC_ADDRESS LC_ALL LC_COLLATE LC_CTYPE LC_IDENTIFICATION \ + LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER \ + LC_TELEPHONE LC_TIME +do + if (set +x; test -z "`(eval $as_var=C; export $as_var) 2>&1`"); then + eval $as_var=C; export $as_var + else + ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var + fi +done + +# Required to use basename. +if expr a : '\(a\)' >/dev/null 2>&1 && + test "X`expr 00001 : '.*\(...\)'`" = X001; then + as_expr=expr +else + as_expr=false +fi + +if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then + as_basename=basename +else + as_basename=false +fi + + +# Name of the executable. +as_me=`$as_basename -- "$0" || +$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ + X"$0" : 'X\(//\)$' \| \ + X"$0" : 'X\(/\)' \| . 2>/dev/null || +echo X/"$0" | + sed '/^.*\/\([^/][^/]*\)\/*$/{ + s//\1/ + q + } + /^X\/\(\/\/\)$/{ + s//\1/ + q + } + /^X\/\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + +# CDPATH. +$as_unset CDPATH + + +if test "x$CONFIG_SHELL" = x; then + if (eval ":") 2>/dev/null; then + as_have_required=yes +else + as_have_required=no +fi + + if test $as_have_required = yes && (eval ": +(as_func_return () { + (exit \$1) +} +as_func_success () { + as_func_return 0 +} +as_func_failure () { + as_func_return 1 +} +as_func_ret_success () { + return 0 +} +as_func_ret_failure () { + return 1 +} + +exitcode=0 +if as_func_success; then + : +else + exitcode=1 + echo as_func_success failed. +fi + +if as_func_failure; then + exitcode=1 + echo as_func_failure succeeded. +fi + +if as_func_ret_success; then + : +else + exitcode=1 + echo as_func_ret_success failed. +fi + +if as_func_ret_failure; then + exitcode=1 + echo as_func_ret_failure succeeded. +fi + +if ( set x; as_func_ret_success y && test x = \"\$1\" ); then + : +else + exitcode=1 + echo positional parameters were not saved. +fi + +test \$exitcode = 0) || { (exit 1); exit 1; } + +( + as_lineno_1=\$LINENO + as_lineno_2=\$LINENO + test \"x\$as_lineno_1\" != \"x\$as_lineno_2\" && + test \"x\`expr \$as_lineno_1 + 1\`\" = \"x\$as_lineno_2\") || { (exit 1); exit 1; } +") 2> /dev/null; then + : +else + as_candidate_shells= + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + case $as_dir in + /*) + for as_base in sh bash ksh sh5; do + as_candidate_shells="$as_candidate_shells $as_dir/$as_base" + done;; + esac +done +IFS=$as_save_IFS + + + for as_shell in $as_candidate_shells $SHELL; do + # Try only shells that exist, to save several forks. + if { test -f "$as_shell" || test -f "$as_shell.exe"; } && + { ("$as_shell") 2> /dev/null <<\_ASEOF +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then + emulate sh + NULLCMD=: + # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' + setopt NO_GLOB_SUBST +else + case `(set -o) 2>/dev/null` in + *posix*) set -o posix ;; +esac + +fi + + +: +_ASEOF +}; then + CONFIG_SHELL=$as_shell + as_have_required=yes + if { "$as_shell" 2> /dev/null <<\_ASEOF +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then + emulate sh + NULLCMD=: + # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' + setopt NO_GLOB_SUBST +else + case `(set -o) 2>/dev/null` in + *posix*) set -o posix ;; +esac + +fi + + +: +(as_func_return () { + (exit $1) +} +as_func_success () { + as_func_return 0 +} +as_func_failure () { + as_func_return 1 +} +as_func_ret_success () { + return 0 +} +as_func_ret_failure () { + return 1 +} + +exitcode=0 +if as_func_success; then + : +else + exitcode=1 + echo as_func_success failed. +fi + +if as_func_failure; then + exitcode=1 + echo as_func_failure succeeded. +fi + +if as_func_ret_success; then + : +else + exitcode=1 + echo as_func_ret_success failed. +fi + +if as_func_ret_failure; then + exitcode=1 + echo as_func_ret_failure succeeded. +fi + +if ( set x; as_func_ret_success y && test x = "$1" ); then + : +else + exitcode=1 + echo positional parameters were not saved. +fi + +test $exitcode = 0) || { (exit 1); exit 1; } + +( + as_lineno_1=$LINENO + as_lineno_2=$LINENO + test "x$as_lineno_1" != "x$as_lineno_2" && + test "x`expr $as_lineno_1 + 1`" = "x$as_lineno_2") || { (exit 1); exit 1; } + +_ASEOF +}; then + break +fi + +fi + + done + + if test "x$CONFIG_SHELL" != x; then + for as_var in BASH_ENV ENV + do ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var + done + export CONFIG_SHELL + exec "$CONFIG_SHELL" "$as_myself" ${1+"$@"} +fi + + + if test $as_have_required = no; then + echo This script requires a shell more modern than all the + echo shells that I found on your system. Please install a + echo modern shell, or manually run the script under such a + echo shell if you do have one. + { (exit 1); exit 1; } +fi + + +fi + +fi + + + +(eval "as_func_return () { + (exit \$1) +} +as_func_success () { + as_func_return 0 +} +as_func_failure () { + as_func_return 1 +} +as_func_ret_success () { + return 0 +} +as_func_ret_failure () { + return 1 +} + +exitcode=0 +if as_func_success; then + : +else + exitcode=1 + echo as_func_success failed. +fi + +if as_func_failure; then + exitcode=1 + echo as_func_failure succeeded. +fi + +if as_func_ret_success; then + : +else + exitcode=1 + echo as_func_ret_success failed. +fi + +if as_func_ret_failure; then + exitcode=1 + echo as_func_ret_failure succeeded. +fi + +if ( set x; as_func_ret_success y && test x = \"\$1\" ); then + : +else + exitcode=1 + echo positional parameters were not saved. +fi + +test \$exitcode = 0") || { + echo No shell found that supports shell functions. + echo Please tell autoconf@gnu.org about your system, + echo including any error possibly output before this + echo message +} + + + + as_lineno_1=$LINENO + as_lineno_2=$LINENO + test "x$as_lineno_1" != "x$as_lineno_2" && + test "x`expr $as_lineno_1 + 1`" = "x$as_lineno_2" || { + + # Create $as_me.lineno as a copy of $as_myself, but with $LINENO + # uniformly replaced by the line number. The first 'sed' inserts a + # line-number line after each line using $LINENO; the second 'sed' + # does the real work. The second script uses 'N' to pair each + # line-number line with the line containing $LINENO, and appends + # trailing '-' during substitution so that $LINENO is not a special + # case at line end. + # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the + # scripts with optimization help from Paolo Bonzini. Blame Lee + # E. McMahon (1931-1989) for sed's syntax. :-) + sed -n ' + p + /[$]LINENO/= + ' <$as_myself | + sed ' + s/[$]LINENO.*/&-/ + t lineno + b + :lineno + N + :loop + s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/ + t loop + s/-\n.*// + ' >$as_me.lineno && + chmod +x "$as_me.lineno" || + { echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2 + { (exit 1); exit 1; }; } + + # Don't try to exec as it changes $[0], causing all sort of problems + # (the dirname of $[0] is not the place where we might find the + # original and so on. Autoconf is especially sensitive to this). + . "./$as_me.lineno" + # Exit status is that of the last command. + exit +} + + +if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then + as_dirname=dirname +else + as_dirname=false +fi + +ECHO_C= ECHO_N= ECHO_T= +case `echo -n x` in +-n*) + case `echo 'x\c'` in + *c*) ECHO_T=' ';; # ECHO_T is single tab character. + *) ECHO_C='\c';; + esac;; +*) + ECHO_N='-n';; +esac + +if expr a : '\(a\)' >/dev/null 2>&1 && + test "X`expr 00001 : '.*\(...\)'`" = X001; then + as_expr=expr +else + as_expr=false +fi + +rm -f conf$$ conf$$.exe conf$$.file +if test -d conf$$.dir; then + rm -f conf$$.dir/conf$$.file +else + rm -f conf$$.dir + mkdir conf$$.dir +fi +echo >conf$$.file +if ln -s conf$$.file conf$$ 2>/dev/null; then + as_ln_s='ln -s' + # ... but there are two gotchas: + # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. + # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. + # In both cases, we have to default to `cp -p'. + ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || + as_ln_s='cp -p' +elif ln conf$$.file conf$$ 2>/dev/null; then + as_ln_s=ln +else + as_ln_s='cp -p' +fi +rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file +rmdir conf$$.dir 2>/dev/null + +if mkdir -p . 2>/dev/null; then + as_mkdir_p=: +else + test -d ./-p && rmdir ./-p + as_mkdir_p=false +fi + +if test -x / >/dev/null 2>&1; then + as_test_x='test -x' +else + if ls -dL / >/dev/null 2>&1; then + as_ls_L_option=L + else + as_ls_L_option= + fi + as_test_x=' + eval sh -c '\'' + if test -d "$1"; then + test -d "$1/."; + else + case $1 in + -*)set "./$1";; + esac; + case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in + ???[sx]*):;;*)false;;esac;fi + '\'' sh + ' +fi +as_executable_p=$as_test_x + +# Sed expression to map a string onto a valid CPP name. +as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" + +# Sed expression to map a string onto a valid variable name. +as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" + + + +exec 7<&0 </dev/null 6>&1 + +# Name of the host. +# hostname on some systems (SVR3.2, Linux) returns a bogus exit status, +# so uname gets run too. +ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q` + +# +# Initializations. +# +ac_default_prefix=/usr/local +ac_clean_files= +ac_config_libobj_dir=. +LIBOBJS= +cross_compiling=no +subdirs= +MFLAGS= +MAKEFLAGS= +SHELL=${CONFIG_SHELL-/bin/sh} + +# Identity of this package. +PACKAGE_NAME= +PACKAGE_TARNAME= +PACKAGE_VERSION= +PACKAGE_STRING= +PACKAGE_BUGREPORT= + +ac_unique_file="./tools/configure.in" +ac_subst_vars='SHELL +PATH_SEPARATOR +PACKAGE_NAME +PACKAGE_TARNAME +PACKAGE_VERSION +PACKAGE_STRING +PACKAGE_BUGREPORT +exec_prefix +prefix +program_transform_name +bindir +sbindir +libexecdir +datarootdir +datadir +sysconfdir +sharedstatedir +localstatedir +includedir +oldincludedir +docdir +infodir +htmldir +dvidir +pdfdir +psdir +libdir +localedir +mandir +DEFS +ECHO_C +ECHO_N +ECHO_T +LIBS +build_alias +host_alias +target_alias +CXX +CXXFLAGS +LDFLAGS +CPPFLAGS +ac_ct_CXX +EXEEXT +OBJEXT +LIBOBJS +LTLIBOBJS' +ac_subst_files='' + ac_precious_vars='build_alias +host_alias +target_alias +CXX +CXXFLAGS +LDFLAGS +LIBS +CPPFLAGS +CCC' + + +# Initialize some variables set by options. +ac_init_help= +ac_init_version=false +# The variables have the same names as the options, with +# dashes changed to underlines. +cache_file=/dev/null +exec_prefix=NONE +no_create= +no_recursion= +prefix=NONE +program_prefix=NONE +program_suffix=NONE +program_transform_name=s,x,x, +silent= +site= +srcdir= +verbose= +x_includes=NONE +x_libraries=NONE + +# Installation directory options. +# These are left unexpanded so users can "make install exec_prefix=/foo" +# and all the variables that are supposed to be based on exec_prefix +# by default will actually change. +# Use braces instead of parens because sh, perl, etc. also accept them. +# (The list follows the same order as the GNU Coding Standards.) +bindir='${exec_prefix}/bin' +sbindir='${exec_prefix}/sbin' +libexecdir='${exec_prefix}/libexec' +datarootdir='${prefix}/share' +datadir='${datarootdir}' +sysconfdir='${prefix}/etc' +sharedstatedir='${prefix}/com' +localstatedir='${prefix}/var' +includedir='${prefix}/include' +oldincludedir='/usr/include' +docdir='${datarootdir}/doc/${PACKAGE}' +infodir='${datarootdir}/info' +htmldir='${docdir}' +dvidir='${docdir}' +pdfdir='${docdir}' +psdir='${docdir}' +libdir='${exec_prefix}/lib' +localedir='${datarootdir}/locale' +mandir='${datarootdir}/man' + +ac_prev= +ac_dashdash= +for ac_option +do + # If the previous option needs an argument, assign it. + if test -n "$ac_prev"; then + eval $ac_prev=\$ac_option + ac_prev= + continue + fi + + case $ac_option in + *=*) ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;; + *) ac_optarg=yes ;; + esac + + # Accept the important Cygnus configure options, so we can diagnose typos. + + case $ac_dashdash$ac_option in + --) + ac_dashdash=yes ;; + + -bindir | --bindir | --bindi | --bind | --bin | --bi) + ac_prev=bindir ;; + -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*) + bindir=$ac_optarg ;; + + -build | --build | --buil | --bui | --bu) + ac_prev=build_alias ;; + -build=* | --build=* | --buil=* | --bui=* | --bu=*) + build_alias=$ac_optarg ;; + + -cache-file | --cache-file | --cache-fil | --cache-fi \ + | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c) + ac_prev=cache_file ;; + -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \ + | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*) + cache_file=$ac_optarg ;; + + --config-cache | -C) + cache_file=config.cache ;; + + -datadir | --datadir | --datadi | --datad) + ac_prev=datadir ;; + -datadir=* | --datadir=* | --datadi=* | --datad=*) + datadir=$ac_optarg ;; + + -datarootdir | --datarootdir | --datarootdi | --datarootd | --dataroot \ + | --dataroo | --dataro | --datar) + ac_prev=datarootdir ;; + -datarootdir=* | --datarootdir=* | --datarootdi=* | --datarootd=* \ + | --dataroot=* | --dataroo=* | --dataro=* | --datar=*) + datarootdir=$ac_optarg ;; + + -disable-* | --disable-*) + ac_feature=`expr "x$ac_option" : 'x-*disable-\(.*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_feature" : ".*[^-._$as_cr_alnum]" >/dev/null && + { echo "$as_me: error: invalid feature name: $ac_feature" >&2 + { (exit 1); exit 1; }; } + ac_feature=`echo $ac_feature | sed 's/[-.]/_/g'` + eval enable_$ac_feature=no ;; + + -docdir | --docdir | --docdi | --doc | --do) + ac_prev=docdir ;; + -docdir=* | --docdir=* | --docdi=* | --doc=* | --do=*) + docdir=$ac_optarg ;; + + -dvidir | --dvidir | --dvidi | --dvid | --dvi | --dv) + ac_prev=dvidir ;; + -dvidir=* | --dvidir=* | --dvidi=* | --dvid=* | --dvi=* | --dv=*) + dvidir=$ac_optarg ;; + + -enable-* | --enable-*) + ac_feature=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_feature" : ".*[^-._$as_cr_alnum]" >/dev/null && + { echo "$as_me: error: invalid feature name: $ac_feature" >&2 + { (exit 1); exit 1; }; } + ac_feature=`echo $ac_feature | sed 's/[-.]/_/g'` + eval enable_$ac_feature=\$ac_optarg ;; + + -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \ + | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \ + | --exec | --exe | --ex) + ac_prev=exec_prefix ;; + -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \ + | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \ + | --exec=* | --exe=* | --ex=*) + exec_prefix=$ac_optarg ;; + + -gas | --gas | --ga | --g) + # Obsolete; use --with-gas. + with_gas=yes ;; + + -help | --help | --hel | --he | -h) + ac_init_help=long ;; + -help=r* | --help=r* | --hel=r* | --he=r* | -hr*) + ac_init_help=recursive ;; + -help=s* | --help=s* | --hel=s* | --he=s* | -hs*) + ac_init_help=short ;; + + -host | --host | --hos | --ho) + ac_prev=host_alias ;; + -host=* | --host=* | --hos=* | --ho=*) + host_alias=$ac_optarg ;; + + -htmldir | --htmldir | --htmldi | --htmld | --html | --htm | --ht) + ac_prev=htmldir ;; + -htmldir=* | --htmldir=* | --htmldi=* | --htmld=* | --html=* | --htm=* \ + | --ht=*) + htmldir=$ac_optarg ;; + + -includedir | --includedir | --includedi | --included | --include \ + | --includ | --inclu | --incl | --inc) + ac_prev=includedir ;; + -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \ + | --includ=* | --inclu=* | --incl=* | --inc=*) + includedir=$ac_optarg ;; + + -infodir | --infodir | --infodi | --infod | --info | --inf) + ac_prev=infodir ;; + -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*) + infodir=$ac_optarg ;; + + -libdir | --libdir | --libdi | --libd) + ac_prev=libdir ;; + -libdir=* | --libdir=* | --libdi=* | --libd=*) + libdir=$ac_optarg ;; + + -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \ + | --libexe | --libex | --libe) + ac_prev=libexecdir ;; + -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \ + | --libexe=* | --libex=* | --libe=*) + libexecdir=$ac_optarg ;; + + -localedir | --localedir | --localedi | --localed | --locale) + ac_prev=localedir ;; + -localedir=* | --localedir=* | --localedi=* | --localed=* | --locale=*) + localedir=$ac_optarg ;; + + -localstatedir | --localstatedir | --localstatedi | --localstated \ + | --localstate | --localstat | --localsta | --localst | --locals) + ac_prev=localstatedir ;; + -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \ + | --localstate=* | --localstat=* | --localsta=* | --localst=* | --locals=*) + localstatedir=$ac_optarg ;; + + -mandir | --mandir | --mandi | --mand | --man | --ma | --m) + ac_prev=mandir ;; + -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*) + mandir=$ac_optarg ;; + + -nfp | --nfp | --nf) + # Obsolete; use --without-fp. + with_fp=no ;; + + -no-create | --no-create | --no-creat | --no-crea | --no-cre \ + | --no-cr | --no-c | -n) + no_create=yes ;; + + -no-recursion | --no-recursion | --no-recursio | --no-recursi \ + | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) + no_recursion=yes ;; + + -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \ + | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \ + | --oldin | --oldi | --old | --ol | --o) + ac_prev=oldincludedir ;; + -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \ + | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \ + | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*) + oldincludedir=$ac_optarg ;; + + -prefix | --prefix | --prefi | --pref | --pre | --pr | --p) + ac_prev=prefix ;; + -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*) + prefix=$ac_optarg ;; + + -program-prefix | --program-prefix | --program-prefi | --program-pref \ + | --program-pre | --program-pr | --program-p) + ac_prev=program_prefix ;; + -program-prefix=* | --program-prefix=* | --program-prefi=* \ + | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*) + program_prefix=$ac_optarg ;; + + -program-suffix | --program-suffix | --program-suffi | --program-suff \ + | --program-suf | --program-su | --program-s) + ac_prev=program_suffix ;; + -program-suffix=* | --program-suffix=* | --program-suffi=* \ + | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*) + program_suffix=$ac_optarg ;; + + -program-transform-name | --program-transform-name \ + | --program-transform-nam | --program-transform-na \ + | --program-transform-n | --program-transform- \ + | --program-transform | --program-transfor \ + | --program-transfo | --program-transf \ + | --program-trans | --program-tran \ + | --progr-tra | --program-tr | --program-t) + ac_prev=program_transform_name ;; + -program-transform-name=* | --program-transform-name=* \ + | --program-transform-nam=* | --program-transform-na=* \ + | --program-transform-n=* | --program-transform-=* \ + | --program-transform=* | --program-transfor=* \ + | --program-transfo=* | --program-transf=* \ + | --program-trans=* | --program-tran=* \ + | --progr-tra=* | --program-tr=* | --program-t=*) + program_transform_name=$ac_optarg ;; + + -pdfdir | --pdfdir | --pdfdi | --pdfd | --pdf | --pd) + ac_prev=pdfdir ;; + -pdfdir=* | --pdfdir=* | --pdfdi=* | --pdfd=* | --pdf=* | --pd=*) + pdfdir=$ac_optarg ;; + + -psdir | --psdir | --psdi | --psd | --ps) + ac_prev=psdir ;; + -psdir=* | --psdir=* | --psdi=* | --psd=* | --ps=*) + psdir=$ac_optarg ;; + + -q | -quiet | --quiet | --quie | --qui | --qu | --q \ + | -silent | --silent | --silen | --sile | --sil) + silent=yes ;; + + -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb) + ac_prev=sbindir ;; + -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \ + | --sbi=* | --sb=*) + sbindir=$ac_optarg ;; + + -sharedstatedir | --sharedstatedir | --sharedstatedi \ + | --sharedstated | --sharedstate | --sharedstat | --sharedsta \ + | --sharedst | --shareds | --shared | --share | --shar \ + | --sha | --sh) + ac_prev=sharedstatedir ;; + -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \ + | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \ + | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \ + | --sha=* | --sh=*) + sharedstatedir=$ac_optarg ;; + + -site | --site | --sit) + ac_prev=site ;; + -site=* | --site=* | --sit=*) + site=$ac_optarg ;; + + -srcdir | --srcdir | --srcdi | --srcd | --src | --sr) + ac_prev=srcdir ;; + -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*) + srcdir=$ac_optarg ;; + + -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \ + | --syscon | --sysco | --sysc | --sys | --sy) + ac_prev=sysconfdir ;; + -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \ + | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*) + sysconfdir=$ac_optarg ;; + + -target | --target | --targe | --targ | --tar | --ta | --t) + ac_prev=target_alias ;; + -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*) + target_alias=$ac_optarg ;; + + -v | -verbose | --verbose | --verbos | --verbo | --verb) + verbose=yes ;; + + -version | --version | --versio | --versi | --vers | -V) + ac_init_version=: ;; + + -with-* | --with-*) + ac_package=`expr "x$ac_option" : 'x-*with-\([^=]*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_package" : ".*[^-._$as_cr_alnum]" >/dev/null && + { echo "$as_me: error: invalid package name: $ac_package" >&2 + { (exit 1); exit 1; }; } + ac_package=`echo $ac_package | sed 's/[-.]/_/g'` + eval with_$ac_package=\$ac_optarg ;; + + -without-* | --without-*) + ac_package=`expr "x$ac_option" : 'x-*without-\(.*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_package" : ".*[^-._$as_cr_alnum]" >/dev/null && + { echo "$as_me: error: invalid package name: $ac_package" >&2 + { (exit 1); exit 1; }; } + ac_package=`echo $ac_package | sed 's/[-.]/_/g'` + eval with_$ac_package=no ;; + + --x) + # Obsolete; use --with-x. + with_x=yes ;; + + -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \ + | --x-incl | --x-inc | --x-in | --x-i) + ac_prev=x_includes ;; + -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \ + | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*) + x_includes=$ac_optarg ;; + + -x-libraries | --x-libraries | --x-librarie | --x-librari \ + | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l) + ac_prev=x_libraries ;; + -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \ + | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*) + x_libraries=$ac_optarg ;; + + -*) { echo "$as_me: error: unrecognized option: $ac_option +Try \`$0 --help' for more information." >&2 + { (exit 1); exit 1; }; } + ;; + + *=*) + ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='` + # Reject names that are not valid shell variable names. + expr "x$ac_envvar" : ".*[^_$as_cr_alnum]" >/dev/null && + { echo "$as_me: error: invalid variable name: $ac_envvar" >&2 + { (exit 1); exit 1; }; } + eval $ac_envvar=\$ac_optarg + export $ac_envvar ;; + + *) + # FIXME: should be removed in autoconf 3.0. + echo "$as_me: WARNING: you should use --build, --host, --target" >&2 + expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null && + echo "$as_me: WARNING: invalid host type: $ac_option" >&2 + : ${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option} + ;; + + esac +done + +if test -n "$ac_prev"; then + ac_option=--`echo $ac_prev | sed 's/_/-/g'` + { echo "$as_me: error: missing argument to $ac_option" >&2 + { (exit 1); exit 1; }; } +fi + +# Be sure to have absolute directory names. +for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \ + datadir sysconfdir sharedstatedir localstatedir includedir \ + oldincludedir docdir infodir htmldir dvidir pdfdir psdir \ + libdir localedir mandir +do + eval ac_val=\$$ac_var + case $ac_val in + [\\/$]* | ?:[\\/]* ) continue;; + NONE | '' ) case $ac_var in *prefix ) continue;; esac;; + esac + { echo "$as_me: error: expected an absolute directory name for --$ac_var: $ac_val" >&2 + { (exit 1); exit 1; }; } +done + +# There might be people who depend on the old broken behavior: `$host' +# used to hold the argument of --host etc. +# FIXME: To remove some day. +build=$build_alias +host=$host_alias +target=$target_alias + +# FIXME: To remove some day. +if test "x$host_alias" != x; then + if test "x$build_alias" = x; then + cross_compiling=maybe + echo "$as_me: WARNING: If you wanted to set the --build type, don't use --host. + If a cross compiler is detected then cross compile mode will be used." >&2 + elif test "x$build_alias" != "x$host_alias"; then + cross_compiling=yes + fi +fi + +ac_tool_prefix= +test -n "$host_alias" && ac_tool_prefix=$host_alias- + +test "$silent" = yes && exec 6>/dev/null + + +ac_pwd=`pwd` && test -n "$ac_pwd" && +ac_ls_di=`ls -di .` && +ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` || + { echo "$as_me: error: Working directory cannot be determined" >&2 + { (exit 1); exit 1; }; } +test "X$ac_ls_di" = "X$ac_pwd_ls_di" || + { echo "$as_me: error: pwd does not report name of working directory" >&2 + { (exit 1); exit 1; }; } + + +# Find the source files, if location was not specified. +if test -z "$srcdir"; then + ac_srcdir_defaulted=yes + # Try the directory containing this script, then the parent directory. + ac_confdir=`$as_dirname -- "$0" || +$as_expr X"$0" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$0" : 'X\(//\)[^/]' \| \ + X"$0" : 'X\(//\)$' \| \ + X"$0" : 'X\(/\)' \| . 2>/dev/null || +echo X"$0" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + srcdir=$ac_confdir + if test ! -r "$srcdir/$ac_unique_file"; then + srcdir=.. + fi +else + ac_srcdir_defaulted=no +fi +if test ! -r "$srcdir/$ac_unique_file"; then + test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .." + { echo "$as_me: error: cannot find sources ($ac_unique_file) in $srcdir" >&2 + { (exit 1); exit 1; }; } +fi +ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work" +ac_abs_confdir=`( + cd "$srcdir" && test -r "./$ac_unique_file" || { echo "$as_me: error: $ac_msg" >&2 + { (exit 1); exit 1; }; } + pwd)` +# When building in place, set srcdir=. +if test "$ac_abs_confdir" = "$ac_pwd"; then + srcdir=. +fi +# Remove unnecessary trailing slashes from srcdir. +# Double slashes in file names in object file debugging info +# mess up M-x gdb in Emacs. +case $srcdir in +*/) srcdir=`expr "X$srcdir" : 'X\(.*[^/]\)' \| "X$srcdir" : 'X\(.*\)'`;; +esac +for ac_var in $ac_precious_vars; do + eval ac_env_${ac_var}_set=\${${ac_var}+set} + eval ac_env_${ac_var}_value=\$${ac_var} + eval ac_cv_env_${ac_var}_set=\${${ac_var}+set} + eval ac_cv_env_${ac_var}_value=\$${ac_var} +done + +# +# Report the --help message. +# +if test "$ac_init_help" = "long"; then + # Omit some internal or obsolete options to make the list less imposing. + # This message is too long to be a string in the A/UX 3.1 sh. + cat <<_ACEOF +\`configure' configures this package to adapt to many kinds of systems. + +Usage: $0 [OPTION]... [VAR=VALUE]... + +To assign environment variables (e.g., CC, CFLAGS...), specify them as +VAR=VALUE. See below for descriptions of some of the useful variables. + +Defaults for the options are specified in brackets. + +Configuration: + -h, --help display this help and exit + --help=short display options specific to this package + --help=recursive display the short help of all the included packages + -V, --version display version information and exit + -q, --quiet, --silent do not print \`checking...' messages + --cache-file=FILE cache test results in FILE [disabled] + -C, --config-cache alias for \`--cache-file=config.cache' + -n, --no-create do not create output files + --srcdir=DIR find the sources in DIR [configure dir or \`..'] + +Installation directories: + --prefix=PREFIX install architecture-independent files in PREFIX + [$ac_default_prefix] + --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX + [PREFIX] + +By default, \`make install' will install all the files in +\`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc. You can specify +an installation prefix other than \`$ac_default_prefix' using \`--prefix', +for instance \`--prefix=\$HOME'. + +For better control, use the options below. + +Fine tuning of the installation directories: + --bindir=DIR user executables [EPREFIX/bin] + --sbindir=DIR system admin executables [EPREFIX/sbin] + --libexecdir=DIR program executables [EPREFIX/libexec] + --sysconfdir=DIR read-only single-machine data [PREFIX/etc] + --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] + --localstatedir=DIR modifiable single-machine data [PREFIX/var] + --libdir=DIR object code libraries [EPREFIX/lib] + --includedir=DIR C header files [PREFIX/include] + --oldincludedir=DIR C header files for non-gcc [/usr/include] + --datarootdir=DIR read-only arch.-independent data root [PREFIX/share] + --datadir=DIR read-only architecture-independent data [DATAROOTDIR] + --infodir=DIR info documentation [DATAROOTDIR/info] + --localedir=DIR locale-dependent data [DATAROOTDIR/locale] + --mandir=DIR man documentation [DATAROOTDIR/man] + --docdir=DIR documentation root [DATAROOTDIR/doc/PACKAGE] + --htmldir=DIR html documentation [DOCDIR] + --dvidir=DIR dvi documentation [DOCDIR] + --pdfdir=DIR pdf documentation [DOCDIR] + --psdir=DIR ps documentation [DOCDIR] +_ACEOF + + cat <<\_ACEOF +_ACEOF +fi + +if test -n "$ac_init_help"; then + + cat <<\_ACEOF + +Optional Features: + --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) + --enable-FEATURE[=ARG] include FEATURE [ARG=yes] +--enable-test tests current settings rather than defining new ones +--enable-extension=<ext> + +Optional Packages: + --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] + --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no) + --with-boost=DIR path to the boost main tree + +Some influential environment variables: + CXX C++ compiler command + CXXFLAGS C++ compiler flags + LDFLAGS linker flags, e.g. -L<lib dir> if you have libraries in a + nonstandard directory <lib dir> + LIBS libraries to pass to the linker, e.g. -l<library> + CPPFLAGS C/C++/Objective C preprocessor flags, e.g. -I<include dir> if + you have headers in a nonstandard directory <include dir> + +Use these variables to override the choices made by `configure' or to help +it to find libraries and programs with nonstandard names/locations. + +_ACEOF +ac_status=$? +fi + +if test "$ac_init_help" = "recursive"; then + # If there are subdirs, report their specific --help. + for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue + test -d "$ac_dir" || continue + ac_builddir=. + +case "$ac_dir" in +.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; +*) + ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'` + # A ".." for each directory in $ac_dir_suffix. + ac_top_builddir_sub=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,/..,g;s,/,,'` + case $ac_top_builddir_sub in + "") ac_top_builddir_sub=. ac_top_build_prefix= ;; + *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; + esac ;; +esac +ac_abs_top_builddir=$ac_pwd +ac_abs_builddir=$ac_pwd$ac_dir_suffix +# for backward compatibility: +ac_top_builddir=$ac_top_build_prefix + +case $srcdir in + .) # We are building in place. + ac_srcdir=. + ac_top_srcdir=$ac_top_builddir_sub + ac_abs_top_srcdir=$ac_pwd ;; + [\\/]* | ?:[\\/]* ) # Absolute name. + ac_srcdir=$srcdir$ac_dir_suffix; + ac_top_srcdir=$srcdir + ac_abs_top_srcdir=$srcdir ;; + *) # Relative name. + ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix + ac_top_srcdir=$ac_top_build_prefix$srcdir + ac_abs_top_srcdir=$ac_pwd/$srcdir ;; +esac +ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix + + cd "$ac_dir" || { ac_status=$?; continue; } + # Check for guested configure. + if test -f "$ac_srcdir/configure.gnu"; then + echo && + $SHELL "$ac_srcdir/configure.gnu" --help=recursive + elif test -f "$ac_srcdir/configure"; then + echo && + $SHELL "$ac_srcdir/configure" --help=recursive + else + echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2 + fi || ac_status=$? + cd "$ac_pwd" || { ac_status=$?; break; } + done +fi + +test -n "$ac_init_help" && exit $ac_status +if $ac_init_version; then + cat <<\_ACEOF +configure +generated by GNU Autoconf 2.61 + +Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, +2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc. +This configure script is free software; the Free Software Foundation +gives unlimited permission to copy, distribute and modify it. +_ACEOF + exit +fi +cat >config.log <<_ACEOF +This file contains any messages produced by compilers while +running configure, to aid debugging if configure makes a mistake. + +It was created by $as_me, which was +generated by GNU Autoconf 2.61. Invocation command line was + + $ $0 $@ + +_ACEOF +exec 5>>config.log +{ +cat <<_ASUNAME +## --------- ## +## Platform. ## +## --------- ## + +hostname = `(hostname || uname -n) 2>/dev/null | sed 1q` +uname -m = `(uname -m) 2>/dev/null || echo unknown` +uname -r = `(uname -r) 2>/dev/null || echo unknown` +uname -s = `(uname -s) 2>/dev/null || echo unknown` +uname -v = `(uname -v) 2>/dev/null || echo unknown` + +/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown` +/bin/uname -X = `(/bin/uname -X) 2>/dev/null || echo unknown` + +/bin/arch = `(/bin/arch) 2>/dev/null || echo unknown` +/usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null || echo unknown` +/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown` +/usr/bin/hostinfo = `(/usr/bin/hostinfo) 2>/dev/null || echo unknown` +/bin/machine = `(/bin/machine) 2>/dev/null || echo unknown` +/usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null || echo unknown` +/bin/universe = `(/bin/universe) 2>/dev/null || echo unknown` + +_ASUNAME + +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + echo "PATH: $as_dir" +done +IFS=$as_save_IFS + +} >&5 + +cat >&5 <<_ACEOF + + +## ----------- ## +## Core tests. ## +## ----------- ## + +_ACEOF + + +# Keep a trace of the command line. +# Strip out --no-create and --no-recursion so they do not pile up. +# Strip out --silent because we don't want to record it for future runs. +# Also quote any args containing shell meta-characters. +# Make two passes to allow for proper duplicate-argument suppression. +ac_configure_args= +ac_configure_args0= +ac_configure_args1= +ac_must_keep_next=false +for ac_pass in 1 2 +do + for ac_arg + do + case $ac_arg in + -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;; + -q | -quiet | --quiet | --quie | --qui | --qu | --q \ + | -silent | --silent | --silen | --sile | --sil) + continue ;; + *\'*) + ac_arg=`echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; + esac + case $ac_pass in + 1) ac_configure_args0="$ac_configure_args0 '$ac_arg'" ;; + 2) + ac_configure_args1="$ac_configure_args1 '$ac_arg'" + if test $ac_must_keep_next = true; then + ac_must_keep_next=false # Got value, back to normal. + else + case $ac_arg in + *=* | --config-cache | -C | -disable-* | --disable-* \ + | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \ + | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \ + | -with-* | --with-* | -without-* | --without-* | --x) + case "$ac_configure_args0 " in + "$ac_configure_args1"*" '$ac_arg' "* ) continue ;; + esac + ;; + -* ) ac_must_keep_next=true ;; + esac + fi + ac_configure_args="$ac_configure_args '$ac_arg'" + ;; + esac + done +done +$as_unset ac_configure_args0 || test "${ac_configure_args0+set}" != set || { ac_configure_args0=; export ac_configure_args0; } +$as_unset ac_configure_args1 || test "${ac_configure_args1+set}" != set || { ac_configure_args1=; export ac_configure_args1; } + +# When interrupted or exit'd, cleanup temporary files, and complete +# config.log. We remove comments because anyway the quotes in there +# would cause problems or look ugly. +# WARNING: Use '\'' to represent an apostrophe within the trap. +# WARNING: Do not start the trap code with a newline, due to a FreeBSD 4.0 bug. +trap 'exit_status=$? + # Save into config.log some information that might help in debugging. + { + echo + + cat <<\_ASBOX +## ---------------- ## +## Cache variables. ## +## ---------------- ## +_ASBOX + echo + # The following way of writing the cache mishandles newlines in values, +( + for ac_var in `(set) 2>&1 | sed -n '\''s/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'\''`; do + eval ac_val=\$$ac_var + case $ac_val in #( + *${as_nl}*) + case $ac_var in #( + *_cv_*) { echo "$as_me:$LINENO: WARNING: Cache variable $ac_var contains a newline." >&5 +echo "$as_me: WARNING: Cache variable $ac_var contains a newline." >&2;} ;; + esac + case $ac_var in #( + _ | IFS | as_nl) ;; #( + *) $as_unset $ac_var ;; + esac ;; + esac + done + (set) 2>&1 | + case $as_nl`(ac_space='\'' '\''; set) 2>&1` in #( + *${as_nl}ac_space=\ *) + sed -n \ + "s/'\''/'\''\\\\'\'''\''/g; + s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\''\\2'\''/p" + ;; #( + *) + sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" + ;; + esac | + sort +) + echo + + cat <<\_ASBOX +## ----------------- ## +## Output variables. ## +## ----------------- ## +_ASBOX + echo + for ac_var in $ac_subst_vars + do + eval ac_val=\$$ac_var + case $ac_val in + *\'\''*) ac_val=`echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; + esac + echo "$ac_var='\''$ac_val'\''" + done | sort + echo + + if test -n "$ac_subst_files"; then + cat <<\_ASBOX +## ------------------- ## +## File substitutions. ## +## ------------------- ## +_ASBOX + echo + for ac_var in $ac_subst_files + do + eval ac_val=\$$ac_var + case $ac_val in + *\'\''*) ac_val=`echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; + esac + echo "$ac_var='\''$ac_val'\''" + done | sort + echo + fi + + if test -s confdefs.h; then + cat <<\_ASBOX +## ----------- ## +## confdefs.h. ## +## ----------- ## +_ASBOX + echo + cat confdefs.h + echo + fi + test "$ac_signal" != 0 && + echo "$as_me: caught signal $ac_signal" + echo "$as_me: exit $exit_status" + } >&5 + rm -f core *.core core.conftest.* && + rm -f -r conftest* confdefs* conf$$* $ac_clean_files && + exit $exit_status +' 0 +for ac_signal in 1 2 13 15; do + trap 'ac_signal='$ac_signal'; { (exit 1); exit 1; }' $ac_signal +done +ac_signal=0 + +# confdefs.h avoids OS command line length limits that DEFS can exceed. +rm -f -r conftest* confdefs.h + +# Predefined preprocessor variables. + +cat >>confdefs.h <<_ACEOF +#define PACKAGE_NAME "$PACKAGE_NAME" +_ACEOF + + +cat >>confdefs.h <<_ACEOF +#define PACKAGE_TARNAME "$PACKAGE_TARNAME" +_ACEOF + + +cat >>confdefs.h <<_ACEOF +#define PACKAGE_VERSION "$PACKAGE_VERSION" +_ACEOF + + +cat >>confdefs.h <<_ACEOF +#define PACKAGE_STRING "$PACKAGE_STRING" +_ACEOF + + +cat >>confdefs.h <<_ACEOF +#define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT" +_ACEOF + + +# Let the site file select an alternate cache file if it wants to. +# Prefer explicitly selected file to automatically selected ones. +if test -n "$CONFIG_SITE"; then + set x "$CONFIG_SITE" +elif test "x$prefix" != xNONE; then + set x "$prefix/share/config.site" "$prefix/etc/config.site" +else + set x "$ac_default_prefix/share/config.site" \ + "$ac_default_prefix/etc/config.site" +fi +shift +for ac_site_file +do + if test -r "$ac_site_file"; then + { echo "$as_me:$LINENO: loading site script $ac_site_file" >&5 +echo "$as_me: loading site script $ac_site_file" >&6;} + sed 's/^/| /' "$ac_site_file" >&5 + . "$ac_site_file" + fi +done + + +# Check that the precious variables saved in the cache have kept the same +# value. +ac_cache_corrupted=false +for ac_var in $ac_precious_vars; do + eval ac_old_set=\$ac_cv_env_${ac_var}_set + eval ac_new_set=\$ac_env_${ac_var}_set + eval ac_old_val=\$ac_cv_env_${ac_var}_value + eval ac_new_val=\$ac_env_${ac_var}_value + case $ac_old_set,$ac_new_set in + set,) + { echo "$as_me:$LINENO: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5 +echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;} + ac_cache_corrupted=: ;; + ,set) + { echo "$as_me:$LINENO: error: \`$ac_var' was not set in the previous run" >&5 +echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;} + ac_cache_corrupted=: ;; + ,);; + *) + if test "x$ac_old_val" != "x$ac_new_val"; then + { echo "$as_me:$LINENO: error: \`$ac_var' has changed since the previous run:" >&5 +echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;} + { echo "$as_me:$LINENO: former value: $ac_old_val" >&5 +echo "$as_me: former value: $ac_old_val" >&2;} + { echo "$as_me:$LINENO: current value: $ac_new_val" >&5 +echo "$as_me: current value: $ac_new_val" >&2;} + ac_cache_corrupted=: + fi;; + esac + # Pass precious variables to config.status. + if test "$ac_new_set" = set; then + case $ac_new_val in + *\'*) ac_arg=$ac_var=`echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;; + *) ac_arg=$ac_var=$ac_new_val ;; + esac + case " $ac_configure_args " in + *" '$ac_arg' "*) ;; # Avoid dups. Use of quotes ensures accuracy. + *) ac_configure_args="$ac_configure_args '$ac_arg'" ;; + esac + fi +done +if $ac_cache_corrupted; then + { echo "$as_me:$LINENO: error: changes in the environment can compromise the build" >&5 +echo "$as_me: error: changes in the environment can compromise the build" >&2;} + { { echo "$as_me:$LINENO: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&5 +echo "$as_me: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&2;} + { (exit 1); exit 1; }; } +fi + + + + + + + + + + + + + + + + + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + + + +# Check whether --enable-test was given. +if test "${enable_test+set}" = set; then + enableval=$enable_test; +fi + + +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 + +# Check whether --enable-extension was given. +if test "${enable_extension+set}" = set; then + enableval=$enable_extension; +case "$enableval" in + no) { echo "$as_me:$LINENO: result: Info :.cpp used as extension for tests" >&5 +echo "${ECHO_T}Info :.cpp used as extension for tests" >&6; } + ac_ext=cpp + ;; + *) { echo "$as_me:$LINENO: result: Argument : .$enableval used as extension" >&5 +echo "${ECHO_T}Argument : .$enableval used as extension" >&6; } + ac_ext=$enableval +esac + +else + { echo "$as_me:$LINENO: result: Info : .cpp used as extension for tests" >&5 +echo "${ECHO_T}Info : .cpp used as extension for tests" >&6; } + ac_ext=cpp + + +fi + + + +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 + +{ echo "$as_me:$LINENO: checking for boost main tree" >&5 +echo $ECHO_N "checking for boost main tree... $ECHO_C" >&6; } +boost_base= + +# Check whether --with-boost was given. +if test "${with_boost+set}" = set; then + withval=$with_boost; + #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 + + +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 + { echo "$as_me:$LINENO: result: $boost_base" >&5 +echo "${ECHO_T}$boost_base" >&6; } +else + { echo "$as_me:$LINENO: result: not found" >&5 +echo "${ECHO_T}not found" >&6; } + { { echo "$as_me:$LINENO: error: The boost main tree was not found. + Specify its location by the --with-boost option." >&5 +echo "$as_me: error: The boost main tree was not found. + Specify its location by the --with-boost option." >&2;} + { (exit 1); exit 1; }; } +fi + + + +# Save that, as it is being redefined several times +use_ac_ext=$ac_ext + +ac_ext=cpp +ac_cpp='$CXXCPP $CPPFLAGS' +ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_cxx_compiler_gnu +if test -z "$CXX"; then + if test -n "$CCC"; then + CXX=$CCC + else + if test -n "$ac_tool_prefix"; then + for ac_prog in g++ c++ gpp aCC CC cxx cc++ cl.exe FCC KCC RCC xlC_r xlC + do + # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. +set dummy $ac_tool_prefix$ac_prog; ac_word=$2 +{ echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } +if test "${ac_cv_prog_CXX+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$CXX"; then + ac_cv_prog_CXX="$CXX" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_CXX="$ac_tool_prefix$ac_prog" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done +IFS=$as_save_IFS + +fi +fi +CXX=$ac_cv_prog_CXX +if test -n "$CXX"; then + { echo "$as_me:$LINENO: result: $CXX" >&5 +echo "${ECHO_T}$CXX" >&6; } +else + { echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6; } +fi + + + test -n "$CXX" && break + done +fi +if test -z "$CXX"; then + ac_ct_CXX=$CXX + for ac_prog in g++ c++ gpp aCC CC cxx cc++ cl.exe FCC KCC RCC xlC_r xlC +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } +if test "${ac_cv_prog_ac_ct_CXX+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$ac_ct_CXX"; then + ac_cv_prog_ac_ct_CXX="$ac_ct_CXX" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_ac_ct_CXX="$ac_prog" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done +IFS=$as_save_IFS + +fi +fi +ac_ct_CXX=$ac_cv_prog_ac_ct_CXX +if test -n "$ac_ct_CXX"; then + { echo "$as_me:$LINENO: result: $ac_ct_CXX" >&5 +echo "${ECHO_T}$ac_ct_CXX" >&6; } +else + { echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6; } +fi + + + test -n "$ac_ct_CXX" && break +done + + if test "x$ac_ct_CXX" = x; then + CXX="g++" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools +whose name does not start with the host triplet. If you think this +configuration is useful to you, please write to autoconf@gnu.org." >&5 +echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools +whose name does not start with the host triplet. If you think this +configuration is useful to you, please write to autoconf@gnu.org." >&2;} +ac_tool_warned=yes ;; +esac + CXX=$ac_ct_CXX + fi +fi + + fi +fi +# Provide some information about the compiler. +echo "$as_me:$LINENO: checking for C++ compiler version" >&5 +ac_compiler=`set X $ac_compile; echo $2` +{ (ac_try="$ac_compiler --version >&5" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compiler --version >&5") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } +{ (ac_try="$ac_compiler -v >&5" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compiler -v >&5") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } +{ (ac_try="$ac_compiler -V >&5" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compiler -V >&5") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } + +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +ac_clean_files_save=$ac_clean_files +ac_clean_files="$ac_clean_files a.out a.exe b.out" +# Try to create an executable without -o first, disregard a.out. +# It will help us diagnose broken compilers, and finding out an intuition +# of exeext. +{ echo "$as_me:$LINENO: checking for C++ compiler default output file name" >&5 +echo $ECHO_N "checking for C++ compiler default output file name... $ECHO_C" >&6; } +ac_link_default=`echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'` +# +# List of possible output files, starting from the most likely. +# The algorithm is not robust to junk in `.', hence go to wildcards (a.*) +# only as a last resort. b.out is created by i960 compilers. +ac_files='a_out.exe a.exe conftest.exe a.out conftest a.* conftest.* b.out' +# +# The IRIX 6 linker writes into existing files which may not be +# executable, retaining their permissions. Remove them first so a +# subsequent execution test works. +ac_rmfiles= +for ac_file in $ac_files +do + case $ac_file in + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.o | *.obj ) ;; + * ) ac_rmfiles="$ac_rmfiles $ac_file";; + esac +done +rm -f $ac_rmfiles + +if { (ac_try="$ac_link_default" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link_default") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; then + # Autoconf-2.13 could set the ac_cv_exeext variable to `no'. +# So ignore a value of `no', otherwise this would lead to `EXEEXT = no' +# in a Makefile. We should not override ac_cv_exeext if it was cached, +# so that the user can short-circuit this test for compilers unknown to +# Autoconf. +for ac_file in $ac_files '' +do + test -f "$ac_file" || continue + case $ac_file in + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.o | *.obj ) + ;; + [ab].out ) + # We found the default executable, but exeext='' is most + # certainly right. + break;; + *.* ) + if test "${ac_cv_exeext+set}" = set && test "$ac_cv_exeext" != no; + then :; else + ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` + fi + # We set ac_cv_exeext here because the later test for it is not + # safe: cross compilers may not add the suffix if given an `-o' + # argument, so we may need to know it at that point already. + # Even if this section looks crufty: it has the advantage of + # actually working. + break;; + * ) + break;; + esac +done +test "$ac_cv_exeext" = no && ac_cv_exeext= + +else + ac_file='' +fi + +{ echo "$as_me:$LINENO: result: $ac_file" >&5 +echo "${ECHO_T}$ac_file" >&6; } +if test -z "$ac_file"; then + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +{ { echo "$as_me:$LINENO: error: C++ compiler cannot create executables +See \`config.log' for more details." >&5 +echo "$as_me: error: C++ compiler cannot create executables +See \`config.log' for more details." >&2;} + { (exit 77); exit 77; }; } +fi + +ac_exeext=$ac_cv_exeext + +# Check that the compiler produces executables we can run. If not, either +# the compiler is broken, or we cross compile. +{ echo "$as_me:$LINENO: checking whether the C++ compiler works" >&5 +echo $ECHO_N "checking whether the C++ compiler works... $ECHO_C" >&6; } +# FIXME: These cross compiler hacks should be removed for Autoconf 3.0 +# If not cross compiling, check that we can run a simple program. +if test "$cross_compiling" != yes; then + if { ac_try='./$ac_file' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + cross_compiling=no + else + if test "$cross_compiling" = maybe; then + cross_compiling=yes + else + { { echo "$as_me:$LINENO: error: cannot run C++ compiled programs. +If you meant to cross compile, use \`--host'. +See \`config.log' for more details." >&5 +echo "$as_me: error: cannot run C++ compiled programs. +If you meant to cross compile, use \`--host'. +See \`config.log' for more details." >&2;} + { (exit 1); exit 1; }; } + fi + fi +fi +{ echo "$as_me:$LINENO: result: yes" >&5 +echo "${ECHO_T}yes" >&6; } + +rm -f a.out a.exe conftest$ac_cv_exeext b.out +ac_clean_files=$ac_clean_files_save +# Check that the compiler produces executables we can run. If not, either +# the compiler is broken, or we cross compile. +{ echo "$as_me:$LINENO: checking whether we are cross compiling" >&5 +echo $ECHO_N "checking whether we are cross compiling... $ECHO_C" >&6; } +{ echo "$as_me:$LINENO: result: $cross_compiling" >&5 +echo "${ECHO_T}$cross_compiling" >&6; } + +{ echo "$as_me:$LINENO: checking for suffix of executables" >&5 +echo $ECHO_N "checking for suffix of executables... $ECHO_C" >&6; } +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; then + # If both `conftest.exe' and `conftest' are `present' (well, observable) +# catch `conftest.exe'. For instance with Cygwin, `ls conftest' will +# work properly (i.e., refer to `conftest.exe'), while it won't with +# `rm'. +for ac_file in conftest.exe conftest conftest.*; do + test -f "$ac_file" || continue + case $ac_file in + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.o | *.obj ) ;; + *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` + break;; + * ) break;; + esac +done +else + { { echo "$as_me:$LINENO: error: cannot compute suffix of executables: cannot compile and link +See \`config.log' for more details." >&5 +echo "$as_me: error: cannot compute suffix of executables: cannot compile and link +See \`config.log' for more details." >&2;} + { (exit 1); exit 1; }; } +fi + +rm -f conftest$ac_cv_exeext +{ echo "$as_me:$LINENO: result: $ac_cv_exeext" >&5 +echo "${ECHO_T}$ac_cv_exeext" >&6; } + +rm -f conftest.$ac_ext +EXEEXT=$ac_cv_exeext +ac_exeext=$EXEEXT +{ echo "$as_me:$LINENO: checking for suffix of object files" >&5 +echo $ECHO_N "checking for suffix of object files... $ECHO_C" >&6; } +if test "${ac_cv_objext+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.o conftest.obj +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; then + for ac_file in conftest.o conftest.obj conftest.*; do + test -f "$ac_file" || continue; + case $ac_file in + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf ) ;; + *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'` + break;; + esac +done +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +{ { echo "$as_me:$LINENO: error: cannot compute suffix of object files: cannot compile +See \`config.log' for more details." >&5 +echo "$as_me: error: cannot compute suffix of object files: cannot compile +See \`config.log' for more details." >&2;} + { (exit 1); exit 1; }; } +fi + +rm -f conftest.$ac_cv_objext conftest.$ac_ext +fi +{ echo "$as_me:$LINENO: result: $ac_cv_objext" >&5 +echo "${ECHO_T}$ac_cv_objext" >&6; } +OBJEXT=$ac_cv_objext +ac_objext=$OBJEXT +{ echo "$as_me:$LINENO: checking whether we are using the GNU C++ compiler" >&5 +echo $ECHO_N "checking whether we are using the GNU C++ compiler... $ECHO_C" >&6; } +if test "${ac_cv_cxx_compiler_gnu+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ +#ifndef __GNUC__ + choke me +#endif + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_cxx_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + ac_compiler_gnu=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_compiler_gnu=no +fi + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +ac_cv_cxx_compiler_gnu=$ac_compiler_gnu + +fi +{ echo "$as_me:$LINENO: result: $ac_cv_cxx_compiler_gnu" >&5 +echo "${ECHO_T}$ac_cv_cxx_compiler_gnu" >&6; } +GXX=`test $ac_compiler_gnu = yes && echo yes` +ac_test_CXXFLAGS=${CXXFLAGS+set} +ac_save_CXXFLAGS=$CXXFLAGS +{ echo "$as_me:$LINENO: checking whether $CXX accepts -g" >&5 +echo $ECHO_N "checking whether $CXX accepts -g... $ECHO_C" >&6; } +if test "${ac_cv_prog_cxx_g+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_save_cxx_werror_flag=$ac_cxx_werror_flag + ac_cxx_werror_flag=yes + ac_cv_prog_cxx_g=no + CXXFLAGS="-g" + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_cxx_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + ac_cv_prog_cxx_g=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + CXXFLAGS="" + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_cxx_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + : +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_cxx_werror_flag=$ac_save_cxx_werror_flag + CXXFLAGS="-g" + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_cxx_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + ac_cv_prog_cxx_g=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + +fi + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + ac_cxx_werror_flag=$ac_save_cxx_werror_flag +fi +{ echo "$as_me:$LINENO: result: $ac_cv_prog_cxx_g" >&5 +echo "${ECHO_T}$ac_cv_prog_cxx_g" >&6; } +if test "$ac_test_CXXFLAGS" = set; then + CXXFLAGS=$ac_save_CXXFLAGS +elif test $ac_cv_prog_cxx_g = yes; then + if test "$GXX" = yes; then + CXXFLAGS="-g -O2" + else + CXXFLAGS="-g" + fi +else + if test "$GXX" = yes; then + CXXFLAGS="-O2" + else + CXXFLAGS= + fi +fi +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + +ac_ext=$use_ac_ext + +ac_ext=cpp +ac_cpp='$CXXCPP $CPPFLAGS' +ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_cxx_compiler_gnu + + +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 + + + + +{ echo "$as_me:$LINENO: checking for pthread_exit in -lpthread" >&5 +echo $ECHO_N "checking for pthread_exit in -lpthread... $ECHO_C" >&6; } +if test "${ac_cv_lib_pthread_pthread_exit+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lpthread $LIBS" +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char pthread_exit (); +int +main () +{ +return pthread_exit (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_cxx_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && + $as_test_x conftest$ac_exeext; then + ac_cv_lib_pthread_pthread_exit=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_cv_lib_pthread_pthread_exit=no +fi + +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ echo "$as_me:$LINENO: result: $ac_cv_lib_pthread_pthread_exit" >&5 +echo "${ECHO_T}$ac_cv_lib_pthread_pthread_exit" >&6; } +if test $ac_cv_lib_pthread_pthread_exit = yes; then + cat >>confdefs.h <<_ACEOF +#define HAVE_LIBPTHREAD 1 +_ACEOF + + LIBS="-lpthread $LIBS" + +fi + + +{ echo "$as_me:$LINENO: checking for cos in -lm" >&5 +echo $ECHO_N "checking for cos in -lm... $ECHO_C" >&6; } +if test "${ac_cv_lib_m_cos+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lm $LIBS" +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char cos (); +int +main () +{ +return cos (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_cxx_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && + $as_test_x conftest$ac_exeext; then + ac_cv_lib_m_cos=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_cv_lib_m_cos=no +fi + +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ echo "$as_me:$LINENO: result: $ac_cv_lib_m_cos" >&5 +echo "${ECHO_T}$ac_cv_lib_m_cos" >&6; } +if test $ac_cv_lib_m_cos = yes; then + cat >>confdefs.h <<_ACEOF +#define HAVE_LIBM 1 +_ACEOF + + LIBS="-lm $LIBS" + +fi + + +{ echo "$as_me:$LINENO: checking for clock in -lrt" >&5 +echo $ECHO_N "checking for clock in -lrt... $ECHO_C" >&6; } +if test "${ac_cv_lib_rt_clock+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lrt $LIBS" +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char clock (); +int +main () +{ +return clock (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_cxx_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && + $as_test_x conftest$ac_exeext; then + ac_cv_lib_rt_clock=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_cv_lib_rt_clock=no +fi + +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ echo "$as_me:$LINENO: result: $ac_cv_lib_rt_clock" >&5 +echo "${ECHO_T}$ac_cv_lib_rt_clock" >&6; } +if test $ac_cv_lib_rt_clock = yes; then + cat >>confdefs.h <<_ACEOF +#define HAVE_LIBRT 1 +_ACEOF + + LIBS="-lrt $LIBS" + +fi + + +# +# 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 + { echo "$as_me:$LINENO: checking $title (pass expected) " >&5 +echo $ECHO_N "checking $title (pass expected) ... $ECHO_C" >&6; } + else + { echo "$as_me:$LINENO: checking $title " >&5 +echo $ECHO_N "checking $title ... $ECHO_C" >&6; } + fi + if test "$cross_compiling" = yes; then + { { echo "$as_me:$LINENO: error: cannot run test program while cross compiling +See \`config.log' for more details." >&5 +echo "$as_me: error: cannot run test program while cross compiling +See \`config.log' for more details." >&2;} + { (exit 1); exit 1; }; } +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +#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(); } + +_ACEOF +rm -f conftest$ac_exeext +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { ac_try='./conftest$ac_exeext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + { echo "$as_me:$LINENO: result: OK" >&5 +echo "${ECHO_T}OK" >&6; } + +else + echo "$as_me: program exited with status $ac_status" >&5 +echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +( exit $ac_status ) +{ echo "$as_me:$LINENO: result: Failed" >&5 +echo "${ECHO_T}Failed" >&6; } + required_defs="$macroname $required_defs" + +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +fi + + + + if test $enable_test = 'yes'; then + + ac_ext=$use_ac_ext + { echo "$as_me:$LINENO: checking $title (fail expected) " >&5 +echo $ECHO_N "checking $title (fail expected) ... $ECHO_C" >&6; } + if test "$cross_compiling" = yes; then + { { echo "$as_me:$LINENO: error: cannot run test program while cross compiling +See \`config.log' for more details." >&5 +echo "$as_me: error: cannot run test program while cross compiling +See \`config.log' for more details." >&2;} + { (exit 1); exit 1; }; } +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +#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(); } + +_ACEOF +rm -f conftest$ac_exeext +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { ac_try='./conftest$ac_exeext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + { echo "$as_me:$LINENO: result: failed" >&5 +echo "${ECHO_T}failed" >&6; } + required_undefs="$macroname $required_undefs" + +else + echo "$as_me: program exited with status $ac_status" >&5 +echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +( exit $ac_status ) +{ echo "$as_me:$LINENO: result: OK" >&5 +echo "${ECHO_T}OK" >&6; } + +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +fi + + + + 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 + { echo "$as_me:$LINENO: checking $title (pass expected) " >&5 +echo $ECHO_N "checking $title (pass expected) ... $ECHO_C" >&6; } + if test "$cross_compiling" = yes; then + { { echo "$as_me:$LINENO: error: cannot run test program while cross compiling +See \`config.log' for more details." >&5 +echo "$as_me: error: cannot run test program while cross compiling +See \`config.log' for more details." >&2;} + { (exit 1); exit 1; }; } +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +#include <boost/config.hpp> +#include "test.hpp" + +#ifdef $macroname +#include "boost_$basename.ipp" +#else +namespace ${namespace} = empty_boost; +#endif + +int main(){ return ${namespace}::test(); } + +_ACEOF +rm -f conftest$ac_exeext +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { ac_try='./conftest$ac_exeext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + { echo "$as_me:$LINENO: result: OK" >&5 +echo "${ECHO_T}OK" >&6; } + +else + echo "$as_me: program exited with status $ac_status" >&5 +echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +( exit $ac_status ) +{ echo "$as_me:$LINENO: result: Failed" >&5 +echo "${ECHO_T}Failed" >&6; } + required_undefs="$macroname $required_undefs" + +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +fi + + + + { echo "$as_me:$LINENO: checking $title (fail expected) " >&5 +echo $ECHO_N "checking $title (fail expected) ... $ECHO_C" >&6; } + if test "$cross_compiling" = yes; then + { { echo "$as_me:$LINENO: error: cannot run test program while cross compiling +See \`config.log' for more details." >&5 +echo "$as_me: error: cannot run test program while cross compiling +See \`config.log' for more details." >&2;} + { (exit 1); exit 1; }; } +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +#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(); } + +_ACEOF +rm -f conftest$ac_exeext +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { ac_try='./conftest$ac_exeext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + + { echo "$as_me:$LINENO: result: failed" >&5 +echo "${ECHO_T}failed" >&6; } + required_defs="$macroname $required_defs" + + +else + echo "$as_me: program exited with status $ac_status" >&5 +echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +( exit $ac_status ) + + { echo "$as_me:$LINENO: result: OK" >&5 +echo "${ECHO_T}OK" >&6; } + + +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +fi + + + + else + + ac_ext=$use_ac_ext + { echo "$as_me:$LINENO: checking $title" >&5 +echo $ECHO_N "checking $title... $ECHO_C" >&6; } + if test "$cross_compiling" = yes; then + { { echo "$as_me:$LINENO: error: cannot run test program while cross compiling +See \`config.log' for more details." >&5 +echo "$as_me: error: cannot run test program while cross compiling +See \`config.log' for more details." >&2;} + { (exit 1); exit 1; }; } +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +#include <boost/config.hpp> +#include "test.hpp" + +#include "boost_$basename.ipp" + +int main(){ return ${namespace}::test(); } + +_ACEOF +rm -f conftest$ac_exeext +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { ac_try='./conftest$ac_exeext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + + { echo "$as_me:$LINENO: result: Yes" >&5 +echo "${ECHO_T}Yes" >&6; } + required_defs="$macroname $required_defs" + + +else + echo "$as_me: program exited with status $ac_status" >&5 +echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +( exit $ac_status ) + + { echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6; } + + +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +fi + + + + 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: +# +{ echo "$as_me:$LINENO: checking original configuration " >&5 +echo $ECHO_N "checking original configuration ... $ECHO_C" >&6; } +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 +{ echo "$as_me:$LINENO: result: done" >&5 +echo "${ECHO_T}done" >&6; } +{ echo "$as_me:$LINENO: checking new configuration " >&5 +echo $ECHO_N "checking new configuration ... $ECHO_C" >&6; } +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 +{ echo "$as_me:$LINENO: result: done" >&5 +echo "${ECHO_T}done" >&6; } + +ac_config_commands="$ac_config_commands default" + + + +test "x$prefix" = xNONE && prefix=$ac_default_prefix +# Let make expand exec_prefix. +test "x$exec_prefix" = xNONE && exec_prefix='${prefix}' + +# Transform confdefs.h into DEFS. +# Protect against shell expansion while executing Makefile rules. +# Protect against Makefile macro expansion. +# +# If the first sed substitution is executed (which looks for macros that +# take arguments), then branch to the quote section. Otherwise, +# look for a macro that doesn't take arguments. +ac_script=' +t clear +:clear +s/^[ ]*#[ ]*define[ ][ ]*\([^ (][^ (]*([^)]*)\)[ ]*\(.*\)/-D\1=\2/g +t quote +s/^[ ]*#[ ]*define[ ][ ]*\([^ ][^ ]*\)[ ]*\(.*\)/-D\1=\2/g +t quote +b any +:quote +s/[ `~#$^&*(){}\\|;'\''"<>?]/\\&/g +s/\[/\\&/g +s/\]/\\&/g +s/\$/$$/g +H +:any +${ + g + s/^\n// + s/\n/ /g + p +} +' +DEFS=`sed -n "$ac_script" confdefs.h` + + +ac_libobjs= +ac_ltlibobjs= +for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue + # 1. Remove the extension, and $U if already installed. + ac_script='s/\$U\././;s/\.o$//;s/\.obj$//' + ac_i=`echo "$ac_i" | sed "$ac_script"` + # 2. Prepend LIBOBJDIR. When used with automake>=1.10 LIBOBJDIR + # will be set to the directory where LIBOBJS objects are built. + ac_libobjs="$ac_libobjs \${LIBOBJDIR}$ac_i\$U.$ac_objext" + ac_ltlibobjs="$ac_ltlibobjs \${LIBOBJDIR}$ac_i"'$U.lo' +done +LIBOBJS=$ac_libobjs + +LTLIBOBJS=$ac_ltlibobjs + + + +: ${CONFIG_STATUS=./config.status} +ac_clean_files_save=$ac_clean_files +ac_clean_files="$ac_clean_files $CONFIG_STATUS" +{ echo "$as_me:$LINENO: creating $CONFIG_STATUS" >&5 +echo "$as_me: creating $CONFIG_STATUS" >&6;} +cat >$CONFIG_STATUS <<_ACEOF +#! $SHELL +# Generated by $as_me. +# Run this file to recreate the current configuration. +# Compiler output produced by configure, useful for debugging +# configure, is in config.log if it exists. + +debug=false +ac_cs_recheck=false +ac_cs_silent=false +SHELL=\${CONFIG_SHELL-$SHELL} +_ACEOF + +cat >>$CONFIG_STATUS <<\_ACEOF +## --------------------- ## +## M4sh Initialization. ## +## --------------------- ## + +# Be more Bourne compatible +DUALCASE=1; export DUALCASE # for MKS sh +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then + emulate sh + NULLCMD=: + # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' + setopt NO_GLOB_SUBST +else + case `(set -o) 2>/dev/null` in + *posix*) set -o posix ;; +esac + +fi + + + + +# PATH needs CR +# Avoid depending upon Character Ranges. +as_cr_letters='abcdefghijklmnopqrstuvwxyz' +as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' +as_cr_Letters=$as_cr_letters$as_cr_LETTERS +as_cr_digits='0123456789' +as_cr_alnum=$as_cr_Letters$as_cr_digits + +# The user is always right. +if test "${PATH_SEPARATOR+set}" != set; then + echo "#! /bin/sh" >conf$$.sh + echo "exit 0" >>conf$$.sh + chmod +x conf$$.sh + if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then + PATH_SEPARATOR=';' + else + PATH_SEPARATOR=: + fi + rm -f conf$$.sh +fi + +# Support unset when possible. +if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then + as_unset=unset +else + as_unset=false +fi + + +# IFS +# We need space, tab and new line, in precisely that order. Quoting is +# there to prevent editors from complaining about space-tab. +# (If _AS_PATH_WALK were called with IFS unset, it would disable word +# splitting by setting IFS to empty value.) +as_nl=' +' +IFS=" "" $as_nl" + +# Find who we are. Look in the path if we contain no directory separator. +case $0 in + *[\\/]* ) as_myself=$0 ;; + *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break +done +IFS=$as_save_IFS + + ;; +esac +# We did not find ourselves, most probably we were run as `sh COMMAND' +# in which case we are not to be found in the path. +if test "x$as_myself" = x; then + as_myself=$0 +fi +if test ! -f "$as_myself"; then + echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 + { (exit 1); exit 1; } +fi + +# Work around bugs in pre-3.0 UWIN ksh. +for as_var in ENV MAIL MAILPATH +do ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var +done +PS1='$ ' +PS2='> ' +PS4='+ ' + +# NLS nuisances. +for as_var in \ + LANG LANGUAGE LC_ADDRESS LC_ALL LC_COLLATE LC_CTYPE LC_IDENTIFICATION \ + LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER \ + LC_TELEPHONE LC_TIME +do + if (set +x; test -z "`(eval $as_var=C; export $as_var) 2>&1`"); then + eval $as_var=C; export $as_var + else + ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var + fi +done + +# Required to use basename. +if expr a : '\(a\)' >/dev/null 2>&1 && + test "X`expr 00001 : '.*\(...\)'`" = X001; then + as_expr=expr +else + as_expr=false +fi + +if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then + as_basename=basename +else + as_basename=false +fi + + +# Name of the executable. +as_me=`$as_basename -- "$0" || +$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ + X"$0" : 'X\(//\)$' \| \ + X"$0" : 'X\(/\)' \| . 2>/dev/null || +echo X/"$0" | + sed '/^.*\/\([^/][^/]*\)\/*$/{ + s//\1/ + q + } + /^X\/\(\/\/\)$/{ + s//\1/ + q + } + /^X\/\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + +# CDPATH. +$as_unset CDPATH + + + + as_lineno_1=$LINENO + as_lineno_2=$LINENO + test "x$as_lineno_1" != "x$as_lineno_2" && + test "x`expr $as_lineno_1 + 1`" = "x$as_lineno_2" || { + + # Create $as_me.lineno as a copy of $as_myself, but with $LINENO + # uniformly replaced by the line number. The first 'sed' inserts a + # line-number line after each line using $LINENO; the second 'sed' + # does the real work. The second script uses 'N' to pair each + # line-number line with the line containing $LINENO, and appends + # trailing '-' during substitution so that $LINENO is not a special + # case at line end. + # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the + # scripts with optimization help from Paolo Bonzini. Blame Lee + # E. McMahon (1931-1989) for sed's syntax. :-) + sed -n ' + p + /[$]LINENO/= + ' <$as_myself | + sed ' + s/[$]LINENO.*/&-/ + t lineno + b + :lineno + N + :loop + s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/ + t loop + s/-\n.*// + ' >$as_me.lineno && + chmod +x "$as_me.lineno" || + { echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2 + { (exit 1); exit 1; }; } + + # Don't try to exec as it changes $[0], causing all sort of problems + # (the dirname of $[0] is not the place where we might find the + # original and so on. Autoconf is especially sensitive to this). + . "./$as_me.lineno" + # Exit status is that of the last command. + exit +} + + +if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then + as_dirname=dirname +else + as_dirname=false +fi + +ECHO_C= ECHO_N= ECHO_T= +case `echo -n x` in +-n*) + case `echo 'x\c'` in + *c*) ECHO_T=' ';; # ECHO_T is single tab character. + *) ECHO_C='\c';; + esac;; +*) + ECHO_N='-n';; +esac + +if expr a : '\(a\)' >/dev/null 2>&1 && + test "X`expr 00001 : '.*\(...\)'`" = X001; then + as_expr=expr +else + as_expr=false +fi + +rm -f conf$$ conf$$.exe conf$$.file +if test -d conf$$.dir; then + rm -f conf$$.dir/conf$$.file +else + rm -f conf$$.dir + mkdir conf$$.dir +fi +echo >conf$$.file +if ln -s conf$$.file conf$$ 2>/dev/null; then + as_ln_s='ln -s' + # ... but there are two gotchas: + # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. + # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. + # In both cases, we have to default to `cp -p'. + ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || + as_ln_s='cp -p' +elif ln conf$$.file conf$$ 2>/dev/null; then + as_ln_s=ln +else + as_ln_s='cp -p' +fi +rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file +rmdir conf$$.dir 2>/dev/null + +if mkdir -p . 2>/dev/null; then + as_mkdir_p=: +else + test -d ./-p && rmdir ./-p + as_mkdir_p=false +fi + +if test -x / >/dev/null 2>&1; then + as_test_x='test -x' +else + if ls -dL / >/dev/null 2>&1; then + as_ls_L_option=L + else + as_ls_L_option= + fi + as_test_x=' + eval sh -c '\'' + if test -d "$1"; then + test -d "$1/."; + else + case $1 in + -*)set "./$1";; + esac; + case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in + ???[sx]*):;;*)false;;esac;fi + '\'' sh + ' +fi +as_executable_p=$as_test_x + +# Sed expression to map a string onto a valid CPP name. +as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" + +# Sed expression to map a string onto a valid variable name. +as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" + + +exec 6>&1 + +# Save the log message, to keep $[0] and so on meaningful, and to +# report actual input values of CONFIG_FILES etc. instead of their +# values after options handling. +ac_log=" +This file was extended by $as_me, which was +generated by GNU Autoconf 2.61. Invocation command line was + + CONFIG_FILES = $CONFIG_FILES + CONFIG_HEADERS = $CONFIG_HEADERS + CONFIG_LINKS = $CONFIG_LINKS + CONFIG_COMMANDS = $CONFIG_COMMANDS + $ $0 $@ + +on `(hostname || uname -n) 2>/dev/null | sed 1q` +" + +_ACEOF + +cat >>$CONFIG_STATUS <<_ACEOF +# Files that config.status was made for. +config_commands="$ac_config_commands" + +_ACEOF + +cat >>$CONFIG_STATUS <<\_ACEOF +ac_cs_usage="\ +\`$as_me' instantiates files from templates according to the +current configuration. + +Usage: $0 [OPTIONS] [FILE]... + + -h, --help print this help, then exit + -V, --version print version number and configuration settings, then exit + -q, --quiet do not print progress messages + -d, --debug don't remove temporary files + --recheck update $as_me by reconfiguring in the same conditions + +Configuration commands: +$config_commands + +Report bugs to <bug-autoconf@gnu.org>." + +_ACEOF +cat >>$CONFIG_STATUS <<_ACEOF +ac_cs_version="\\ +config.status +configured by $0, generated by GNU Autoconf 2.61, + with options \\"`echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`\\" + +Copyright (C) 2006 Free Software Foundation, Inc. +This config.status script is free software; the Free Software Foundation +gives unlimited permission to copy, distribute and modify it." + +ac_pwd='$ac_pwd' +srcdir='$srcdir' +_ACEOF + +cat >>$CONFIG_STATUS <<\_ACEOF +# If no file are specified by the user, then we need to provide default +# value. By we need to know if files were specified by the user. +ac_need_defaults=: +while test $# != 0 +do + case $1 in + --*=*) + ac_option=`expr "X$1" : 'X\([^=]*\)='` + ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'` + ac_shift=: + ;; + *) + ac_option=$1 + ac_optarg=$2 + ac_shift=shift + ;; + esac + + case $ac_option in + # Handling of the options. + -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) + ac_cs_recheck=: ;; + --version | --versio | --versi | --vers | --ver | --ve | --v | -V ) + echo "$ac_cs_version"; exit ;; + --debug | --debu | --deb | --de | --d | -d ) + debug=: ;; + --he | --h | --help | --hel | -h ) + echo "$ac_cs_usage"; exit ;; + -q | -quiet | --quiet | --quie | --qui | --qu | --q \ + | -silent | --silent | --silen | --sile | --sil | --si | --s) + ac_cs_silent=: ;; + + # This is an error. + -*) { echo "$as_me: error: unrecognized option: $1 +Try \`$0 --help' for more information." >&2 + { (exit 1); exit 1; }; } ;; + + *) ac_config_targets="$ac_config_targets $1" + ac_need_defaults=false ;; + + esac + shift +done + +ac_configure_extra_args= + +if $ac_cs_silent; then + exec 6>/dev/null + ac_configure_extra_args="$ac_configure_extra_args --silent" +fi + +_ACEOF +cat >>$CONFIG_STATUS <<_ACEOF +if \$ac_cs_recheck; then + echo "running CONFIG_SHELL=$SHELL $SHELL $0 "$ac_configure_args \$ac_configure_extra_args " --no-create --no-recursion" >&6 + CONFIG_SHELL=$SHELL + export CONFIG_SHELL + exec $SHELL "$0"$ac_configure_args \$ac_configure_extra_args --no-create --no-recursion +fi + +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF +exec 5>>config.log +{ + echo + sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX +## Running $as_me. ## +_ASBOX + echo "$ac_log" +} >&5 + +_ACEOF +cat >>$CONFIG_STATUS <<_ACEOF +# +# INIT-COMMANDS +# + +cat_conts="$cat_conts" + + + +_ACEOF + +cat >>$CONFIG_STATUS <<\_ACEOF + +# Handling of arguments. +for ac_config_target in $ac_config_targets +do + case $ac_config_target in + "default") CONFIG_COMMANDS="$CONFIG_COMMANDS default" ;; + + *) { { echo "$as_me:$LINENO: error: invalid argument: $ac_config_target" >&5 +echo "$as_me: error: invalid argument: $ac_config_target" >&2;} + { (exit 1); exit 1; }; };; + esac +done + + +# If the user did not use the arguments to specify the items to instantiate, +# then the envvar interface is used. Set only those that are not. +# We use the long form for the default assignment because of an extremely +# bizarre bug on SunOS 4.1.3. +if $ac_need_defaults; then + test "${CONFIG_COMMANDS+set}" = set || CONFIG_COMMANDS=$config_commands +fi + +# Have a temporary directory for convenience. Make it in the build tree +# simply because there is no reason against having it here, and in addition, +# creating and moving files from /tmp can sometimes cause problems. +# Hook for its removal unless debugging. +# Note that there is a small window in which the directory will not be cleaned: +# after its creation but before its name has been assigned to `$tmp'. +$debug || +{ + tmp= + trap 'exit_status=$? + { test -z "$tmp" || test ! -d "$tmp" || rm -fr "$tmp"; } && exit $exit_status +' 0 + trap '{ (exit 1); exit 1; }' 1 2 13 15 +} +# Create a (secure) tmp directory for tmp files. + +{ + tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` && + test -n "$tmp" && test -d "$tmp" +} || +{ + tmp=./conf$$-$RANDOM + (umask 077 && mkdir "$tmp") +} || +{ + echo "$me: cannot create a temporary directory in ." >&2 + { (exit 1); exit 1; } +} + + +for ac_tag in :C $CONFIG_COMMANDS +do + case $ac_tag in + :[FHLC]) ac_mode=$ac_tag; continue;; + esac + case $ac_mode$ac_tag in + :[FHL]*:*);; + :L* | :C*:*) { { echo "$as_me:$LINENO: error: Invalid tag $ac_tag." >&5 +echo "$as_me: error: Invalid tag $ac_tag." >&2;} + { (exit 1); exit 1; }; };; + :[FH]-) ac_tag=-:-;; + :[FH]*) ac_tag=$ac_tag:$ac_tag.in;; + esac + ac_save_IFS=$IFS + IFS=: + set x $ac_tag + IFS=$ac_save_IFS + shift + ac_file=$1 + shift + + case $ac_mode in + :L) ac_source=$1;; + :[FH]) + ac_file_inputs= + for ac_f + do + case $ac_f in + -) ac_f="$tmp/stdin";; + *) # Look for the file first in the build tree, then in the source tree + # (if the path is not absolute). The absolute path cannot be DOS-style, + # because $ac_f cannot contain `:'. + test -f "$ac_f" || + case $ac_f in + [\\/$]*) false;; + *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";; + esac || + { { echo "$as_me:$LINENO: error: cannot find input file: $ac_f" >&5 +echo "$as_me: error: cannot find input file: $ac_f" >&2;} + { (exit 1); exit 1; }; };; + esac + ac_file_inputs="$ac_file_inputs $ac_f" + done + + # Let's still pretend it is `configure' which instantiates (i.e., don't + # use $as_me), people would be surprised to read: + # /* config.h. Generated by config.status. */ + configure_input="Generated from "`IFS=: + echo $* | sed 's|^[^:]*/||;s|:[^:]*/|, |g'`" by configure." + if test x"$ac_file" != x-; then + configure_input="$ac_file. $configure_input" + { echo "$as_me:$LINENO: creating $ac_file" >&5 +echo "$as_me: creating $ac_file" >&6;} + fi + + case $ac_tag in + *:-:* | *:-) cat >"$tmp/stdin";; + esac + ;; + esac + + ac_dir=`$as_dirname -- "$ac_file" || +$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$ac_file" : 'X\(//\)[^/]' \| \ + X"$ac_file" : 'X\(//\)$' \| \ + X"$ac_file" : 'X\(/\)' \| . 2>/dev/null || +echo X"$ac_file" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + { as_dir="$ac_dir" + case $as_dir in #( + -*) as_dir=./$as_dir;; + esac + test -d "$as_dir" || { $as_mkdir_p && mkdir -p "$as_dir"; } || { + as_dirs= + while :; do + case $as_dir in #( + *\'*) as_qdir=`echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #( + *) as_qdir=$as_dir;; + esac + as_dirs="'$as_qdir' $as_dirs" + as_dir=`$as_dirname -- "$as_dir" || +$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$as_dir" : 'X\(//\)[^/]' \| \ + X"$as_dir" : 'X\(//\)$' \| \ + X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || +echo X"$as_dir" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + test -d "$as_dir" && break + done + test -z "$as_dirs" || eval "mkdir $as_dirs" + } || test -d "$as_dir" || { { echo "$as_me:$LINENO: error: cannot create directory $as_dir" >&5 +echo "$as_me: error: cannot create directory $as_dir" >&2;} + { (exit 1); exit 1; }; }; } + ac_builddir=. + +case "$ac_dir" in +.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; +*) + ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'` + # A ".." for each directory in $ac_dir_suffix. + ac_top_builddir_sub=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,/..,g;s,/,,'` + case $ac_top_builddir_sub in + "") ac_top_builddir_sub=. ac_top_build_prefix= ;; + *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; + esac ;; +esac +ac_abs_top_builddir=$ac_pwd +ac_abs_builddir=$ac_pwd$ac_dir_suffix +# for backward compatibility: +ac_top_builddir=$ac_top_build_prefix + +case $srcdir in + .) # We are building in place. + ac_srcdir=. + ac_top_srcdir=$ac_top_builddir_sub + ac_abs_top_srcdir=$ac_pwd ;; + [\\/]* | ?:[\\/]* ) # Absolute name. + ac_srcdir=$srcdir$ac_dir_suffix; + ac_top_srcdir=$srcdir + ac_abs_top_srcdir=$srcdir ;; + *) # Relative name. + ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix + ac_top_srcdir=$ac_top_build_prefix$srcdir + ac_abs_top_srcdir=$ac_pwd/$srcdir ;; +esac +ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix + + + case $ac_mode in + + + + :C) { echo "$as_me:$LINENO: executing $ac_file commands" >&5 +echo "$as_me: executing $ac_file commands" >&6;} + ;; + esac + + + case $ac_file$ac_mode in + "default":C) +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 + ;; + + esac +done # for ac_tag + + +{ (exit 0); exit 0; } +_ACEOF +chmod +x $CONFIG_STATUS +ac_clean_files=$ac_clean_files_save + + +# configure is writing to config.log, and then calls config.status. +# config.status does its own redirection, appending to config.log. +# Unfortunately, on DOS this fails, as config.log is still kept open +# by configure, so config.status won't be able to write to it; its +# output is simply discarded. So we exec the FD to /dev/null, +# effectively closing config.log, so it can be properly (re)opened and +# appended to by config.status. When coming back to configure, we +# need to make the FD available again. +if test "$no_create" != yes; then + ac_cs_success=: + ac_config_status_args= + test "$silent" = yes && + ac_config_status_args="$ac_config_status_args --quiet" + exec 5>/dev/null + $SHELL $CONFIG_STATUS $ac_config_status_args || ac_cs_success=false + exec 5>>config.log + # Use ||, not &&, to avoid exiting from the if with $? = 1, which + # would make configure fail if this is the last instruction. + $ac_cs_success || { (exit 1); exit 1; } +fi + + +fi + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/libs/config/doc/Jamfile.v2 b/libs/config/doc/Jamfile.v2 new file mode 100644 index 0000000000..12708f6a23 --- /dev/null +++ b/libs/config/doc/Jamfile.v2 @@ -0,0 +1,61 @@ +# Boost.Config +# +# Copyright (c) 2001 Beman Dawes +# Copyright (c) 2001 Vesa Karvonen +# Copyright (c) 2001 John Maddock +# +# Distributed under 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) + + +# Quickbook +# ----------------------------------------------------------------------------- + +import quickbook ; + +path-constant boost-images : ../../../doc/src/images ; + +xml config + : + config.qbk + ; + +boostbook standalone + : + config + : + <xsl:param>toc.max.depth=2 + <xsl:param>toc.section.depth=2 + <xsl:param>chunk.section.depth=1 + <xsl:param>boost.root=../../../.. + + # PDF Options: + <format>pdf:<xsl:param>xep.extensions=1 + # TOC generation: this is needed for FOP 0.2, but must not be set to zero for FOP-0.9! + <format>pdf:<xsl:param>fop.extensions=0 + <format>pdf:<xsl:param>fop1.extensions=0 + # No indent on body text: + <format>pdf:<xsl:param>body.start.indent=0pt + # Margin size: + <format>pdf:<xsl:param>page.margin.inner=0.5in + # Margin size: + <format>pdf:<xsl:param>page.margin.outer=0.5in + # Paper type = A4 + <format>pdf:<xsl:param>paper.type=A4 + # Yes, we want graphics for admonishments: + <xsl:param>admon.graphics=1 + # Set this one for PDF generation *only*: + # default pnd graphics are awful in PDF form, + # better use SVG's instead: + <format>pdf:<xsl:param>admon.graphics.extension=".svg" + <format>pdf:<xsl:param>use.role.for.mediaobject=1 + <format>pdf:<xsl:param>preferred.mediaobject.role=print + <format>pdf:<xsl:param>admon.graphics.path=$(boost-images)/ + <format>pdf:<xsl:param>boost.url.prefix=http://www.boost.org/doc/libs/release/libs/config/doc/html + ; + + +install pdf-install : standalone : <location>. <install-type>PDF ; + + diff --git a/libs/config/doc/acknowledgements.qbk b/libs/config/doc/acknowledgements.qbk new file mode 100644 index 0000000000..5c1a25bdea --- /dev/null +++ b/libs/config/doc/acknowledgements.qbk @@ -0,0 +1,32 @@ +[/ + Boost.Config + + Copyright (c) 2001 Beman Dawes + Copyright (c) 2001 Vesa Karvonen + Copyright (c) 2001 John Maddock + + Distributed under 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) +] + +[section Acknowledgements] + +Beman Dawes provided the original `config.hpp` and part of this document. + +Vesa Karvonen provided a description of the principles (see +[link boost_config.rationale rationale]) and put together an early version of +the current configuration setup. + +John Maddock put together the configuration current code, the test +programs, the configuration script and the reference section of this +document. + +Matias Capeletto converted the docs to quickbook format. + +Numerous boost members, past and present, have contributed fixes to boost's +configuration. + +[endsect] + + diff --git a/libs/config/doc/config.qbk b/libs/config/doc/config.qbk new file mode 100644 index 0000000000..0b02ee80a9 --- /dev/null +++ b/libs/config/doc/config.qbk @@ -0,0 +1,60 @@ +[article Boost.Config + [quickbook 1.4] + [authors [Beman Dawes, Vesa Karvonen, John Maddock] ] + [copyright 2001-2007 Beman Dawes, Vesa Karvonen, John Maddock] + [category broken compiler workarounds] + [id config] + [dirname config] + [purpose + Helps boost library developers adapt to compiler idiosyncrasies; not intended for library users. + ] + [source-mode c++] + [license +Distributed under 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]) + ] +] + + +[/ Cited Boost resources ] + +[def __BOOST_REGRESSION_TEST_DRIVER__ [@../../../../tools/regression/doc/index.html boost regression test driver]] +[def __BOOST_CONFIG_HEADER__ [@../../../../boost/config.hpp <boost/config.hpp>]] +[def __BOOST_CONFIG_USER_HEADER__ [@../../../../boost/config/user.hpp <boost/config/user.hpp>]] +[def __BOOST_CONFIG_SUFFIX_HEADER__ [@../../../../boost/config/user.hpp <boost/config/suffix.hpp>]] +[def __BOOST_CONFIG_DIR__ ['<boost-root>]`/boost/config/`] + + +[/ Other web resources ] + +[def __STL_PORT__ [@http://stlport.sourceforge.net STLport]] +[def __BOOST_TRACKER__ [@https://svn.boost.org/trac/boost/newticket Trac]] +[def __CORE_LANGUAGE_DR337__ [@http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_defects.html#337 Core Language DR337]] +[def __PRINCIPLES_AND_PATTERNS_ARTICLE__ [@http://www.objectmentor.com/resources/articles/Principles_and_Patterns.pdf following article]] + + +[/ Icons ] + +[def __NOTE__ [$images/note.png]] +[def __ALERT__ [$images/caution.png]] +[def __DETAIL__ [$images/note.png]] +[def __TIP__ [$images/tip.png]] +[def __QUESTION_MARK__ [$images/question.png]] +[def __SPACE__ [$images/space.png]] +[def __GO_TO__ [$images/callouts/R.png]] + + +[/ Document files ] + + +[include configuring_boost.qbk] +[include macro_reference.qbk] +[include guidelines.qbk] +[include rationale.qbk] +[include acknowledgements.qbk] + + + + + diff --git a/libs/config/doc/configuring_boost.qbk b/libs/config/doc/configuring_boost.qbk new file mode 100644 index 0000000000..dc3d933ecf --- /dev/null +++ b/libs/config/doc/configuring_boost.qbk @@ -0,0 +1,434 @@ +[/ + Boost.Config + + Copyright (c) 2001 Beman Dawes + Copyright (c) 2001 Vesa Karvonen + Copyright (c) 2001 John Maddock + + Distributed under 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) +] + + +[section Configuring Boost for Your Platform] + + +[section Using the default boost configuration] + +Boost comes already configured for most common compilers and platforms; you +should be able to use boost "as is". Since the compiler is configured +separately from the standard library, the default configuration should work +even if you replace the compiler's standard library with a third-party +standard library (like __STL_PORT__). + +Using boost "as is" without trying to reconfigure is the recommended method +for using boost. You can, however, run the configure script if you want to, +and there are regression tests provided that allow you to test the current +boost configuration with your particular compiler setup. + +Boost library users can request support for additional compilers or platforms +by visiting our __BOOST_TRACKER__ and submitting a support request. + +[endsect] + +[section The <boost/config.hpp> header] + +Boost library implementations access configuration macros via + + #include ``__BOOST_CONFIG_HEADER__`` + +While Boost library users are not required to include that file directly, or +use those configuration macros, such use is acceptable. The configuration +macros are documented as to their purpose, usage, and limitations which makes +them usable by both Boost library and user code. + +Boost [link config_info_macros informational] or [link config_helpers helper] +macros are designed for use by Boost users as well as for our own internal use. +Note however, that the [link config_features feature test] and +[link config_defects defect test] macros were designed for internal use by +Boost libraries, not user code, so they can change at any time (though no +gratuitous changes are made to them). Boost library problems resulting from +changes to the configuration macros are caught by the Boost regression tests, +so the Boost libraries are updated to account for those changes. By contrast, +Boost library user code can be adversely affected by changes to the macros +without warning. The best way to keep abreast of changes to the macros used in +user code is to monitor the discussions on the Boost developers list. + +[endsect] + +[#config_config_script] + +[section Using the configure script] + +[important +This configure script only sets up the Boost headers for use with a particular +compiler. It has no effect on Boost.Build, or how the libraries are built. +] + +If you know that boost is incorrectly configured for your particular setup, and +you are on a UNIX like platform, then you may want to try and improve things by +running the boost configure script. From a shell command prompt you will need to +cd into ['<boost-root>]`/libs/config/` and type: + +[: `sh ./configure` ] + +you will see a list of the items being checked as the script works its way +through the regression tests. Note that the configure script only really +auto-detects your compiler if it's called g++, c++ or CC. If you are using +some other compiler you will need to set one or more of the following +environment variables: + + +[table +[[Variable][Description ]] +[[CXX ][The name of the compiler, for example `c++`. ]] +[[CXXFLAGS][The compiler flags to use, for example `-O2`. ]] +[[LDFLAGS ][The linker flags to use, for example `-L/mypath`. ]] +[[LIBS ][Any libraries to link in, for example `-lpthread`.]] +] + +For example to run the configure script with HP aCC, you might use something +like: + + export CXX="aCC" + export CXXFLAGS="-Aa -DAportable -D__HPACC_THREAD_SAFE_RB_TREE \ + -DRWSTD_MULTI_THREAD -DRW_MULTI_THREAD -D_REENTRANT -D_THREAD_SAFE" + export LDFLAGS="-DAportable" + export LIBS="-lpthread" + sh ./configure + +However you run the configure script, when it finishes you will find a +new header -`user.hpp`- located in the ['<boost-root>]`/libs/config/` +directory. [*Note that configure does not install this header into your +boost include path by default]. This header contains all the options +generated by the configure script, plus a header-section that contains +the user settable options from the default version of +__BOOST_CONFIG_USER_HEADER__ (located under __BOOST_CONFIG_DIR__). +There are two ways you can use this header: + +* [*Option 1:] copy the header into __BOOST_CONFIG_DIR__ so that it replaces +the default user.hpp provided by boost. This option allows only one +configure-generated setup; boost developers should avoid this option, +as it incurs the danger of accidentally committing a configure-modified +__BOOST_CONFIG_USER_HEADER__ to the cvs repository (something you will not +be thanked for!). + +* [*Option 2:] give the header a more memorable name, and place it somewhere +convenient; then, define the macro `BOOST_USER_CONFIG` to point to it. For +example create a new sub-directory __BOOST_CONFIG_DIR__ `user/`, and copy +the header there; for example as `multithread-gcc-config.hpp`. Then, when +compiling add the command line option: +`-DBOOST_USER_CONFIG="<boost/config/user/multithread-gcc-config.hpp>"`, and +boost will use the new configuration header. This option allows you to +generate more than one configuration header, and to keep them separate +from the boost source - so that updates to the source do not interfere +with your configuration. + +[endsect] + +[#config_user_settable] + +[section User settable options] + +There are some configuration-options that represent user choices, rather +than compiler defects or platform specific options. These are listed in +`<boost/config/user.hpp>` and at the start of a configure-generated `user.hpp` +header. You can define these on the command line, or by editing +`<boost/config/user.hpp>`, they are listed in the following table: + + + +[table + +[[Macro ][Description ]] + +[[`BOOST_USER_CONFIG`][ +When defined, it should point to the name of the user configuration file +to include prior to any boost configuration files. When not defined, +defaults to [@../../../../boost/config/user.hpp `<boost/config/user.hpp>`]. +]] +[[`BOOST_COMPILER_CONFIG`][ +When defined, it should point to the name of the compiler configuration +file to use. Defining this cuts out the compiler selection logic, and +eliminates the dependency on the header containing that logic. For +example if you are using gcc, then you could define BOOST_COMPILER_CONFIG +to [@../../../../boost/config/compiler/gcc.hpp `<boost/config/compiler/gcc.hpp>`]. +]] +[[`BOOST_STDLIB_CONFIG`][ +When defined, it should point to the name of the standard library +configuration file to use. Defining this cuts out the standard library +selection logic, and eliminates the dependency on the header containing +that logic. For example if you are using STLport, then you could define +`BOOST_STDLIB_CONFIG` to +[@../../../../boost/config/stdlib/stlport.hpp `<boost/config/stdlib/stlport.hpp>`]. +]] +[[`BOOST_PLATFORM_CONFIG`][ +When defined, it should point to the name of the platform configuration +file to use. Defining this cuts out the platform selection logic, and +eliminates the dependency on the header containing that logic. For example +if you are compiling on linux, then you could define `BOOST_PLATFORM_CONFIG` +to [@../../../../boost/config/platform/linux.hpp `<boost/config/platform/linux.hpp>`]. +]] +[[`BOOST_NO_COMPILER_CONFIG`][ +When defined, no compiler configuration file is selected or included, +define when the compiler is fully conformant with the standard, or where +the user header (see `BOOST_USER_CONFIG`), has had any options necessary +added to it, for example by an autoconf generated configure script. +]] +[[`BOOST_NO_STDLIB_CONFIG` ][ +When defined, no standard library configuration file is selected or included, +define when the standard library is fully conformant with the standard, or +where the user header (see `BOOST_USER_CONFIG`), has had any options necessary +added to it, for example by an autoconf generated configure script. +]] +[[`BOOST_NO_PLATFORM_CONFIG` ][ +When defined, no platform configuration file is selected or included, +define when the platform is fully conformant with the standard (and has +no useful extra features), or where the user header (see +`BOOST_USER_CONFIG`), has had any options necessary added to it, for example +by an autoconf generated configure script. +]] +[[`BOOST_NO_CONFIG` ][ +Equivalent to defining all of `BOOST_NO_COMPILER_CONFIG`, +`BOOST_NO_STDLIB_CONFIG` and `BOOST_NO_PLATFORM_CONFIG`. +]] +[[`BOOST_STRICT_CONFIG` ][ +The normal behavior for compiler versions that are newer than the last +known version, is to assume that they have all the same defects as the +last known version. By setting this define, then compiler versions that +are newer than the last known version are assumed to be fully conforming +with the standard. This is probably most useful for boost developers or +testers, and for those who want to use boost to test beta compiler versions. +]] +[[`BOOST_ASSERT_CONFIG` ][ +When this flag is set, if the config finds anything unknown, then it will +stop with a #error rather than continue. Boost regression testers should +set this define, as should anyone who wants to quickly check whether boost +is supported on their platform. +]] +[[`BOOST_DISABLE_THREADS` ][ +When defined, disables threading support, even if the compiler in its +current translation mode supports multiple threads. +]] +[[`BOOST_DISABLE_WIN32` ][ +When defined, disables the use of Win32 specific API's, even when these +are available. Also has the effect of setting `BOOST_DISABLE_THREADS` unless +`BOOST_HAS_PTHREADS` is set. This option may be set automatically by the +config system when it detects that the compiler is in "strict mode". +]] +[[`BOOST_DISABLE_ABI_HEADERS`][ +Stops boost headers from including any prefix/suffix headers that normally +control things like struct packing and alignment. +]] +[[`BOOST_ABI_PREFIX`][ +A prefix header to include in place of whatever boost.config would normally +select, any replacement should set up struct packing and alignment options +as required. +]] +[[`BOOST_ABI_SUFFIX` ][ +A suffix header to include in place of whatever boost.config would normally +select, any replacement should undo the effects of the prefix header. +]] +[[`BOOST_ALL_DYN_LINK`][ +Forces all libraries that have separate source, to be linked as dll's rather +than static libraries on Microsoft Windows (this macro is used to turn on +`__declspec(dllimport)` modifiers, so that the compiler knows which symbols +to look for in a dll rather than in a static library). +Note that there may be some libraries that can only be statically linked +(Boost.Test for example) and others which may only be dynamically linked +(Boost.Threads for example), in these cases this macro has no effect. +]] +[[`BOOST_`['WHATEVER]`_DYN_LINK`][ +Forces library "whatever" to be linked as a dll rather than a static library +on Microsoft Windows: replace the ['WHATEVER] part of the macro name with the +name of the library that you want to dynamically link to, for example use +`BOOST_DATE_TIME_DYN_LINK` or `BOOST_REGEX_DYN_LINK` etc (this macro is used +to turn on `__declspec(dllimport)` modifiers, so that the compiler knows +which symbols to look for in a dll rather than in a static library). +Note that there may be some libraries that can only be statically linked +(Boost.Test for example) and others which may only be dynamically linked +(Boost.Threads for example), in these cases this macro is unsupported. +]] +[[`BOOST_ALL_NO_LIB`][ +Tells the config system not to automatically select which libraries to link +against. +Normally if a compiler supports #pragma lib, then the correct library build +variant will be automatically selected and linked against, simply by the act +of including one of that library's headers. This macro turns that +feature off. +]] +[[`BOOST_`['WHATEVER]`_NO_LIB`][ +Tells the config system not to automatically select which library to link +against for library "whatever", replace ['WHATEVER] in the macro name with the +name of the library; for example `BOOST_DATE_TIME_NO_LIB` or `BOOST_REGEX_NO_LIB`. +Normally if a compiler supports `#pragma lib`, then the correct library build +variant will be automatically selected and linked against, simply by the +act of including one of that library's headers. This macro turns that +feature off. +]] +[[`BOOST_LIB_DIAGNOSTIC`][ +Causes the auto-linking code to output diagnostic messages indicating the +name of the library that is selected for linking. +]] +[[`BOOST_LIB_TOOLSET`][ +Overrides the name of the toolset part of the name of library being linked +to; note if defined this must be defined to a quoted string literal, for +example "abc". +]] +] + +[endsect] + +[section Advanced configuration usage] + +By setting various macros on the compiler command line or by editing +__BOOST_CONFIG_USER_HEADER__, the boost configuration setup can be optimised +in a variety of ways. + +Boost's configuration is structured so that the user-configuration is +included first (defaulting to __BOOST_CONFIG_USER_HEADER__ if `BOOST_USER_CONFIG` +is not defined). This sets up any user-defined policies, and gives the +user-configuration a chance to influence what happens next. + +Next the compiler, standard library, and platform configuration files are +included. These are included via macros (`BOOST_COMPILER_CONFIG` etc, +[link config_user_settable see user settable macros]), and if the corresponding +macro is undefined then a separate header that detects which compiler/standard +library/platform is in use is included in order to set these. The config +can be told to ignore these headers altogether if the corresponding +`BOOST_NO_XXX` macro is set (for example `BOOST_NO_COMPILER_CONFIG` to +disable including any compiler configuration file - +[link config_user_settable see user settable macros]). + +Finally the boost configuration header, includes __BOOST_CONFIG_SUFFIX_HEADER__; +this header contains any boiler plate configuration code - for example where one +boost macro being set implies that another must be set also. + +The following usage examples represent just a few of the possibilities: + +[section Example 1, creating our own frozen configuration] + +Lets suppose that we're building boost with Visual C++ 6, and STLport 4.0. Lets +suppose also that we don't intend to update our compiler or standard library +any time soon. In order to avoid breaking dependencies when we update boost, +we may want to "freeze" our configuration headers, so that we only have to +rebuild our project if the boost code itself has changed, and not because the +boost config has been updated for more recent versions of Visual C++ or STLport. +We'll start by realising that the configuration files in use are: +[@../../../../boost/config/compiler/visualc.hpp `<boost/config/compiler/visualc.hpp>`] +for the compiler, +[@../../../../boost/config/stdlib/stlport.hpp `<boost/config/stdlib/stlport.hpp>`] +for the standard library, and +[@../../../../boost/config/platform/win32.hpp `<boost/config/platform/win32.hpp>`] +for the platform. Next we'll create our own private configuration directory: +`boost/config/mysetup/`, and copy the configuration files into there. Finally, +open up __BOOST_CONFIG_USER_HEADER__ and edit the following defines: + + #define BOOST_COMPILER_CONFIG "boost/config/mysetup/visualc.hpp" + #define BOOST_STDLIB_CONFIG "boost/config/mysetup/stlport.hpp" + #define BOOST_USER_CONFIG "boost/config/mysetup/win32.hpp" + +Now when you use boost, its configuration header will go straight to our "frozen" +versions, and ignore the default versions, you will now be insulated from any +configuration changes when you update boost. This technique is also useful if +you want to modify some of the boost configuration files; for example if you are +working with a beta compiler release not yet supported by boost. + +[endsect] + +[section Example 2: skipping files that you don't need] + +Lets suppose that you're using boost with a compiler that is fully conformant with +the standard; you're not interested in the fact that older versions of your compiler +may have had bugs, because you know that your current version does not need any +configuration macros setting. In a case like this, you can define +`BOOST_NO_COMPILER_CONFIG` either on the command line, or in __BOOST_CONFIG_USER_HEADER__, +and miss out the compiler configuration header altogether (actually you miss out +two headers, one which works out what the compiler is, and one that configures +boost for it). This has two consequences: the first is that less code has to be c +ompiled, and the second that you have removed a dependency on two boost headers. + +[endsect] + +[section Example 3: using configure script to freeze the boost configuration] + +If you are working on a unix-like platform then you can use the configure script to +generate a "frozen" configuration based on your current compiler setup - +[link config_config_script see using the configure script for more details]. + +[endsect] + +[endsect] + +[section Testing the boost configuration] + +The boost configuration library provides a full set of regression test programs +under the __BOOST_CONFIG_DIR__ `test/` sub-directory: + + +[table +[[File][Description]] +[[`config_info.cpp`][ +Prints out a detailed description of your compiler/standard library/platform +setup, plus your current boost configuration. The information provided by this +program useful in setting up the boost configuration files. If you report that +boost is incorrectly configured for your compiler/library/platform then please +include the output from this program when reporting the changes required. +]] +[[`config_test.cpp`][ +A monolithic test program that includes most of the individual test cases. +This provides a quick check to see if boost is correctly configured for your +compiler/library/platform. +]] +[[`limits_test.cpp`][ +Tests your standard library's `std::numeric_limits` implementation (or its boost +provided replacement if `BOOST_NO_LIMITS` is defined). This test file fails with +most versions of numeric_limits, mainly due to the way that some compilers +treat NAN's and infinity. +]] +[[`no_*pass.cpp`][ +Individual compiler defect test files. Each of these should compile, if one +does not then the corresponding `BOOST_NO_XXX` macro needs to be defined - see +each test file for specific details. +]] +[[`no_*fail.cpp`][ +Individual compiler defect test files. Each of these should not compile, if +one does then the corresponding `BOOST_NO_XXX` macro is defined when it need +not be - see each test file for specific details. +]] +[[`has_*pass.cpp`][ +Individual feature test files. If one of these does not compile then the +corresponding `BOOST_HAS_XXX` macro is defined when it should not be - see +each test file for specific details. +]] +[[`has_*fail.cpp`][ +Individual feature test files. If one of these does compile then the +corresponding `BOOST_HAS_XXX` macro can be safely defined - see each test +file for specific details. +]] +] + +Although you can run the configuration regression tests as individual test +files, there are rather a lot of them, so there are a couple of shortcuts to +help you out: + +If you have built the __BOOST_REGRESSION_TEST_DRIVER__, then you can use this to +produce a nice html formatted report of the results using the supplied test file. + +Alternatively you can run the configure script like this: + +[: `./configure --enable-test`] + +in which case the script will test the current configuration rather than +creating a new one from scratch. + +If you are reporting the results of these tests for a new +platform/library/compiler then please include a log of the full compiler output, +the output from `config_info.cpp`, and the pass/fail test results. + + +[endsect] + +[endsect] + diff --git a/libs/config/doc/guidelines.qbk b/libs/config/doc/guidelines.qbk new file mode 100644 index 0000000000..83f6418e1f --- /dev/null +++ b/libs/config/doc/guidelines.qbk @@ -0,0 +1,219 @@ +[/ + Boost.Config + + Copyright (c) 2001 Beman Dawes + Copyright (c) 2001 Vesa Karvonen + Copyright (c) 2001 John Maddock + + Distributed under 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) +] + + + +[section Guidelines for Boost Authors] + +The __BOOST_CONFIG_HEADER__ header is used to pass configuration information +to other boost files, allowing them to cope with platform dependencies such +as arithmetic byte ordering, compiler pragmas, or compiler shortcomings. +Without such configuration information, many current compilers would not work +with the Boost libraries. + +Centralizing configuration information in this header reduces the number of +files that must be modified when porting libraries to new platforms, or when +compilers are updated. Ideally, no other files would have to be modified when +porting to a new platform. + +Configuration headers are controversial because some view them as condoning +broken compilers and encouraging non-standard subsets. Adding settings for +additional platforms and maintaining existing settings can also be a problem. +In other words, configuration headers are a necessary evil rather than a +desirable feature. The boost config.hpp policy is designed to minimize the +problems and maximize the benefits of a configuration header. + +Note that: + +* Boost library implementers are not required to "`#include <boost/config.hpp>`", +and are not required in any way to support compilers that do not comply +with the C++ Standard (ISO/IEC 14882). +* If a library implementer wishes to support some non-conforming compiler, +or to support some platform specific feature, "`#include <boost/config.hpp>`" +is the preferred way to obtain configuration information not available from +the standard headers such as `<climits>`, etc. +* If configuration information can be deduced from standard headers such as +`<climits>`, use those standard headers rather than `<boost/config.hpp>`. +* Boost files that use macros defined in `<boost/config.hpp>` should have +sensible, standard conforming, default behavior if the macro is not defined. +This means that the starting point for porting `<boost/config.hpp>` to a new +platform is simply to define nothing at all specific to that platform. In +the rare case where there is no sensible default behavior, an #error message +should describe the problem. +* If a Boost library implementer wants something added to `config.hpp`, post +a request on the Boost mailing list. There is no guarantee such a request +will be honored; the intent is to limit the complexity of config.hpp. +* The intent is to support only compilers which appear on their way to +becoming C++ Standard compliant, and only recent releases of those compilers +at that. +* The intent is not to disable mainstream features now well-supported by the +majority of compilers, such as namespaces, exceptions, RTTI, or templates. + + +[section:warnings Disabling Compiler Warnings] + +The header `<boost/config/warning_disable.hpp>` can be used to disable +certain compiler warings that are hard or impossible to otherwise remove. + +Note that: + +* This header [*['should never be included by another Boost header]], it should +only ever be used by a library source file or a test case. +* The header should be included [*['before you include any other header]]. +* This header only disables warnings that are hard or impossible to otherwise + deal with, and which are typically emitted by one compiler only, or + in one compilers own standard library headers. + +Currently it disables the following warnings: + +[table +[[Compiler][Warning]] +[[Visual C++ 8 and later][[@http://msdn2.microsoft.com/en-us/library/ttcz0bys(VS.80).aspx C4996]: Error 'function': was declared deprecated]] +[[Intel C++][Warning 1786: relates to the use of "deprecated" standard + library functions rather like C4996 in Visual C++.]] +] + +[endsect] + + +[section Adding New Defect Macros] + +When you need to add a new defect macro - either to fix a problem with an +existing library, or when adding a new library - distil the issue down to +a simple test case; often, at this point other (possibly better) workarounds +may become apparent. Secondly always post the test case code to the boost +mailing list and invite comments; remember that C++ is complex and that +sometimes what may appear a defect, may in fact turn out to be a problem +with the authors understanding of the standard. + +When you name the macro, follow the `BOOST_NO_`['SOMETHING] naming +convention, so that it's obvious that this is a macro reporting a defect. + +Finally, add the test program to the regression tests. You will need to +place the test case in a `.ipp` file with the following comments near the top: + + // MACRO: BOOST_NO_FOO + // TITLE: foo + // DESCRIPTION: If the compiler fails to support foo + +These comments are processed by the autoconf script, so make sure the format +follows the one given. The file should be named "`boost_no_foo.ipp`", where foo +is the defect description - try and keep the file name under the Mac 30 character +filename limit though. You will also need to provide a function prototype +"`int test()`" that is declared in a namespace with the same name as the macro, +but in all lower case, and which returns zero on success: + + + namespace boost_no_foo { + int test() + { + // test code goes here: + // + return 0; + } + + } + +Once the test code is in place in libs/config/test, updating the configuration +test system proceeds as: + +* cd into `libs/config/tools` and run `bjam`. This generates the `.cpp` +file test cases from the `.ipp` file, updates the +libs/config/test/all/Jamfile.v2, `config_test.cpp` and `config_info.cpp`.[br][br] + +* cd into `libs/config/test/all` and run `bjam `['MACRONAME` compiler-list`], where +['MACRONAME] is the name of the new macro, and ['`compiler-list`] is a space separated list of +compilers to test with.[br][br] +The xxx_pass_test and the xxx_fail_test [*should both report `**passed**`].[br][br] +If ['MACRONAME] is not defined when it should be defined, xxx_pass_test will not report `**passed**`. +If ['MACRONAME] is defined when it should not be defined, xxx_fail_test will not report `**passed**`.[br][br] + +* cd into `libs/config/test` and run `bjam config_info config_test `['`compiler-list`]. +`config_info` should build and run cleanly for all the compilers in ['`compiler-list`] +while `config_test` should fail for those that have the defect, and pass for those +that do not. + +Then you should: + +* Define the defect macro in those config headers that require it. +* Document the macro in this documentation (please do not forget this step!!) +* Commit everything. +* Keep an eye on the regression tests for new failures in Boost.Config caused by +the addition. +* Start using the macro. + +[endsect] + +[section Adding New Feature Test Macros] + +When you need to add a macro that describes a feature that the standard does +not require, follow the convention for adding a new defect macro (above), but +call the macro `BOOST_HAS_FOO`, and name the test file "`boost_has_foo.ipp`". +Try not to add feature test macros unnecessarily, if there is a platform +specific macro that can already be used (for example `_WIN32`, `__BEOS__`, or +`__linux`) to identify the feature then use that. Try to keep the macro to a +feature group, or header name, rather than one specific API (for example +`BOOST_HAS_NL_TYPES_H` rather than `BOOST_HAS_CATOPEN`). If the macro +describes a POSIX feature group, then add boilerplate code to +__BOOST_CONFIG_SUFFIX_HEADER__ to auto-detect the feature where possible +(if you are wondering why we can't use POSIX feature test macro directly, +remember that many of these features can be added by third party libraries, +and are not therefore identified inside `<unistd.h>`). + +[endsect] + +[section Modifying the Boost Configuration Headers] + +The aim of boost's configuration setup is that the configuration headers should +be relatively stable - a boost user should not have to recompile their code +just because the configuration for some compiler that they're not interested +in has changed. Separating the configuration into separate compiler/standard +library/platform sections provides for part of this stability, but boost +authors require some amount of restraint as well, in particular: + +__BOOST_CONFIG_HEADER__ should never change, don't alter this file. + +__BOOST_CONFIG_USER_HEADER__ is included by default, don't add extra code to +this file unless you have to. If you do, please remember to update +[@../../tools/configure.in libs/config/tools/configure.in] as well. + +__BOOST_CONFIG_SUFFIX_HEADER__ is always included so be careful about +modifying this file as it breaks dependencies for everyone. This file should +include only "boilerplate" configuration code, and generally should change +only when new macros are added. + +[@../../../../boost/config/select_compiler_config.hpp <boost/config/select_compiler_config.hpp>], +[@../../../../boost/config/select_platform_config.hpp <boost/config/select_platform_config.hpp>] and +[@../../../../boost/config/select_stdlib_config.hpp <boost/config/select_stdlib_config.hpp>] +are included by default and should change only if support for a new +compiler/standard library/platform is added. + +The compiler/platform/standard library selection code is set up so that unknown +platforms are ignored and assumed to be fully standards compliant - this gives +unknown platforms a "sporting chance" of working "as is" even without running +the configure script. + +When adding or modifying the individual mini-configs, assume that future, as +yet unreleased versions of compilers, have all the defects of the current +version. Although this is perhaps unnecessarily pessimistic, it cuts down on +the maintenance of these files, and experience suggests that pessimism is +better placed than optimism here! + +[endsect] + +[endsect] + + + + + + diff --git a/libs/config/doc/html/HTML.manifest b/libs/config/doc/html/HTML.manifest new file mode 100644 index 0000000000..632c78f1cc --- /dev/null +++ b/libs/config/doc/html/HTML.manifest @@ -0,0 +1,5 @@ +index.html +boost_config/boost_macro_reference.html +boost_config/guidelines_for_boost_authors.html +boost_config/rationale.html +boost_config/acknowledgements.html diff --git a/libs/config/doc/html/boost_config/acknowledgements.html b/libs/config/doc/html/boost_config/acknowledgements.html new file mode 100644 index 0000000000..8286d72da8 --- /dev/null +++ b/libs/config/doc/html/boost_config/acknowledgements.html @@ -0,0 +1,62 @@ +<html> +<head> +<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII"> +<title>Acknowledgements</title> +<link rel="stylesheet" href="../../../../../doc/src/boostbook.css" type="text/css"> +<meta name="generator" content="DocBook XSL Stylesheets V1.76.1"> +<link rel="home" href="../index.html" title="Boost.Config"> +<link rel="up" href="../index.html" title="Boost.Config"> +<link rel="prev" href="rationale.html" title="Rationale"> +</head> +<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"> +<table cellpadding="2" width="100%"><tr> +<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../boost.png"></td> +<td align="center"><a href="../../../../../index.html">Home</a></td> +<td align="center"><a href="../../../../../libs/libraries.htm">Libraries</a></td> +<td align="center"><a href="http://www.boost.org/users/people.html">People</a></td> +<td align="center"><a href="http://www.boost.org/users/faq.html">FAQ</a></td> +<td align="center"><a href="../../../../../more/index.htm">More</a></td> +</tr></table> +<hr> +<div class="spirit-nav"> +<a accesskey="p" href="rationale.html"><img src="../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../doc/src/images/home.png" alt="Home"></a> +</div> +<div class="section"> +<div class="titlepage"><div><div><h2 class="title" style="clear: both"> +<a name="boost_config.acknowledgements"></a><a class="link" href="acknowledgements.html" title="Acknowledgements">Acknowledgements</a> +</h2></div></div></div> +<p> + Beman Dawes provided the original <code class="computeroutput"><span class="identifier">config</span><span class="special">.</span><span class="identifier">hpp</span></code> and + part of this document. + </p> +<p> + Vesa Karvonen provided a description of the principles (see <a class="link" href="rationale.html" title="Rationale">rationale</a>) + and put together an early version of the current configuration setup. + </p> +<p> + John Maddock put together the configuration current code, the test programs, + the configuration script and the reference section of this document. + </p> +<p> + Matias Capeletto converted the docs to quickbook format. + </p> +<p> + Numerous boost members, past and present, have contributed fixes to boost's + configuration. + </p> +</div> +<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr> +<td align="left"></td> +<td align="right"><div class="copyright-footer">Copyright © 2001-2007 Beman Dawes, Vesa Karvonen, John + Maddock<p> + Distributed under the Boost Software License, Version 1.0. (See accompanying + file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>) + </p> +</div></td> +</tr></table> +<hr> +<div class="spirit-nav"> +<a accesskey="p" href="rationale.html"><img src="../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../doc/src/images/home.png" alt="Home"></a> +</div> +</body> +</html> diff --git a/libs/config/doc/html/boost_config/boost_macro_reference.html b/libs/config/doc/html/boost_config/boost_macro_reference.html new file mode 100644 index 0000000000..e90f270196 --- /dev/null +++ b/libs/config/doc/html/boost_config/boost_macro_reference.html @@ -0,0 +1,4049 @@ +<html> +<head> +<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII"> +<title>Boost Macro Reference</title> +<link rel="stylesheet" href="../../../../../doc/src/boostbook.css" type="text/css"> +<meta name="generator" content="DocBook XSL Stylesheets V1.76.1"> +<link rel="home" href="../index.html" title="Boost.Config"> +<link rel="up" href="../index.html" title="Boost.Config"> +<link rel="prev" href="../index.html" title="Boost.Config"> +<link rel="next" href="guidelines_for_boost_authors.html" title="Guidelines for Boost Authors"> +</head> +<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"> +<table cellpadding="2" width="100%"><tr> +<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../boost.png"></td> +<td align="center"><a href="../../../../../index.html">Home</a></td> +<td align="center"><a href="../../../../../libs/libraries.htm">Libraries</a></td> +<td align="center"><a href="http://www.boost.org/users/people.html">People</a></td> +<td align="center"><a href="http://www.boost.org/users/faq.html">FAQ</a></td> +<td align="center"><a href="../../../../../more/index.htm">More</a></td> +</tr></table> +<hr> +<div class="spirit-nav"> +<a accesskey="p" href="../index.html"><img src="../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="guidelines_for_boost_authors.html"><img src="../../../../../doc/src/images/next.png" alt="Next"></a> +</div> +<div class="section"> +<div class="titlepage"><div><div><h2 class="title" style="clear: both"> +<a name="boost_config.boost_macro_reference"></a><a class="link" href="boost_macro_reference.html" title="Boost Macro Reference">Boost Macro Reference</a> +</h2></div></div></div> +<div class="toc"><dl> +<dt><span class="section"><a href="boost_macro_reference.html#boost_config.boost_macro_reference.macros_that_describe_c__03_defects">Macros + that describe C++03 defects</a></span></dt> +<dt><span class="section"><a href="boost_macro_reference.html#boost_config.boost_macro_reference.macros_that_describe_optional_features">Macros + that describe optional features</a></span></dt> +<dt><span class="section"><a href="boost_macro_reference.html#boost_config.boost_macro_reference.macros_that_describe_possible_c___future_features">Macros + that describe possible C++ future features</a></span></dt> +<dt><span class="section"><a href="boost_macro_reference.html#boost_config.boost_macro_reference.macros_that_describe_c__11_features_not_supported">Macros + that describe C++11 features not supported</a></span></dt> +<dt><span class="section"><a href="boost_macro_reference.html#boost_config.boost_macro_reference.macros_that_allow_use_of_c__11_features_with_c__03_compilers">Macros + that allow use of C++11 features with C++03 compilers</a></span></dt> +<dt><span class="section"><a href="boost_macro_reference.html#boost_config.boost_macro_reference.boost_helper_macros">Boost + Helper Macros</a></span></dt> +<dt><span class="section"><a href="boost_macro_reference.html#boost_config.boost_macro_reference.boost_informational_macros">Boost + Informational Macros</a></span></dt> +<dt><span class="section"><a href="boost_macro_reference.html#boost_config.boost_macro_reference.macros_for_libraries_with_separate_source_code">Macros + for libraries with separate source code</a></span></dt> +</dl></div> +<div class="section"> +<div class="titlepage"><div><div><h3 class="title"> +<a name="boost_config.boost_macro_reference.macros_that_describe_c__03_defects"></a><a name="config_defects"></a><a class="link" href="boost_macro_reference.html#boost_config.boost_macro_reference.macros_that_describe_c__03_defects" title="Macros that describe C++03 defects">Macros + that describe C++03 defects</a> +</h3></div></div></div> +<p> + The following macros all describe features that are required by the C++03 + standard, if one of the following macros is defined, then it represents a + defect in the compiler's conformance with the 2003 standard. + </p> +<div class="informaltable"><table class="table"> +<colgroup> +<col> +<col> +<col> +</colgroup> +<thead><tr> +<th> + <p> + Macro + </p> + </th> +<th> + <p> + Section + </p> + </th> +<th> + <p> + Description + </p> + </th> +</tr></thead> +<tbody> +<tr> +<td> + <p> + <code class="computeroutput"><span class="identifier">BOOST_BCB_PARTIAL_SPECIALIZATION_BUG</span></code> + </p> + </td> +<td> + <p> + Compiler + </p> + </td> +<td> + <p> + The compiler exibits certain partial specialisation bug - probably + Borland C++ Builder specific. + </p> + </td> +</tr> +<tr> +<td> + <p> + <code class="computeroutput"><span class="identifier">BOOST_FUNCTION_SCOPE_USING_DECLARATION_BREAKS_ADL</span></code> + </p> + </td> +<td> + <p> + Compiler + </p> + </td> +<td> + <p> + Argument dependent lookup fails if there is a using declaration + for the symbol being looked up in the current scope. For example, + using <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">get_pointer</span></code>; prevents ADL from + finding overloads of <code class="computeroutput"><span class="identifier">get_pointer</span></code> + in namespaces nested inside boost (but not elsewhere). Probably + Borland specific. + </p> + </td> +</tr> +<tr> +<td> + <p> + <code class="computeroutput"><span class="identifier">BOOST_NO_ADL_BARRIER</span></code> + </p> + </td> +<td> + <p> + Compiler + </p> + </td> +<td> + <p> + The compiler locates and searches namespaces that it should <span class="emphasis"><em>*not*</em></span> + in fact search when performing argument dependent lookup. + </p> + </td> +</tr> +<tr> +<td> + <p> + <code class="computeroutput"><span class="identifier">BOOST_NO_ARGUMENT_DEPENDENT_LOOKUP</span></code> + </p> + </td> +<td> + <p> + Compiler + </p> + </td> +<td> + <p> + Compiler does not implement argument-dependent lookup (also named + Koenig lookup); see std::3.4.2 [basic.koenig.lookup] + </p> + </td> +</tr> +<tr> +<td> + <p> + <code class="computeroutput"><span class="identifier">BOOST_NO_AUTO_PTR</span></code> + </p> + </td> +<td> + <p> + Standard library + </p> + </td> +<td> + <p> + If the compiler / library supplies non-standard or broken <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">auto_ptr</span></code>. + </p> + </td> +</tr> +<tr> +<td> + <p> + <code class="computeroutput"><span class="identifier">BOOST_NO_COMPLETE_VALUE_INITIALIZATION</span></code> + </p> + </td> +<td> + <p> + Compiler + </p> + </td> +<td> + <p> + Compiler has not completely implemented value-initialization. See + also <a href="../../../../utility/value_init.htm#compiler_issues" target="_top">The + Utility/Value Init docs</a> + </p> + </td> +</tr> +<tr> +<td> + <p> + <code class="computeroutput"><span class="identifier">BOOST_NO_CTYPE_FUNCTIONS</span></code> + </p> + </td> +<td> + <p> + Platform + </p> + </td> +<td> + <p> + The Platform does not provide functions for the character-classifying + operations <code class="computeroutput"><span class="special"><</span><span class="identifier">ctype</span><span class="special">.</span><span class="identifier">h</span><span class="special">></span></code> and <code class="computeroutput"><span class="special"><</span><span class="identifier">cctype</span><span class="special">></span></code>, + only macros. + </p> + </td> +</tr> +<tr> +<td> + <p> + <code class="computeroutput"><span class="identifier">BOOST_NO_CV_SPECIALIZATIONS</span></code> + </p> + </td> +<td> + <p> + Compiler + </p> + </td> +<td> + <p> + If template specialisations for cv-qualified types conflict with + a specialisation for a cv-unqualififed type. + </p> + </td> +</tr> +<tr> +<td> + <p> + <code class="computeroutput"><span class="identifier">BOOST_NO_CV_VOID_SPECIALIZATIONS</span></code> + </p> + </td> +<td> + <p> + Compiler + </p> + </td> +<td> + <p> + If template specialisations for cv-void types conflict with a specialisation + for void. + </p> + </td> +</tr> +<tr> +<td> + <p> + <code class="computeroutput"><span class="identifier">BOOST_NO_CWCHAR</span></code> + </p> + </td> +<td> + <p> + Platform + </p> + </td> +<td> + <p> + The Platform does not provide <code class="computeroutput"><span class="special"><</span><span class="identifier">wchar</span><span class="special">.</span><span class="identifier">h</span><span class="special">></span></code> + and <code class="computeroutput"><span class="special"><</span><span class="identifier">cwchar</span><span class="special">></span></code>. + </p> + </td> +</tr> +<tr> +<td> + <p> + <code class="computeroutput"><span class="identifier">BOOST_NO_CWCTYPE</span></code> + </p> + </td> +<td> + <p> + Platform + </p> + </td> +<td> + <p> + The Platform does not provide <code class="computeroutput"><span class="special"><</span><span class="identifier">wctype</span><span class="special">.</span><span class="identifier">h</span><span class="special">></span></code> + and <code class="computeroutput"><span class="special"><</span><span class="identifier">cwctype</span><span class="special">></span></code>. + </p> + </td> +</tr> +<tr> +<td> + <p> + <code class="computeroutput"><span class="identifier">BOOST_NO_FENV_H</span></code> + </p> + </td> +<td> + <p> + Platform, Standard library + </p> + </td> +<td> + <p> + The C standard library doesn't provide <code class="computeroutput"><span class="special"><</span><span class="identifier">fenv</span><span class="special">.</span><span class="identifier">h</span><span class="special">></span></code>. + <a href="../../../../../boost/detail/fenv.hpp" target="_top"><code class="computeroutput"><span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">detail</span><span class="special">/</span><span class="identifier">fenv</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span></code></a> + should be included instead of <code class="computeroutput"><span class="special"><</span><span class="identifier">fenv</span><span class="special">.</span><span class="identifier">h</span><span class="special">></span></code> + for maximum portability on platforms which do provide <code class="computeroutput"><span class="special"><</span><span class="identifier">fenv</span><span class="special">.</span><span class="identifier">h</span><span class="special">></span></code>. + </p> + </td> +</tr> +<tr> +<td> + <p> + <code class="computeroutput"><span class="identifier">BOOST_NO_DEPENDENT_NESTED_DERIVATIONS</span></code> + </p> + </td> +<td> + <p> + Compiler + </p> + </td> +<td> + <p> + The compiler fails to compile a nested class that has a dependent + base class: +</p> +<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">></span> +<span class="keyword">struct</span> <span class="identifier">foo</span> <span class="special">:</span> <span class="special">{</span> + <span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">U</span><span class="special">></span> + <span class="keyword">struct</span> <span class="identifier">bar</span> <span class="special">:</span> <span class="keyword">public</span> <span class="identifier">U</span> <span class="special">{};</span> +</pre> +<p> + }; + </p> + </td> +</tr> +<tr> +<td> + <p> + <code class="computeroutput"><span class="identifier">BOOST_NO_DEPENDENT_TYPES_IN_TEMPLATE_VALUE_PARAMETERS</span></code> + </p> + </td> +<td> + <p> + Compiler + </p> + </td> +<td> + <p> + Template value parameters cannot have a dependent type, for example: + +</p> +<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="keyword">template</span><span class="special"><</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">T</span><span class="special">::</span><span class="identifier">type</span> <span class="identifier">value</span><span class="special">></span> +<span class="keyword">class</span> <span class="identifier">X</span> <span class="special">{</span> <span class="special">...</span> <span class="special">};</span> +</pre> +<p> + </p> + </td> +</tr> +<tr> +<td> + <p> + <code class="computeroutput"><span class="identifier">BOOST_NO_EXCEPTION_STD_NAMESPACE</span></code> + </p> + </td> +<td> + <p> + Standard Library + </p> + </td> +<td> + <p> + The standard library does not put some or all of the contents of + <code class="computeroutput"><span class="special"><</span><span class="identifier">exception</span><span class="special">></span></code> in namespace std. + </p> + </td> +</tr> +<tr> +<td> + <p> + <code class="computeroutput"><span class="identifier">BOOST_NO_EXCEPTIONS</span></code> + </p> + </td> +<td> + <p> + Compiler + </p> + </td> +<td> + <p> + The compiler does not support exception handling (this setting + is typically required by many C++ compilers for embedded platforms). + Note that there is no requirement for boost libraries to honor + this configuration setting - indeed doing so may be impossible + in some cases. Those libraries that do honor this will typically + abort if a critical error occurs - you have been warned! + </p> + </td> +</tr> +<tr> +<td> + <p> + <code class="computeroutput"><span class="identifier">BOOST_NO_EXPLICIT_FUNCTION_TEMPLATE_ARGUMENTS</span></code> + </p> + </td> +<td> + <p> + Compiler + </p> + </td> +<td> + <p> + Can only use deduced template arguments when calling function template + instantiations. + </p> + </td> +</tr> +<tr> +<td> + <p> + <code class="computeroutput"><span class="identifier">BOOST_NO_FUNCTION_TEMPLATE_ORDERING</span></code> + </p> + </td> +<td> + <p> + Compiler + </p> + </td> +<td> + <p> + The compiler does not perform function template ordering or its + function template ordering is incorrect. +</p> +<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="comment">// #1</span> +<span class="keyword">template</span><span class="special"><</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">></span> <span class="keyword">void</span> <span class="identifier">f</span><span class="special">(</span><span class="identifier">T</span><span class="special">);</span> + +<span class="comment">// #2</span> +<span class="keyword">template</span><span class="special"><</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">,</span><span class="keyword">class</span> <span class="identifier">U</span><span class="special">></span> <span class="keyword">void</span> <span class="identifier">f</span><span class="special">(</span><span class="identifier">T</span><span class="special">(*)(</span><span class="identifier">U</span><span class="special">));</span> + +<span class="keyword">void</span> <span class="identifier">bar</span><span class="special">(</span><span class="keyword">int</span><span class="special">);</span> + +<span class="identifier">f</span><span class="special">(&</span><span class="identifier">bar</span><span class="special">);</span> <span class="comment">// should choose #2.</span> +</pre> +<p> + </p> + </td> +</tr> +<tr> +<td> + <p> + <code class="computeroutput"><span class="identifier">BOOST_NO_INCLASS_MEMBER_INITIALIZATION</span></code> + </p> + </td> +<td> + <p> + Compiler + </p> + </td> +<td> + <p> + Compiler violates std::9.4.2/4. + </p> + </td> +</tr> +<tr> +<td> + <p> + <code class="computeroutput"><span class="identifier">BOOST_NO_INTRINSIC_WCHAR_T</span></code> + </p> + </td> +<td> + <p> + Compiler + </p> + </td> +<td> + <p> + The C++ implementation does not provide <code class="computeroutput"><span class="keyword">wchar_t</span></code>, + or it is really a synonym for another integral type. Use this symbol + to decide whether it is appropriate to explicitly specialize a + template on <code class="computeroutput"><span class="keyword">wchar_t</span></code> + if there is already a specialization for other integer types. + </p> + </td> +</tr> +<tr> +<td> + <p> + <code class="computeroutput"><span class="identifier">BOOST_NO_IOSFWD</span></code> + </p> + </td> +<td> + <p> + std lib + </p> + </td> +<td> + <p> + The standard library lacks <code class="computeroutput"><span class="special"><</span><span class="identifier">iosfwd</span><span class="special">></span></code>. + </p> + </td> +</tr> +<tr> +<td> + <p> + <code class="computeroutput"><span class="identifier">BOOST_NO_IOSTREAM</span></code> + </p> + </td> +<td> + <p> + std lib + </p> + </td> +<td> + <p> + The standard library lacks <code class="computeroutput"><span class="special"><</span><span class="identifier">iostream</span><span class="special">></span></code>, + <code class="computeroutput"><span class="special"><</span><span class="identifier">istream</span><span class="special">></span></code> or <code class="computeroutput"><span class="special"><</span><span class="identifier">ostream</span><span class="special">></span></code>. + </p> + </td> +</tr> +<tr> +<td> + <p> + <code class="computeroutput"><span class="identifier">BOOST_NO_IS_ABSTRACT</span></code> + </p> + </td> +<td> + <p> + Compiler + </p> + </td> +<td> + <p> + The C++ compiler does not support SFINAE with abstract types, this + is covered by <a href="http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_defects.html#337" target="_top">Core + Language DR337</a>, but is not part of the current standard. + Fortunately most compilers that support SFINAE also support this + DR. + </p> + </td> +</tr> +<tr> +<td> + <p> + <code class="computeroutput"><span class="identifier">BOOST_NO_LIMITS</span></code> + </p> + </td> +<td> + <p> + Standard library + </p> + </td> +<td> + <p> + The C++ implementation does not provide the <code class="computeroutput"><span class="special"><</span><span class="identifier">limits</span><span class="special">></span></code> + header. Never check for this symbol in library code; always include + <code class="computeroutput"><span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">limits</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span></code>, which guarantees to provide + <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">numeric_limits</span></code>. + </p> + </td> +</tr> +<tr> +<td> + <p> + <code class="computeroutput"><span class="identifier">BOOST_NO_NUMERIC_LIMITS_LOWEST</span></code> + </p> + </td> +<td> + <p> + Standard library + </p> + </td> +<td> + <p> + Static function <code class="computeroutput"><span class="identifier">numeric_limits</span><span class="special"><</span><span class="identifier">T</span><span class="special">>::</span><span class="identifier">lowest</span><span class="special">()</span></code> is not available for use. + </p> + </td> +</tr> +<tr> +<td> + <p> + <code class="computeroutput"><span class="identifier">BOOST_NO_LIMITS_COMPILE_TIME_CONSTANTS</span></code> + </p> + </td> +<td> + <p> + Standard library + </p> + </td> +<td> + <p> + Constants such as <code class="computeroutput"><span class="identifier">numeric_limits</span><span class="special"><</span><span class="identifier">T</span><span class="special">>::</span><span class="identifier">is_signed</span></code> + are not available for use at compile-time. + </p> + </td> +</tr> +<tr> +<td> + <p> + <code class="computeroutput"><span class="identifier">BOOST_NO_LONG_LONG_NUMERIC_LIMITS</span></code> + </p> + </td> +<td> + <p> + Standard library + </p> + </td> +<td> + <p> + There is no specialization for <code class="computeroutput"><span class="identifier">numeric_limits</span><span class="special"><</span><span class="keyword">long</span> + <span class="keyword">long</span><span class="special">></span></code> + and <code class="computeroutput"><span class="identifier">numeric_limits</span><span class="special"><</span><span class="keyword">unsigned</span> + <span class="keyword">long</span> <span class="keyword">long</span><span class="special">></span></code>. <code class="computeroutput"><span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">limits</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span></code> + will then add these specializations as a standard library "fix" + only if the compiler supports the <code class="computeroutput"><span class="keyword">long</span> + <span class="keyword">long</span></code> datatype. + </p> + </td> +</tr> +<tr> +<td> + <p> + <code class="computeroutput"><span class="identifier">BOOST_NO_MEMBER_FUNCTION_SPECIALIZATIONS</span></code> + </p> + </td> +<td> + <p> + Compiler + </p> + </td> +<td> + <p> + The compiler does not support the specialization of individual + member functions of template classes. + </p> + </td> +</tr> +<tr> +<td> + <p> + <code class="computeroutput"><span class="identifier">BOOST_NO_MEMBER_TEMPLATE_KEYWORD</span></code> + </p> + </td> +<td> + <p> + Compiler + </p> + </td> +<td> + <p> + If the compiler supports member templates, but not the template + keyword when accessing member template classes. + </p> + </td> +</tr> +<tr> +<td> + <p> + <code class="computeroutput"><span class="identifier">BOOST_NO_MEMBER_TEMPLATE_FRIENDS</span></code> + </p> + </td> +<td> + <p> + Compiler + </p> + </td> +<td> + <p> + Member template friend syntax (<code class="computeroutput"><span class="keyword">template</span><span class="special"><</span><span class="keyword">class</span> + <span class="identifier">P</span><span class="special">></span> + <span class="keyword">friend</span> <span class="keyword">class</span> + <span class="identifier">frd</span><span class="special">;</span></code>) + described in the C++ Standard, 14.5.3, not supported. + </p> + </td> +</tr> +<tr> +<td> + <p> + <code class="computeroutput"><span class="identifier">BOOST_NO_MEMBER_TEMPLATES</span></code> + </p> + </td> +<td> + <p> + Compiler + </p> + </td> +<td> + <p> + Member template functions not fully supported. + </p> + </td> +</tr> +<tr> +<td> + <p> + <code class="computeroutput"><span class="identifier">BOOST_NO_MS_INT64_NUMERIC_LIMITS</span></code> + </p> + </td> +<td> + <p> + Standard library + </p> + </td> +<td> + <p> + There is no specialization for <code class="computeroutput"><span class="identifier">numeric_limits</span><span class="special"><</span><span class="identifier">__int64</span><span class="special">></span></code> and <code class="computeroutput"><span class="identifier">numeric_limits</span><span class="special"><</span><span class="keyword">unsigned</span> + <span class="identifier">__int64</span><span class="special">></span></code>. + <code class="computeroutput"><span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">limits</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span></code> will then add these specializations + as a standard library "fix", only if the compiler supports + the <code class="computeroutput"><span class="identifier">__int64</span></code> datatype. + </p> + </td> +</tr> +<tr> +<td> + <p> + <code class="computeroutput"><span class="identifier">BOOST_NO_NESTED_FRIENDSHIP</span></code> + </p> + </td> +<td> + <p> + Compiler + </p> + </td> +<td> + <p> + Compiler doesn't allow a nested class to access private members + of its containing class. Probably Borland/CodeGear specific. + </p> + </td> +</tr> +<tr> +<td> + <p> + <code class="computeroutput"><span class="identifier">BOOST_NO_OPERATORS_IN_NAMESPACE</span></code> + </p> + </td> +<td> + <p> + Compiler + </p> + </td> +<td> + <p> + Compiler requires inherited operator friend functions to be defined + at namespace scope, then using'ed to boost. Probably GCC specific. + See <a href="../../../../../boost/operators.hpp" target="_top"><code class="computeroutput"><span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">operators</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span></code></a> for example. + </p> + </td> +</tr> +<tr> +<td> + <p> + <code class="computeroutput"><span class="identifier">BOOST_NO_PARTIAL_SPECIALIZATION_IMPLICIT_DEFAULT_ARGS</span></code> + </p> + </td> +<td> + <p> + Compiler + </p> + </td> +<td> + <p> + The compiler does not correctly handle partial specializations + which depend upon default arguments in the primary template. + </p> + </td> +</tr> +<tr> +<td> + <p> + <code class="computeroutput"><span class="identifier">BOOST_NO_POINTER_TO_MEMBER_CONST</span></code> + </p> + </td> +<td> + <p> + Compiler + </p> + </td> +<td> + <p> + The compiler does not correctly handle pointers to const member + functions, preventing use of these in overloaded function templates. + See <a href="../../../../../boost/functional.hpp" target="_top"><code class="computeroutput"><span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">functional</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span></code></a> for example. + </p> + </td> +</tr> +<tr> +<td> + <p> + <code class="computeroutput"><span class="identifier">BOOST_NO_POINTER_TO_MEMBER_TEMPLATE_PARAMETERS</span></code> + </p> + </td> +<td> + <p> + Compiler + </p> + </td> +<td> + <p> + Pointers to members don't work when used as template parameters. + </p> + </td> +</tr> +<tr> +<td> + <p> + <code class="computeroutput"><span class="identifier">BOOST_NO_PRIVATE_IN_AGGREGATE</span></code> + </p> + </td> +<td> + <p> + Compiler + </p> + </td> +<td> + <p> + The compiler misreads 8.5.1, treating classes as non-aggregate + if they contain private or protected member functions. + </p> + </td> +</tr> +<tr> +<td> + <p> + <code class="computeroutput"><span class="identifier">BOOST_NO_RTTI</span></code> + </p> + </td> +<td> + <p> + Compiler + </p> + </td> +<td> + <p> + The compiler may (or may not) have the typeid operator, but RTTI + on the dynamic type of an object is not supported. + </p> + </td> +</tr> +<tr> +<td> + <p> + <code class="computeroutput"><span class="identifier">BOOST_NO_SFINAE</span></code> + </p> + </td> +<td> + <p> + Compiler + </p> + </td> +<td> + <p> + The compiler does not support the "Substitution Failure Is + Not An Error" meta-programming idiom. + </p> + </td> +</tr> +<tr> +<td> + <p> + <code class="computeroutput"><span class="identifier">BOOST_NO_SFINAE_EXPR</span></code> + </p> + </td> +<td> + <p> + Compiler + </p> + </td> +<td> + <p> + The compiler does not support usage of SFINAE with arbitrary expressions. + </p> + </td> +</tr> +<tr> +<td> + <p> + <code class="computeroutput"><span class="identifier">BOOST_NO_STD_ALLOCATOR</span></code> + </p> + </td> +<td> + <p> + Standard library + </p> + </td> +<td> + <p> + The C++ standard library does not provide a standards conforming + <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">allocator</span></code>. + </p> + </td> +</tr> +<tr> +<td> + <p> + <code class="computeroutput"><span class="identifier">BOOST_NO_STD_DISTANCE</span></code> + </p> + </td> +<td> + <p> + Standard library + </p> + </td> +<td> + <p> + The platform does not have a conforming version of <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">distance</span></code>. + </p> + </td> +</tr> +<tr> +<td> + <p> + <code class="computeroutput"><span class="identifier">BOOST_NO_STD_ITERATOR</span></code> + </p> + </td> +<td> + <p> + Standard library + </p> + </td> +<td> + <p> + The C++ implementation fails to provide the <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">iterator</span></code> + class. + </p> + </td> +</tr> +<tr> +<td> + <p> + <code class="computeroutput"><span class="identifier">BOOST_NO_STD_ITERATOR_TRAITS</span></code> + </p> + </td> +<td> + <p> + Standard library + </p> + </td> +<td> + <p> + The compiler does not provide a standard compliant implementation + of <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">iterator_traits</span></code>. Note that the + compiler may still have a non-standard implementation. + </p> + </td> +</tr> +<tr> +<td> + <p> + <code class="computeroutput"><span class="identifier">BOOST_NO_STD_LOCALE</span></code> + </p> + </td> +<td> + <p> + Standard library + </p> + </td> +<td> + <p> + The standard library lacks <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">locale</span></code>. + </p> + </td> +</tr> +<tr> +<td> + <p> + <code class="computeroutput"><span class="identifier">BOOST_NO_STD_MESSAGES</span></code> + </p> + </td> +<td> + <p> + Standard library + </p> + </td> +<td> + <p> + The standard library lacks a conforming <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">messages</span></code> + facet. + </p> + </td> +</tr> +<tr> +<td> + <p> + <code class="computeroutput"><span class="identifier">BOOST_NO_STD_MIN_MAX</span></code> + </p> + </td> +<td> + <p> + Standard library + </p> + </td> +<td> + <p> + The C++ standard library does not provide the <code class="computeroutput"><span class="identifier">min</span><span class="special">()</span></code> and <code class="computeroutput"><span class="identifier">max</span><span class="special">()</span></code> template functions that should + be in <code class="computeroutput"><span class="special"><</span><span class="identifier">algorithm</span><span class="special">></span></code>. + </p> + </td> +</tr> +<tr> +<td> + <p> + <code class="computeroutput"><span class="identifier">BOOST_NO_STD_OUTPUT_ITERATOR_ASSIGN</span></code> + </p> + </td> +<td> + <p> + Standard library + </p> + </td> +<td> + <p> + Defined if the standard library's output iterators are not assignable. + </p> + </td> +</tr> +<tr> +<td> + <p> + <code class="computeroutput"><span class="identifier">BOOST_NO_STD_TYPEINFO</span></code> + </p> + </td> +<td> + <p> + Standard library + </p> + </td> +<td> + <p> + The <typeinfo> header declares <code class="computeroutput"><span class="identifier">type_info</span></code> + in the global namespace instead of namespace std. + </p> + </td> +</tr> +<tr> +<td> + <p> + <code class="computeroutput"><span class="identifier">BOOST_NO_STD_USE_FACET</span></code> + </p> + </td> +<td> + <p> + Standard library + </p> + </td> +<td> + <p> + The standard library lacks a conforming <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">use_facet</span></code>. + </p> + </td> +</tr> +<tr> +<td> + <p> + <code class="computeroutput"><span class="identifier">BOOST_NO_STD_WSTREAMBUF</span></code> + </p> + </td> +<td> + <p> + Standard library + </p> + </td> +<td> + <p> + The standard library's implementation of <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">basic_streambuf</span><span class="special"><</span><span class="keyword">wchar_t</span><span class="special">></span></code> is either missing, incomplete, + or buggy. + </p> + </td> +</tr> +<tr> +<td> + <p> + <code class="computeroutput"><span class="identifier">BOOST_NO_STD_WSTRING</span></code> + </p> + </td> +<td> + <p> + Standard library + </p> + </td> +<td> + <p> + The standard library lacks <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">wstring</span></code>. + </p> + </td> +</tr> +<tr> +<td> + <p> + <code class="computeroutput"><span class="identifier">BOOST_NO_STDC_NAMESPACE</span></code> + </p> + </td> +<td> + <p> + Compiler, Platform + </p> + </td> +<td> + <p> + The contents of C++ standard headers for C library functions (the + <code class="computeroutput"><span class="special"><</span><span class="identifier">c</span><span class="special">...></span></code> headers) have not been placed + in namespace std. This test is difficult - some libraries "fake" + the std C functions by adding using declarations to import them + into namespace std, unfortunately they don't necessarily catch + all of them... + </p> + </td> +</tr> +<tr> +<td> + <p> + <code class="computeroutput"><span class="identifier">BOOST_NO_STRINGSTREAM</span></code> + </p> + </td> +<td> + <p> + Standard library + </p> + </td> +<td> + <p> + The C++ implementation does not provide the <code class="computeroutput"><span class="special"><</span><span class="identifier">sstream</span><span class="special">></span></code> + header. + </p> + </td> +</tr> +<tr> +<td> + <p> + <code class="computeroutput"><span class="identifier">BOOST_NO_SWPRINTF</span></code> + </p> + </td> +<td> + <p> + Platform + </p> + </td> +<td> + <p> + The platform does not have a conforming version of <code class="computeroutput"><span class="identifier">swprintf</span></code>. + </p> + </td> +</tr> +<tr> +<td> + <p> + <code class="computeroutput"><span class="identifier">BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION</span></code> + </p> + </td> +<td> + <p> + Compiler + </p> + </td> +<td> + <p> + Class template partial specialization (14.5.4 [temp.class.spec]) + not supported. + </p> + </td> +</tr> +<tr> +<td> + <p> + <code class="computeroutput"><span class="identifier">BOOST_NO_TEMPLATED_IOSTREAMS</span></code> + </p> + </td> +<td> + <p> + Standard library + </p> + </td> +<td> + <p> + The standard library does not provide templated iostream classes. + </p> + </td> +</tr> +<tr> +<td> + <p> + <code class="computeroutput"><span class="identifier">BOOST_NO_TEMPLATED_ITERATOR_CONSTRUCTORS</span></code> + </p> + </td> +<td> + <p> + Standard library + </p> + </td> +<td> + <p> + The standard library does not provide templated iterator constructors + for its containers. + </p> + </td> +</tr> +<tr> +<td> + <p> + <code class="computeroutput"><span class="identifier">BOOST_NO_TEMPLATE_TEMPLATES</span></code> + </p> + </td> +<td> + <p> + Compiler + </p> + </td> +<td> + <p> + The compiler does not support template template parameters. + </p> + </td> +</tr> +<tr> +<td> + <p> + <code class="computeroutput"><span class="identifier">BOOST_NO_TYPEID</span></code> + </p> + </td> +<td> + <p> + Compiler + </p> + </td> +<td> + <p> + The compiler does not support the typeid operator at all. + </p> + </td> +</tr> +<tr> +<td> + <p> + <code class="computeroutput"><span class="identifier">BOOST_NO_TYPENAME_WITH_CTOR</span></code> + </p> + </td> +<td> + <p> + Compiler + </p> + </td> +<td> + <p> + The typename keyword cannot be used when creating a temporary of + a Dependent type. + </p> + </td> +</tr> +<tr> +<td> + <p> + <code class="computeroutput"><span class="identifier">BOOST_NO_UNREACHABLE_RETURN_DETECTION</span></code> + </p> + </td> +<td> + <p> + Compiler + </p> + </td> +<td> + <p> + If a return is unreachable, then no return statement should be + required, however some compilers insist on it, while other issue + a bunch of warnings if it is in fact present. + </p> + </td> +</tr> +<tr> +<td> + <p> + <code class="computeroutput"><span class="identifier">BOOST_NO_USING_DECLARATION_OVERLOADS_FROM_TYPENAME_BASE</span></code> + </p> + </td> +<td> + <p> + Compiler + </p> + </td> +<td> + <p> + The compiler will not accept a using declaration that brings a + function from a typename used as a base class into a derived class + if functions of the same name are present in the derived class. + </p> + </td> +</tr> +<tr> +<td> + <p> + <code class="computeroutput"><span class="identifier">BOOST_NO_USING_TEMPLATE</span></code> + </p> + </td> +<td> + <p> + Compiler + </p> + </td> +<td> + <p> + The compiler will not accept a using declaration that imports a + template class or function from another namespace. Originally a + Borland specific problem with imports to/from the global namespace, + extended to MSVC6 which has a specific issue with importing template + classes (but not functions). + </p> + </td> +</tr> +<tr> +<td> + <p> + <code class="computeroutput"><span class="identifier">BOOST_NO_VOID_RETURNS</span></code> + </p> + </td> +<td> + <p> + Compiler + </p> + </td> +<td> + <p> + The compiler does not allow a void function to return the result + of calling another void function. +</p> +<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="keyword">void</span> <span class="identifier">f</span><span class="special">()</span> <span class="special">{}</span> +<span class="keyword">void</span> <span class="identifier">g</span><span class="special">()</span> <span class="special">{</span> <span class="keyword">return</span> <span class="identifier">f</span><span class="special">();</span> <span class="special">}</span> +</pre> +<p> + </p> + </td> +</tr> +</tbody> +</table></div> +</div> +<div class="section"> +<div class="titlepage"><div><div><h3 class="title"> +<a name="boost_config.boost_macro_reference.macros_that_describe_optional_features"></a><a name="config_features"></a><a class="link" href="boost_macro_reference.html#boost_config.boost_macro_reference.macros_that_describe_optional_features" title="Macros that describe optional features">Macros + that describe optional features</a> +</h3></div></div></div> +<p> + The following macros describe features that are not required by the C++ standard. + The macro is only defined if the feature is present. + </p> +<div class="informaltable"><table class="table"> +<colgroup> +<col> +<col> +<col> +</colgroup> +<thead><tr> +<th> + <p> + Macro + </p> + </th> +<th> + <p> + Section + </p> + </th> +<th> + <p> + Description + </p> + </th> +</tr></thead> +<tbody> +<tr> +<td> + <p> + <code class="computeroutput"><span class="identifier">BOOST_HAS_BETHREADS</span></code> + </p> + </td> +<td> + <p> + Platform + </p> + </td> +<td> + <p> + The platform supports BeOS style threads. + </p> + </td> +</tr> +<tr> +<td> + <p> + <code class="computeroutput"><span class="identifier">BOOST_HAS_CLOCK_GETTIME</span></code> + </p> + </td> +<td> + <p> + Platform + </p> + </td> +<td> + <p> + The platform has the POSIX API <code class="computeroutput"><span class="identifier">clock_gettime</span></code>. + </p> + </td> +</tr> +<tr> +<td> + <p> + <code class="computeroutput"><span class="identifier">BOOST_HAS_DIRENT_H</span></code> + </p> + </td> +<td> + <p> + Platform + </p> + </td> +<td> + <p> + The platform has the POSIX header <code class="computeroutput"><span class="special"><</span><span class="identifier">dirent</span><span class="special">.</span><span class="identifier">h</span><span class="special">></span></code>. + </p> + </td> +</tr> +<tr> +<td> + <p> + <code class="computeroutput"><span class="identifier">BOOST_HAS_EXPM1</span></code> + </p> + </td> +<td> + <p> + Platform + </p> + </td> +<td> + <p> + The platform has the functions <code class="computeroutput"><span class="identifier">expm1</span></code>, + <code class="computeroutput"><span class="identifier">expm1f</span></code> and <code class="computeroutput"><span class="identifier">expm1l</span></code> in <code class="computeroutput"><span class="special"><</span><span class="identifier">math</span><span class="special">.</span><span class="identifier">h</span><span class="special">></span></code> + </p> + </td> +</tr> +<tr> +<td> + <p> + <code class="computeroutput"><span class="identifier">BOOST_HAS_FTIME</span></code> + </p> + </td> +<td> + <p> + Platform + </p> + </td> +<td> + <p> + The platform has the Win32 API type FTIME. + </p> + </td> +</tr> +<tr> +<td> + <p> + <code class="computeroutput"><span class="identifier">BOOST_HAS_GETSYSTEMTIMEASFILETIME</span></code> + </p> + </td> +<td> + <p> + Platform + </p> + </td> +<td> + <p> + The platform has the Win32 API GetSystemTimeAsFileTime. + </p> + </td> +</tr> +<tr> +<td> + <p> + <code class="computeroutput"><span class="identifier">BOOST_HAS_GETTIMEOFDAY</span></code> + </p> + </td> +<td> + <p> + Platform + </p> + </td> +<td> + <p> + The platform has the POSIX API <code class="computeroutput"><span class="identifier">gettimeofday</span></code>. + </p> + </td> +</tr> +<tr> +<td> + <p> + <code class="computeroutput"><span class="identifier">BOOST_HAS_HASH</span></code> + </p> + </td> +<td> + <p> + Standard library + </p> + </td> +<td> + <p> + The C++ implementation provides the (SGI) hash_set and hash_map + classes. When defined, <code class="computeroutput"><span class="identifier">BOOST_HASH_SET_HEADER</span></code> + and <code class="computeroutput"><span class="identifier">BOOST_HASH_LIST_HEADER</span></code> + will contain the names of the header needed to access hash_set + and hash_map; <code class="computeroutput"><span class="identifier">BOOST_STD_EXTENSION_NAMESPACE</span></code> + will provide the namespace in which the two class templates reside. + </p> + </td> +</tr> +<tr> +<td> + <p> + <code class="computeroutput"><span class="identifier">BOOST_HAS_LOG1P</span></code> + </p> + </td> +<td> + <p> + Platform + </p> + </td> +<td> + <p> + The platform has the functions <code class="computeroutput"><span class="identifier">log1p</span></code>, + <code class="computeroutput"><span class="identifier">log1pf</span></code> and <code class="computeroutput"><span class="identifier">log1pl</span></code> in <code class="computeroutput"><span class="special"><</span><span class="identifier">math</span><span class="special">.</span><span class="identifier">h</span><span class="special">></span></code>. + </p> + </td> +</tr> +<tr> +<td> + <p> + <code class="computeroutput"><span class="identifier">BOOST_HAS_MACRO_USE_FACET</span></code> + </p> + </td> +<td> + <p> + Standard library + </p> + </td> +<td> + <p> + The standard library lacks a conforming <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">use_facet</span></code>, + but has a macro <code class="computeroutput"><span class="identifier">_USE</span><span class="special">(</span><span class="identifier">loc</span><span class="special">,</span> <span class="identifier">Type</span><span class="special">)</span></code> that does the job. This is primarily + for the Dinkumware std lib. + </p> + </td> +</tr> +<tr> +<td> + <p> + <code class="computeroutput"><span class="identifier">BOOST_HAS_MS_INT64</span></code> + </p> + </td> +<td> + <p> + Compiler + </p> + </td> +<td> + <p> + The compiler supports the <code class="computeroutput"><span class="identifier">__int64</span></code> + data type. + </p> + </td> +</tr> +<tr> +<td> + <p> + <code class="computeroutput"><span class="identifier">BOOST_HAS_NANOSLEEP</span></code> + </p> + </td> +<td> + <p> + Platform + </p> + </td> +<td> + <p> + The platform has the POSIX API nanosleep. + </p> + </td> +</tr> +<tr> +<td> + <p> + <code class="computeroutput"><span class="identifier">BOOST_HAS_NL_TYPES_H</span></code> + </p> + </td> +<td> + <p> + Platform + </p> + </td> +<td> + <p> + The platform has an <code class="computeroutput"><span class="special"><</span><span class="identifier">nl_types</span><span class="special">.</span><span class="identifier">h</span><span class="special">></span></code>. + </p> + </td> +</tr> +<tr> +<td> + <p> + <code class="computeroutput"><span class="identifier">BOOST_HAS_NRVO</span></code> + </p> + </td> +<td> + <p> + Compiler + </p> + </td> +<td> + <p> + Indicated that the compiler supports the named return value optimization + (NRVO). Used to select the most efficient implementation for some + function. See <a href="../../../../../boost/operators.hpp" target="_top"><code class="computeroutput"><span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">operators</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span></code></a> for example. + </p> + </td> +</tr> +<tr> +<td> + <p> + <code class="computeroutput"><span class="identifier">BOOST_HAS_PARTIAL_STD_ALLOCATOR</span></code> + </p> + </td> +<td> + <p> + Standard Library + </p> + </td> +<td> + <p> + The standard library has a partially conforming <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">allocator</span></code> + class, but without any of the member templates. + </p> + </td> +</tr> +<tr> +<td> + <p> + <code class="computeroutput"><span class="identifier">BOOST_HAS_PTHREAD_DELAY_NP</span></code> + </p> + </td> +<td> + <p> + Platform + </p> + </td> +<td> + <p> + The platform has the POSIX API <code class="computeroutput"><span class="identifier">pthread_delay_np</span></code>. + </p> + </td> +</tr> +<tr> +<td> + <p> + <code class="computeroutput"><span class="identifier">BOOST_HAS_PTHREAD_MUTEXATTR_SETTYPE</span></code> + </p> + </td> +<td> + <p> + Platform + </p> + </td> +<td> + <p> + The platform has the POSIX API <code class="computeroutput"><span class="identifier">pthread_mutexattr_settype</span></code>. + </p> + </td> +</tr> +<tr> +<td> + <p> + <code class="computeroutput"><span class="identifier">BOOST_HAS_PTHREAD_YIELD</span></code> + </p> + </td> +<td> + <p> + Platform + </p> + </td> +<td> + <p> + The platform has the POSIX API <code class="computeroutput"><span class="identifier">pthread_yield</span></code>. + </p> + </td> +</tr> +<tr> +<td> + <p> + <code class="computeroutput"><span class="identifier">BOOST_HAS_PTHREADS</span></code> + </p> + </td> +<td> + <p> + Platform + </p> + </td> +<td> + <p> + The platform support POSIX style threads. + </p> + </td> +</tr> +<tr> +<td> + <p> + <code class="computeroutput"><span class="identifier">BOOST_HAS_SCHED_YIELD</span></code> + </p> + </td> +<td> + <p> + Platform + </p> + </td> +<td> + <p> + The platform has the POSIX API <code class="computeroutput"><span class="identifier">sched_yield</span></code>. + </p> + </td> +</tr> +<tr> +<td> + <p> + <code class="computeroutput"><span class="identifier">BOOST_HAS_SGI_TYPE_TRAITS</span></code> + </p> + </td> +<td> + <p> + Compiler, Standard library + </p> + </td> +<td> + <p> + The compiler has native support for SGI style type traits. + </p> + </td> +</tr> +<tr> +<td> + <p> + <code class="computeroutput"><span class="identifier">BOOST_HAS_STDINT_H</span></code> + </p> + </td> +<td> + <p> + Platform + </p> + </td> +<td> + <p> + The platform has a <code class="computeroutput"><span class="special"><</span><span class="identifier">stdint</span><span class="special">.</span><span class="identifier">h</span><span class="special">></span></code> + </p> + </td> +</tr> +<tr> +<td> + <p> + <code class="computeroutput"><span class="identifier">BOOST_HAS_SLIST</span></code> + </p> + </td> +<td> + <p> + Standard library + </p> + </td> +<td> + <p> + The C++ implementation provides the (SGI) slist class. When defined, + <code class="computeroutput"><span class="identifier">BOOST_SLIST_HEADER</span></code> + will contain the name of the header needed to access <code class="computeroutput"><span class="identifier">slist</span></code> and <code class="computeroutput"><span class="identifier">BOOST_STD_EXTENSION_NAMESPACE</span></code> + will provide the namespace in which <code class="computeroutput"><span class="identifier">slist</span></code> + resides. + </p> + </td> +</tr> +<tr> +<td> + <p> + <code class="computeroutput"><span class="identifier">BOOST_HAS_STLP_USE_FACET</span></code> + </p> + </td> +<td> + <p> + Standard library + </p> + </td> +<td> + <p> + The standard library lacks a conforming <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">use_facet</span></code>, + but has a workaround class-version that does the job. This is primarily + for the STLport std lib. + </p> + </td> +</tr> +<tr> +<td> + <p> + <code class="computeroutput"><span class="identifier">BOOST_HAS_TR1_ARRAY</span></code> + </p> + </td> +<td> + <p> + Standard library + </p> + </td> +<td> + <p> + The library has a TR1 conforming version of <code class="computeroutput"><span class="special"><</span><span class="identifier">array</span><span class="special">></span></code>. + </p> + </td> +</tr> +<tr> +<td> + <p> + <code class="computeroutput"><span class="identifier">BOOST_HAS_TR1_COMPLEX_OVERLOADS</span></code> + </p> + </td> +<td> + <p> + Standard library + </p> + </td> +<td> + <p> + The library has a version of <code class="computeroutput"><span class="special"><</span><span class="identifier">complex</span><span class="special">></span></code> + that supports passing scalars to the complex number algorithms. + </p> + </td> +</tr> +<tr> +<td> + <p> + <code class="computeroutput"><span class="identifier">BOOST_HAS_TR1_COMPLEX_INVERSE_TRIG</span></code> + </p> + </td> +<td> + <p> + Standard library + </p> + </td> +<td> + <p> + The library has a version of <code class="computeroutput"><span class="special"><</span><span class="identifier">complex</span><span class="special">></span></code> + that includes the new inverse trig functions from TR1. + </p> + </td> +</tr> +<tr> +<td> + <p> + <code class="computeroutput"><span class="identifier">BOOST_HAS_TR1_REFERENCE_WRAPPER</span></code> + </p> + </td> +<td> + <p> + Standard library + </p> + </td> +<td> + <p> + The library has TR1 conforming reference wrappers in <code class="computeroutput"><span class="special"><</span><span class="identifier">functional</span><span class="special">></span></code>. + </p> + </td> +</tr> +<tr> +<td> + <p> + <code class="computeroutput"><span class="identifier">BOOST_HAS_TR1_RESULT_OF</span></code> + </p> + </td> +<td> + <p> + Standard library + </p> + </td> +<td> + <p> + The library has a TR1 conforming result_of template in <code class="computeroutput"><span class="special"><</span><span class="identifier">functional</span><span class="special">></span></code>. + </p> + </td> +</tr> +<tr> +<td> + <p> + <code class="computeroutput"><span class="identifier">BOOST_HAS_TR1_MEM_FN</span></code> + </p> + </td> +<td> + <p> + Standard library + </p> + </td> +<td> + <p> + The library has a TR1 conforming mem_fn function template in <code class="computeroutput"><span class="special"><</span><span class="identifier">functional</span><span class="special">></span></code>. + </p> + </td> +</tr> +<tr> +<td> + <p> + <code class="computeroutput"><span class="identifier">BOOST_HAS_TR1_BIND</span></code> + </p> + </td> +<td> + <p> + Standard library + </p> + </td> +<td> + <p> + The library has a TR1 conforming bind function template in <code class="computeroutput"><span class="special"><</span><span class="identifier">functional</span><span class="special">></span></code>. + </p> + </td> +</tr> +<tr> +<td> + <p> + <code class="computeroutput"><span class="identifier">BOOST_HAS_TR1_FUNCTION</span></code> + </p> + </td> +<td> + <p> + Standard library + </p> + </td> +<td> + <p> + The library has a TR1 conforming function class template in <code class="computeroutput"><span class="special"><</span><span class="identifier">functional</span><span class="special">></span></code>. + </p> + </td> +</tr> +<tr> +<td> + <p> + <code class="computeroutput"><span class="identifier">BOOST_HAS_TR1_HASH</span></code> + </p> + </td> +<td> + <p> + Standard library + </p> + </td> +<td> + <p> + The library has a TR1 conforming hash function template in <code class="computeroutput"><span class="special"><</span><span class="identifier">functional</span><span class="special">></span></code>. + </p> + </td> +</tr> +<tr> +<td> + <p> + <code class="computeroutput"><span class="identifier">BOOST_HAS_TR1_SHARED_PTR</span></code> + </p> + </td> +<td> + <p> + Standard library + </p> + </td> +<td> + <p> + The library has a TR1 conforming <code class="computeroutput"><span class="identifier">shared_ptr</span></code> + class template in <code class="computeroutput"><span class="special"><</span><span class="identifier">memory</span><span class="special">></span></code>. + </p> + </td> +</tr> +<tr> +<td> + <p> + <code class="computeroutput"><span class="identifier">BOOST_HAS_TR1_RANDOM</span></code> + </p> + </td> +<td> + <p> + Standard library + </p> + </td> +<td> + <p> + The library has a TR1 conforming version of <code class="computeroutput"><span class="special"><</span><span class="identifier">random</span><span class="special">></span></code>. + </p> + </td> +</tr> +<tr> +<td> + <p> + <code class="computeroutput"><span class="identifier">BOOST_HAS_TR1_REGEX</span></code> + </p> + </td> +<td> + <p> + Standard library + </p> + </td> +<td> + <p> + The library has a TR1 conforming version of <code class="computeroutput"><span class="special"><</span><span class="identifier">regex</span><span class="special">></span></code>. + </p> + </td> +</tr> +<tr> +<td> + <p> + <code class="computeroutput"><span class="identifier">BOOST_HAS_TR1_TUPLE</span></code> + </p> + </td> +<td> + <p> + Standard library + </p> + </td> +<td> + <p> + The library has a TR1 conforming version of <code class="computeroutput"><span class="special"><</span><span class="identifier">tuple</span><span class="special">></span></code>. + </p> + </td> +</tr> +<tr> +<td> + <p> + <code class="computeroutput"><span class="identifier">BOOST_HAS_TR1_TYPE_TRAITS</span></code> + </p> + </td> +<td> + <p> + Standard library + </p> + </td> +<td> + <p> + The library has a TR1 conforming version of <code class="computeroutput"><span class="special"><</span><span class="identifier">type_traits</span><span class="special">></span></code>. + </p> + </td> +</tr> +<tr> +<td> + <p> + <code class="computeroutput"><span class="identifier">BOOST_HAS_TR1_UTILITY</span></code> + </p> + </td> +<td> + <p> + Standard library + </p> + </td> +<td> + <p> + The library has the TR1 additions to <code class="computeroutput"><span class="special"><</span><span class="identifier">utility</span><span class="special">></span></code> + (tuple interface to <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">pair</span></code>). + </p> + </td> +</tr> +<tr> +<td> + <p> + <code class="computeroutput"><span class="identifier">BOOST_HAS_TR1_UNORDERED_MAP</span></code> + </p> + </td> +<td> + <p> + Standard library + </p> + </td> +<td> + <p> + The library has a TR1 conforming version of <code class="computeroutput"><span class="special"><</span><span class="identifier">unordered_map</span><span class="special">></span></code>. + </p> + </td> +</tr> +<tr> +<td> + <p> + <code class="computeroutput"><span class="identifier">BOOST_HAS_TR1_UNORDERED_SET</span></code> + </p> + </td> +<td> + <p> + Standard library + </p> + </td> +<td> + <p> + The library has a TR1 conforming version of <code class="computeroutput"><span class="special"><</span><span class="identifier">unordered_set</span><span class="special">></span></code>. + </p> + </td> +</tr> +<tr> +<td> + <p> + <code class="computeroutput"><span class="identifier">BOOST_HAS_TR1</span></code> + </p> + </td> +<td> + <p> + Standard library + </p> + </td> +<td> + <p> + Implies all the other <code class="computeroutput"><span class="identifier">BOOST_HAS_TR1_</span><span class="special">*</span></code> macros should be set. + </p> + </td> +</tr> +<tr> +<td> + <p> + <code class="computeroutput"><span class="identifier">BOOST_HAS_THREADS</span></code> + </p> + </td> +<td> + <p> + Platform, Compiler + </p> + </td> +<td> + <p> + Defined if the compiler, in its current translation mode, supports + multiple threads of execution. + </p> + </td> +</tr> +<tr> +<td> + <p> + <code class="computeroutput"><span class="identifier">BOOST_HAS_TWO_ARG_USE_FACET</span></code> + </p> + </td> +<td> + <p> + Standard library + </p> + </td> +<td> + <p> + The standard library lacks a conforming std::use_facet, but has + a two argument version that does the job. This is primarily for + the Rogue Wave std lib. + </p> + </td> +</tr> +<tr> +<td> + <p> + <code class="computeroutput"><span class="identifier">BOOST_HAS_UNISTD_H</span></code> + </p> + </td> +<td> + <p> + Platform + </p> + </td> +<td> + <p> + The Platform provides <code class="computeroutput"><span class="special"><</span><span class="identifier">unistd</span><span class="special">.</span><span class="identifier">h</span><span class="special">></span></code>. + </p> + </td> +</tr> +<tr> +<td> + <p> + <code class="computeroutput"><span class="identifier">BOOST_HAS_WINTHREADS</span></code> + </p> + </td> +<td> + <p> + Platform + </p> + </td> +<td> + <p> + The platform supports MS Windows style threads. + </p> + </td> +</tr> +<tr> +<td> + <p> + <code class="computeroutput"><span class="identifier">BOOST_MSVC_STD_ITERATOR</span></code> + </p> + </td> +<td> + <p> + Standard library + </p> + </td> +<td> + <p> + Microsoft's broken version of <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">iterator</span></code> + is being used. This implies that <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">iterator</span></code> + takes no more than two template parameters. + </p> + </td> +</tr> +<tr> +<td> + <p> + <code class="computeroutput"><span class="identifier">BOOST_MSVC6_MEMBER_TEMPLATES</span></code> + </p> + </td> +<td> + <p> + Compiler + </p> + </td> +<td> + <p> + Microsoft Visual C++ 6.0 has enough member template idiosyncrasies + (being polite) that <code class="computeroutput"><span class="identifier">BOOST_NO_MEMBER_TEMPLATES</span></code> + is defined for this compiler. <code class="computeroutput"><span class="identifier">BOOST_MSVC6_MEMBER_TEMPLATES</span></code> + is defined to allow compiler specific workarounds. This macro gets + defined automatically if <code class="computeroutput"><span class="identifier">BOOST_NO_MEMBER_TEMPLATES</span></code> + is not defined - in other words this is treated as a strict subset + of the features required by the standard. + </p> + </td> +</tr> +<tr> +<td> + <p> + <code class="computeroutput"><span class="identifier">BOOST_HAS_STDINT_H</span></code> + </p> + </td> +<td> + <p> + Platform + </p> + </td> +<td> + <p> + There are no 1998 C++ Standard headers <code class="computeroutput"><span class="special"><</span><span class="identifier">stdint</span><span class="special">.</span><span class="identifier">h</span><span class="special">></span></code> + or <code class="computeroutput"><span class="special"><</span><span class="identifier">cstdint</span><span class="special">></span></code>, although the 1999 C Standard + does include <code class="computeroutput"><span class="special"><</span><span class="identifier">stdint</span><span class="special">.</span><span class="identifier">h</span><span class="special">></span></code>. + If <code class="computeroutput"><span class="special"><</span><span class="identifier">stdint</span><span class="special">.</span><span class="identifier">h</span><span class="special">></span></code> is present, <code class="computeroutput"><span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">stdint</span><span class="special">.</span><span class="identifier">h</span><span class="special">></span></code> + can make good use of it, so a flag is supplied (signalling presence; + thus the default is not present, conforming to the current C++ + standard). + </p> + </td> +</tr> +</tbody> +</table></div> +</div> +<div class="section"> +<div class="titlepage"><div><div><h3 class="title"> +<a name="boost_config.boost_macro_reference.macros_that_describe_possible_c___future_features"></a><a class="link" href="boost_macro_reference.html#boost_config.boost_macro_reference.macros_that_describe_possible_c___future_features" title="Macros that describe possible C++ future features">Macros + that describe possible C++ future features</a> +</h3></div></div></div> +<p> + The following macros describe features that may be included in some future + ISO C++ standard, but have not yet been approved for inclusion in the language. + </p> +<div class="informaltable"><table class="table"> +<colgroup> +<col> +<col> +</colgroup> +<thead><tr> +<th> + <p> + Macro + </p> + </th> +<th> + <p> + Description + </p> + </th> +</tr></thead> +<tbody><tr> +<td> + <p> + <code class="computeroutput"><span class="identifier">BOOST_HAS_CONCEPTS</span></code> + </p> + </td> +<td> + <p> + The compiler supports concepts. + </p> + </td> +</tr></tbody> +</table></div> +</div> +<div class="section"> +<div class="titlepage"><div><div><h3 class="title"> +<a name="boost_config.boost_macro_reference.macros_that_describe_c__11_features_not_supported"></a><a class="link" href="boost_macro_reference.html#boost_config.boost_macro_reference.macros_that_describe_c__11_features_not_supported" title="Macros that describe C++11 features not supported">Macros + that describe C++11 features not supported</a> +</h3></div></div></div> +<p> + The following macros describe features in the 2011 ISO C++ standard, formerly + known as C++0x, that are not yet supported by a particular compiler or library. + </p> +<div class="informaltable"><table class="table"> +<colgroup> +<col> +<col> +</colgroup> +<thead><tr> +<th> + <p> + Macro + </p> + </th> +<th> + <p> + Description + </p> + </th> +</tr></thead> +<tbody> +<tr> +<td> + <p> + <code class="computeroutput"><span class="identifier">BOOST_NO_0X_HDR_ARRAY</span></code> + </p> + </td> +<td> + <p> + The standard library does not provide header <array>. + </p> + </td> +</tr> +<tr> +<td> + <p> + <code class="computeroutput"><span class="identifier">BOOST_NO_0X_HDR_CHRONO</span></code> + </p> + </td> +<td> + <p> + The standard library does not provide header <chrono>. + </p> + </td> +</tr> +<tr> +<td> + <p> + <code class="computeroutput"><span class="identifier">BOOST_NO_0X_HDR_CODECVT</span></code> + </p> + </td> +<td> + <p> + The standard library does not provide header <codecvt>. + </p> + </td> +</tr> +<tr> +<td> + <p> + <code class="computeroutput"><span class="identifier">BOOST_NO_0X_HDR_CONDITION_VARIABLE</span></code> + </p> + </td> +<td> + <p> + The standard library does not provide header <condition_variable>. + </p> + </td> +</tr> +<tr> +<td> + <p> + <code class="computeroutput"><span class="identifier">BOOST_NO_0X_HDR_FORWARD_LIST</span></code> + </p> + </td> +<td> + <p> + The standard library does not provide header <forward_list>. + </p> + </td> +</tr> +<tr> +<td> + <p> + <code class="computeroutput"><span class="identifier">BOOST_NO_0X_HDR_FUTURE</span></code> + </p> + </td> +<td> + <p> + The standard library does not provide header <future>. + </p> + </td> +</tr> +<tr> +<td> + <p> + <code class="computeroutput"><span class="identifier">BOOST_NO_0X_HDR_INITIALIZER_LIST</span></code> + </p> + </td> +<td> + <p> + The standard library does not provide header <initializer_list>. + </p> + </td> +</tr> +<tr> +<td> + <p> + <code class="computeroutput"><span class="identifier">BOOST_NO_0X_HDR_MUTEX</span></code> + </p> + </td> +<td> + <p> + The standard library does not provide header <mutex>. + </p> + </td> +</tr> +<tr> +<td> + <p> + <code class="computeroutput"><span class="identifier">BOOST_NO_0X_HDR_RANDOM</span></code> + </p> + </td> +<td> + <p> + The standard library does not provide header <random>. + </p> + </td> +</tr> +<tr> +<td> + <p> + <code class="computeroutput"><span class="identifier">BOOST_NO_0X_HDR_RATIO</span></code> + </p> + </td> +<td> + <p> + The standard library does not provide header <ratio>. + </p> + </td> +</tr> +<tr> +<td> + <p> + <code class="computeroutput"><span class="identifier">BOOST_NO_0X_HDR_REGEX</span></code> + </p> + </td> +<td> + <p> + The standard library does not provide header <regex>. + </p> + </td> +</tr> +<tr> +<td> + <p> + <code class="computeroutput"><span class="identifier">BOOST_NO_0X_HDR_SYSTEM_ERROR</span></code> + </p> + </td> +<td> + <p> + The standard library does not provide header <system_error>. + </p> + </td> +</tr> +<tr> +<td> + <p> + <code class="computeroutput"><span class="identifier">BOOST_NO_0X_HDR_THREAD</span></code> + </p> + </td> +<td> + <p> + The standard library does not provide header <thread>. + </p> + </td> +</tr> +<tr> +<td> + <p> + <code class="computeroutput"><span class="identifier">BOOST_NO_0X_HDR_TUPLE</span></code> + </p> + </td> +<td> + <p> + The standard library does not provide header <tuple>. + </p> + </td> +</tr> +<tr> +<td> + <p> + <code class="computeroutput"><span class="identifier">BOOST_NO_0X_HDR_TYPEINDEX</span></code> + </p> + </td> +<td> + <p> + The standard library does not provide header <typeindex>. + </p> + </td> +</tr> +<tr> +<td> + <p> + <code class="computeroutput"><span class="identifier">BOOST_NO_0X_HDR_TYPE_TRAITS</span></code> + </p> + </td> +<td> + <p> + The standard library does not provide header <type_traits>. + </p> + </td> +</tr> +<tr> +<td> + <p> + <code class="computeroutput"><span class="identifier">BOOST_NO_0X_HDR_UNORDERED_MAP</span></code> + </p> + </td> +<td> + <p> + The standard library does not provide header <unordered_map>. + </p> + </td> +</tr> +<tr> +<td> + <p> + <code class="computeroutput"><span class="identifier">BOOST_NO_0X_HDR_UNORDERED_SET</span></code> + </p> + </td> +<td> + <p> + The standard library does not provide header <unordered_set>. + </p> + </td> +</tr> +<tr> +<td> + <p> + <code class="computeroutput"><span class="identifier">BOOST_NO_AUTO_DECLARATIONS</span></code> + </p> + </td> +<td> + <p> + The compiler does not support type deduction for variables declared + with the <code class="computeroutput"><span class="keyword">auto</span></code> keyword + (<code class="computeroutput"><span class="keyword">auto</span> <span class="identifier">var</span> + <span class="special">=</span> <span class="special">...;</span></code>). + </p> + </td> +</tr> +<tr> +<td> + <p> + <code class="computeroutput"><span class="identifier">BOOST_NO_AUTO_MULTIDECLARATIONS</span></code> + </p> + </td> +<td> + <p> + The compiler does not support type deduction for multiple variables + declared with the <code class="computeroutput"><span class="keyword">auto</span></code> + keyword (<code class="computeroutput"><span class="keyword">auto</span> <span class="identifier">var</span> + <span class="special">=</span> <span class="special">...,</span> + <span class="special">*</span><span class="identifier">ptr</span> + <span class="special">=</span> <span class="special">...;</span></code>). + </p> + </td> +</tr> +<tr> +<td> + <p> + <code class="computeroutput"><span class="identifier">BOOST_NO_CHAR16_T</span></code> + </p> + </td> +<td> + <p> + The compiler does not support type <code class="computeroutput"><span class="identifier">char16_t</span></code>. + </p> + </td> +</tr> +<tr> +<td> + <p> + <code class="computeroutput"><span class="identifier">BOOST_NO_CHAR32_T</span></code> + </p> + </td> +<td> + <p> + The compiler does not support type <code class="computeroutput"><span class="identifier">char32_t</span></code>. + </p> + </td> +</tr> +<tr> +<td> + <p> + <code class="computeroutput"><span class="identifier">BOOST_NO_TEMPLATE_ALIASES</span></code> + </p> + </td> +<td> + <p> + The compiler does not support template aliases. + </p> + </td> +</tr> +<tr> +<td> + <p> + <code class="computeroutput"><span class="identifier">BOOST_NO_CONSTEXPR</span></code> + </p> + </td> +<td> + <p> + The compiler does not support <code class="computeroutput"><span class="identifier">constexpr</span></code>. + </p> + </td> +</tr> +<tr> +<td> + <p> + <code class="computeroutput"><span class="identifier">BOOST_NO_DECLTYPE</span></code> + </p> + </td> +<td> + <p> + The compiler does not support <code class="computeroutput"><span class="identifier">decltype</span></code>. + </p> + </td> +</tr> +<tr> +<td> + <p> + <code class="computeroutput"><span class="identifier">BOOST_NO_DECLTYPE_N3276</span></code> + </p> + </td> +<td> + <p> + The compiler does not support the extension to <code class="computeroutput"><span class="identifier">decltype</span></code> + described in <a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2011/n3276.pdf" target="_top">N3276</a>, + accepted in Madrid, March 2011. + </p> + </td> +</tr> +<tr> +<td> + <p> + <code class="computeroutput"><span class="identifier">BOOST_NO_DEFAULTED_FUNCTIONS</span></code> + </p> + </td> +<td> + <p> + The compiler does not support defaulted (<code class="computeroutput"><span class="special">=</span> + <span class="keyword">default</span></code>) functions. + </p> + </td> +</tr> +<tr> +<td> + <p> + <code class="computeroutput"><span class="identifier">BOOST_NO_DELETED_FUNCTIONS</span></code> + </p> + </td> +<td> + <p> + The compiler does not support deleted (<code class="computeroutput"><span class="special">=</span> + <span class="keyword">delete</span></code>) functions. + </p> + </td> +</tr> +<tr> +<td> + <p> + <code class="computeroutput"><span class="identifier">BOOST_NO_EXPLICIT_CONVERSION_OPERATORS</span></code> + </p> + </td> +<td> + <p> + The compiler does not support explicit conversion operators (<code class="computeroutput"><span class="keyword">explicit</span> <span class="keyword">operator</span> + <span class="identifier">T</span><span class="special">()</span></code>). + </p> + </td> +</tr> +<tr> +<td> + <p> + <code class="computeroutput"><span class="identifier">BOOST_NO_EXTERN_TEMPLATE</span></code> + </p> + </td> +<td> + <p> + The compiler does not support explicit instantiation forward declarations + for templates (<code class="computeroutput"><span class="keyword">extern</span> <span class="keyword">template</span> <span class="special">...</span></code>). + </p> + </td> +</tr> +<tr> +<td> + <p> + <code class="computeroutput"><span class="identifier">BOOST_NO_FUNCTION_TEMPLATE_DEFAULT_ARGS</span></code> + </p> + </td> +<td> + <p> + The compiler does not support default template arguments for function + templates. + </p> + </td> +</tr> +<tr> +<td> + <p> + <code class="computeroutput"><span class="identifier">BOOST_NO_INITIALIZER_LISTS</span></code> + </p> + </td> +<td> + <p> + The C++ compiler does not support C++0x initializer lists. + </p> + </td> +</tr> +<tr> +<td> + <p> + <code class="computeroutput"><span class="identifier">BOOST_NO_LAMBDAS</span></code> + </p> + </td> +<td> + <p> + The compiler does not support Lambdas. + </p> + </td> +</tr> +<tr> +<td> + <p> + <code class="computeroutput"><span class="identifier">BOOST_NO_LONG_LONG</span></code> + </p> + </td> +<td> + <p> + The compiler does not support <code class="computeroutput"><span class="keyword">long</span> + <span class="keyword">long</span></code>. + </p> + </td> +</tr> +<tr> +<td> + <p> + <code class="computeroutput"><span class="identifier">BOOST_NO_NOEXCEPT</span></code> + </p> + </td> +<td> + <p> + The compiler does not support <code class="computeroutput"><span class="identifier">noexcept</span></code>. + </p> + </td> +</tr> +<tr> +<td> + <p> + <code class="computeroutput"><span class="identifier">BOOST_NO_NULLPTR</span></code> + </p> + </td> +<td> + <p> + The compiler does not support <code class="computeroutput"><span class="identifier">nullptr</span></code>. + </p> + </td> +</tr> +<tr> +<td> + <p> + <code class="computeroutput"><span class="identifier">BOOST_NO_RAW_LITERALS</span></code> + </p> + </td> +<td> + <p> + The compiler does not support raw string literals. + </p> + </td> +</tr> +<tr> +<td> + <p> + <code class="computeroutput"><span class="identifier">BOOST_NO_RVALUE_REFERENCES</span></code> + </p> + </td> +<td> + <p> + The compiler does not support r-value references. + </p> + </td> +</tr> +<tr> +<td> + <p> + <code class="computeroutput"><span class="identifier">BOOST_NO_SCOPED_ENUMS</span></code> + </p> + </td> +<td> + <p> + The compiler does not support scoped enumerations (<code class="computeroutput"><span class="keyword">enum</span> <span class="keyword">class</span></code>). + </p> + </td> +</tr> +<tr> +<td> + <p> + <code class="computeroutput"><span class="identifier">BOOST_NO_STATIC_ASSERT</span></code> + </p> + </td> +<td> + <p> + The compiler does not support <code class="computeroutput"><span class="identifier">static_assert</span></code>. + </p> + </td> +</tr> +<tr> +<td> + <p> + <code class="computeroutput"><span class="identifier">BOOST_NO_STD_UNORDERD</span></code> + </p> + </td> +<td> + <p> + The standard library does not support <unordered_map> and + <unordered_set>. + </p> + </td> +</tr> +<tr> +<td> + <p> + <code class="computeroutput"><span class="identifier">BOOST_NO_TEMPLATE_ALIASES</span></code> + </p> + </td> +<td> + <p> + The compiler does not support template aliases. + </p> + </td> +</tr> +<tr> +<td> + <p> + <code class="computeroutput"><span class="identifier">BOOST_NO_UNICODE_LITERALS</span></code> + </p> + </td> +<td> + <p> + The compiler does not support Unicode (<code class="computeroutput"><span class="identifier">u8</span></code>, + <code class="computeroutput"><span class="identifier">u</span></code>, <code class="computeroutput"><span class="identifier">U</span></code>) literals. + </p> + </td> +</tr> +<tr> +<td> + <p> + <code class="computeroutput"><span class="identifier">BOOST_NO_UNIFIED_INITIALIZATION_SYNTAX</span></code> + </p> + </td> +<td> + <p> + The compiler does not support the <a href="http://en.wikipedia.org/wiki/C%2B%2B0x#Uniform_initialization" target="_top">C++11 + Unified Initialization Syntax</a>. + </p> + </td> +</tr> +<tr> +<td> + <p> + <code class="computeroutput"><span class="identifier">BOOST_NO_VARIADIC_TEMPLATES</span></code> + </p> + </td> +<td> + <p> + The compiler does not support variadic templates. + </p> + </td> +</tr> +<tr> +<td> + <p> + <code class="computeroutput"><span class="identifier">BOOST_NO_VARIADIC_MACROS</span></code> + </p> + </td> +<td> + <p> + The compiler does not support variadic macros. + </p> + </td> +</tr> +</tbody> +</table></div> +</div> +<div class="section"> +<div class="titlepage"><div><div><h3 class="title"> +<a name="boost_config.boost_macro_reference.macros_that_allow_use_of_c__11_features_with_c__03_compilers"></a><a name="config_11_for_03"></a><a class="link" href="boost_macro_reference.html#boost_config.boost_macro_reference.macros_that_allow_use_of_c__11_features_with_c__03_compilers" title="Macros that allow use of C++11 features with C++03 compilers">Macros + that allow use of C++11 features with C++03 compilers</a> +</h3></div></div></div> +<p> + The following macros allow use of C++11 features even with compilers that + do not yet provide compliant C++11 support. + </p> +<div class="informaltable"><table class="table"> +<colgroup> +<col> +<col> +</colgroup> +<thead><tr> +<th> + <p> + Macro + </p> + </th> +<th> + <p> + Section + </p> + </th> +<th> + <p> + Description + </p> + </th> +</tr></thead> +<tbody> +<tr> +<td> + <p> + <code class="computeroutput"><span class="identifier">BOOST_CONSTEXPR</span></code> + </p> + </td> +<td> + <p> + Some compilers don't support the use of <code class="computeroutput"><span class="identifier">constexpr</span></code>. + This macro expands to nothing on those compilers, and <code class="computeroutput"><span class="identifier">constexpr</span></code> elsewhere. For example, + when defining a constexpr function or constructor replace: +</p> +<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">constexpr</span> <span class="identifier">tuple</span><span class="special">();</span> +</pre> +<p> + with: +</p> +<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">BOOST_CONSTEXPR</span> <span class="identifier">tuple</span><span class="special">();</span> +</pre> +<p> + </p> + </td> +</tr> +<tr> +<td> + <p> + <code class="computeroutput"><span class="identifier">BOOST_CONSTEXPR_OR_CONST</span></code> + </p> + </td> +<td> + <p> + Some compilers don't support the use of <code class="computeroutput"><span class="identifier">constexpr</span></code>. + This macro expands to <code class="computeroutput"><span class="keyword">const</span></code> + on those compilers, and <code class="computeroutput"><span class="identifier">constexpr</span></code> + elsewhere. For example, when defining const expr variables replace: + +</p> +<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="keyword">static</span> <span class="identifier">constexpr</span> <span class="identifier">UIntType</span> <span class="identifier">xor_mask</span> <span class="special">=</span> <span class="identifier">a</span><span class="special">;</span> +</pre> +<p> + with: +</p> +<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="keyword">static</span> <span class="identifier">BOOST_CONSTEXPR_OR_CONST</span> <span class="identifier">UIntType</span> <span class="identifier">xor_mask</span> <span class="special">=</span> <span class="identifier">a</span><span class="special">;</span> +</pre> +<p> + </p> + </td> +</tr> +<tr> +<td> + <p> + <code class="computeroutput"><span class="identifier">BOOST_STATIC_CONSTEXPR</span></code> + </p> + </td> +<td> + <p> + This is a shortcut for <code class="computeroutput"><span class="keyword">static</span> + <span class="identifier">BOOST_CONSTEXPR_OR_CONST</span></code>For + example, when defining const expr variables replace: +</p> +<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="keyword">static</span> <span class="identifier">constexpr</span> <span class="identifier">UIntType</span> <span class="identifier">xor_mask</span> <span class="special">=</span> <span class="identifier">a</span><span class="special">;</span> +</pre> +<p> + with: +</p> +<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">BOOST_STATIC_CONSTEXPR</span> <span class="identifier">UIntType</span> <span class="identifier">xor_mask</span> <span class="special">=</span> <span class="identifier">a</span><span class="special">;</span> +</pre> +<p> + </p> + </td> +</tr> +<tr> +<td> + <p> + +</p> +<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">BOOST_NOEXCEPT</span> +<span class="identifier">BOOST_NOEXCEPT_IF</span><span class="special">(</span><span class="identifier">Predicate</span><span class="special">)</span> +<span class="identifier">BOOST_NOEXCEPT_EXPR</span><span class="special">(</span><span class="identifier">Expression</span><span class="special">)</span> +</pre> +<p> + </p> + </td> +<td> + <p> + If <code class="computeroutput"><span class="identifier">BOOST_NO_NOEXCEPT</span></code> + is defined (i.e. C++03 compliant compilers) these macros are defined + as: + </p> + <div class="blockquote"><blockquote class="blockquote"> +<p> + +</p> +<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="preprocessor">#define</span> <span class="identifier">BOOST_NOEXCEPT</span> +<span class="preprocessor">#define</span> <span class="identifier">BOOST_NOEXCEPT_IF</span><span class="special">(</span><span class="identifier">Predicate</span><span class="special">)</span> +<span class="preprocessor">#define</span> <span class="identifier">BOOST_NOEXCEPT_EXPR</span><span class="special">(</span><span class="identifier">Expression</span><span class="special">)</span> <span class="keyword">false</span> +</pre> +<p> + </p> +</blockquote></div> + <p> + If <code class="computeroutput"><span class="identifier">BOOST_NO_NOEXCEPT</span></code> + is not defined (i.e. C++11 compliant compilers) they are defined + as: + </p> + <div class="blockquote"><blockquote class="blockquote"> +<p> + +</p> +<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="preprocessor">#define</span> <span class="identifier">BOOST_NOEXCEPT</span> <span class="identifier">noexcept</span> +<span class="preprocessor">#define</span> <span class="identifier">BOOST_NOEXCEPT_IF</span><span class="special">(</span><span class="identifier">Predicate</span><span class="special">)</span> <span class="identifier">noexcept</span><span class="special">((</span><span class="identifier">Predicate</span><span class="special">))</span> +<span class="preprocessor">#define</span> <span class="identifier">BOOST_NOEXCEPT_EXPR</span><span class="special">(</span><span class="identifier">Expression</span><span class="special">)</span> <span class="identifier">noexcept</span><span class="special">((</span><span class="identifier">Expression</span><span class="special">))</span> +</pre> +<p> + </p> +</blockquote></div> + </td> +</tr> +</tbody> +</table></div> +</div> +<div class="section"> +<div class="titlepage"><div><div><h3 class="title"> +<a name="boost_config.boost_macro_reference.boost_helper_macros"></a><a name="config_helpers"></a><a class="link" href="boost_macro_reference.html#boost_config.boost_macro_reference.boost_helper_macros" title="Boost Helper Macros">Boost + Helper Macros</a> +</h3></div></div></div> +<p> + The following macros are either simple helpers, or macros that provide workarounds + for compiler/standard library defects. + </p> +<div class="informaltable"><table class="table"> +<colgroup> +<col> +<col> +</colgroup> +<thead><tr> +<th> + <p> + Macro + </p> + </th> +<th> + <p> + Description + </p> + </th> +</tr></thead> +<tbody> +<tr> +<td> + <p> + <code class="computeroutput"><span class="identifier">BOOST_WORKAROUND</span></code> + </p> + </td> +<td> + <p> + This macro is used where a compiler specific workaround is required + that is not otherwise described by one of the other Boost.Config + macros. To use the macro you must first +</p> +<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">detail</span><span class="special">/</span><span class="identifier">workaround</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span> +</pre> +<p> + usage is then: +</p> +<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="preprocessor">#if</span> <span class="identifier">BOOST_WORKAROUND</span><span class="special">(</span><span class="identifier">MACRONAME</span><span class="special">,</span> <span class="identifier">CONDITION</span><span class="special">)</span> + <span class="comment">// workaround code goes here...</span> +<span class="preprocessor">#else</span> + <span class="comment">// Standard conforming code goes here...</span> +<span class="preprocessor">#endif</span> +</pre> +<p> + where <code class="computeroutput"><span class="identifier">MACRONAME</span></code> + is a macro that usually describes the version number to be tested + against, and <code class="computeroutput"><span class="identifier">CONDITION</span></code> + is a comparison operator followed by a value. For example <code class="computeroutput"><span class="identifier">BOOST_WORKAROUND</span><span class="special">(</span><span class="identifier">BOOST_INTEL</span><span class="special">,</span> + <span class="special"><=</span> <span class="number">1010</span><span class="special">)</span></code> would evaluate to <code class="computeroutput"><span class="number">1</span></code> for Intel C++ 10.1 and earlier. + </p> + <p> + The macro can also be used with <code class="computeroutput"><span class="identifier">BOOST_TESTED_AT</span></code> + if all current compiler versions exhibit the issue, but the issue + is expected to be fixed at some later point. + </p> + <p> + For example <code class="computeroutput"><span class="identifier">BOOST_WORKAROUND</span><span class="special">(</span><span class="identifier">__BORLANDC__</span><span class="special">,</span> <span class="identifier">BOOST_TESTED_AT</span><span class="special">(</span><span class="number">0x590</span><span class="special">))</span></code> would normally evaluate to <code class="computeroutput"><span class="number">1</span></code> for all values of <code class="computeroutput"><span class="identifier">__BORLANDC__</span></code> <span class="emphasis"><em>unless</em></span> + the macro <code class="computeroutput"><span class="identifier">BOOST_DETECT_OUTDATED_WORKAROUNDS</span></code> + is defined, in which case evaluates to <code class="computeroutput"><span class="special">(</span><span class="identifier">__BORLANDC__</span> <span class="special"><=</span> + <span class="number">0x590</span><span class="special">)</span></code>. + </p> + <p> + <span class="bold"><strong>Note</strong></span>: the ultimate source of documentation + for this macro is in <a href="../../../../../boost/detail/workaround.hpp" target="_top">boost/detail/workaround.hpp</a>. + </p> + </td> +</tr> +<tr> +<td> + <p> + <code class="computeroutput"><span class="identifier">BOOST_PREVENT_MACRO_SUBSTITUTION</span></code> + </p> + </td> +<td> + <p> + Sometimes you have a function name with the same name as a C macro, + for example "min" and "max" member functions, + in which case one can prevent the function being expanded as a + macro using: +</p> +<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">someclass</span><span class="special">.</span><span class="identifier">min</span> <span class="identifier">BOOST_PREVENT_MACRO_SUBSTITUTION</span><span class="special">(</span><span class="identifier">arg1</span><span class="special">,</span> <span class="identifier">arg2</span><span class="special">);</span> +</pre> +<p> + The following also works in most, but not all, contexts: +</p> +<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="special">(</span><span class="identifier">someclass</span><span class="special">.</span><span class="identifier">max</span><span class="special">)(</span><span class="identifier">arg1</span><span class="special">,</span> <span class="identifier">arg2</span><span class="special">);</span> +</pre> +<p> + </p> + </td> +</tr> +<tr> +<td> + <p> + <code class="computeroutput"><span class="identifier">BOOST_DEDUCED_TYPENAME</span></code> + </p> + </td> +<td> + <p> + Some compilers don't support the use of typename for dependent + types in deduced contexts. This macro expands to nothing on those + compilers, and typename elsewhere. For example, replace: <code class="computeroutput"><span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">></span> <span class="keyword">void</span> + <span class="identifier">f</span><span class="special">(</span><span class="identifier">T</span><span class="special">,</span> + <span class="keyword">typename</span> <span class="identifier">T</span><span class="special">::</span><span class="identifier">type</span><span class="special">);</span></code> with: <code class="computeroutput"><span class="keyword">template</span> + <span class="special"><</span><span class="keyword">class</span> + <span class="identifier">T</span><span class="special">></span> + <span class="keyword">void</span> <span class="identifier">f</span><span class="special">(</span><span class="identifier">T</span><span class="special">,</span> <span class="identifier">BOOST_DEDUCED_TYPENAME</span> + <span class="identifier">T</span><span class="special">::</span><span class="identifier">type</span><span class="special">);</span></code> + </p> + </td> +</tr> +<tr> +<td> + <p> + <code class="computeroutput"><span class="identifier">BOOST_HASH_MAP_HEADER</span></code> + </p> + </td> +<td> + <p> + The header to include to get the SGI <code class="computeroutput"><span class="identifier">hash_map</span></code> + class. This macro is only available if <code class="computeroutput"><span class="identifier">BOOST_HAS_HASH</span></code> + is defined. + </p> + </td> +</tr> +<tr> +<td> + <p> + <code class="computeroutput"><span class="identifier">BOOST_HASH_SET_HEADER</span></code> + </p> + </td> +<td> + <p> + The header to include to get the SGI <code class="computeroutput"><span class="identifier">hash_set</span></code> + class. This macro is only available if <code class="computeroutput"><span class="identifier">BOOST_HAS_HASH</span></code> + is defined. + </p> + </td> +</tr> +<tr> +<td> + <p> + <code class="computeroutput"><span class="identifier">BOOST_SLIST_HEADER</span></code> + </p> + </td> +<td> + <p> + The header to include to get the SGI <code class="computeroutput"><span class="identifier">slist</span></code> + class. This macro is only available if <code class="computeroutput"><span class="identifier">BOOST_HAS_SLIST</span></code> + is defined. + </p> + </td> +</tr> +<tr> +<td> + <p> + <code class="computeroutput"><span class="identifier">BOOST_STD_EXTENSION_NAMESPACE</span></code> + </p> + </td> +<td> + <p> + The namespace used for std library extensions (hashtable classes + etc). + </p> + </td> +</tr> +<tr> +<td> + <p> + <code class="computeroutput"><span class="identifier">BOOST_STATIC_CONSTANT</span><span class="special">(</span><span class="identifier">Type</span><span class="special">,</span> <span class="identifier">assignment</span><span class="special">)</span></code> + </p> + </td> +<td> + <p> + On compilers which don't allow in-class initialization of static + integral constant members, we must use enums as a workaround if + we want the constants to be available at compile-time. This macro + gives us a convenient way to declare such constants. For example + instead of: +</p> +<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="keyword">struct</span> <span class="identifier">foo</span><span class="special">{</span> + <span class="keyword">static</span> <span class="keyword">const</span> <span class="keyword">int</span> <span class="identifier">value</span> <span class="special">=</span> <span class="number">2</span><span class="special">;</span> +<span class="special">};</span> +</pre> +<p> + use: +</p> +<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="keyword">struct</span> <span class="identifier">foo</span><span class="special">{</span> + <span class="identifier">BOOST_STATIC_CONSTANT</span><span class="special">(</span><span class="keyword">int</span><span class="special">,</span> <span class="identifier">value</span> <span class="special">=</span> <span class="number">2</span><span class="special">);</span> +<span class="special">};</span> +</pre> +<p> + </p> + </td> +</tr> +<tr> +<td> + <p> + <code class="computeroutput"><span class="identifier">BOOST_UNREACHABLE_RETURN</span><span class="special">(</span><span class="identifier">result</span><span class="special">)</span></code> + </p> + </td> +<td> + <p> + Normally evaluates to nothing, but evaluates to return x; if the + compiler requires a return, even when it can never be reached. + </p> + </td> +</tr> +<tr> +<td> + <p> + <code class="computeroutput"><span class="identifier">BOOST_EXPLICIT_TEMPLATE_TYPE</span><span class="special">(</span><span class="identifier">t</span><span class="special">)</span></code> <code class="computeroutput"><span class="identifier">BOOST_EXPLICIT_TEMPLATE_NON_TYPE</span><span class="special">(</span><span class="identifier">t</span><span class="special">,</span><span class="identifier">v</span><span class="special">)</span></code> <code class="computeroutput"><span class="identifier">BOOST_APPEND_EXPLICIT_TEMPLATE_TYPE</span><span class="special">(</span><span class="identifier">t</span><span class="special">)</span></code> <code class="computeroutput"><span class="identifier">BOOST_APPEND_EXPLICIT_TEMPLATE_NON_TYPE</span><span class="special">(</span><span class="identifier">t</span><span class="special">,</span><span class="identifier">v</span><span class="special">)</span></code> + </p> + </td> +<td> + <p> + Some compilers silently "fold" different function template + instantiations if some of the template parameters don't appear + in the function parameter list. For instance: +</p> +<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">iostream</span><span class="special">></span> +<span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">ostream</span><span class="special">></span> +<span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">typeinfo</span><span class="special">></span> + +<span class="keyword">template</span> <span class="special"><</span><span class="keyword">int</span> <span class="identifier">n</span><span class="special">></span> +<span class="keyword">void</span> <span class="identifier">f</span><span class="special">()</span> <span class="special">{</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special"><<</span> <span class="identifier">n</span> <span class="special"><<</span> <span class="char">' '</span><span class="special">;</span> <span class="special">}</span> + +<span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">></span> +<span class="keyword">void</span> <span class="identifier">g</span><span class="special">()</span> <span class="special">{</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special"><<</span> <span class="keyword">typeid</span><span class="special">(</span><span class="identifier">T</span><span class="special">).</span><span class="identifier">name</span><span class="special">()</span> <span class="special"><<</span> <span class="char">' '</span><span class="special">;</span> <span class="special">}</span> + +<span class="keyword">int</span> <span class="identifier">main</span><span class="special">()</span> <span class="special">{</span> + <span class="identifier">f</span><span class="special"><</span><span class="number">1</span><span class="special">>();</span> + <span class="identifier">f</span><span class="special"><</span><span class="number">2</span><span class="special">>();</span> + + <span class="identifier">g</span><span class="special"><</span><span class="keyword">int</span><span class="special">>();</span> + <span class="identifier">g</span><span class="special"><</span><span class="keyword">double</span><span class="special">>();</span> +<span class="special">}</span> +</pre> +<p> + incorrectly outputs <code class="literal">2 2 double double</code> on VC++ + 6. These macros, to be used in the function parameter list, fix + the problem without effects on the calling syntax. For instance, + in the case above write: +</p> +<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="keyword">template</span> <span class="special"><</span><span class="keyword">int</span> <span class="identifier">n</span><span class="special">></span> +<span class="keyword">void</span> <span class="identifier">f</span><span class="special">(</span><span class="identifier">BOOST_EXPLICIT_TEMPLATE_NON_TYPE</span><span class="special">(</span><span class="keyword">int</span><span class="special">,</span> <span class="identifier">n</span><span class="special">))</span> <span class="special">{</span> <span class="special">...</span> <span class="special">}</span> + +<span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">></span> +<span class="keyword">void</span> <span class="identifier">g</span><span class="special">(</span><span class="identifier">BOOST_EXPLICIT_TEMPLATE_TYPE</span><span class="special">(</span><span class="identifier">T</span><span class="special">))</span> <span class="special">{</span> <span class="special">...</span> <span class="special">}</span> +</pre> +<p> + Beware that they can declare (for affected compilers) a dummy defaulted + parameter, so they + </p> + <p> + <span class="bold"><strong>a)</strong></span> should be always invoked <span class="bold"><strong>at the end</strong></span> of the parameter list + </p> + <p> + <span class="bold"><strong>b)</strong></span> can't be used if your function + template is multiply declared. + </p> + <p> + Furthermore, in order to add any needed comma separator, an <code class="computeroutput"><span class="identifier">APPEND_</span><span class="special">*</span></code> + version must be used when the macro invocation appears after a + normal parameter declaration or after the invocation of another + macro of this same group. + </p> + </td> +</tr> +<tr> +<td> + <p> + <code class="computeroutput"><span class="identifier">BOOST_USE_FACET</span><span class="special">(</span><span class="identifier">Type</span><span class="special">,</span> <span class="identifier">loc</span><span class="special">)</span></code> + </p> + </td> +<td> + <p> + When the standard library does not have a comforming <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">use_facet</span></code> there are various workarounds + available, but they differ from library to library. This macro + provides a consistent way to access a locale's facets. For example, + replace: <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">use_facet</span><span class="special"><</span><span class="identifier">Type</span><span class="special">>(</span><span class="identifier">loc</span><span class="special">);</span></code> + with: <code class="computeroutput"><span class="identifier">BOOST_USE_FACET</span><span class="special">(</span><span class="identifier">Type</span><span class="special">,</span> <span class="identifier">loc</span><span class="special">);</span></code> Note do not add a <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span></code> + prefix to the front of <code class="computeroutput"><span class="identifier">BOOST_USE_FACET</span></code>. + </p> + </td> +</tr> +<tr> +<td> + <p> + <code class="computeroutput"><span class="identifier">BOOST_HAS_FACET</span><span class="special">(</span><span class="identifier">Type</span><span class="special">,</span> <span class="identifier">loc</span><span class="special">)</span></code> + </p> + </td> +<td> + <p> + When the standard library does not have a comforming <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">has_facet</span></code> there are various workarounds + available, but they differ from library to library. This macro + provides a consistent way to check a locale's facets. For example, + replace: <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">has_facet</span><span class="special"><</span><span class="identifier">Type</span><span class="special">>(</span><span class="identifier">loc</span><span class="special">);</span></code> + with: <code class="computeroutput"><span class="identifier">BOOST_HAS_FACET</span><span class="special">(</span><span class="identifier">Type</span><span class="special">,</span> <span class="identifier">loc</span><span class="special">);</span></code> Note do not add a <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span></code> + prefix to the front of <code class="computeroutput"><span class="identifier">BOOST_HAS_FACET</span></code>. + </p> + </td> +</tr> +<tr> +<td> + <p> + <code class="computeroutput"><span class="identifier">BOOST_NESTED_TEMPLATE</span></code> + </p> + </td> +<td> + <p> + Member templates are supported by some compilers even though they + can't use the <code class="computeroutput"><span class="identifier">A</span><span class="special">::</span><span class="keyword">template</span> + <span class="identifier">member</span><span class="special"><</span><span class="identifier">U</span><span class="special">></span></code> + syntax, as a workaround replace: <code class="computeroutput"><span class="keyword">typedef</span> + <span class="keyword">typename</span> <span class="identifier">A</span><span class="special">::</span><span class="keyword">template</span> + <span class="identifier">rebind</span><span class="special"><</span><span class="identifier">U</span><span class="special">></span> + <span class="identifier">binder</span><span class="special">;</span></code> + with: <code class="computeroutput"><span class="keyword">typedef</span> <span class="keyword">typename</span> + <span class="identifier">A</span><span class="special">::</span><span class="identifier">BOOST_NESTED_TEMPLATE</span> <span class="identifier">rebind</span><span class="special"><</span><span class="identifier">U</span><span class="special">></span> <span class="identifier">binder</span><span class="special">;</span></code> + </p> + </td> +</tr> +<tr> +<td> + <p> + <code class="computeroutput"><span class="identifier">BOOST_STRINGIZE</span><span class="special">(</span><span class="identifier">X</span><span class="special">)</span></code> + </p> + </td> +<td> + <p> + Converts the parameter <code class="computeroutput"><span class="identifier">X</span></code> + to a string after macro replacement on <code class="computeroutput"><span class="identifier">X</span></code> + has been performed. + </p> + </td> +</tr> +<tr> +<td> + <p> + <code class="computeroutput"><span class="identifier">BOOST_JOIN</span><span class="special">(</span><span class="identifier">X</span><span class="special">,</span><span class="identifier">Y</span><span class="special">)</span></code> + </p> + </td> +<td> + <p> + This piece of macro magic joins the two arguments together, even + when one of the arguments is itself a macro (see 16.3.1 in C++ + standard). This is normally used to create a mangled name in combination + with a predefined macro such a __LINE__. + </p> + </td> +</tr> +<tr> +<td> + <p> + <code class="computeroutput"><span class="identifier">BOOST_FORCEINLINE</span></code> + </p> + </td> +<td> + <p> + This macro can be used in place of the <code class="computeroutput"><span class="keyword">inline</span></code> + keyword to instruct the compiler that a function should always + be inlined. Overuse of this macro can lead to significant bloat, + while good use can increase performance in certain cases, such + as computation-intensive code built through generative programming + techniques. + </p> + <p> + Usage example: +</p> +<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="keyword">template</span><span class="special"><</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">></span> +<span class="identifier">BOOST_FORCEINLINE</span> <span class="identifier">T</span><span class="special">&</span> <span class="identifier">f</span><span class="special">(</span><span class="identifier">T</span><span class="special">&</span> <span class="identifier">t</span><span class="special">)</span> +<span class="special">{</span> + <span class="keyword">return</span> <span class="identifier">t</span><span class="special">;</span> +<span class="special">}</span> +</pre> +<p> + </p> + <p> + Note that use of this macro can lead to cryptic error messages + with some compilers. Consider defining it to <code class="computeroutput"><span class="keyword">inline</span></code> + before including the Boost.Config header in order to be able to + debug errors more easily. + </p> + </td> +</tr> +</tbody> +</table></div> +</div> +<div class="section"> +<div class="titlepage"><div><div><h3 class="title"> +<a name="boost_config.boost_macro_reference.boost_informational_macros"></a><a name="config_info_macros"></a><a class="link" href="boost_macro_reference.html#boost_config.boost_macro_reference.boost_informational_macros" title="Boost Informational Macros">Boost + Informational Macros</a> +</h3></div></div></div> +<p> + The following macros describe boost features; these are, generally speaking + the only boost macros that should be tested in user code. + </p> +<div class="informaltable"><table class="table"> +<colgroup> +<col> +<col> +<col> +</colgroup> +<thead><tr> +<th> + <p> + Macro + </p> + </th> +<th> + <p> + Header + </p> + </th> +<th> + <p> + Description + </p> + </th> +</tr></thead> +<tbody> +<tr> +<td> + <p> + <code class="computeroutput"><span class="identifier">BOOST_VERSION</span></code> + </p> + </td> +<td> + <p> + <code class="computeroutput"><span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">version</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span></code> + </p> + </td> +<td> + <p> + Describes the boost version number in XYYYZZ format such that: + <code class="computeroutput"><span class="special">(</span><span class="identifier">BOOST_VERSION</span> + <span class="special">%</span> <span class="number">100</span><span class="special">)</span></code> is the sub-minor version, <code class="computeroutput"><span class="special">((</span><span class="identifier">BOOST_VERSION</span> + <span class="special">/</span> <span class="number">100</span><span class="special">)</span> <span class="special">%</span> <span class="number">1000</span><span class="special">)</span></code> + is the minor version, and <code class="computeroutput"><span class="special">(</span><span class="identifier">BOOST_VERSION</span> <span class="special">/</span> + <span class="number">100000</span><span class="special">)</span></code> + is the major version. + </p> + </td> +</tr> +<tr> +<td> + <p> + <code class="computeroutput"><span class="identifier">BOOST_NO_INT64_T</span></code> + </p> + </td> +<td> + <p> + <code class="computeroutput"><span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">cstdint</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span></code> <code class="computeroutput"><span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">stdint</span><span class="special">.</span><span class="identifier">h</span><span class="special">></span></code> + </p> + </td> +<td> + <p> + Defined if there are no 64-bit integral types: <code class="computeroutput"><span class="identifier">int64_t</span></code>, + <code class="computeroutput"><span class="identifier">uint64_t</span></code> etc. + </p> + </td> +</tr> +<tr> +<td> + <p> + <code class="computeroutput"><span class="identifier">BOOST_NO_INTEGRAL_INT64_T</span></code> + </p> + </td> +<td> + <p> + <code class="computeroutput"><span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">cstdint</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span></code> <code class="computeroutput"><span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">stdint</span><span class="special">.</span><span class="identifier">h</span><span class="special">></span></code> + </p> + </td> +<td> + <p> + Defined if <code class="computeroutput"><span class="identifier">int64_t</span></code> + as defined by <code class="computeroutput"><span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">cstdint</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span></code> + is not usable in integral constant expressions. + </p> + </td> +</tr> +<tr> +<td> + <p> + <code class="computeroutput"><span class="identifier">BOOST_MSVC</span></code> + </p> + </td> +<td> + <p> + <code class="computeroutput"><span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">config</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span></code> + </p> + </td> +<td> + <p> + Defined if the compiler is really Microsoft Visual C++, as opposed + to one of the many other compilers that also define <code class="computeroutput"><span class="identifier">_MSC_VER</span></code>. Has the same value + as _MSC_VER. + </p> + </td> +</tr> +<tr> +<td> + <p> + <code class="computeroutput"><span class="identifier">BOOST_MSVC_FULL_VER</span></code> + </p> + </td> +<td> + <p> + <code class="computeroutput"><span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">config</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span></code> + </p> + </td> +<td> + <p> + Defined to a normalised 9 digit version of _MSC_FULL_VER (which + sometimes only has 8 digits), the macro has the form VVMMPPPPP + where VV is the major version number, MM is the minor version number, + and PPPPP is the compiler build number. + </p> + </td> +</tr> +<tr> +<td> + <p> + <code class="computeroutput"><span class="identifier">BOOST_INTEL</span></code> + </p> + </td> +<td> + <p> + <code class="computeroutput"><span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">config</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span></code> + </p> + </td> +<td> + <p> + Defined if the compiler is an Intel compiler, takes the same value + as the compiler version macro. + </p> + </td> +</tr> +<tr> +<td> + <p> + <code class="computeroutput"><span class="identifier">BOOST_CLANG</span></code> + </p> + </td> +<td> + <p> + <code class="computeroutput"><span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">config</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span></code> + </p> + </td> +<td> + <p> + Defined to 1 if the compiler is the Clang compiler. + </p> + </td> +</tr> +<tr> +<td> + <p> + <code class="computeroutput"><span class="identifier">BOOST_WINDOWS</span></code> + </p> + </td> +<td> + <p> + <code class="computeroutput"><span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">config</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span></code> + </p> + </td> +<td> + <p> + Defined if the Windows platform API is available. + </p> + </td> +</tr> +<tr> +<td> + <p> + <code class="computeroutput"><span class="identifier">BOOST_DINKUMWARE_STDLIB</span></code> + </p> + </td> +<td> + <p> + <code class="computeroutput"><span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">config</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span></code> + </p> + </td> +<td> + <p> + Defined if the dinkumware standard library is in use, takes the + same value as the Dinkumware library version macro <code class="computeroutput"><span class="identifier">_CPPLIB_VER</span></code> if defined, otherwise + 1. + </p> + </td> +</tr> +<tr> +<td> + <p> + <code class="computeroutput"><span class="identifier">BOOST_NO_WREGEX</span></code> + </p> + </td> +<td> + <p> + <code class="computeroutput"><span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">regex</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span></code> + </p> + </td> +<td> + <p> + Defined if the regex library does not support wide character regular + expressions. + </p> + </td> +</tr> +<tr> +<td> + <p> + <code class="computeroutput"><span class="identifier">BOOST_COMPILER</span></code> + </p> + </td> +<td> + <p> + <code class="computeroutput"><span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">config</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span></code> + </p> + </td> +<td> + <p> + Defined as a string describing the name and version number of the + compiler in use. Mainly for debugging the configuration. + </p> + </td> +</tr> +<tr> +<td> + <p> + <code class="computeroutput"><span class="identifier">BOOST_STDLIB</span></code> + </p> + </td> +<td> + <p> + <code class="computeroutput"><span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">config</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span></code> + </p> + </td> +<td> + <p> + Defined as a string describing the name and version number of the + standard library in use. Mainly for debugging the configuration. + </p> + </td> +</tr> +<tr> +<td> + <p> + <code class="computeroutput"><span class="identifier">BOOST_PLATFORM</span></code> + </p> + </td> +<td> + <p> + <code class="computeroutput"><span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">config</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span></code> + </p> + </td> +<td> + <p> + Defined as a string describing the name of the platform. Mainly + for debugging the configuration. + </p> + </td> +</tr> +</tbody> +</table></div> +</div> +<div class="section"> +<div class="titlepage"><div><div><h3 class="title"> +<a name="boost_config.boost_macro_reference.macros_for_libraries_with_separate_source_code"></a><a class="link" href="boost_macro_reference.html#boost_config.boost_macro_reference.macros_for_libraries_with_separate_source_code" title="Macros for libraries with separate source code">Macros + for libraries with separate source code</a> +</h3></div></div></div> +<div class="toc"><dl> +<dt><span class="section"><a href="boost_macro_reference.html#boost_config.boost_macro_reference.macros_for_libraries_with_separate_source_code.macros_controlling_shared_library_symbol_visibility">Macros + controlling shared library symbol visibility</a></span></dt> +<dt><span class="section"><a href="boost_macro_reference.html#boost_config.boost_macro_reference.macros_for_libraries_with_separate_source_code.abi_fixing">ABI + Fixing</a></span></dt> +<dt><span class="section"><a href="boost_macro_reference.html#boost_config.boost_macro_reference.macros_for_libraries_with_separate_source_code.automatic_library_selection">Automatic + library selection</a></span></dt> +</dl></div> +<p> + The following macros and helper headers are of use to authors whose libraries + include separate source code, and are intended to address several issues: + </p> +<div class="itemizedlist"><ul class="itemizedlist" type="disc"> +<li class="listitem"> + Controlling shared library symbol visibility + </li> +<li class="listitem"> + Fixing the ABI of the compiled library + </li> +<li class="listitem"> + Selecting which compiled library to link against based upon the compilers + settings + </li> +</ul></div> +<p> + See <a href="http://svn.boost.org/trac/boost/wiki/Guidelines/Separate" target="_top">Guidelines + for Authors of Boost Libraries Containing Separate Source</a> + </p> +<div class="section"> +<div class="titlepage"><div><div><h4 class="title"> +<a name="boost_config.boost_macro_reference.macros_for_libraries_with_separate_source_code.macros_controlling_shared_library_symbol_visibility"></a><a class="link" href="boost_macro_reference.html#boost_config.boost_macro_reference.macros_for_libraries_with_separate_source_code.macros_controlling_shared_library_symbol_visibility" title="Macros controlling shared library symbol visibility">Macros + controlling shared library symbol visibility</a> +</h4></div></div></div> +<p> + Some compilers support C++ extensions that control which symbols will be + exported from shared libraries such as dynamic shared objects (DSO's) on + Unix-like systems or dynamic-link libraries (DLL's) on Windows. + </p> +<p> + The Microsoft VC++ compiler has long supplied <code class="computeroutput"><span class="identifier">__declspec</span><span class="special">(</span><span class="identifier">dllexport</span><span class="special">)</span></code> and <code class="computeroutput"><span class="identifier">__declspec</span><span class="special">(</span><span class="identifier">dllimport</span><span class="special">)</span></code> extensions for this purpose, as do virtually + all other compilers targeting the Windows platform. + </p> +<p> + Modern versions of the GNU GCC compiler provide the <code class="computeroutput"><span class="identifier">__attribute__</span><span class="special">((</span><span class="identifier">visibility</span><span class="special">(</span><span class="string">"default"</span><span class="special">)))</span></code> extension to indicate that a symbol + should be exported. All other symbols may be hidden by using the <code class="computeroutput"><span class="special">-</span><span class="identifier">fvisibility</span><span class="special">-</span><span class="identifier">hidden</span></code> + or <code class="computeroutput"><span class="special">-</span><span class="identifier">fvisibility</span><span class="special">-</span><span class="identifier">ms</span><span class="special">-</span><span class="identifier">compat</span></code> compiler switches. + </p> +<p> + Boost supplies several macros to make it easier to manage symbol visibility + in a way that is portable between compilers and operating systems. + </p> +<div class="informaltable"><table class="table"> +<colgroup> +<col> +<col> +</colgroup> +<thead><tr> +<th> + <p> + Macro + </p> + </th> +<th> + <p> + Description + </p> + </th> +</tr></thead> +<tbody> +<tr> +<td> + <p> + <code class="computeroutput"><span class="identifier">BOOST_SYMBOL_EXPORT</span></code> + </p> + </td> +<td> + <p> + Defines the syntax of a C++ language extension that indicates + a symbol is to be exported from a shared library. If the compiler + has no such extension, the macro is defined with no replacement + text. + </p> + </td> +</tr> +<tr> +<td> + <p> + <code class="computeroutput"><span class="identifier">BOOST_SYMBOL_IMPORT</span></code> + </p> + </td> +<td> + <p> + Defines the syntax of a C++ language extension that indicates + a symbol is to be imported from a shared library. If the compiler + has no such extension, the macro is defined with no replacement + text. + </p> + </td> +</tr> +<tr> +<td> + <p> + <code class="computeroutput"><span class="identifier">BOOST_SYMBOL_VISIBLE</span></code> + </p> + </td> +<td> + <p> + Defines the syntax of a C++ language extension that indicates + a symbol is to be globally visible. If the compiler has no such + extension, the macro is defined with no replacement text. Needed + for classes that are not otherwise exported, but are used by + RTTI. Examples include class for objects that will be thrown + as exceptions or used in dynamic_casts, across shared library + boundaries. For example, a header-only exception class might + look like this: +</p> +<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="keyword">class</span> <span class="identifier">BOOST_SYMBOL_VISIBLE</span> <span class="identifier">my_exception</span> <span class="special">:</span> <span class="keyword">public</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">runtime_error</span> <span class="special">{</span> <span class="special">...</span> <span class="special">};</span> +</pre> +<p> + Without BOOST_SYMBOL_VISIBLE, it would be impossible to catch + my_exception thrown from a shared library compiled by GCC with + the -fvisibility=hidden option. + </p> + </td> +</tr> +<tr> +<td> + <p> + <code class="computeroutput"><span class="identifier">BOOST_HAS_DECLSPEC</span></code> + </p> + </td> +<td> + <p> + The compiler has C++ extensions <code class="computeroutput"><span class="identifier">__declspec</span><span class="special">(</span><span class="identifier">dllexport</span><span class="special">)</span></code> and <code class="computeroutput"><span class="identifier">__declspec</span><span class="special">(</span><span class="identifier">dllimport</span><span class="special">)</span></code> to control export/import of + symbols from shared libraries. <span class="emphasis"><em>Deprecated. This macro + is no longer necessary since BOOST_SYMBOL_EXPORT and BOOST_SYMBOL_IMPORT + are now supplied. It is provided to support legacy code.</em></span> + </p> + </td> +</tr> +</tbody> +</table></div> +<p> + Typical usage: + </p> +<p> + <span class="bold"><strong>boost/foo/config.hpp</strong></span> + </p> +<pre class="programlisting"><span class="special">...</span> +<span class="preprocessor">#if</span> <span class="identifier">defined</span><span class="special">(</span><span class="identifier">BOOST_ALL_DYN_LINK</span><span class="special">)</span> <span class="special">||</span> <span class="identifier">defined</span><span class="special">(</span><span class="identifier">BOOST_FOO_DYN_LINK</span><span class="special">)</span> +<span class="preprocessor"># if</span> <span class="identifier">defined</span><span class="special">(</span><span class="identifier">BOOST_FOO_SOURCE</span><span class="special">)</span> +<span class="preprocessor"># define</span> <span class="identifier">BOOST_FOO_DECL</span> <span class="identifier">BOOST_SYMBOL_EXPORT</span> +<span class="preprocessor"># else</span> +<span class="preprocessor"># define</span> <span class="identifier">BOOST_FOO_DECL</span> <span class="identifier">BOOST_SYMBOL_IMPORT</span> +<span class="preprocessor"># endif</span> +<span class="preprocessor">#else</span> +<span class="preprocessor"># define</span> <span class="identifier">BOOST_FOO_DECL</span> +<span class="preprocessor">#endif</span> +<span class="special">...</span> +</pre> +<p> + <span class="bold"><strong>boost/foo/foo.hpp</strong></span> + </p> +<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">foo</span><span class="special">/</span><span class="identifier">config</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span> +<span class="special">...</span> +<span class="keyword">class</span> <span class="identifier">BOOST_FOO_DECL</span> <span class="identifier">bar</span> <span class="special">{</span> <span class="special">...</span> <span class="special">};</span> +<span class="special">...</span> +<span class="keyword">void</span> <span class="identifier">BOOST_FOO_DECL</span> <span class="identifier">f</span><span class="special">();</span> +<span class="special">...</span> +</pre> +<p> + <span class="bold"><strong>boost/libs/foo/src/foo.cpp</strong></span> + </p> +<pre class="programlisting"><span class="preprocessor">#define</span> <span class="identifier">BOOST_FOO_SOURCE</span> +<span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">foo</span><span class="special">/</span><span class="identifier">foo</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span> +<span class="special">...</span> +<span class="keyword">void</span> <span class="identifier">BOOST_FOO_DECL</span> <span class="identifier">f</span><span class="special">()</span> +<span class="special">{</span> + <span class="special">...</span> +<span class="special">}</span> +<span class="special">...</span> +</pre> +</div> +<div class="section"> +<div class="titlepage"><div><div><h4 class="title"> +<a name="boost_config.boost_macro_reference.macros_for_libraries_with_separate_source_code.abi_fixing"></a><a class="link" href="boost_macro_reference.html#boost_config.boost_macro_reference.macros_for_libraries_with_separate_source_code.abi_fixing" title="ABI Fixing">ABI + Fixing</a> +</h4></div></div></div> +<p> + When linking against a pre-compiled library it vital that the ABI used + by the compiler when building the library <span class="emphasis"><em>matches exactly</em></span> + the ABI used by the code using the library. In this case ABI means things + like the struct packing arrangement used, the name mangling scheme used, + or the size of some types (enum types for example). This is separate from + things like threading support, or runtime library variations, which have + to be dealt with by build variants. To put this in perspective there is + one compiler (Borland's) that has so many compiler options that make subtle + changes to the ABI, that at least in theory there 3200 combinations, and + that's without considering runtime library variations. Fortunately these + variations can be managed by <code class="computeroutput"><span class="preprocessor">#pragma</span></code>'s + that tell the compiler what ABI to use for the types declared in your library. + In order to avoid sprinkling <code class="computeroutput"><span class="preprocessor">#pragma</span></code>'s + all over the boost headers, there are some prefix and suffix headers that + do the job. Typical usage is: + </p> +<p> + <span class="bold"><strong>my_library.hpp</strong></span> + </p> +<pre class="programlisting"><span class="preprocessor">#ifndef</span> <span class="identifier">MY_INCLUDE_GUARD</span> +<span class="preprocessor">#define</span> <span class="identifier">MY_INCLUDE_GUARD</span> + +<span class="comment">// all includes go here:</span> +<code class="literal"><span class="bold"><strong>#include <boost/config.hpp></strong></span></code> +<span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">whatever</span><span class="special">></span> + +<code class="literal"><span class="bold"><strong>#include <boost/config/abi_prefix.hpp></strong></span></code> <span class="comment">// must be the last #include</span> + +<span class="keyword">namespace</span> <span class="identifier">boost</span> <span class="special">{</span> + +<span class="comment">// your code goes here</span> + +<span class="special">}</span> + +<code class="literal"><span class="bold"><strong>#include <boost/config/abi_suffix.hpp></strong></span></code> <span class="comment">// pops abi_prefix.hpp pragmas</span> + +<span class="preprocessor">#endif</span> <span class="comment">// include guard</span> +</pre> +<p> + <span class="bold"><strong>my_library.cpp</strong></span> + </p> +<pre class="programlisting"><span class="special">...</span> +<span class="comment">// nothing special need be done in the implementation file</span> +<span class="special">...</span> +</pre> +<p> + The user can disable this mechanism by defining <code class="computeroutput"><span class="identifier">BOOST_DISABLE_ABI_HEADERS</span></code>, + or they can define <code class="computeroutput"><span class="identifier">BOOST_ABI_PREFIX</span></code> + and/or <code class="computeroutput"><span class="identifier">BOOST_ABI_SUFFIX</span></code> + to point to their own prefix/suffix headers if they so wish. + </p> +</div> +<div class="section"> +<div class="titlepage"><div><div><h4 class="title"> +<a name="boost_config.boost_macro_reference.macros_for_libraries_with_separate_source_code.automatic_library_selection"></a><a class="link" href="boost_macro_reference.html#boost_config.boost_macro_reference.macros_for_libraries_with_separate_source_code.automatic_library_selection" title="Automatic library selection">Automatic + library selection</a> +</h4></div></div></div> +<p> + It is essential that users link to a build of a library which was built + against the same runtime library that their application will be built against + -if this does not happen then the library will not be binary compatible + with their own code- and there is a high likelihood that their application + will experience runtime crashes. These kinds of problems can be extremely + time consuming and difficult to debug, and often lead to frustrated users + and authors alike (simply selecting the right library to link against is + not as easy as it seems when their are 6-8 of them to chose from, and some + users seem to be blissfully unaware that there even are different runtimes + available to them). + </p> +<p> + To solve this issue, some compilers allow source code to contain <code class="computeroutput"><span class="preprocessor">#pragma</span></code>'s that instruct the linker + which library to link against, all the user need do is include the headers + they need, place the compiled libraries in their library search path, and + the compiler and linker do the rest. Boost.config supports this via the + header <code class="computeroutput"><span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">config</span><span class="special">/</span><span class="identifier">auto_link</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span></code>, before including this header one or + more of the following macros need to be defined: + </p> +<div class="variablelist"> +<p class="title"><b></b></p> +<dl> +<dt><span class="term"><code class="computeroutput"><span class="identifier">BOOST_LIB_NAME</span></code></span></dt> +<dd><p> + Required: An identifier containing the basename of the library, for + example 'boost_regex'. + </p></dd> +<dt><span class="term"><code class="computeroutput"><span class="identifier">BOOST_DYN_LINK</span></code></span></dt> +<dd><p> + Optional: when set link to dll rather than static library. + </p></dd> +<dt><span class="term"><code class="computeroutput"><span class="identifier">BOOST_LIB_DIAGNOSTIC</span></code></span></dt> +<dd><p> + Optional: when set the header will print out the name of the library + selected (useful for debugging). + </p></dd> +</dl> +</div> +<p> + If the compiler supports this mechanism, then it will be told to link against + the appropriately named library, the actual algorithm used to mangle the + name of the library is documented inside <code class="computeroutput"><span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">config</span><span class="special">/</span><span class="identifier">auto_link</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span></code> + and has to match that used to create the libraries via bjam 's install + rules. + </p> +<p> + <span class="bold"><strong>my_library.hpp</strong></span> + </p> +<pre class="programlisting"><span class="special">...</span> +<span class="comment">//</span> +<span class="comment">// Don't include auto-linking code if the user has disabled it by</span> +<span class="comment">// defining BOOST_ALL_NO_LIB, or BOOST_MY_LIBRARY_NO_LIB, or if this </span> +<span class="comment">// is one of our own source files (signified by BOOST_MY_LIBRARY_SOURCE):</span> +<span class="comment">//</span> +<span class="preprocessor">#if</span> <span class="special">!</span><span class="identifier">defined</span><span class="special">(</span><span class="identifier">BOOST_ALL_NO_LIB</span><span class="special">)</span> <span class="special">&&</span> <span class="special">!</span><span class="identifier">defined</span><span class="special">(</span><span class="identifier">BOOST_MY_LIBRARY_NO_LIB</span><span class="special">)</span> <span class="special">&&</span> <span class="special">!</span><span class="identifier">defined</span><span class="special">(</span><span class="identifier">BOOST_MY_LIBRARY_SOURCE</span><span class="special">)</span> +<span class="preprocessor"># define</span> <span class="identifier">BOOST_LIB_NAME</span> <span class="identifier">boost_my_library</span> +<span class="preprocessor"># ifdef</span> <span class="identifier">BOOST_MY_LIBRARY_DYN_LINK</span> +<span class="preprocessor"># define</span> <span class="identifier">BOOST_DYN_LINK</span> +<span class="preprocessor"># endif</span> +<span class="preprocessor"># include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">config</span><span class="special">/</span><span class="identifier">auto_link</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span> +<span class="preprocessor">#endif</span> +<span class="special">...</span> +</pre> +<p> + <span class="bold"><strong>my_library.cpp</strong></span> + </p> +<pre class="programlisting"><span class="comment">// define BOOST_MY_LIBRARY_SOURCE so that the header knows that the</span> +<span class="comment">// library is being built (possibly exporting rather than importing code)</span> +<span class="comment">//</span> +<span class="preprocessor">#define</span> <span class="identifier">BOOST_MY_LIBRARY_SOURCE</span> + +<span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">my_library</span><span class="special">/</span><span class="identifier">my_library</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span> +<span class="special">...</span> +</pre> +</div> +</div> +</div> +<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr> +<td align="left"></td> +<td align="right"><div class="copyright-footer">Copyright © 2001-2007 Beman Dawes, Vesa Karvonen, John + Maddock<p> + Distributed under the Boost Software License, Version 1.0. (See accompanying + file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>) + </p> +</div></td> +</tr></table> +<hr> +<div class="spirit-nav"> +<a accesskey="p" href="../index.html"><img src="../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="guidelines_for_boost_authors.html"><img src="../../../../../doc/src/images/next.png" alt="Next"></a> +</div> +</body> +</html> diff --git a/libs/config/doc/html/boost_config/guidelines_for_boost_authors.html b/libs/config/doc/html/boost_config/guidelines_for_boost_authors.html new file mode 100644 index 0000000000..cbc7dbce94 --- /dev/null +++ b/libs/config/doc/html/boost_config/guidelines_for_boost_authors.html @@ -0,0 +1,377 @@ +<html> +<head> +<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII"> +<title>Guidelines for Boost Authors</title> +<link rel="stylesheet" href="../../../../../doc/src/boostbook.css" type="text/css"> +<meta name="generator" content="DocBook XSL Stylesheets V1.76.1"> +<link rel="home" href="../index.html" title="Boost.Config"> +<link rel="up" href="../index.html" title="Boost.Config"> +<link rel="prev" href="boost_macro_reference.html" title="Boost Macro Reference"> +<link rel="next" href="rationale.html" title="Rationale"> +</head> +<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"> +<table cellpadding="2" width="100%"><tr> +<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../boost.png"></td> +<td align="center"><a href="../../../../../index.html">Home</a></td> +<td align="center"><a href="../../../../../libs/libraries.htm">Libraries</a></td> +<td align="center"><a href="http://www.boost.org/users/people.html">People</a></td> +<td align="center"><a href="http://www.boost.org/users/faq.html">FAQ</a></td> +<td align="center"><a href="../../../../../more/index.htm">More</a></td> +</tr></table> +<hr> +<div class="spirit-nav"> +<a accesskey="p" href="boost_macro_reference.html"><img src="../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="rationale.html"><img src="../../../../../doc/src/images/next.png" alt="Next"></a> +</div> +<div class="section"> +<div class="titlepage"><div><div><h2 class="title" style="clear: both"> +<a name="boost_config.guidelines_for_boost_authors"></a><a class="link" href="guidelines_for_boost_authors.html" title="Guidelines for Boost Authors">Guidelines for + Boost Authors</a> +</h2></div></div></div> +<div class="toc"><dl> +<dt><span class="section"><a href="guidelines_for_boost_authors.html#boost_config.guidelines_for_boost_authors.warnings">Disabling + Compiler Warnings</a></span></dt> +<dt><span class="section"><a href="guidelines_for_boost_authors.html#boost_config.guidelines_for_boost_authors.adding_new_defect_macros">Adding + New Defect Macros</a></span></dt> +<dt><span class="section"><a href="guidelines_for_boost_authors.html#boost_config.guidelines_for_boost_authors.adding_new_feature_test_macros">Adding + New Feature Test Macros</a></span></dt> +<dt><span class="section"><a href="guidelines_for_boost_authors.html#boost_config.guidelines_for_boost_authors.modifying_the_boost_configuration_headers">Modifying + the Boost Configuration Headers</a></span></dt> +</dl></div> +<p> + The <a href="../../../../../boost/config.hpp" target="_top"><boost/config.hpp></a> + header is used to pass configuration information to other boost files, allowing + them to cope with platform dependencies such as arithmetic byte ordering, compiler + pragmas, or compiler shortcomings. Without such configuration information, + many current compilers would not work with the Boost libraries. + </p> +<p> + Centralizing configuration information in this header reduces the number of + files that must be modified when porting libraries to new platforms, or when + compilers are updated. Ideally, no other files would have to be modified when + porting to a new platform. + </p> +<p> + Configuration headers are controversial because some view them as condoning + broken compilers and encouraging non-standard subsets. Adding settings for + additional platforms and maintaining existing settings can also be a problem. + In other words, configuration headers are a necessary evil rather than a desirable + feature. The boost config.hpp policy is designed to minimize the problems and + maximize the benefits of a configuration header. + </p> +<p> + Note that: + </p> +<div class="itemizedlist"><ul class="itemizedlist" type="disc"> +<li class="listitem"> + Boost library implementers are not required to "<code class="computeroutput"><span class="preprocessor">#include</span> + <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">config</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span></code>", and are not required in any + way to support compilers that do not comply with the C++ Standard (ISO/IEC + 14882). + </li> +<li class="listitem"> + If a library implementer wishes to support some non-conforming compiler, + or to support some platform specific feature, "<code class="computeroutput"><span class="preprocessor">#include</span> + <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">config</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span></code>" is the preferred way to obtain + configuration information not available from the standard headers such + as <code class="computeroutput"><span class="special"><</span><span class="identifier">climits</span><span class="special">></span></code>, etc. + </li> +<li class="listitem"> + If configuration information can be deduced from standard headers such + as <code class="computeroutput"><span class="special"><</span><span class="identifier">climits</span><span class="special">></span></code>, use those standard headers rather + than <code class="computeroutput"><span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">config</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span></code>. + </li> +<li class="listitem"> + Boost files that use macros defined in <code class="computeroutput"><span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">config</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span></code> + should have sensible, standard conforming, default behavior if the macro + is not defined. This means that the starting point for porting <code class="computeroutput"><span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">config</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span></code> to a new platform is simply to define + nothing at all specific to that platform. In the rare case where there + is no sensible default behavior, an #error message should describe the + problem. + </li> +<li class="listitem"> + If a Boost library implementer wants something added to <code class="computeroutput"><span class="identifier">config</span><span class="special">.</span><span class="identifier">hpp</span></code>, + post a request on the Boost mailing list. There is no guarantee such a + request will be honored; the intent is to limit the complexity of config.hpp. + </li> +<li class="listitem"> + The intent is to support only compilers which appear on their way to becoming + C++ Standard compliant, and only recent releases of those compilers at + that. + </li> +<li class="listitem"> + The intent is not to disable mainstream features now well-supported by + the majority of compilers, such as namespaces, exceptions, RTTI, or templates. + </li> +</ul></div> +<div class="section"> +<div class="titlepage"><div><div><h3 class="title"> +<a name="boost_config.guidelines_for_boost_authors.warnings"></a><a class="link" href="guidelines_for_boost_authors.html#boost_config.guidelines_for_boost_authors.warnings" title="Disabling Compiler Warnings">Disabling + Compiler Warnings</a> +</h3></div></div></div> +<p> + The header <code class="computeroutput"><span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">config</span><span class="special">/</span><span class="identifier">warning_disable</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span></code> + can be used to disable certain compiler warings that are hard or impossible + to otherwise remove. + </p> +<p> + Note that: + </p> +<div class="itemizedlist"><ul class="itemizedlist" type="disc"> +<li class="listitem"> + This header <span class="bold"><strong><span class="emphasis"><em>should never be included + by another Boost header</em></span></strong></span>, it should only ever be + used by a library source file or a test case. + </li> +<li class="listitem"> + The header should be included <span class="bold"><strong><span class="emphasis"><em>before + you include any other header</em></span></strong></span>. + </li> +<li class="listitem"> + This header only disables warnings that are hard or impossible to otherwise + deal with, and which are typically emitted by one compiler only, or in + one compilers own standard library headers. + </li> +</ul></div> +<p> + Currently it disables the following warnings: + </p> +<div class="informaltable"><table class="table"> +<colgroup> +<col> +<col> +</colgroup> +<thead><tr> +<th> + <p> + Compiler + </p> + </th> +<th> + <p> + Warning + </p> + </th> +</tr></thead> +<tbody> +<tr> +<td> + <p> + Visual C++ 8 and later + </p> + </td> +<td> + <p> + <a href="http://msdn2.microsoft.com/en-us/library/ttcz0bys(VS.80).aspx" target="_top">C4996</a>: + Error 'function': was declared deprecated + </p> + </td> +</tr> +<tr> +<td> + <p> + Intel C++ + </p> + </td> +<td> + <p> + Warning 1786: relates to the use of "deprecated" standard + library functions rather like C4996 in Visual C++. + </p> + </td> +</tr> +</tbody> +</table></div> +</div> +<div class="section"> +<div class="titlepage"><div><div><h3 class="title"> +<a name="boost_config.guidelines_for_boost_authors.adding_new_defect_macros"></a><a class="link" href="guidelines_for_boost_authors.html#boost_config.guidelines_for_boost_authors.adding_new_defect_macros" title="Adding New Defect Macros">Adding + New Defect Macros</a> +</h3></div></div></div> +<p> + When you need to add a new defect macro - either to fix a problem with an + existing library, or when adding a new library - distil the issue down to + a simple test case; often, at this point other (possibly better) workarounds + may become apparent. Secondly always post the test case code to the boost + mailing list and invite comments; remember that C++ is complex and that sometimes + what may appear a defect, may in fact turn out to be a problem with the authors + understanding of the standard. + </p> +<p> + When you name the macro, follow the <code class="computeroutput"><span class="identifier">BOOST_NO_</span></code><span class="emphasis"><em>SOMETHING</em></span> + naming convention, so that it's obvious that this is a macro reporting a + defect. + </p> +<p> + Finally, add the test program to the regression tests. You will need to place + the test case in a <code class="computeroutput"><span class="special">.</span><span class="identifier">ipp</span></code> + file with the following comments near the top: + </p> +<pre class="programlisting"><span class="comment">// MACRO: BOOST_NO_FOO</span> +<span class="comment">// TITLE: foo</span> +<span class="comment">// DESCRIPTION: If the compiler fails to support foo</span> +</pre> +<p> + These comments are processed by the autoconf script, so make sure the format + follows the one given. The file should be named "<code class="computeroutput"><span class="identifier">boost_no_foo</span><span class="special">.</span><span class="identifier">ipp</span></code>", + where foo is the defect description - try and keep the file name under the + Mac 30 character filename limit though. You will also need to provide a function + prototype "<code class="computeroutput"><span class="keyword">int</span> <span class="identifier">test</span><span class="special">()</span></code>" that is declared in a namespace with + the same name as the macro, but in all lower case, and which returns zero + on success: + </p> +<pre class="programlisting"><span class="keyword">namespace</span> <span class="identifier">boost_no_foo</span> <span class="special">{</span> +<span class="keyword">int</span> <span class="identifier">test</span><span class="special">()</span> +<span class="special">{</span> + <span class="comment">// test code goes here:</span> + <span class="comment">//</span> + <span class="keyword">return</span> <span class="number">0</span><span class="special">;</span> +<span class="special">}</span> + +<span class="special">}</span> +</pre> +<p> + Once the test code is in place in libs/config/test, updating the configuration + test system proceeds as: + </p> +<div class="itemizedlist"><ul class="itemizedlist" type="disc"> +<li class="listitem"> + cd into <code class="computeroutput"><span class="identifier">libs</span><span class="special">/</span><span class="identifier">config</span><span class="special">/</span><span class="identifier">tools</span></code> and run <code class="computeroutput"><span class="identifier">bjam</span></code>. + This generates the <code class="computeroutput"><span class="special">.</span><span class="identifier">cpp</span></code> + file test cases from the <code class="computeroutput"><span class="special">.</span><span class="identifier">ipp</span></code> file, updates the libs/config/test/all/Jamfile.v2, + <code class="computeroutput"><span class="identifier">config_test</span><span class="special">.</span><span class="identifier">cpp</span></code> and <code class="computeroutput"><span class="identifier">config_info</span><span class="special">.</span><span class="identifier">cpp</span></code>.<br> + <br> + </li> +<li class="listitem"> + cd into <code class="computeroutput"><span class="identifier">libs</span><span class="special">/</span><span class="identifier">config</span><span class="special">/</span><span class="identifier">test</span><span class="special">/</span><span class="identifier">all</span></code> and run <code class="computeroutput"><span class="identifier">bjam</span> + </code><span class="emphasis"><em>MACRONAME<code class="computeroutput"> <span class="identifier">compiler</span><span class="special">-</span><span class="identifier">list</span></code></em></span>, + where <span class="emphasis"><em>MACRONAME</em></span> is the name of the new macro, and + <span class="emphasis"><em><code class="computeroutput"><span class="identifier">compiler</span><span class="special">-</span><span class="identifier">list</span></code></em></span> is a space separated + list of compilers to test with.<br> <br> The xxx_pass_test and the + xxx_fail_test <span class="bold"><strong>should both report <code class="computeroutput"><span class="special">**</span><span class="identifier">passed</span><span class="special">**</span></code></strong></span>.<br> <br> If <span class="emphasis"><em>MACRONAME</em></span> + is not defined when it should be defined, xxx_pass_test will not report + <code class="computeroutput"><span class="special">**</span><span class="identifier">passed</span><span class="special">**</span></code>. If <span class="emphasis"><em>MACRONAME</em></span> + is defined when it should not be defined, xxx_fail_test will not report + <code class="computeroutput"><span class="special">**</span><span class="identifier">passed</span><span class="special">**</span></code>.<br> <br> + </li> +<li class="listitem"> + cd into <code class="computeroutput"><span class="identifier">libs</span><span class="special">/</span><span class="identifier">config</span><span class="special">/</span><span class="identifier">test</span></code> and run <code class="computeroutput"><span class="identifier">bjam</span> + <span class="identifier">config_info</span> <span class="identifier">config_test</span> + </code><span class="emphasis"><em><code class="computeroutput"><span class="identifier">compiler</span><span class="special">-</span><span class="identifier">list</span></code></em></span>. + <code class="computeroutput"><span class="identifier">config_info</span></code> should build + and run cleanly for all the compilers in <span class="emphasis"><em><code class="computeroutput"><span class="identifier">compiler</span><span class="special">-</span><span class="identifier">list</span></code></em></span> + while <code class="computeroutput"><span class="identifier">config_test</span></code> should + fail for those that have the defect, and pass for those that do not. + </li> +</ul></div> +<p> + Then you should: + </p> +<div class="itemizedlist"><ul class="itemizedlist" type="disc"> +<li class="listitem"> + Define the defect macro in those config headers that require it. + </li> +<li class="listitem"> + Document the macro in this documentation (please do not forget this step!!) + </li> +<li class="listitem"> + Commit everything. + </li> +<li class="listitem"> + Keep an eye on the regression tests for new failures in Boost.Config + caused by the addition. + </li> +<li class="listitem"> + Start using the macro. + </li> +</ul></div> +</div> +<div class="section"> +<div class="titlepage"><div><div><h3 class="title"> +<a name="boost_config.guidelines_for_boost_authors.adding_new_feature_test_macros"></a><a class="link" href="guidelines_for_boost_authors.html#boost_config.guidelines_for_boost_authors.adding_new_feature_test_macros" title="Adding New Feature Test Macros">Adding + New Feature Test Macros</a> +</h3></div></div></div> +<p> + When you need to add a macro that describes a feature that the standard does + not require, follow the convention for adding a new defect macro (above), + but call the macro <code class="computeroutput"><span class="identifier">BOOST_HAS_FOO</span></code>, + and name the test file "<code class="computeroutput"><span class="identifier">boost_has_foo</span><span class="special">.</span><span class="identifier">ipp</span></code>". + Try not to add feature test macros unnecessarily, if there is a platform + specific macro that can already be used (for example <code class="computeroutput"><span class="identifier">_WIN32</span></code>, + <code class="computeroutput"><span class="identifier">__BEOS__</span></code>, or <code class="computeroutput"><span class="identifier">__linux</span></code>) to identify the feature then use + that. Try to keep the macro to a feature group, or header name, rather than + one specific API (for example <code class="computeroutput"><span class="identifier">BOOST_HAS_NL_TYPES_H</span></code> + rather than <code class="computeroutput"><span class="identifier">BOOST_HAS_CATOPEN</span></code>). + If the macro describes a POSIX feature group, then add boilerplate code to + <a href="../../../../../boost/config/user.hpp" target="_top"><boost/config/suffix.hpp></a> + to auto-detect the feature where possible (if you are wondering why we can't + use POSIX feature test macro directly, remember that many of these features + can be added by third party libraries, and are not therefore identified inside + <code class="computeroutput"><span class="special"><</span><span class="identifier">unistd</span><span class="special">.</span><span class="identifier">h</span><span class="special">></span></code>). + </p> +</div> +<div class="section"> +<div class="titlepage"><div><div><h3 class="title"> +<a name="boost_config.guidelines_for_boost_authors.modifying_the_boost_configuration_headers"></a><a class="link" href="guidelines_for_boost_authors.html#boost_config.guidelines_for_boost_authors.modifying_the_boost_configuration_headers" title="Modifying the Boost Configuration Headers">Modifying + the Boost Configuration Headers</a> +</h3></div></div></div> +<p> + The aim of boost's configuration setup is that the configuration headers + should be relatively stable - a boost user should not have to recompile their + code just because the configuration for some compiler that they're not interested + in has changed. Separating the configuration into separate compiler/standard + library/platform sections provides for part of this stability, but boost + authors require some amount of restraint as well, in particular: + </p> +<p> + <a href="../../../../../boost/config.hpp" target="_top"><boost/config.hpp></a> + should never change, don't alter this file. + </p> +<p> + <a href="../../../../../boost/config/user.hpp" target="_top"><boost/config/user.hpp></a> + is included by default, don't add extra code to this file unless you have + to. If you do, please remember to update <a href="../../../tools/configure.in" target="_top">libs/config/tools/configure.in</a> + as well. + </p> +<p> + <a href="../../../../../boost/config/user.hpp" target="_top"><boost/config/suffix.hpp></a> + is always included so be careful about modifying this file as it breaks dependencies + for everyone. This file should include only "boilerplate" configuration + code, and generally should change only when new macros are added. + </p> +<p> + <a href="../../../../../boost/config/select_compiler_config.hpp" target="_top"><boost/config/select_compiler_config.hpp></a>, + <a href="../../../../../boost/config/select_platform_config.hpp" target="_top"><boost/config/select_platform_config.hpp></a> + and <a href="../../../../../boost/config/select_stdlib_config.hpp" target="_top"><boost/config/select_stdlib_config.hpp></a> + are included by default and should change only if support for a new compiler/standard + library/platform is added. + </p> +<p> + The compiler/platform/standard library selection code is set up so that unknown + platforms are ignored and assumed to be fully standards compliant - this + gives unknown platforms a "sporting chance" of working "as + is" even without running the configure script. + </p> +<p> + When adding or modifying the individual mini-configs, assume that future, + as yet unreleased versions of compilers, have all the defects of the current + version. Although this is perhaps unnecessarily pessimistic, it cuts down + on the maintenance of these files, and experience suggests that pessimism + is better placed than optimism here! + </p> +</div> +</div> +<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr> +<td align="left"></td> +<td align="right"><div class="copyright-footer">Copyright © 2001-2007 Beman Dawes, Vesa Karvonen, John + Maddock<p> + Distributed under the Boost Software License, Version 1.0. (See accompanying + file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>) + </p> +</div></td> +</tr></table> +<hr> +<div class="spirit-nav"> +<a accesskey="p" href="boost_macro_reference.html"><img src="../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="rationale.html"><img src="../../../../../doc/src/images/next.png" alt="Next"></a> +</div> +</body> +</html> diff --git a/libs/config/doc/html/boost_config/rationale.html b/libs/config/doc/html/boost_config/rationale.html new file mode 100644 index 0000000000..d62510c12d --- /dev/null +++ b/libs/config/doc/html/boost_config/rationale.html @@ -0,0 +1,124 @@ +<html> +<head> +<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII"> +<title>Rationale</title> +<link rel="stylesheet" href="../../../../../doc/src/boostbook.css" type="text/css"> +<meta name="generator" content="DocBook XSL Stylesheets V1.76.1"> +<link rel="home" href="../index.html" title="Boost.Config"> +<link rel="up" href="../index.html" title="Boost.Config"> +<link rel="prev" href="guidelines_for_boost_authors.html" title="Guidelines for Boost Authors"> +<link rel="next" href="acknowledgements.html" title="Acknowledgements"> +</head> +<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"> +<table cellpadding="2" width="100%"><tr> +<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../boost.png"></td> +<td align="center"><a href="../../../../../index.html">Home</a></td> +<td align="center"><a href="../../../../../libs/libraries.htm">Libraries</a></td> +<td align="center"><a href="http://www.boost.org/users/people.html">People</a></td> +<td align="center"><a href="http://www.boost.org/users/faq.html">FAQ</a></td> +<td align="center"><a href="../../../../../more/index.htm">More</a></td> +</tr></table> +<hr> +<div class="spirit-nav"> +<a accesskey="p" href="guidelines_for_boost_authors.html"><img src="../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="acknowledgements.html"><img src="../../../../../doc/src/images/next.png" alt="Next"></a> +</div> +<div class="section"> +<div class="titlepage"><div><div><h2 class="title" style="clear: both"> +<a name="boost_config.rationale"></a><a class="link" href="rationale.html" title="Rationale">Rationale</a> +</h2></div></div></div> +<div class="toc"><dl> +<dt><span class="section"><a href="rationale.html#boost_config.rationale.the_problem">The problem</a></span></dt> +<dt><span class="section"><a href="rationale.html#boost_config.rationale.the_solution">The solution</a></span></dt> +</dl></div> +<p> + The problem with many traditional "textbook" implementations of configuration + headers (where all the configuration options are in a single "monolithic" + header) is that they violate certain fundamental software engineering principles + which would have the effect of making boost more fragile, more difficult to + maintain and more difficult to use safely. You can find a description of the + principles from the <a href="http://www.objectmentor.com/resources/articles/Principles_and_Patterns.pdf" target="_top">following + article</a>. + </p> +<div class="section"> +<div class="titlepage"><div><div><h3 class="title"> +<a name="boost_config.rationale.the_problem"></a><a class="link" href="rationale.html#boost_config.rationale.the_problem" title="The problem">The problem</a> +</h3></div></div></div> +<p> + Consider a situation in which you are concurrently developing on multiple + platforms. Then consider adding a new platform or changing the platform definitions + of an existing platform. What happens? Everything, and this does literally + mean everything, recompiles. Isn't it quite absurd that adding a new platform, + which has absolutely nothing to do with previously existing platforms, means + that all code on all existing platforms needs to be recompiled? + </p> +<p> + Effectively, there is an imposed physical dependency between platforms that + have nothing to do with each other. Essentially, the traditional solution + employed by configuration headers does not conform to the Open-Closed Principle: + </p> +<div class="blockquote"><blockquote class="blockquote"><p> + <span class="bold"><strong>"A module should be open for extension but closed + for modification."</strong></span> + </p></blockquote></div> +<p> + Extending a traditional configuration header implies modifying existing code. + </p> +<p> + Furthermore, consider the complexity and fragility of the platform detection + code. What if a simple change breaks the detection on some minor platform? + What if someone accidentally or on purpose (as a workaround for some other + problem) defines some platform dependent macros that are used by the detection + code? A traditional configuration header is one of the most volatile headers + of the entire library, and more stable elements of Boost would depend on + it. This violates the Stable Dependencies Principle: + </p> +<div class="blockquote"><blockquote class="blockquote"><p> + <span class="bold"><strong>"Depend in the direction of stability."</strong></span> + </p></blockquote></div> +<p> + After even a minor change to a traditional configuration header on one minor + platform, almost everything on every platform should be tested if we follow + sound software engineering practice. + </p> +<p> + Another important issue is that it is not always possible to submit changes + to <code class="computeroutput"><span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">config</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span></code>. + Some boost users are currently working on platforms using tools and libraries + that are under strict Non-Disclosure Agreements. In this situation it is + impossible to submit changes to a traditional monolithic configuration header, + instead some method by which the user can insert their own configuration + code must be provided. + </p> +</div> +<div class="section"> +<div class="titlepage"><div><div><h3 class="title"> +<a name="boost_config.rationale.the_solution"></a><a class="link" href="rationale.html#boost_config.rationale.the_solution" title="The solution">The solution</a> +</h3></div></div></div> +<p> + The approach taken by boost's configuration headers is to separate configuration + into three orthogonal parts: the compiler, the standard library and the platform. + Each compiler/standard library/platform gets its own mini-configuration header, + so that changes to one compiler's configuration (for example) does not affect + other compilers. In addition there are measures that can be taken both to + omit the compiler/standard library/platform detection code (so that adding + support to a new platform does not break dependencies), or to freeze the + configuration completely; providing almost complete protection against dependency + changes. + </p> +</div> +</div> +<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr> +<td align="left"></td> +<td align="right"><div class="copyright-footer">Copyright © 2001-2007 Beman Dawes, Vesa Karvonen, John + Maddock<p> + Distributed under the Boost Software License, Version 1.0. (See accompanying + file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>) + </p> +</div></td> +</tr></table> +<hr> +<div class="spirit-nav"> +<a accesskey="p" href="guidelines_for_boost_authors.html"><img src="../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="acknowledgements.html"><img src="../../../../../doc/src/images/next.png" alt="Next"></a> +</div> +</body> +</html> diff --git a/libs/config/doc/html/index.html b/libs/config/doc/html/index.html new file mode 100644 index 0000000000..9dc678b1f2 --- /dev/null +++ b/libs/config/doc/html/index.html @@ -0,0 +1,958 @@ +<html> +<head> +<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII"> +<title>Boost.Config</title> +<link rel="stylesheet" href="../../../../doc/src/boostbook.css" type="text/css"> +<meta name="generator" content="DocBook XSL Stylesheets V1.76.1"> +<link rel="home" href="index.html" title="Boost.Config"> +<link rel="next" href="boost_config/boost_macro_reference.html" title="Boost Macro Reference"> +</head> +<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"> +<table cellpadding="2" width="100%"><tr> +<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../boost.png"></td> +<td align="center"><a href="../../../../index.html">Home</a></td> +<td align="center"><a href="../../../../libs/libraries.htm">Libraries</a></td> +<td align="center"><a href="http://www.boost.org/users/people.html">People</a></td> +<td align="center"><a href="http://www.boost.org/users/faq.html">FAQ</a></td> +<td align="center"><a href="../../../../more/index.htm">More</a></td> +</tr></table> +<hr> +<div class="spirit-nav"><a accesskey="n" href="boost_config/boost_macro_reference.html"><img src="../../../../doc/src/images/next.png" alt="Next"></a></div> +<div class="article"> +<div class="titlepage"> +<div> +<div><h2 class="title"> +<a name="config"></a>Boost.Config</h2></div> +<div><div class="authorgroup"><div class="author"><h3 class="author"> +<span class="firstname">Vesa Karvonen, John Maddock</span> <span class="surname">Beman Dawes</span> +</h3></div></div></div> +<div><p class="copyright">Copyright © 2001-2007 Beman Dawes, Vesa Karvonen, John + Maddock</p></div> +<div><div class="legalnotice"> +<a name="id988561"></a><p> + Distributed under the Boost Software License, Version 1.0. (See accompanying + file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>) + </p> +</div></div> +</div> +<hr> +</div> +<div class="toc"> +<p><b>Table of Contents</b></p> +<dl> +<dt><span class="section"><a href="index.html#boost_config.configuring_boost_for_your_platform">Configuring + Boost for Your Platform</a></span></dt> +<dd><dl> +<dt><span class="section"><a href="index.html#boost_config.configuring_boost_for_your_platform.using_the_default_boost_configuration">Using + the default boost configuration</a></span></dt> +<dt><span class="section"><a href="index.html#boost_config.configuring_boost_for_your_platform.the__boost_config_hpp__header">The + <boost/config.hpp> header</a></span></dt> +<dt><span class="section"><a href="index.html#boost_config.configuring_boost_for_your_platform.using_the_configure_script">Using + the configure script</a></span></dt> +<dt><span class="section"><a href="index.html#boost_config.configuring_boost_for_your_platform.user_settable_options">User + settable options</a></span></dt> +<dt><span class="section"><a href="index.html#boost_config.configuring_boost_for_your_platform.advanced_configuration_usage">Advanced + configuration usage</a></span></dt> +<dt><span class="section"><a href="index.html#boost_config.configuring_boost_for_your_platform.testing_the_boost_configuration">Testing + the boost configuration</a></span></dt> +</dl></dd> +<dt><span class="section"><a href="boost_config/boost_macro_reference.html">Boost Macro Reference</a></span></dt> +<dd><dl> +<dt><span class="section"><a href="boost_config/boost_macro_reference.html#boost_config.boost_macro_reference.macros_that_describe_c__03_defects">Macros + that describe C++03 defects</a></span></dt> +<dt><span class="section"><a href="boost_config/boost_macro_reference.html#boost_config.boost_macro_reference.macros_that_describe_optional_features">Macros + that describe optional features</a></span></dt> +<dt><span class="section"><a href="boost_config/boost_macro_reference.html#boost_config.boost_macro_reference.macros_that_describe_possible_c___future_features">Macros + that describe possible C++ future features</a></span></dt> +<dt><span class="section"><a href="boost_config/boost_macro_reference.html#boost_config.boost_macro_reference.macros_that_describe_c__11_features_not_supported">Macros + that describe C++11 features not supported</a></span></dt> +<dt><span class="section"><a href="boost_config/boost_macro_reference.html#boost_config.boost_macro_reference.macros_that_allow_use_of_c__11_features_with_c__03_compilers">Macros + that allow use of C++11 features with C++03 compilers</a></span></dt> +<dt><span class="section"><a href="boost_config/boost_macro_reference.html#boost_config.boost_macro_reference.boost_helper_macros">Boost + Helper Macros</a></span></dt> +<dt><span class="section"><a href="boost_config/boost_macro_reference.html#boost_config.boost_macro_reference.boost_informational_macros">Boost + Informational Macros</a></span></dt> +<dt><span class="section"><a href="boost_config/boost_macro_reference.html#boost_config.boost_macro_reference.macros_for_libraries_with_separate_source_code">Macros + for libraries with separate source code</a></span></dt> +</dl></dd> +<dt><span class="section"><a href="boost_config/guidelines_for_boost_authors.html">Guidelines for + Boost Authors</a></span></dt> +<dd><dl> +<dt><span class="section"><a href="boost_config/guidelines_for_boost_authors.html#boost_config.guidelines_for_boost_authors.warnings">Disabling + Compiler Warnings</a></span></dt> +<dt><span class="section"><a href="boost_config/guidelines_for_boost_authors.html#boost_config.guidelines_for_boost_authors.adding_new_defect_macros">Adding + New Defect Macros</a></span></dt> +<dt><span class="section"><a href="boost_config/guidelines_for_boost_authors.html#boost_config.guidelines_for_boost_authors.adding_new_feature_test_macros">Adding + New Feature Test Macros</a></span></dt> +<dt><span class="section"><a href="boost_config/guidelines_for_boost_authors.html#boost_config.guidelines_for_boost_authors.modifying_the_boost_configuration_headers">Modifying + the Boost Configuration Headers</a></span></dt> +</dl></dd> +<dt><span class="section"><a href="boost_config/rationale.html">Rationale</a></span></dt> +<dd><dl> +<dt><span class="section"><a href="boost_config/rationale.html#boost_config.rationale.the_problem">The problem</a></span></dt> +<dt><span class="section"><a href="boost_config/rationale.html#boost_config.rationale.the_solution">The solution</a></span></dt> +</dl></dd> +<dt><span class="section"><a href="boost_config/acknowledgements.html">Acknowledgements</a></span></dt> +</dl> +</div> +<div class="section"> +<div class="titlepage"><div><div><h2 class="title" style="clear: both"> +<a name="boost_config.configuring_boost_for_your_platform"></a><a class="link" href="index.html#boost_config.configuring_boost_for_your_platform" title="Configuring Boost for Your Platform">Configuring + Boost for Your Platform</a> +</h2></div></div></div> +<div class="toc"><dl> +<dt><span class="section"><a href="index.html#boost_config.configuring_boost_for_your_platform.using_the_default_boost_configuration">Using + the default boost configuration</a></span></dt> +<dt><span class="section"><a href="index.html#boost_config.configuring_boost_for_your_platform.the__boost_config_hpp__header">The + <boost/config.hpp> header</a></span></dt> +<dt><span class="section"><a href="index.html#boost_config.configuring_boost_for_your_platform.using_the_configure_script">Using + the configure script</a></span></dt> +<dt><span class="section"><a href="index.html#boost_config.configuring_boost_for_your_platform.user_settable_options">User + settable options</a></span></dt> +<dt><span class="section"><a href="index.html#boost_config.configuring_boost_for_your_platform.advanced_configuration_usage">Advanced + configuration usage</a></span></dt> +<dt><span class="section"><a href="index.html#boost_config.configuring_boost_for_your_platform.testing_the_boost_configuration">Testing + the boost configuration</a></span></dt> +</dl></div> +<div class="section"> +<div class="titlepage"><div><div><h3 class="title"> +<a name="boost_config.configuring_boost_for_your_platform.using_the_default_boost_configuration"></a><a class="link" href="index.html#boost_config.configuring_boost_for_your_platform.using_the_default_boost_configuration" title="Using the default boost configuration">Using + the default boost configuration</a> +</h3></div></div></div> +<p> + Boost comes already configured for most common compilers and platforms; you + should be able to use boost "as is". Since the compiler is configured + separately from the standard library, the default configuration should work + even if you replace the compiler's standard library with a third-party standard + library (like <a href="http://stlport.sourceforge.net" target="_top">STLport</a>). + </p> +<p> + Using boost "as is" without trying to reconfigure is the recommended + method for using boost. You can, however, run the configure script if you + want to, and there are regression tests provided that allow you to test the + current boost configuration with your particular compiler setup. + </p> +<p> + Boost library users can request support for additional compilers or platforms + by visiting our <a href="https://svn.boost.org/trac/boost/newticket" target="_top">Trac</a> + and submitting a support request. + </p> +</div> +<div class="section"> +<div class="titlepage"><div><div><h3 class="title"> +<a name="boost_config.configuring_boost_for_your_platform.the__boost_config_hpp__header"></a><a class="link" href="index.html#boost_config.configuring_boost_for_your_platform.the__boost_config_hpp__header" title="The <boost/config.hpp> header">The + <boost/config.hpp> header</a> +</h3></div></div></div> +<p> + Boost library implementations access configuration macros via + </p> +<pre class="programlisting"><span class="preprocessor">#include</span> <a href="../../../../boost/config.hpp" target="_top"><boost/config.hpp></a> +</pre> +<p> + While Boost library users are not required to include that file directly, + or use those configuration macros, such use is acceptable. The configuration + macros are documented as to their purpose, usage, and limitations which makes + them usable by both Boost library and user code. + </p> +<p> + Boost <a class="link" href="boost_config/boost_macro_reference.html#config_info_macros">informational</a> or <a class="link" href="boost_config/boost_macro_reference.html#config_helpers">helper</a> + macros are designed for use by Boost users as well as for our own internal + use. Note however, that the <a class="link" href="boost_config/boost_macro_reference.html#config_features">feature test</a> + and <a class="link" href="boost_config/boost_macro_reference.html#config_defects">defect test</a> macros were designed + for internal use by Boost libraries, not user code, so they can change at + any time (though no gratuitous changes are made to them). Boost library problems + resulting from changes to the configuration macros are caught by the Boost + regression tests, so the Boost libraries are updated to account for those + changes. By contrast, Boost library user code can be adversely affected by + changes to the macros without warning. The best way to keep abreast of changes + to the macros used in user code is to monitor the discussions on the Boost + developers list. + </p> +</div> +<div class="section"> +<div class="titlepage"><div><div><h3 class="title"> +<a name="boost_config.configuring_boost_for_your_platform.using_the_configure_script"></a><a name="config_config_script"></a><a class="link" href="index.html#boost_config.configuring_boost_for_your_platform.using_the_configure_script" title="Using the configure script">Using + the configure script</a> +</h3></div></div></div> +<div class="important"><table border="0" summary="Important"> +<tr> +<td rowspan="2" align="center" valign="top" width="25"><img alt="[Important]" src="../../../../doc/src/images/important.png"></td> +<th align="left">Important</th> +</tr> +<tr><td align="left" valign="top"><p> + This configure script only sets up the Boost headers for use with a particular + compiler. It has no effect on Boost.Build, or how the libraries are built. + </p></td></tr> +</table></div> +<p> + If you know that boost is incorrectly configured for your particular setup, + and you are on a UNIX like platform, then you may want to try and improve + things by running the boost configure script. From a shell command prompt + you will need to cd into <span class="emphasis"><em><boost-root></em></span><code class="computeroutput"><span class="special">/</span><span class="identifier">libs</span><span class="special">/</span><span class="identifier">config</span><span class="special">/</span></code> + and type: + </p> +<div class="blockquote"><blockquote class="blockquote"><p> + <code class="computeroutput"><span class="identifier">sh</span> <span class="special">./</span><span class="identifier">configure</span></code> + </p></blockquote></div> +<p> + you will see a list of the items being checked as the script works its way + through the regression tests. Note that the configure script only really + auto-detects your compiler if it's called g++, c++ or CC. If you are using + some other compiler you will need to set one or more of the following environment + variables: + </p> +<div class="informaltable"><table class="table"> +<colgroup> +<col> +<col> +</colgroup> +<thead><tr> +<th> + <p> + Variable + </p> + </th> +<th> + <p> + Description + </p> + </th> +</tr></thead> +<tbody> +<tr> +<td> + <p> + CXX + </p> + </td> +<td> + <p> + The name of the compiler, for example <code class="computeroutput"><span class="identifier">c</span><span class="special">++</span></code>. + </p> + </td> +</tr> +<tr> +<td> + <p> + CXXFLAGS + </p> + </td> +<td> + <p> + The compiler flags to use, for example <code class="computeroutput"><span class="special">-</span><span class="identifier">O2</span></code>. + </p> + </td> +</tr> +<tr> +<td> + <p> + LDFLAGS + </p> + </td> +<td> + <p> + The linker flags to use, for example <code class="computeroutput"><span class="special">-</span><span class="identifier">L</span><span class="special">/</span><span class="identifier">mypath</span></code>. + </p> + </td> +</tr> +<tr> +<td> + <p> + LIBS + </p> + </td> +<td> + <p> + Any libraries to link in, for example <code class="computeroutput"><span class="special">-</span><span class="identifier">lpthread</span></code>. + </p> + </td> +</tr> +</tbody> +</table></div> +<p> + For example to run the configure script with HP aCC, you might use something + like: + </p> +<pre class="programlisting"><span class="keyword">export</span> <span class="identifier">CXX</span><span class="special">=</span><span class="string">"aCC"</span> +<span class="keyword">export</span> <span class="identifier">CXXFLAGS</span><span class="special">=</span><span class="string">"-Aa -DAportable -D__HPACC_THREAD_SAFE_RB_TREE \ + -DRWSTD_MULTI_THREAD -DRW_MULTI_THREAD -D_REENTRANT -D_THREAD_SAFE"</span> +<span class="keyword">export</span> <span class="identifier">LDFLAGS</span><span class="special">=</span><span class="string">"-DAportable"</span> +<span class="keyword">export</span> <span class="identifier">LIBS</span><span class="special">=</span><span class="string">"-lpthread"</span> +<span class="identifier">sh</span> <span class="special">./</span><span class="identifier">configure</span> +</pre> +<p> + However you run the configure script, when it finishes you will find a new + header -<code class="computeroutput"><span class="identifier">user</span><span class="special">.</span><span class="identifier">hpp</span></code>- located in the <span class="emphasis"><em><boost-root></em></span><code class="computeroutput"><span class="special">/</span><span class="identifier">libs</span><span class="special">/</span><span class="identifier">config</span><span class="special">/</span></code> + directory. <span class="bold"><strong>Note that configure does not install this + header into your boost include path by default</strong></span>. This header contains + all the options generated by the configure script, plus a header-section + that contains the user settable options from the default version of <a href="../../../../boost/config/user.hpp" target="_top"><boost/config/user.hpp></a> + (located under <span class="emphasis"><em><boost-root></em></span><code class="computeroutput"><span class="special">/</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">config</span><span class="special">/</span></code>). + There are two ways you can use this header: + </p> +<div class="itemizedlist"><ul class="itemizedlist" type="disc"> +<li class="listitem"> + <span class="bold"><strong>Option 1:</strong></span> copy the header into <span class="emphasis"><em><boost-root></em></span><code class="computeroutput"><span class="special">/</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">config</span><span class="special">/</span></code> so that it replaces the default user.hpp + provided by boost. This option allows only one configure-generated setup; + boost developers should avoid this option, as it incurs the danger of + accidentally committing a configure-modified <a href="../../../../boost/config/user.hpp" target="_top"><boost/config/user.hpp></a> + to the cvs repository (something you will not be thanked for!). + </li> +<li class="listitem"> + <span class="bold"><strong>Option 2:</strong></span> give the header a more memorable + name, and place it somewhere convenient; then, define the macro <code class="computeroutput"><span class="identifier">BOOST_USER_CONFIG</span></code> to point to it. For + example create a new sub-directory <span class="emphasis"><em><boost-root></em></span><code class="computeroutput"><span class="special">/</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">config</span><span class="special">/</span></code> <code class="computeroutput"><span class="identifier">user</span><span class="special">/</span></code>, and copy the header there; for example + as <code class="computeroutput"><span class="identifier">multithread</span><span class="special">-</span><span class="identifier">gcc</span><span class="special">-</span><span class="identifier">config</span><span class="special">.</span><span class="identifier">hpp</span></code>. Then, when compiling add the command + line option: <code class="computeroutput"><span class="special">-</span><span class="identifier">DBOOST_USER_CONFIG</span><span class="special">=</span><span class="string">"<boost/config/user/multithread-gcc-config.hpp>"</span></code>, + and boost will use the new configuration header. This option allows you + to generate more than one configuration header, and to keep them separate + from the boost source - so that updates to the source do not interfere + with your configuration. + </li> +</ul></div> +</div> +<div class="section"> +<div class="titlepage"><div><div><h3 class="title"> +<a name="boost_config.configuring_boost_for_your_platform.user_settable_options"></a><a name="config_user_settable"></a><a class="link" href="index.html#boost_config.configuring_boost_for_your_platform.user_settable_options" title="User settable options">User + settable options</a> +</h3></div></div></div> +<p> + There are some configuration-options that represent user choices, rather + than compiler defects or platform specific options. These are listed in + <code class="computeroutput"><span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">config</span><span class="special">/</span><span class="identifier">user</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span></code> + and at the start of a configure-generated <code class="computeroutput"><span class="identifier">user</span><span class="special">.</span><span class="identifier">hpp</span></code> header. + You can define these on the command line, or by editing <code class="computeroutput"><span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">config</span><span class="special">/</span><span class="identifier">user</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span></code>, they are listed in the following table: + </p> +<div class="informaltable"><table class="table"> +<colgroup> +<col> +<col> +</colgroup> +<thead><tr> +<th> + <p> + Macro + </p> + </th> +<th> + <p> + Description + </p> + </th> +</tr></thead> +<tbody> +<tr> +<td> + <p> + <code class="computeroutput"><span class="identifier">BOOST_USER_CONFIG</span></code> + </p> + </td> +<td> + <p> + When defined, it should point to the name of the user configuration + file to include prior to any boost configuration files. When not + defined, defaults to <a href="../../../../boost/config/user.hpp" target="_top"><code class="computeroutput"><span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">config</span><span class="special">/</span><span class="identifier">user</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span></code></a>. + </p> + </td> +</tr> +<tr> +<td> + <p> + <code class="computeroutput"><span class="identifier">BOOST_COMPILER_CONFIG</span></code> + </p> + </td> +<td> + <p> + When defined, it should point to the name of the compiler configuration + file to use. Defining this cuts out the compiler selection logic, + and eliminates the dependency on the header containing that logic. + For example if you are using gcc, then you could define BOOST_COMPILER_CONFIG + to <a href="../../../../boost/config/compiler/gcc.hpp" target="_top"><code class="computeroutput"><span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">config</span><span class="special">/</span><span class="identifier">compiler</span><span class="special">/</span><span class="identifier">gcc</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span></code></a>. + </p> + </td> +</tr> +<tr> +<td> + <p> + <code class="computeroutput"><span class="identifier">BOOST_STDLIB_CONFIG</span></code> + </p> + </td> +<td> + <p> + When defined, it should point to the name of the standard library + configuration file to use. Defining this cuts out the standard + library selection logic, and eliminates the dependency on the header + containing that logic. For example if you are using STLport, then + you could define <code class="computeroutput"><span class="identifier">BOOST_STDLIB_CONFIG</span></code> + to <a href="../../../../boost/config/stdlib/stlport.hpp" target="_top"><code class="computeroutput"><span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">config</span><span class="special">/</span><span class="identifier">stdlib</span><span class="special">/</span><span class="identifier">stlport</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span></code></a>. + </p> + </td> +</tr> +<tr> +<td> + <p> + <code class="computeroutput"><span class="identifier">BOOST_PLATFORM_CONFIG</span></code> + </p> + </td> +<td> + <p> + When defined, it should point to the name of the platform configuration + file to use. Defining this cuts out the platform selection logic, + and eliminates the dependency on the header containing that logic. + For example if you are compiling on linux, then you could define + <code class="computeroutput"><span class="identifier">BOOST_PLATFORM_CONFIG</span></code> + to <a href="../../../../boost/config/platform/linux.hpp" target="_top"><code class="computeroutput"><span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">config</span><span class="special">/</span><span class="identifier">platform</span><span class="special">/</span><span class="identifier">linux</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span></code></a>. + </p> + </td> +</tr> +<tr> +<td> + <p> + <code class="computeroutput"><span class="identifier">BOOST_NO_COMPILER_CONFIG</span></code> + </p> + </td> +<td> + <p> + When defined, no compiler configuration file is selected or included, + define when the compiler is fully conformant with the standard, + or where the user header (see <code class="computeroutput"><span class="identifier">BOOST_USER_CONFIG</span></code>), + has had any options necessary added to it, for example by an autoconf + generated configure script. + </p> + </td> +</tr> +<tr> +<td> + <p> + <code class="computeroutput"><span class="identifier">BOOST_NO_STDLIB_CONFIG</span></code> + </p> + </td> +<td> + <p> + When defined, no standard library configuration file is selected + or included, define when the standard library is fully conformant + with the standard, or where the user header (see <code class="computeroutput"><span class="identifier">BOOST_USER_CONFIG</span></code>), has had any + options necessary added to it, for example by an autoconf generated + configure script. + </p> + </td> +</tr> +<tr> +<td> + <p> + <code class="computeroutput"><span class="identifier">BOOST_NO_PLATFORM_CONFIG</span></code> + </p> + </td> +<td> + <p> + When defined, no platform configuration file is selected or included, + define when the platform is fully conformant with the standard + (and has no useful extra features), or where the user header (see + <code class="computeroutput"><span class="identifier">BOOST_USER_CONFIG</span></code>), + has had any options necessary added to it, for example by an autoconf + generated configure script. + </p> + </td> +</tr> +<tr> +<td> + <p> + <code class="computeroutput"><span class="identifier">BOOST_NO_CONFIG</span></code> + </p> + </td> +<td> + <p> + Equivalent to defining all of <code class="computeroutput"><span class="identifier">BOOST_NO_COMPILER_CONFIG</span></code>, + <code class="computeroutput"><span class="identifier">BOOST_NO_STDLIB_CONFIG</span></code> + and <code class="computeroutput"><span class="identifier">BOOST_NO_PLATFORM_CONFIG</span></code>. + </p> + </td> +</tr> +<tr> +<td> + <p> + <code class="computeroutput"><span class="identifier">BOOST_STRICT_CONFIG</span></code> + </p> + </td> +<td> + <p> + The normal behavior for compiler versions that are newer than the + last known version, is to assume that they have all the same defects + as the last known version. By setting this define, then compiler + versions that are newer than the last known version are assumed + to be fully conforming with the standard. This is probably most + useful for boost developers or testers, and for those who want + to use boost to test beta compiler versions. + </p> + </td> +</tr> +<tr> +<td> + <p> + <code class="computeroutput"><span class="identifier">BOOST_ASSERT_CONFIG</span></code> + </p> + </td> +<td> + <p> + When this flag is set, if the config finds anything unknown, then + it will stop with a #error rather than continue. Boost regression + testers should set this define, as should anyone who wants to quickly + check whether boost is supported on their platform. + </p> + </td> +</tr> +<tr> +<td> + <p> + <code class="computeroutput"><span class="identifier">BOOST_DISABLE_THREADS</span></code> + </p> + </td> +<td> + <p> + When defined, disables threading support, even if the compiler + in its current translation mode supports multiple threads. + </p> + </td> +</tr> +<tr> +<td> + <p> + <code class="computeroutput"><span class="identifier">BOOST_DISABLE_WIN32</span></code> + </p> + </td> +<td> + <p> + When defined, disables the use of Win32 specific API's, even when + these are available. Also has the effect of setting <code class="computeroutput"><span class="identifier">BOOST_DISABLE_THREADS</span></code> unless + <code class="computeroutput"><span class="identifier">BOOST_HAS_PTHREADS</span></code> + is set. This option may be set automatically by the config system + when it detects that the compiler is in "strict mode". + </p> + </td> +</tr> +<tr> +<td> + <p> + <code class="computeroutput"><span class="identifier">BOOST_DISABLE_ABI_HEADERS</span></code> + </p> + </td> +<td> + <p> + Stops boost headers from including any prefix/suffix headers that + normally control things like struct packing and alignment. + </p> + </td> +</tr> +<tr> +<td> + <p> + <code class="computeroutput"><span class="identifier">BOOST_ABI_PREFIX</span></code> + </p> + </td> +<td> + <p> + A prefix header to include in place of whatever boost.config would + normally select, any replacement should set up struct packing and + alignment options as required. + </p> + </td> +</tr> +<tr> +<td> + <p> + <code class="computeroutput"><span class="identifier">BOOST_ABI_SUFFIX</span></code> + </p> + </td> +<td> + <p> + A suffix header to include in place of whatever boost.config would + normally select, any replacement should undo the effects of the + prefix header. + </p> + </td> +</tr> +<tr> +<td> + <p> + <code class="computeroutput"><span class="identifier">BOOST_ALL_DYN_LINK</span></code> + </p> + </td> +<td> + <p> + Forces all libraries that have separate source, to be linked as + dll's rather than static libraries on Microsoft Windows (this macro + is used to turn on <code class="computeroutput"><span class="identifier">__declspec</span><span class="special">(</span><span class="identifier">dllimport</span><span class="special">)</span></code> modifiers, so that the compiler + knows which symbols to look for in a dll rather than in a static + library). Note that there may be some libraries that can only be + statically linked (Boost.Test for example) and others which may + only be dynamically linked (Boost.Threads for example), in these + cases this macro has no effect. + </p> + </td> +</tr> +<tr> +<td> + <p> + <code class="computeroutput"><span class="identifier">BOOST_</span></code><span class="emphasis"><em>WHATEVER</em></span><code class="computeroutput"><span class="identifier">_DYN_LINK</span></code> + </p> + </td> +<td> + <p> + Forces library "whatever" to be linked as a dll rather + than a static library on Microsoft Windows: replace the <span class="emphasis"><em>WHATEVER</em></span> + part of the macro name with the name of the library that you want + to dynamically link to, for example use <code class="computeroutput"><span class="identifier">BOOST_DATE_TIME_DYN_LINK</span></code> + or <code class="computeroutput"><span class="identifier">BOOST_REGEX_DYN_LINK</span></code> + etc (this macro is used to turn on <code class="computeroutput"><span class="identifier">__declspec</span><span class="special">(</span><span class="identifier">dllimport</span><span class="special">)</span></code> modifiers, so that the compiler + knows which symbols to look for in a dll rather than in a static + library). Note that there may be some libraries that can only be + statically linked (Boost.Test for example) and others which may + only be dynamically linked (Boost.Threads for example), in these + cases this macro is unsupported. + </p> + </td> +</tr> +<tr> +<td> + <p> + <code class="computeroutput"><span class="identifier">BOOST_ALL_NO_LIB</span></code> + </p> + </td> +<td> + <p> + Tells the config system not to automatically select which libraries + to link against. Normally if a compiler supports #pragma lib, then + the correct library build variant will be automatically selected + and linked against, simply by the act of including one of that + library's headers. This macro turns that feature off. + </p> + </td> +</tr> +<tr> +<td> + <p> + <code class="computeroutput"><span class="identifier">BOOST_</span></code><span class="emphasis"><em>WHATEVER</em></span><code class="computeroutput"><span class="identifier">_NO_LIB</span></code> + </p> + </td> +<td> + <p> + Tells the config system not to automatically select which library + to link against for library "whatever", replace <span class="emphasis"><em>WHATEVER</em></span> + in the macro name with the name of the library; for example <code class="computeroutput"><span class="identifier">BOOST_DATE_TIME_NO_LIB</span></code> or <code class="computeroutput"><span class="identifier">BOOST_REGEX_NO_LIB</span></code>. Normally + if a compiler supports <code class="computeroutput"><span class="preprocessor">#pragma</span> + <span class="identifier">lib</span></code>, then the correct + library build variant will be automatically selected and linked + against, simply by the act of including one of that library's headers. + This macro turns that feature off. + </p> + </td> +</tr> +<tr> +<td> + <p> + <code class="computeroutput"><span class="identifier">BOOST_LIB_DIAGNOSTIC</span></code> + </p> + </td> +<td> + <p> + Causes the auto-linking code to output diagnostic messages indicating + the name of the library that is selected for linking. + </p> + </td> +</tr> +<tr> +<td> + <p> + <code class="computeroutput"><span class="identifier">BOOST_LIB_TOOLSET</span></code> + </p> + </td> +<td> + <p> + Overrides the name of the toolset part of the name of library being + linked to; note if defined this must be defined to a quoted string + literal, for example "abc". + </p> + </td> +</tr> +</tbody> +</table></div> +</div> +<div class="section"> +<div class="titlepage"><div><div><h3 class="title"> +<a name="boost_config.configuring_boost_for_your_platform.advanced_configuration_usage"></a><a class="link" href="index.html#boost_config.configuring_boost_for_your_platform.advanced_configuration_usage" title="Advanced configuration usage">Advanced + configuration usage</a> +</h3></div></div></div> +<div class="toc"><dl> +<dt><span class="section"><a href="index.html#boost_config.configuring_boost_for_your_platform.advanced_configuration_usage.example_1__creating_our_own_frozen_configuration">Example + 1, creating our own frozen configuration</a></span></dt> +<dt><span class="section"><a href="index.html#boost_config.configuring_boost_for_your_platform.advanced_configuration_usage.example_2__skipping_files_that_you_don_t_need">Example + 2: skipping files that you don't need</a></span></dt> +<dt><span class="section"><a href="index.html#boost_config.configuring_boost_for_your_platform.advanced_configuration_usage.example_3__using_configure_script_to_freeze_the_boost_configuration">Example + 3: using configure script to freeze the boost configuration</a></span></dt> +</dl></div> +<p> + By setting various macros on the compiler command line or by editing <a href="../../../../boost/config/user.hpp" target="_top"><boost/config/user.hpp></a>, + the boost configuration setup can be optimised in a variety of ways. + </p> +<p> + Boost's configuration is structured so that the user-configuration is included + first (defaulting to <a href="../../../../boost/config/user.hpp" target="_top"><boost/config/user.hpp></a> + if <code class="computeroutput"><span class="identifier">BOOST_USER_CONFIG</span></code> is not + defined). This sets up any user-defined policies, and gives the user-configuration + a chance to influence what happens next. + </p> +<p> + Next the compiler, standard library, and platform configuration files are + included. These are included via macros (<code class="computeroutput"><span class="identifier">BOOST_COMPILER_CONFIG</span></code> + etc, <a class="link" href="index.html#config_user_settable">see user settable macros</a>), + and if the corresponding macro is undefined then a separate header that detects + which compiler/standard library/platform is in use is included in order to + set these. The config can be told to ignore these headers altogether if the + corresponding <code class="computeroutput"><span class="identifier">BOOST_NO_XXX</span></code> + macro is set (for example <code class="computeroutput"><span class="identifier">BOOST_NO_COMPILER_CONFIG</span></code> + to disable including any compiler configuration file - <a class="link" href="index.html#config_user_settable">see + user settable macros</a>). + </p> +<p> + Finally the boost configuration header, includes <a href="../../../../boost/config/user.hpp" target="_top"><boost/config/suffix.hpp></a>; + this header contains any boiler plate configuration code - for example where + one boost macro being set implies that another must be set also. + </p> +<p> + The following usage examples represent just a few of the possibilities: + </p> +<div class="section"> +<div class="titlepage"><div><div><h4 class="title"> +<a name="boost_config.configuring_boost_for_your_platform.advanced_configuration_usage.example_1__creating_our_own_frozen_configuration"></a><a class="link" href="index.html#boost_config.configuring_boost_for_your_platform.advanced_configuration_usage.example_1__creating_our_own_frozen_configuration" title="Example 1, creating our own frozen configuration">Example + 1, creating our own frozen configuration</a> +</h4></div></div></div> +<p> + Lets suppose that we're building boost with Visual C++ 6, and STLport 4.0. + Lets suppose also that we don't intend to update our compiler or standard + library any time soon. In order to avoid breaking dependencies when we + update boost, we may want to "freeze" our configuration headers, + so that we only have to rebuild our project if the boost code itself has + changed, and not because the boost config has been updated for more recent + versions of Visual C++ or STLport. We'll start by realising that the configuration + files in use are: <a href="../../../../boost/config/compiler/visualc.hpp" target="_top"><code class="computeroutput"><span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">config</span><span class="special">/</span><span class="identifier">compiler</span><span class="special">/</span><span class="identifier">visualc</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span></code></a> for the compiler, <a href="../../../../boost/config/stdlib/stlport.hpp" target="_top"><code class="computeroutput"><span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">config</span><span class="special">/</span><span class="identifier">stdlib</span><span class="special">/</span><span class="identifier">stlport</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span></code></a> for the standard library, and + <a href="../../../../boost/config/platform/win32.hpp" target="_top"><code class="computeroutput"><span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">config</span><span class="special">/</span><span class="identifier">platform</span><span class="special">/</span><span class="identifier">win32</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span></code></a> for the platform. Next we'll + create our own private configuration directory: <code class="computeroutput"><span class="identifier">boost</span><span class="special">/</span><span class="identifier">config</span><span class="special">/</span><span class="identifier">mysetup</span><span class="special">/</span></code>, and copy the configuration files into + there. Finally, open up <a href="../../../../boost/config/user.hpp" target="_top"><boost/config/user.hpp></a> + and edit the following defines: + </p> +<pre class="programlisting"><span class="preprocessor">#define</span> <span class="identifier">BOOST_COMPILER_CONFIG</span> <span class="string">"boost/config/mysetup/visualc.hpp"</span> +<span class="preprocessor">#define</span> <span class="identifier">BOOST_STDLIB_CONFIG</span> <span class="string">"boost/config/mysetup/stlport.hpp"</span> +<span class="preprocessor">#define</span> <span class="identifier">BOOST_USER_CONFIG</span> <span class="string">"boost/config/mysetup/win32.hpp"</span> +</pre> +<p> + Now when you use boost, its configuration header will go straight to our + "frozen" versions, and ignore the default versions, you will + now be insulated from any configuration changes when you update boost. + This technique is also useful if you want to modify some of the boost configuration + files; for example if you are working with a beta compiler release not + yet supported by boost. + </p> +</div> +<div class="section"> +<div class="titlepage"><div><div><h4 class="title"> +<a name="boost_config.configuring_boost_for_your_platform.advanced_configuration_usage.example_2__skipping_files_that_you_don_t_need"></a><a class="link" href="index.html#boost_config.configuring_boost_for_your_platform.advanced_configuration_usage.example_2__skipping_files_that_you_don_t_need" title="Example 2: skipping files that you don't need">Example + 2: skipping files that you don't need</a> +</h4></div></div></div> +<p> + Lets suppose that you're using boost with a compiler that is fully conformant + with the standard; you're not interested in the fact that older versions + of your compiler may have had bugs, because you know that your current + version does not need any configuration macros setting. In a case like + this, you can define <code class="computeroutput"><span class="identifier">BOOST_NO_COMPILER_CONFIG</span></code> + either on the command line, or in <a href="../../../../boost/config/user.hpp" target="_top"><boost/config/user.hpp></a>, + and miss out the compiler configuration header altogether (actually you + miss out two headers, one which works out what the compiler is, and one + that configures boost for it). This has two consequences: the first is + that less code has to be c ompiled, and the second that you have removed + a dependency on two boost headers. + </p> +</div> +<div class="section"> +<div class="titlepage"><div><div><h4 class="title"> +<a name="boost_config.configuring_boost_for_your_platform.advanced_configuration_usage.example_3__using_configure_script_to_freeze_the_boost_configuration"></a><a class="link" href="index.html#boost_config.configuring_boost_for_your_platform.advanced_configuration_usage.example_3__using_configure_script_to_freeze_the_boost_configuration" title="Example 3: using configure script to freeze the boost configuration">Example + 3: using configure script to freeze the boost configuration</a> +</h4></div></div></div> +<p> + If you are working on a unix-like platform then you can use the configure + script to generate a "frozen" configuration based on your current + compiler setup - <a class="link" href="index.html#config_config_script">see using the configure + script for more details</a>. + </p> +</div> +</div> +<div class="section"> +<div class="titlepage"><div><div><h3 class="title"> +<a name="boost_config.configuring_boost_for_your_platform.testing_the_boost_configuration"></a><a class="link" href="index.html#boost_config.configuring_boost_for_your_platform.testing_the_boost_configuration" title="Testing the boost configuration">Testing + the boost configuration</a> +</h3></div></div></div> +<p> + The boost configuration library provides a full set of regression test programs + under the <span class="emphasis"><em><boost-root></em></span><code class="computeroutput"><span class="special">/</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">config</span><span class="special">/</span></code> + <code class="computeroutput"><span class="identifier">test</span><span class="special">/</span></code> + sub-directory: + </p> +<div class="informaltable"><table class="table"> +<colgroup> +<col> +<col> +</colgroup> +<thead><tr> +<th> + <p> + File + </p> + </th> +<th> + <p> + Description + </p> + </th> +</tr></thead> +<tbody> +<tr> +<td> + <p> + <code class="computeroutput"><span class="identifier">config_info</span><span class="special">.</span><span class="identifier">cpp</span></code> + </p> + </td> +<td> + <p> + Prints out a detailed description of your compiler/standard library/platform + setup, plus your current boost configuration. The information provided + by this program useful in setting up the boost configuration files. + If you report that boost is incorrectly configured for your compiler/library/platform + then please include the output from this program when reporting + the changes required. + </p> + </td> +</tr> +<tr> +<td> + <p> + <code class="computeroutput"><span class="identifier">config_test</span><span class="special">.</span><span class="identifier">cpp</span></code> + </p> + </td> +<td> + <p> + A monolithic test program that includes most of the individual + test cases. This provides a quick check to see if boost is correctly + configured for your compiler/library/platform. + </p> + </td> +</tr> +<tr> +<td> + <p> + <code class="computeroutput"><span class="identifier">limits_test</span><span class="special">.</span><span class="identifier">cpp</span></code> + </p> + </td> +<td> + <p> + Tests your standard library's <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">numeric_limits</span></code> + implementation (or its boost provided replacement if <code class="computeroutput"><span class="identifier">BOOST_NO_LIMITS</span></code> is defined). + This test file fails with most versions of numeric_limits, mainly + due to the way that some compilers treat NAN's and infinity. + </p> + </td> +</tr> +<tr> +<td> + <p> + <code class="computeroutput"><span class="identifier">no_</span><span class="special">*</span><span class="identifier">pass</span><span class="special">.</span><span class="identifier">cpp</span></code> + </p> + </td> +<td> + <p> + Individual compiler defect test files. Each of these should compile, + if one does not then the corresponding <code class="computeroutput"><span class="identifier">BOOST_NO_XXX</span></code> + macro needs to be defined - see each test file for specific details. + </p> + </td> +</tr> +<tr> +<td> + <p> + <code class="computeroutput"><span class="identifier">no_</span><span class="special">*</span><span class="identifier">fail</span><span class="special">.</span><span class="identifier">cpp</span></code> + </p> + </td> +<td> + <p> + Individual compiler defect test files. Each of these should not + compile, if one does then the corresponding <code class="computeroutput"><span class="identifier">BOOST_NO_XXX</span></code> + macro is defined when it need not be - see each test file for specific + details. + </p> + </td> +</tr> +<tr> +<td> + <p> + <code class="computeroutput"><span class="identifier">has_</span><span class="special">*</span><span class="identifier">pass</span><span class="special">.</span><span class="identifier">cpp</span></code> + </p> + </td> +<td> + <p> + Individual feature test files. If one of these does not compile + then the corresponding <code class="computeroutput"><span class="identifier">BOOST_HAS_XXX</span></code> + macro is defined when it should not be - see each test file for + specific details. + </p> + </td> +</tr> +<tr> +<td> + <p> + <code class="computeroutput"><span class="identifier">has_</span><span class="special">*</span><span class="identifier">fail</span><span class="special">.</span><span class="identifier">cpp</span></code> + </p> + </td> +<td> + <p> + Individual feature test files. If one of these does compile then + the corresponding <code class="computeroutput"><span class="identifier">BOOST_HAS_XXX</span></code> + macro can be safely defined - see each test file for specific details. + </p> + </td> +</tr> +</tbody> +</table></div> +<p> + Although you can run the configuration regression tests as individual test + files, there are rather a lot of them, so there are a couple of shortcuts + to help you out: + </p> +<p> + If you have built the <a href="../../../../tools/regression/doc/index.html" target="_top">boost + regression test driver</a>, then you can use this to produce a nice html + formatted report of the results using the supplied test file. + </p> +<p> + Alternatively you can run the configure script like this: + </p> +<div class="blockquote"><blockquote class="blockquote"><p> + <code class="computeroutput"><span class="special">./</span><span class="identifier">configure</span> + <span class="special">--</span><span class="identifier">enable</span><span class="special">-</span><span class="identifier">test</span></code> + </p></blockquote></div> +<p> + in which case the script will test the current configuration rather than + creating a new one from scratch. + </p> +<p> + If you are reporting the results of these tests for a new platform/library/compiler + then please include a log of the full compiler output, the output from <code class="computeroutput"><span class="identifier">config_info</span><span class="special">.</span><span class="identifier">cpp</span></code>, and the pass/fail test results. + </p> +</div> +</div> +</div> +<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr> +<td align="left"><p><small>Last revised: October 11, 2011 at 17:21:29 GMT</small></p></td> +<td align="right"><div class="copyright-footer"></div></td> +</tr></table> +<hr> +<div class="spirit-nav"><a accesskey="n" href="boost_config/boost_macro_reference.html"><img src="../../../../doc/src/images/next.png" alt="Next"></a></div> +</body> +</html> diff --git a/libs/config/doc/macro_reference.qbk b/libs/config/doc/macro_reference.qbk new file mode 100644 index 0000000000..c5dad035da --- /dev/null +++ b/libs/config/doc/macro_reference.qbk @@ -0,0 +1,1201 @@ +[/ + Boost.Config + + Copyright (c) 2001 Beman Dawes + Copyright (c) 2001 Vesa Karvonen + Copyright (c) 2001 John Maddock + + Distributed under 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) +] + + + +[section Boost Macro Reference] + +[#config_defects] + +[section Macros that describe C++03 defects] + +The following macros all describe features that are required by the C++03 standard, +if one of the following macros is defined, then it represents a defect in the +compiler's conformance with the 2003 standard. + + +[table +[[Macro ][Section ][ Description ]] + + +[[`BOOST_BCB_PARTIAL_SPECIALIZATION_BUG`][Compiler][ +The compiler exibits certain partial specialisation bug - probably Borland +C++ Builder specific. +]] +[[`BOOST_FUNCTION_SCOPE_USING_DECLARATION_BREAKS_ADL`][Compiler][ +Argument dependent lookup fails if there is a using declaration for the +symbol being looked up in the current scope. For example, using +`boost::get_pointer`; prevents ADL from finding overloads of `get_pointer` +in namespaces nested inside boost (but not elsewhere). Probably +Borland specific. +]] +[[`BOOST_NO_ADL_BARRIER`][Compiler][ +The compiler locates and searches namespaces that it should /*not*/ in fact +search when performing argument dependent lookup. +]] +[[`BOOST_NO_ARGUMENT_DEPENDENT_LOOKUP`][Compiler][ +Compiler does not implement argument-dependent lookup (also named +Koenig lookup); see std::3.4.2 \[basic.koenig.lookup\] +]] +[[`BOOST_NO_AUTO_PTR`][Standard library][ +If the compiler / library supplies non-standard or broken `std::auto_ptr`. +]] +[[`BOOST_NO_COMPLETE_VALUE_INITIALIZATION`][Compiler][ +Compiler has not completely implemented value-initialization. +See also [@../../../utility/value_init.htm#compiler_issues The Utility\/Value Init docs] +]] +[[`BOOST_NO_CTYPE_FUNCTIONS`][Platform][ +The Platform does not provide functions for the character-classifying +operations `<ctype.h>` and `<cctype>`, only macros. +]] +[[`BOOST_NO_CV_SPECIALIZATIONS`][Compiler][ +If template specialisations for cv-qualified types conflict with a +specialisation for a cv-unqualififed type. +]] +[[`BOOST_NO_CV_VOID_SPECIALIZATIONS`][Compiler][ +If template specialisations for cv-void types conflict with a specialisation +for void. +]] +[[`BOOST_NO_CWCHAR`][Platform][ +The Platform does not provide `<wchar.h>` and `<cwchar>`. +]] +[[`BOOST_NO_CWCTYPE`][Platform][ +The Platform does not provide `<wctype.h>` and `<cwctype>`. +]] +[[`BOOST_NO_FENV_H`][Platform, Standard library][ +The C standard library doesn't provide `<fenv.h>`. [@../../../../boost/detail/fenv.hpp +`<boost/detail/fenv.hpp>`] should be included instead of `<fenv.h>` for maximum +portability on platforms which do provide `<fenv.h>`. +]] +[[`BOOST_NO_DEPENDENT_NESTED_DERIVATIONS`][Compiler][ +The compiler fails to compile a nested class that has a dependent base class: +`` +template<typename T> +struct foo : { + template<typename U> + struct bar : public U {}; +`` +}; +]] +[[`BOOST_NO_DEPENDENT_TYPES_IN_TEMPLATE_VALUE_PARAMETERS`][Compiler][ +Template value parameters cannot have a dependent type, for example: +`` +template<class T, typename T::type value> +class X { ... }; +`` +]] +[[`BOOST_NO_EXCEPTION_STD_NAMESPACE`][Standard Library][ +The standard library does not put some or all of the contents of +`<exception>` in namespace std. +]] +[[`BOOST_NO_EXCEPTIONS`][Compiler][ +The compiler does not support exception handling (this setting is typically +required by many C++ compilers for embedded platforms). Note that there is +no requirement for boost libraries to honor this configuration setting - +indeed doing so may be impossible in some cases. Those libraries that do +honor this will typically abort if a critical error occurs - you have been +warned! +]] +[[`BOOST_NO_EXPLICIT_FUNCTION_TEMPLATE_ARGUMENTS`][Compiler][ +Can only use deduced template arguments when calling function template +instantiations. +]] +[[`BOOST_NO_FUNCTION_TEMPLATE_ORDERING`][Compiler][ +The compiler does not perform function template ordering or its function +template ordering is incorrect. +`` +// #1 +template<class T> void f(T); + +// #2 +template<class T,class U> void f(T(*)(U)); + +void bar(int); + +f(&bar); // should choose #2. +`` +]] +[[`BOOST_NO_INCLASS_MEMBER_INITIALIZATION`][Compiler][ +Compiler violates std::9.4.2/4. +]] +[[`BOOST_NO_INTRINSIC_WCHAR_T`][Compiler][ +The C++ implementation does not provide `wchar_t`, or it is really a synonym +for another integral type. Use this symbol to decide whether it is appropriate +to explicitly specialize a template on `wchar_t` if there is already a +specialization for other integer types. +]] +[[`BOOST_NO_IOSFWD`][std lib][ +The standard library lacks `<iosfwd>`. +]] +[[`BOOST_NO_IOSTREAM`][std lib][ +The standard library lacks `<iostream>`, `<istream>` or `<ostream>`. +]] +[[`BOOST_NO_IS_ABSTRACT`][Compiler][ +The C++ compiler does not support SFINAE with abstract types, this is covered +by __CORE_LANGUAGE_DR337__, but is not part of the current standard. Fortunately +most compilers that support SFINAE also support this DR. +]] +[[`BOOST_NO_LIMITS`][Standard library][ +The C++ implementation does not provide the `<limits>` header. Never check for +this symbol in library code; always include `<boost/limits.hpp>`, which +guarantees to provide `std::numeric_limits`. +]] +[[`BOOST_NO_NUMERIC_LIMITS_LOWEST`][Standard library][ +Static function `numeric_limits<T>::lowest()` is not available for use. +]] +[[`BOOST_NO_LIMITS_COMPILE_TIME_CONSTANTS`][Standard library][ +Constants such as `numeric_limits<T>::is_signed` are not available for use +at compile-time. +]] +[[`BOOST_NO_LONG_LONG_NUMERIC_LIMITS`][Standard library][ +There is no specialization for `numeric_limits<long long>` and +`numeric_limits<unsigned long long>`. `<boost/limits.hpp>` will then add these +specializations as a standard library "fix" only if the compiler supports the +`long long` datatype. +]] +[[`BOOST_NO_MEMBER_FUNCTION_SPECIALIZATIONS`][Compiler][ +The compiler does not support the specialization of individual member +functions of template classes. +]] +[[`BOOST_NO_MEMBER_TEMPLATE_KEYWORD`][Compiler][ +If the compiler supports member templates, but not the template keyword +when accessing member template classes. +]] +[[`BOOST_NO_MEMBER_TEMPLATE_FRIENDS`][Compiler][ +Member template friend syntax (`template<class P> friend class frd;`) +described in the C++ Standard, 14.5.3, not supported. +]] +[[`BOOST_NO_MEMBER_TEMPLATES`][Compiler][ +Member template functions not fully supported. +]] +[[`BOOST_NO_MS_INT64_NUMERIC_LIMITS`][Standard library][ +There is no specialization for `numeric_limits<__int64>` and +`numeric_limits<unsigned __int64>`. `<boost/limits.hpp>` will then add these +specializations as a standard library "fix", only if the compiler supports +the `__int64` datatype. +]] +[[`BOOST_NO_NESTED_FRIENDSHIP`][Compiler][ +Compiler doesn't allow a nested class to access private members of its +containing class. Probably Borland/CodeGear specific. +]] +[[`BOOST_NO_OPERATORS_IN_NAMESPACE`][Compiler][ +Compiler requires inherited operator friend functions to be defined at +namespace scope, then using'ed to boost. Probably GCC specific. See +[@../../../../boost/operators.hpp `<boost/operators.hpp>`] for example. +]] +[[`BOOST_NO_PARTIAL_SPECIALIZATION_IMPLICIT_DEFAULT_ARGS`][Compiler][ +The compiler does not correctly handle partial specializations +which depend upon default arguments in the primary template. +]] +[[`BOOST_NO_POINTER_TO_MEMBER_CONST`][Compiler][ +The compiler does not correctly handle pointers to const member functions, +preventing use of these in overloaded function templates. See +[@../../../../boost/functional.hpp `<boost/functional.hpp>`] for example. +]] +[[`BOOST_NO_POINTER_TO_MEMBER_TEMPLATE_PARAMETERS`][Compiler][ +Pointers to members don't work when used as template parameters. +]] +[[`BOOST_NO_PRIVATE_IN_AGGREGATE`][Compiler][ +The compiler misreads 8.5.1, treating classes as non-aggregate if they +contain private or protected member functions. +]] +[[`BOOST_NO_RTTI`][Compiler][ +The compiler may (or may not) have the typeid operator, but RTTI on the dynamic type +of an object is not supported. +]] +[[`BOOST_NO_SFINAE`][Compiler][ +The compiler does not support the "Substitution Failure Is Not An Error" +meta-programming idiom. +]] +[[`BOOST_NO_SFINAE_EXPR`][Compiler][ +The compiler does not support usage of SFINAE with arbitrary expressions. +]] +[[`BOOST_NO_STD_ALLOCATOR`][Standard library][ +The C++ standard library does not provide a standards conforming +`std::allocator`. +]] +[[`BOOST_NO_STD_DISTANCE`][Standard library][ +The platform does not have a conforming version of `std::distance`. +]] +[[`BOOST_NO_STD_ITERATOR`][Standard library][ +The C++ implementation fails to provide the `std::iterator` class. +]] +[[`BOOST_NO_STD_ITERATOR_TRAITS`][Standard library][ +The compiler does not provide a standard compliant implementation of +`std::iterator_traits`. Note that the compiler may still have a +non-standard implementation. +]] +[[`BOOST_NO_STD_LOCALE`][Standard library][ +The standard library lacks `std::locale`. +]] +[[`BOOST_NO_STD_MESSAGES`][Standard library][ +The standard library lacks a conforming `std::messages` facet. +]] +[[`BOOST_NO_STD_MIN_MAX`][Standard library][ +The C++ standard library does not provide the `min()` and `max()` template +functions that should be in `<algorithm>`. +]] +[[`BOOST_NO_STD_OUTPUT_ITERATOR_ASSIGN`][Standard library][ +Defined if the standard library's output iterators are not assignable. +]] +[[`BOOST_NO_STD_TYPEINFO`][Standard library][ +The <typeinfo> header declares `type_info` in the global namespace instead of namespace std. +]] +[[`BOOST_NO_STD_USE_FACET`][Standard library][ +The standard library lacks a conforming `std::use_facet`. +]] +[[`BOOST_NO_STD_WSTREAMBUF`][Standard library][ +The standard library's implementation of `std::basic_streambuf<wchar_t>` +is either missing, incomplete, or buggy. +]] +[[`BOOST_NO_STD_WSTRING`][Standard library][ +The standard library lacks `std::wstring`. +]] +[[`BOOST_NO_STDC_NAMESPACE`][Compiler, Platform][ +The contents of C++ standard headers for C library functions +(the `<c...>` headers) have not been placed in namespace std. This test is +difficult - some libraries "fake" the std C functions by adding using +declarations to import them into namespace std, unfortunately they don't +necessarily catch all of them... +]] +[[`BOOST_NO_STRINGSTREAM`][Standard library][ +The C++ implementation does not provide the `<sstream>` header. +]] +[[`BOOST_NO_SWPRINTF`][Platform][ +The platform does not have a conforming version of `swprintf`. +]] +[[`BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION`][Compiler][ +Class template partial specialization (14.5.4 \[temp.class.spec\]) not +supported. +]] +[[`BOOST_NO_TEMPLATED_IOSTREAMS`][Standard library][ +The standard library does not provide templated iostream classes. +]] +[[`BOOST_NO_TEMPLATED_ITERATOR_CONSTRUCTORS`][Standard library][ +The standard library does not provide templated iterator constructors +for its containers. +]] +[[`BOOST_NO_TEMPLATE_TEMPLATES`][Compiler][ +The compiler does not support template template parameters. +]] +[[`BOOST_NO_TYPEID`][Compiler][ +The compiler does not support the typeid operator at all. +]] +[[`BOOST_NO_TYPENAME_WITH_CTOR`][Compiler][ +The typename keyword cannot be used when creating a temporary of a +Dependent type. +]] +[[`BOOST_NO_UNREACHABLE_RETURN_DETECTION`][Compiler][ +If a return is unreachable, then no return statement should be required, +however some compilers insist on it, while other issue a bunch of warnings +if it is in fact present. +]] +[[`BOOST_NO_USING_DECLARATION_OVERLOADS_FROM_TYPENAME_BASE`][Compiler][ +The compiler will not accept a using declaration that brings a function +from a typename used as a base class into a derived class if functions of +the same name are present in the derived class. +]] +[[`BOOST_NO_USING_TEMPLATE`][Compiler][ +The compiler will not accept a using declaration that imports a template +class or function from another namespace. Originally a Borland specific +problem with imports to/from the global namespace, extended to MSVC6 +which has a specific issue with importing template classes (but not +functions). +]] +[[`BOOST_NO_VOID_RETURNS`][Compiler][ +The compiler does not allow a void function to return the result of calling +another void function. +`` +void f() {} +void g() { return f(); } +`` +]] +] + +[endsect] + +[#config_features] + + +[section Macros that describe optional features] + +The following macros describe features that are not required by the C++ +standard. The macro is only defined if the feature is present. + + +[table +[[Macro ][Section ][Description ]] + +[[`BOOST_HAS_BETHREADS`][Platform][ +The platform supports BeOS style threads. +]] +[[`BOOST_HAS_CLOCK_GETTIME`][Platform][ +The platform has the POSIX API `clock_gettime`. +]] +[[`BOOST_HAS_DIRENT_H`][Platform][ +The platform has the POSIX header `<dirent.h>`. +]] +[[`BOOST_HAS_EXPM1`][Platform][ +The platform has the functions `expm1`, `expm1f` and `expm1l` in `<math.h>` +]] +[[`BOOST_HAS_FTIME`][Platform][ +The platform has the Win32 API type FTIME. +]] +[[`BOOST_HAS_GETSYSTEMTIMEASFILETIME`][Platform][ +The platform has the Win32 API GetSystemTimeAsFileTime. +]] +[[`BOOST_HAS_GETTIMEOFDAY`][Platform][ +The platform has the POSIX API `gettimeofday`. +]] +[[`BOOST_HAS_HASH`][Standard library][ +The C++ implementation provides the (SGI) hash_set and hash_map classes. +When defined, `BOOST_HASH_SET_HEADER` and `BOOST_HASH_LIST_HEADER` will contain +the names of the header needed to access hash_set and hash_map; +`BOOST_STD_EXTENSION_NAMESPACE` will provide the namespace in which the two +class templates reside. +]] +[[`BOOST_HAS_LOG1P`][Platform][ +The platform has the functions `log1p`, `log1pf` and `log1pl` in `<math.h>`. +]] +[[`BOOST_HAS_MACRO_USE_FACET`][Standard library][ +The standard library lacks a conforming `std::use_facet`, but has a macro +`_USE(loc, Type)` that does the job. This is primarily for the Dinkumware +std lib. +]] +[[`BOOST_HAS_MS_INT64`][Compiler][ +The compiler supports the `__int64` data type. +]] +[[`BOOST_HAS_NANOSLEEP`][Platform][ +The platform has the POSIX API nanosleep. +]] +[[`BOOST_HAS_NL_TYPES_H`][Platform][ +The platform has an `<nl_types.h>`. +]] +[[`BOOST_HAS_NRVO`][Compiler][ +Indicated that the compiler supports the named return value optimization +(NRVO). Used to select the most efficient implementation for some function. +See [@../../../../boost/operators.hpp `<boost/operators.hpp>`] for example. +]] +[[`BOOST_HAS_PARTIAL_STD_ALLOCATOR`][Standard Library][ +The standard library has a partially conforming `std::allocator` class, but +without any of the member templates. +]] +[[`BOOST_HAS_PTHREAD_DELAY_NP`][Platform][ +The platform has the POSIX API `pthread_delay_np`. +]] +[[`BOOST_HAS_PTHREAD_MUTEXATTR_SETTYPE`][Platform][ +The platform has the POSIX API `pthread_mutexattr_settype`. +]] +[[`BOOST_HAS_PTHREAD_YIELD`][Platform][ +The platform has the POSIX API `pthread_yield`. +]] +[[`BOOST_HAS_PTHREADS`][Platform][ +The platform support POSIX style threads. +]] +[[`BOOST_HAS_SCHED_YIELD`][Platform][ +The platform has the POSIX API `sched_yield`. +]] +[[`BOOST_HAS_SGI_TYPE_TRAITS`][Compiler, Standard library][ +The compiler has native support for SGI style type traits. +]] +[[`BOOST_HAS_STDINT_H`][Platform][ +The platform has a `<stdint.h>` +]] +[[`BOOST_HAS_SLIST`][Standard library][ +The C++ implementation provides the (SGI) slist class. When defined, +`BOOST_SLIST_HEADER` will contain the name of the header needed to access +`slist` and `BOOST_STD_EXTENSION_NAMESPACE` will provide the namespace in +which `slist` resides. +]] +[[`BOOST_HAS_STLP_USE_FACET`][Standard library][ +The standard library lacks a conforming `std::use_facet`, but has a workaround +class-version that does the job. This is primarily for the STLport std lib. +]] +[[`BOOST_HAS_TR1_ARRAY`][Standard library][ +The library has a TR1 conforming version of `<array>`. +]] +[[`BOOST_HAS_TR1_COMPLEX_OVERLOADS`][Standard library][ +The library has a version of `<complex>` that supports passing scalars to the +complex number algorithms. +]] +[[`BOOST_HAS_TR1_COMPLEX_INVERSE_TRIG`][Standard library][ +The library has a version of `<complex>` that includes the new inverse trig +functions from TR1. +]] +[[`BOOST_HAS_TR1_REFERENCE_WRAPPER`][Standard library][ +The library has TR1 conforming reference wrappers in `<functional>`. +]] +[[`BOOST_HAS_TR1_RESULT_OF`][Standard library][ +The library has a TR1 conforming result_of template in `<functional>`. +]] +[[`BOOST_HAS_TR1_MEM_FN`][Standard library][ +The library has a TR1 conforming mem_fn function template in `<functional>`. +]] +[[`BOOST_HAS_TR1_BIND`][Standard library][ +The library has a TR1 conforming bind function template in `<functional>`. +]] +[[`BOOST_HAS_TR1_FUNCTION`][Standard library][ +The library has a TR1 conforming function class template in `<functional>`. +]] +[[`BOOST_HAS_TR1_HASH`][Standard library][ +The library has a TR1 conforming hash function template in `<functional>`. +]] +[[`BOOST_HAS_TR1_SHARED_PTR`][Standard library][ +The library has a TR1 conforming `shared_ptr` class template in `<memory>`. +]] +[[`BOOST_HAS_TR1_RANDOM`][Standard library][ +The library has a TR1 conforming version of `<random>`. +]] +[[`BOOST_HAS_TR1_REGEX`][Standard library][ +The library has a TR1 conforming version of `<regex>`. +]] +[[`BOOST_HAS_TR1_TUPLE`][Standard library][ +The library has a TR1 conforming version of `<tuple>`. +]] +[[`BOOST_HAS_TR1_TYPE_TRAITS`][Standard library][ +The library has a TR1 conforming version of `<type_traits>`. +]] +[[`BOOST_HAS_TR1_UTILITY`][Standard library][ +The library has the TR1 additions to `<utility>` (tuple interface to `std::pair`). +]] +[[`BOOST_HAS_TR1_UNORDERED_MAP`][Standard library][ +The library has a TR1 conforming version of `<unordered_map>`. +]] +[[`BOOST_HAS_TR1_UNORDERED_SET`][Standard library][ +The library has a TR1 conforming version of `<unordered_set>`. +]] +[[`BOOST_HAS_TR1`][Standard library][ +Implies all the other `BOOST_HAS_TR1_*` macros should be set. +]] +[[`BOOST_HAS_THREADS`][Platform, Compiler][ +Defined if the compiler, in its current translation mode, supports multiple +threads of execution. +]] +[[`BOOST_HAS_TWO_ARG_USE_FACET`][Standard library][ +The standard library lacks a conforming std::use_facet, but has a two +argument version that does the job. This is primarily for the Rogue Wave +std lib. +]] +[[`BOOST_HAS_UNISTD_H`][Platform][ +The Platform provides `<unistd.h>`. +]] +[[`BOOST_HAS_WINTHREADS`][Platform][ +The platform supports MS Windows style threads. +]] +[[`BOOST_MSVC_STD_ITERATOR`][Standard library][ +Microsoft's broken version of `std::iterator` is being used. This implies that +`std::iterator` takes no more than two template parameters. +]] +[[`BOOST_MSVC6_MEMBER_TEMPLATES`][Compiler][ +Microsoft Visual C++ 6.0 has enough member template idiosyncrasies +(being polite) that `BOOST_NO_MEMBER_TEMPLATES` is defined for this compiler. +`BOOST_MSVC6_MEMBER_TEMPLATES` is defined to allow compiler specific workarounds. +This macro gets defined automatically if `BOOST_NO_MEMBER_TEMPLATES` is not +defined - in other words this is treated as a strict subset of the features +required by the standard. +]] +[[`BOOST_HAS_STDINT_H`][Platform][ +There are no 1998 C++ Standard headers `<stdint.h>` or `<cstdint>`, although the +1999 C Standard does include `<stdint.h>`. If `<stdint.h>` is present, +`<boost/stdint.h>` can make good use of it, so a flag is supplied (signalling +presence; thus the default is not present, conforming to the current C++ +standard). +]] +] + +[endsect] + +[section Macros that describe possible C++ future features] + +The following macros describe features that may be included in some future +ISO C++ standard, but have not yet been approved for inclusion in the language. + + +[table +[[Macro ][Description ]] + +[[`BOOST_HAS_CONCEPTS`][ +The compiler supports concepts. +]] +] + +[endsect] + +[section Macros that describe C++11 features not supported] + +The following macros describe features in the 2011 ISO C++ standard, formerly known as C++0x, +that are not yet supported by a particular compiler or library. + +[table +[[Macro ][Description ]] + +[[`BOOST_NO_0X_HDR_ARRAY`][The standard library does not provide header <array>.]] +[[`BOOST_NO_0X_HDR_CHRONO`][The standard library does not provide header <chrono>.]] +[[`BOOST_NO_0X_HDR_CODECVT`][The standard library does not provide header <codecvt>.]] +[[`BOOST_NO_0X_HDR_CONDITION_VARIABLE`][The standard library does not provide header <condition_variable>.]] +[[`BOOST_NO_0X_HDR_FORWARD_LIST`][The standard library does not provide header <forward_list>.]] +[[`BOOST_NO_0X_HDR_FUTURE`][The standard library does not provide header <future>.]] +[[`BOOST_NO_0X_HDR_INITIALIZER_LIST`][The standard library does not provide header <initializer_list>.]] +[[`BOOST_NO_0X_HDR_MUTEX`][The standard library does not provide header <mutex>.]] +[[`BOOST_NO_0X_HDR_RANDOM`][The standard library does not provide header <random>.]] +[[`BOOST_NO_0X_HDR_RATIO`][The standard library does not provide header <ratio>.]] +[[`BOOST_NO_0X_HDR_REGEX`][The standard library does not provide header <regex>.]] +[[`BOOST_NO_0X_HDR_SYSTEM_ERROR`][The standard library does not provide header <system_error>.]] +[[`BOOST_NO_0X_HDR_THREAD`][The standard library does not provide header <thread>.]] +[[`BOOST_NO_0X_HDR_TUPLE`][The standard library does not provide header <tuple>.]] +[[`BOOST_NO_0X_HDR_TYPEINDEX`][The standard library does not provide header <typeindex>.]] +[[`BOOST_NO_0X_HDR_TYPE_TRAITS`][The standard library does not provide header <type_traits>.]] +[[`BOOST_NO_0X_HDR_UNORDERED_MAP`][The standard library does not provide header <unordered_map>.]] +[[`BOOST_NO_0X_HDR_UNORDERED_SET`][The standard library does not provide header <unordered_set>.]] + +[[`BOOST_NO_AUTO_DECLARATIONS`][The compiler does not support +type deduction for variables declared with the `auto` keyword (`auto var = ...;`). +]] +[[`BOOST_NO_AUTO_MULTIDECLARATIONS`][The compiler does not support +type deduction for multiple variables declared with the `auto` keyword (`auto var = ..., *ptr = ...;`). +]] +[[`BOOST_NO_CHAR16_T`][The compiler does not support +type `char16_t`. +]] +[[`BOOST_NO_CHAR32_T`][The compiler does not support +type `char32_t`. +]] +[[`BOOST_NO_TEMPLATE_ALIASES`][The compiler does not support template aliases. +]] +[[`BOOST_NO_CONSTEXPR`][The compiler does not support +`constexpr`. +]] +[[`BOOST_NO_DECLTYPE`][The compiler does not support +`decltype`. +]] +[[`BOOST_NO_DECLTYPE_N3276`][The compiler does not support the extension to +`decltype` described in [@http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2011/n3276.pdf N3276], +accepted in Madrid, March 2011. +]] +[[`BOOST_NO_DEFAULTED_FUNCTIONS`][The compiler does not support +defaulted (`= default`) functions. +]] +[[`BOOST_NO_DELETED_FUNCTIONS`][The compiler does not support +deleted (`= delete`) functions. +]] +[[`BOOST_NO_EXPLICIT_CONVERSION_OPERATORS`][The compiler does not support +explicit conversion operators (`explicit operator T()`). +]] +[[`BOOST_NO_EXTERN_TEMPLATE`][The compiler does not support +explicit instantiation forward declarations for templates (`extern template ...`). +]] +[[`BOOST_NO_FUNCTION_TEMPLATE_DEFAULT_ARGS`][The compiler does not support +default template arguments for function templates. +]] +[[`BOOST_NO_INITIALIZER_LISTS`][ +The C++ compiler does not support C++0x initializer lists. +]] +[[`BOOST_NO_LAMBDAS`][The compiler does not support Lambdas. +]] +[[`BOOST_NO_LONG_LONG`][The compiler does not support `long long`. +]] +[[`BOOST_NO_NOEXCEPT`][The compiler does not support `noexcept`. +]] +[[`BOOST_NO_NULLPTR`][The compiler does not support `nullptr`. +]] +[[`BOOST_NO_RAW_LITERALS`][The compiler does not support +raw string literals. +]] +[[`BOOST_NO_RVALUE_REFERENCES`][The compiler does not support +r-value references. +]] +[[`BOOST_NO_SCOPED_ENUMS`][The compiler does not support +scoped enumerations (`enum class`). +]] +[[`BOOST_NO_STATIC_ASSERT`][The compiler does not support +`static_assert`. +]] +[[`BOOST_NO_STD_UNORDERD`][The standard library does not support +<unordered_map> and <unordered_set>. +]] +[[`BOOST_NO_TEMPLATE_ALIASES`][The compiler does not support template aliases. +]] +[[`BOOST_NO_UNICODE_LITERALS`][The compiler does not support +Unicode (`u8`, `u`, `U`) literals. +]] +[[`BOOST_NO_UNIFIED_INITIALIZATION_SYNTAX`][The compiler does not support +the [@http://en.wikipedia.org/wiki/C%2B%2B0x#Uniform_initialization C++11 Unified Initialization Syntax]. +]] +[[`BOOST_NO_VARIADIC_TEMPLATES`][The compiler does not support +variadic templates. +]] +[[`BOOST_NO_VARIADIC_MACROS`][The compiler does not support +variadic macros. +]] +] + +[endsect] + +[#config_11_for_03] + +[section Macros that allow use of C++11 features with C++03 compilers] + +The following macros allow use of C++11 features even with compilers that do not yet +provide compliant C++11 support. + +[table +[[Macro ][Section ][ Description ]] + +[[`BOOST_CONSTEXPR`][ +Some compilers don't support the use of `constexpr`. This macro expands to nothing on those compilers, and `constexpr` +elsewhere. For example, when defining a constexpr function or constructor replace: +`` + constexpr tuple(); +`` +with: +`` + BOOST_CONSTEXPR tuple(); +`` +]] +[[`BOOST_CONSTEXPR_OR_CONST`][ +Some compilers don't support the use of `constexpr`. This macro expands to `const` on those compilers, and `constexpr` +elsewhere. For example, when defining const expr variables replace: +`` + static constexpr UIntType xor_mask = a; +`` +with: +`` + static BOOST_CONSTEXPR_OR_CONST UIntType xor_mask = a; +`` +]] +[[`BOOST_STATIC_CONSTEXPR`][ +This is a shortcut for `static BOOST_CONSTEXPR_OR_CONST`For example, when defining const expr variables replace: +`` + static constexpr UIntType xor_mask = a; +`` +with: +`` + BOOST_STATIC_CONSTEXPR UIntType xor_mask = a; +`` +]] +[[ +`` + BOOST_NOEXCEPT + BOOST_NOEXCEPT_IF(Predicate) + BOOST_NOEXCEPT_EXPR(Expression) +`` +][ +If `BOOST_NO_NOEXCEPT` is defined (i.e. C++03 compliant compilers) these macros are defined as: +[: +`` + #define BOOST_NOEXCEPT + #define BOOST_NOEXCEPT_IF(Predicate) + #define BOOST_NOEXCEPT_EXPR(Expression) false +`` +] +If `BOOST_NO_NOEXCEPT` is not defined (i.e. C++11 compliant compilers) they are defined as: +[: +`` + #define BOOST_NOEXCEPT noexcept + #define BOOST_NOEXCEPT_IF(Predicate) noexcept((Predicate)) + #define BOOST_NOEXCEPT_EXPR(Expression) noexcept((Expression)) +`` +] +]] +] + +[endsect] + +[#config_helpers] + +[section Boost Helper Macros] + +The following macros are either simple helpers, or macros that provide +workarounds for compiler/standard library defects. + + +[table +[[Macro ][Description ]] + +[[`BOOST_WORKAROUND`][ +This macro is used where a compiler specific workaround is required that is not otherwise +described by one of the other Boost.Config macros. To use the macro you must first +`` +#include <boost/detail/workaround.hpp> +`` +usage is then: +`` +#if BOOST_WORKAROUND(MACRONAME, CONDITION) + // workaround code goes here... +#else + // Standard conforming code goes here... +#endif +`` +where `MACRONAME` is a macro that usually describes the version number to be tested against, and `CONDITION` +is a comparison operator followed by a value. For example `BOOST_WORKAROUND(BOOST_INTEL, <= 1010)` would +evaluate to `1` for Intel C++ 10.1 and earlier. + +The macro can also be used with `BOOST_TESTED_AT` if all +current compiler versions exhibit the issue, but the issue is expected to be fixed at some later point. + +For example +`BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x590))` would normally evaluate to `1` for all values +of `__BORLANDC__` /unless/ the macro `BOOST_DETECT_OUTDATED_WORKAROUNDS` is defined, in which case evaluates to +`(__BORLANDC__ <= 0x590)`. + +[*Note]: the ultimate source of documentation for this macro is in [@../../../../boost/detail/workaround.hpp boost/detail/workaround.hpp]. +]] +[[`BOOST_PREVENT_MACRO_SUBSTITUTION`][ +Sometimes you have a function name with the same name as a C macro, for example "min" and "max" +member functions, in which case one can prevent the function being expanded as a macro using: +`` +someclass.min BOOST_PREVENT_MACRO_SUBSTITUTION(arg1, arg2); +`` +The following also works in most, but not all, contexts: +`` +(someclass.max)(arg1, arg2); +`` +]] +[[`BOOST_DEDUCED_TYPENAME`][ +Some compilers don't support the use of typename for dependent types in deduced +contexts. This macro expands to nothing on those compilers, and typename +elsewhere. For example, replace: +`template <class T> void f(T, typename T::type);` +with: +`template <class T> void f(T, BOOST_DEDUCED_TYPENAME T::type);` +]] +[[`BOOST_HASH_MAP_HEADER`][ +The header to include to get the SGI `hash_map` class. This macro is only +available if `BOOST_HAS_HASH` is defined. +]] +[[`BOOST_HASH_SET_HEADER`][ +The header to include to get the SGI `hash_set` class. This macro is only +available if `BOOST_HAS_HASH` is defined. +]] +[[`BOOST_SLIST_HEADER`][ +The header to include to get the SGI `slist` class. This macro is only +available if `BOOST_HAS_SLIST` is defined. +]] +[[`BOOST_STD_EXTENSION_NAMESPACE`][ +The namespace used for std library extensions (hashtable classes etc). +]] +[[`BOOST_STATIC_CONSTANT(Type, assignment)`][ +On compilers which don't allow in-class initialization of static integral +constant members, we must use enums as a workaround if we want the constants +to be available at compile-time. This macro gives us a convenient way to +declare such constants. +For example instead of: +`` +struct foo{ + static const int value = 2; +}; +`` +use: +`` +struct foo{ + BOOST_STATIC_CONSTANT(int, value = 2); +}; +`` +]] +[[`BOOST_UNREACHABLE_RETURN(result)`][ +Normally evaluates to nothing, but evaluates to return x; if the compiler +requires a return, even when it can never be reached. +]] +[[`BOOST_EXPLICIT_TEMPLATE_TYPE(t)` + `BOOST_EXPLICIT_TEMPLATE_NON_TYPE(t,v)` + `BOOST_APPEND_EXPLICIT_TEMPLATE_TYPE(t)` + `BOOST_APPEND_EXPLICIT_TEMPLATE_NON_TYPE(t,v)`][ +Some compilers silently "fold" different function template instantiations if +some of the template parameters don't appear in the function parameter list. +For instance: +`` + #include <iostream> + #include <ostream> + #include <typeinfo> + + template <int n> + void f() { std::cout << n << ' '; } + + template <typename T> + void g() { std::cout << typeid(T).name() << ' '; } + + int main() { + f<1>(); + f<2>(); + + g<int>(); + g<double>(); + } +`` +incorrectly outputs [^2 2 double double] on VC++ 6. These macros, to be used +in the function parameter list, fix the problem without effects on the calling +syntax. For instance, in the case above write: +`` + template <int n> + void f(BOOST_EXPLICIT_TEMPLATE_NON_TYPE(int, n)) { ... } + + template <typename T> + void g(BOOST_EXPLICIT_TEMPLATE_TYPE(T)) { ... } +`` +Beware that they can declare (for affected compilers) a dummy defaulted +parameter, so they + +[*a)] should be always invoked [*at the end] of the parameter list + +[*b)] can't be used if your function template is multiply declared. + +Furthermore, in order to add any needed comma separator, an `APPEND_*` version +must be used when the macro invocation appears after a normal parameter +declaration or after the invocation of another macro of this same group. +]] +[[`BOOST_USE_FACET(Type, loc)`][ +When the standard library does not have a comforming `std::use_facet` there +are various workarounds available, but they differ from library to library. +This macro provides a consistent way to access a locale's facets. For example, +replace: +`std::use_facet<Type>(loc);` +with: +`BOOST_USE_FACET(Type, loc);` +Note do not add a `std::` prefix to the front of `BOOST_USE_FACET`. +]] +[[`BOOST_HAS_FACET(Type, loc)`][ +When the standard library does not have a comforming `std::has_facet` there +are various workarounds available, but they differ from library to library. +This macro provides a consistent way to check a locale's facets. For example, +replace: +`std::has_facet<Type>(loc);` +with: +`BOOST_HAS_FACET(Type, loc);` +Note do not add a `std::` prefix to the front of `BOOST_HAS_FACET`. +]] +[[`BOOST_NESTED_TEMPLATE`][ +Member templates are supported by some compilers even though they can't use +the `A::template member<U>` syntax, as a workaround replace: +`typedef typename A::template rebind<U> binder;` +with: +`typedef typename A::BOOST_NESTED_TEMPLATE rebind<U> binder;` +]] +[[`BOOST_STRINGIZE(X)`][ +Converts the parameter `X` to a string after macro replacement on `X` has +been performed. +]] +[[`BOOST_JOIN(X,Y)`][ +This piece of macro magic joins the two arguments together, even when one of +the arguments is itself a macro (see 16.3.1 in C++ standard). This is normally +used to create a mangled name in combination with a predefined macro such a +\_\_LINE__. +]] +[[`BOOST_FORCEINLINE`][ +This macro can be used in place of the `inline` keyword to instruct the compiler +that a function should always be inlined. +Overuse of this macro can lead to significant bloat, while good use can increase +performance in certain cases, such as computation-intensive code built through +generative programming techniques. + +Usage example: +`` + template<class T> + BOOST_FORCEINLINE T& f(T& t) + { + return t; + } +`` + +Note that use of this macro can lead to cryptic error messages with some compilers. +Consider defining it to `inline` before including the Boost.Config header in order to be +able to debug errors more easily. +]] +] + +[endsect] + +[#config_info_macros] + +[section Boost Informational Macros] + +The following macros describe boost features; these are, generally speaking +the only boost macros that should be tested in user code. + +[table + +[[Macro ][Header ][Description ]] + +[[`BOOST_VERSION`][`<boost/version.hpp>`][ +Describes the boost version number in XYYYZZ format such that: +`(BOOST_VERSION % 100)` is the sub-minor version, `((BOOST_VERSION / 100) % 1000)` +is the minor version, and `(BOOST_VERSION / 100000)` is the major version. +]] +[[`BOOST_NO_INT64_T`][`<boost/cstdint.hpp>` `<boost/stdint.h>`][ +Defined if there are no 64-bit integral types: `int64_t`, `uint64_t` etc. +]] +[[`BOOST_NO_INTEGRAL_INT64_T`][`<boost/cstdint.hpp>` `<boost/stdint.h>`][ +Defined if `int64_t` as defined by `<boost/cstdint.hpp>` is not usable in +integral constant expressions. +]] +[[`BOOST_MSVC`][`<boost/config.hpp>`][ +Defined if the compiler is really Microsoft Visual C++, as opposed to one +of the many other compilers that also define `_MSC_VER`. Has the same value as +_MSC_VER. +]] +[[`BOOST_MSVC_FULL_VER`][`<boost/config.hpp>`][ +Defined to a normalised 9 digit version of _MSC_FULL_VER (which sometimes only has 8 digits), +the macro has the form VVMMPPPPP where VV is the major version number, MM is the minor version number, and +PPPPP is the compiler build number. +]] +[[`BOOST_INTEL`][`<boost/config.hpp>`][ +Defined if the compiler is an Intel compiler, takes the same value as the +compiler version macro. +]] +[[`BOOST_CLANG`][`<boost/config.hpp>`][ +Defined to 1 if the compiler is the Clang compiler. +]] +[[`BOOST_WINDOWS`][`<boost/config.hpp>`][ +Defined if the Windows platform API is available. +]] +[[`BOOST_DINKUMWARE_STDLIB`][`<boost/config.hpp>`][ +Defined if the dinkumware standard library is in use, takes the same value +as the Dinkumware library version macro `_CPPLIB_VER` if defined, otherwise 1. +]] +[[`BOOST_NO_WREGEX`][`<boost/regex.hpp>`][ +Defined if the regex library does not support wide character regular +expressions. +]] +[[`BOOST_COMPILER`][`<boost/config.hpp>`][ +Defined as a string describing the name and version number of the compiler +in use. Mainly for debugging the configuration. +]] +[[`BOOST_STDLIB`][`<boost/config.hpp>`][ +Defined as a string describing the name and version number of the standard +library in use. Mainly for debugging the configuration. +]] +[[`BOOST_PLATFORM`][`<boost/config.hpp>`][ +Defined as a string describing the name of the platform. Mainly for debugging +the configuration. +]] +] + +[endsect] + +[section Macros for libraries with separate source code] + +The following macros and helper headers are of use to authors whose libraries +include separate source code, and are intended to address several issues: + +* Controlling shared library symbol visibility +* Fixing the ABI of the compiled library +* Selecting which compiled library to link against based upon the compilers settings + +See [@http://svn.boost.org/trac/boost/wiki/Guidelines/Separate Guidelines for Authors of Boost Libraries Containing Separate Source] + +[section Macros controlling shared library symbol visibility] + +Some compilers support C++ extensions that control which symbols +will be exported from shared libraries such as dynamic shared objects (DSO's) on Unix-like +systems or dynamic-link libraries (DLL's) on Windows. + +The Microsoft VC++ compiler has long supplied +`__declspec(dllexport)` and `__declspec(dllimport)` extensions for this purpose, +as do virtually all other compilers targeting the Windows platform. + +Modern versions of the GNU GCC compiler provide the `__attribute__((visibility("default")))` +extension to indicate that a symbol should be exported. All other symbols may be hidden by using the +`-fvisibility-hidden` or `-fvisibility-ms-compat` compiler switches. + +Boost supplies several macros to make it easier to manage symbol visibility in a way that +is portable between compilers and operating systems. + +[table +[[Macro ][Description ]] +[[`BOOST_SYMBOL_EXPORT`][ +Defines the syntax of a C++ language extension that indicates a symbol is to be exported from a shared library. +If the compiler has no such extension, the macro is defined with no replacement text. +]] +[[`BOOST_SYMBOL_IMPORT`][ +Defines the syntax of a C++ language extension that indicates a symbol is to be imported from a shared library. +If the compiler has no such extension, the macro is defined with no replacement text. +]] +[[`BOOST_SYMBOL_VISIBLE`][ +Defines the syntax of a C++ language extension that indicates a symbol is to be globally visible. +If the compiler has no such extension, the macro is defined with no replacement text. +Needed for classes that are not otherwise exported, but are used by RTTI. Examples include +class for objects that will be thrown as exceptions or used in dynamic_casts, +across shared library boundaries. For example, a header-only exception class might look like this: +`` + class BOOST_SYMBOL_VISIBLE my_exception : public std::runtime_error { ... }; +`` +Without BOOST_SYMBOL_VISIBLE, it would be impossible to catch my_exception thrown from a shared library +compiled by GCC with the -fvisibility=hidden option. +]] +[[`BOOST_HAS_DECLSPEC`][ +The compiler has C++ extensions `__declspec(dllexport)` and `__declspec(dllimport)` to control +export/import of symbols from shared libraries. +['Deprecated. This macro is no longer necessary since BOOST_SYMBOL_EXPORT and BOOST_SYMBOL_IMPORT +are now supplied. It is provided to support legacy code.] +]] +] + +Typical usage: + +[*boost/foo/config.hpp] + + ... + #if defined(BOOST_ALL_DYN_LINK) || defined(BOOST_FOO_DYN_LINK) + # if defined(BOOST_FOO_SOURCE) + # define BOOST_FOO_DECL BOOST_SYMBOL_EXPORT + # else + # define BOOST_FOO_DECL BOOST_SYMBOL_IMPORT + # endif + #else + # define BOOST_FOO_DECL + #endif + ... + +[*boost/foo/foo.hpp] + + #include <boost/foo/config.hpp> + ... + class BOOST_FOO_DECL bar { ... }; + ... + void BOOST_FOO_DECL f(); + ... + +[*boost/libs/foo/src/foo.cpp] + + #define BOOST_FOO_SOURCE + #include <boost/foo/foo.hpp> + ... + void BOOST_FOO_DECL f() + { + ... + } + ... + +[endsect] + +[section ABI Fixing] + +When linking against a pre-compiled library it vital that the ABI used by the +compiler when building the library ['matches exactly] the ABI used by the code +using the library. In this case ABI means things like the struct packing +arrangement used, the name mangling scheme used, or the size of some types +(enum types for example). This is separate from things like threading support, +or runtime library variations, which have to be dealt with by build variants. +To put this in perspective there is one compiler (Borland's) that has so many +compiler options that make subtle changes to the ABI, that at least in theory +there 3200 combinations, and that's without considering runtime library +variations. Fortunately these variations can be managed by `#pragma`'s that +tell the compiler what ABI to use for the types declared in your library. +In order to avoid sprinkling `#pragma`'s all over the boost headers, there are +some prefix and suffix headers that do the job. Typical usage is: + +[*my_library.hpp] + + #ifndef MY_INCLUDE_GUARD + #define MY_INCLUDE_GUARD + + // all includes go here: + ``[^[*#include <boost/config.hpp>]]`` + #include <whatever> + + ``[^[*#include <boost/config/abi_prefix.hpp>]]`` // must be the last #include + + namespace boost { + + // your code goes here + + } + + ``[^[*#include <boost/config/abi_suffix.hpp>]]`` // pops abi_prefix.hpp pragmas + + #endif // include guard + +[*my_library.cpp] + + ... + // nothing special need be done in the implementation file + ... + +The user can disable this mechanism by defining `BOOST_DISABLE_ABI_HEADERS`, or +they can define `BOOST_ABI_PREFIX` and/or `BOOST_ABI_SUFFIX` to point to their +own prefix/suffix headers if they so wish. + +[endsect] + +[section Automatic library selection] + +It is essential that users link to a build of a library which was built against +the same runtime library that their application will be built against -if this +does not happen then the library will not be binary compatible with their own +code- and there is a high likelihood that their application will experience +runtime crashes. These kinds of problems can be extremely time consuming and +difficult to debug, and often lead to frustrated users and authors alike (simply +selecting the right library to link against is not as easy as it seems when +their are 6-8 of them to chose from, and some users seem to be blissfully +unaware that there even are different runtimes available to them). + +To solve this issue, some compilers allow source code to contain `#pragma`'s that +instruct the linker which library to link against, all the user need do is +include the headers they need, place the compiled libraries in their library +search path, and the compiler and linker do the rest. Boost.config supports +this via the header `<boost/config/auto_link.hpp>`, before including this header +one or more of the following macros need to be defined: + +[variablelist +[[`BOOST_LIB_NAME`][ +Required: An identifier containing the basename of the library, for +example 'boost_regex'. +]] +[[`BOOST_DYN_LINK`][ +Optional: when set link to dll rather than static library. +]] +[[`BOOST_LIB_DIAGNOSTIC`][ +Optional: when set the header will print out the name of the library selected +(useful for debugging). +]] +] + +If the compiler supports this mechanism, then it will be told to link against +the appropriately named library, the actual algorithm used to mangle the name +of the library is documented inside `<boost/config/auto_link.hpp>` and has to +match that used to create the libraries via bjam 's install rules. + + +[*my_library.hpp] + + ... + // + // Don't include auto-linking code if the user has disabled it by + // defining BOOST_ALL_NO_LIB, or BOOST_MY_LIBRARY_NO_LIB, or if this + // is one of our own source files (signified by BOOST_MY_LIBRARY_SOURCE): + // + #if !defined(BOOST_ALL_NO_LIB) && !defined(BOOST_MY_LIBRARY_NO_LIB) && !defined(BOOST_MY_LIBRARY_SOURCE) + # define BOOST_LIB_NAME boost_my_library + # ifdef BOOST_MY_LIBRARY_DYN_LINK + # define BOOST_DYN_LINK + # endif + # include <boost/config/auto_link.hpp> + #endif + ... + +[*my_library.cpp] + + // define BOOST_MY_LIBRARY_SOURCE so that the header knows that the + // library is being built (possibly exporting rather than importing code) + // + #define BOOST_MY_LIBRARY_SOURCE + + #include <boost/my_library/my_library.hpp> + ... + +[endsect] + +[endsect] + +[endsect] + + + diff --git a/libs/config/doc/rationale.qbk b/libs/config/doc/rationale.qbk new file mode 100644 index 0000000000..c5c78fe712 --- /dev/null +++ b/libs/config/doc/rationale.qbk @@ -0,0 +1,80 @@ +[/ + Boost.Config + + Copyright (c) 2001 Beman Dawes + Copyright (c) 2001 Vesa Karvonen + Copyright (c) 2001 John Maddock + + Distributed under 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) +] + +[section Rationale] + +The problem with many traditional "textbook" implementations of configuration +headers (where all the configuration options are in a single "monolithic" +header) is that they violate certain fundamental software engineering +principles which would have the effect of making boost more fragile, more +difficult to maintain and more difficult to use safely. You can find a +description of the principles from the __PRINCIPLES_AND_PATTERNS_ARTICLE__. + +[section The problem] + +Consider a situation in which you are concurrently developing on multiple +platforms. Then consider adding a new platform or changing the platform +definitions of an existing platform. What happens? Everything, and this does +literally mean everything, recompiles. Isn't it quite absurd that adding a +new platform, which has absolutely nothing to do with previously existing +platforms, means that all code on all existing platforms needs to be +recompiled? + +Effectively, there is an imposed physical dependency between platforms that +have nothing to do with each other. Essentially, the traditional solution +employed by configuration headers does not conform to the Open-Closed +Principle: + +[: [*"A module should be open for extension but closed for modification."]] + +Extending a traditional configuration header implies modifying existing code. + +Furthermore, consider the complexity and fragility of the platform detection +code. What if a simple change breaks the detection on some minor platform? +What if someone accidentally or on purpose (as a workaround for some other +problem) defines some platform dependent macros that are used by the +detection code? A traditional configuration header is one of the most +volatile headers of the entire library, and more stable elements of +Boost would depend on it. This violates the Stable Dependencies Principle: + +[: [*"Depend in the direction of stability."]] + +After even a minor change to a traditional configuration header on one minor +platform, almost everything on every platform should be tested if we follow +sound software engineering practice. + +Another important issue is that it is not always possible to submit changes +to `<boost/config.hpp>`. Some boost users are currently working on platforms +using tools and libraries that are under strict Non-Disclosure Agreements. +In this situation it is impossible to submit changes to a traditional +monolithic configuration header, instead some method by which the user +can insert their own configuration code must be provided. + +[endsect] + +[section The solution] + +The approach taken by boost's configuration headers is to separate +configuration into three orthogonal parts: the compiler, the standard +library and the platform. Each compiler/standard library/platform gets +its own mini-configuration header, so that changes to one compiler's +configuration (for example) does not affect other compilers. In addition +there are measures that can be taken both to omit the compiler/standard +library/platform detection code (so that adding support to a new platform +does not break dependencies), or to freeze the configuration completely; +providing almost complete protection against dependency changes. + +[endsect] + +[endsect] + + diff --git a/libs/config/index.html b/libs/config/index.html new file mode 100644 index 0000000000..df7430bd0e --- /dev/null +++ b/libs/config/index.html @@ -0,0 +1,15 @@ +<html> + <head> + <meta http-equiv="refresh" content="0; URL=doc/html/index.html"> + </head> + <body> + <P> + Automatic redirection failed, please go to <a href="doc/html/index.html">doc/html/index.html</a>. + </P> + <P>Copyright John Maddock 2001</P> + <P>Distributed under the Boost Software License, Version 1.0. (See accompanying file <A href="../../LICENSE_1_0.txt"> + LICENSE_1_0.txt</A> or copy at <A href="http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</A>).</P> + </body> +</html> + + diff --git a/libs/config/test/Jamfile.v2 b/libs/config/test/Jamfile.v2 new file mode 100644 index 0000000000..df61352320 --- /dev/null +++ b/libs/config/test/Jamfile.v2 @@ -0,0 +1,62 @@ +# +# Copyright John Maddock 2008. +# 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) +# +# If you need to alter build preferences then set them in +# the template defined in options_v2.jam. +# + +import modules ; + +local is_unix = [ modules.peek : UNIX ] ; + +if $(is_unix) +{ + local osname = [ SHELL uname ] ; + + switch $(osname) + { + case "Sun*" : OTHERFLAGS = "-lpthread -lrt" ; + case "*BSD*" : OTHERFLAGS = "-lpthread" ; + } +} + +test-suite config + : + [ compile config_test_c.c ] + [ run config_test.cpp + : #args + : #input-files + : #requirements + <threading>multi + : config_test_threaded + ] + [ run config_test.cpp + : #args + : #input-files + : #requirements + <threading>single <toolset>msvc:<runtime-link>static <toolset>msvc:<link>static + <target-os>linux:<linkflags>-lpthread + <target-os>linux:<linkflags>-lrt + <toolset>gcc:<linkflags>$(OTHERFLAGS) + ] + [ run config_info.cpp : : : <test-info>always_show_run_output <threading>single <toolset>msvc:<runtime-link>static <toolset>msvc:<link>static ] + [ run config_info.cpp : : : <test-info>always_show_run_output <threading>multi : config_info_threaded ] + [ run math_info.cpp : : : <test-info>always_show_run_output <toolset>borland:<runtime-link>static <toolset>borland:<link>static ] + [ run abi/abi_test.cpp abi/main.cpp ] + [ run limits_test.cpp ../../test/build//boost_test_exec_monitor ] + [ run link/main.cpp link//link_test + : #args + : #input-files + : #requirements + <runtime-link>shared + <define>BOOST_DYN_LINK=1 + <define>BOOST_CONFIG_NO_LIB=1 + : + config_link_test + ] + [ compile-fail threads/test_thread_fail1.cpp ] + [ compile-fail threads/test_thread_fail2.cpp ] + ; diff --git a/libs/config/test/abi/abi_test.cpp b/libs/config/test/abi/abi_test.cpp new file mode 100644 index 0000000000..98be1b196a --- /dev/null +++ b/libs/config/test/abi/abi_test.cpp @@ -0,0 +1,27 @@ +// (C) 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) + +// See http://www.boost.org/libs/config for the most recent version. + + +#include "abi_test.hpp" + + +char abi_test::virtual_one()const +{ + return c; +} + +boost::int32_t abi_test::virtual_two()const +{ + return i; +} + +abi_test::abi_test() +{ + c = 0x12; + i = 0x5678; +} + diff --git a/libs/config/test/abi/abi_test.hpp b/libs/config/test/abi/abi_test.hpp new file mode 100644 index 0000000000..a2bec783bf --- /dev/null +++ b/libs/config/test/abi/abi_test.hpp @@ -0,0 +1,54 @@ +// (C) 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) + +// See http://www.boost.org/libs/config for the most recent version. + + +#ifndef BOOST_ABI_TEST_HPP +#define BOOST_ABI_TEST_HPP + +#include <boost/config.hpp> +#include <boost/cstdint.hpp> + +#ifdef BOOST_HAS_ABI_HEADERS +#include BOOST_ABI_PREFIX +#endif + +// +// the following class is designed to break if the ABI +// it's compiled with does not match that of the client +// calling it.... +// + +struct empty{}; + +class abi_test : protected empty +{ +private: + empty e; + char c; + boost::int32_t i; +public: + inline char inline_one()const + { return c; } + inline boost::int32_t inline_two()const + { return i; } + + virtual char virtual_one()const; + virtual boost::int32_t virtual_two()const; + + abi_test(); +}; + + + +#ifdef BOOST_HAS_ABI_HEADERS +#include BOOST_ABI_SUFFIX +#endif + +#endif // BOOST_ABI_TEST_HPP + + + diff --git a/libs/config/test/abi/main.cpp b/libs/config/test/abi/main.cpp new file mode 100644 index 0000000000..e8f9d1393c --- /dev/null +++ b/libs/config/test/abi/main.cpp @@ -0,0 +1,31 @@ +// (C) 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) + +// See http://www.boost.org/libs/config for the most recent version. + +// +// before we do anything else, we need to mess with the compilers ABI: +// +#include <boost/config.hpp> +#ifdef BOOST_MSVC +#pragma pack(1) +#elif defined(__BORLANDC__) +#pragma option -Ve- -Vx- -a1 -b- +#endif +#include <stdio.h> +#include "abi_test.hpp" + + +int main() +{ + abi_test t; + if((t.inline_one() != t.virtual_one()) || (t.inline_two() != t.virtual_two())) + { + fwrite("Failed ABI test", 1, 15, stdout); + return -1; + } + return 0; +} + diff --git a/libs/config/test/all/Jamfile.v2 b/libs/config/test/all/Jamfile.v2 new file mode 100644 index 0000000000..811c052a0a --- /dev/null +++ b/libs/config/test/all/Jamfile.v2 @@ -0,0 +1,526 @@ +# +# Regression test Jamfile for boost configuration setup. +# *** DO NOT EDIT THIS FILE BY HAND *** +# This file was automatically generated on Sun Nov 27 09:43:19 2011 +# by libs/config/tools/generate.cpp +# Copyright John Maddock. +# 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) +# +# If you need to alter build preferences then set them in +# the template defined in options_v2.jam. +# +path-constant DOT : . ; +include $(DOT)/options_v2.jam ; + +run ../config_info.cpp : : : <threading>single <toolset>msvc:<runtime-link>static <toolset>msvc:<link>static ; +run ../config_info.cpp : : : <threading>multi : config_info_threaded ; +run ../math_info.cpp : : : <toolset>borland:<runtime-link>static <toolset>borland:<link>static ; +run ../config_test.cpp : : : <threading>single <toolset>msvc:<runtime-link>static <toolset>msvc:<link>static ; +run ../config_test.cpp : : : <threading>multi : config_test_threaded ; +run ../limits_test.cpp ../../../test/build//boost_test_exec_monitor ; +run ../abi/abi_test.cpp ../abi/main.cpp ; + +test-suite "BOOST_HAS_TWO_ARG_USE_FACET" : +[ run ../has_2arg_use_facet_pass.cpp ] +[ compile-fail ../has_2arg_use_facet_fail.cpp ] ; +test-suite "BOOST_HAS_BETHREADS" : +[ run ../has_bethreads_pass.cpp ] +[ compile-fail ../has_bethreads_fail.cpp ] ; +test-suite "BOOST_HAS_CLOCK_GETTIME" : +[ run ../has_clock_gettime_pass.cpp ] +[ compile-fail ../has_clock_gettime_fail.cpp ] ; +test-suite "BOOST_HAS_DIRENT_H" : +[ run ../has_dirent_h_pass.cpp ] +[ compile-fail ../has_dirent_h_fail.cpp ] ; +test-suite "BOOST_HAS_EXPM1" : +[ run ../has_expm1_pass.cpp ] +[ compile-fail ../has_expm1_fail.cpp ] ; +test-suite "BOOST_HAS_FTIME" : +[ run ../has_ftime_pass.cpp ] +[ compile-fail ../has_ftime_fail.cpp ] ; +test-suite "BOOST_HAS_GETSYSTEMTIMEASFILETIME" : +[ run ../has_getsystemtimeasfiletime_pass.cpp ] +[ compile-fail ../has_getsystemtimeasfiletime_fail.cpp ] ; +test-suite "BOOST_HAS_GETTIMEOFDAY" : +[ run ../has_gettimeofday_pass.cpp ] +[ compile-fail ../has_gettimeofday_fail.cpp ] ; +test-suite "BOOST_HAS_HASH" : +[ run ../has_hash_pass.cpp ] +[ compile-fail ../has_hash_fail.cpp ] ; +test-suite "BOOST_HAS_LOG1P" : +[ run ../has_log1p_pass.cpp ] +[ compile-fail ../has_log1p_fail.cpp ] ; +test-suite "BOOST_HAS_LONG_LONG" : +[ run ../has_long_long_pass.cpp ] +[ compile-fail ../has_long_long_fail.cpp ] ; +test-suite "BOOST_HAS_MACRO_USE_FACET" : +[ run ../has_macro_use_facet_pass.cpp ] +[ compile-fail ../has_macro_use_facet_fail.cpp ] ; +test-suite "BOOST_HAS_MS_INT64" : +[ run ../has_ms_int64_pass.cpp ] +[ compile-fail ../has_ms_int64_fail.cpp ] ; +test-suite "BOOST_HAS_NANOSLEEP" : +[ run ../has_nanosleep_pass.cpp ] +[ compile-fail ../has_nanosleep_fail.cpp ] ; +test-suite "BOOST_HAS_NL_TYPES_H" : +[ run ../has_nl_types_h_pass.cpp ] +[ compile-fail ../has_nl_types_h_fail.cpp ] ; +test-suite "BOOST_HAS_NRVO" : +[ run ../has_nrvo_pass.cpp ] +[ compile-fail ../has_nrvo_fail.cpp ] ; +test-suite "BOOST_HAS_PARTIAL_STD_ALLOCATOR" : +[ run ../has_part_alloc_pass.cpp ] +[ compile-fail ../has_part_alloc_fail.cpp ] ; +test-suite "BOOST_HAS_PTHREADS" : +[ run ../has_pthreads_pass.cpp ] +[ compile-fail ../has_pthreads_fail.cpp ] ; +test-suite "BOOST_HAS_PTHREAD_DELAY_NP" : +[ run ../has_pthread_delay_np_pass.cpp ] +[ compile-fail ../has_pthread_delay_np_fail.cpp ] ; +test-suite "BOOST_HAS_PTHREAD_MUTEXATTR_SETTYPE" : +[ run ../has_pthread_ma_st_pass.cpp ] +[ compile-fail ../has_pthread_ma_st_fail.cpp ] ; +test-suite "BOOST_HAS_PTHREAD_YIELD" : +[ run ../has_pthread_yield_pass.cpp ] +[ compile-fail ../has_pthread_yield_fail.cpp ] ; +test-suite "BOOST_HAS_RVALUE_REFS" : +[ run ../has_rvalue_refs_pass.cpp ] +[ compile-fail ../has_rvalue_refs_fail.cpp ] ; +test-suite "BOOST_HAS_SCHED_YIELD" : +[ run ../has_sched_yield_pass.cpp ] +[ compile-fail ../has_sched_yield_fail.cpp ] ; +test-suite "BOOST_HAS_SGI_TYPE_TRAITS" : +[ run ../has_sgi_type_traits_pass.cpp ] +[ compile-fail ../has_sgi_type_traits_fail.cpp ] ; +test-suite "BOOST_HAS_SIGACTION" : +[ run ../has_sigaction_pass.cpp ] +[ compile-fail ../has_sigaction_fail.cpp ] ; +test-suite "BOOST_HAS_SLIST" : +[ run ../has_slist_pass.cpp ] +[ compile-fail ../has_slist_fail.cpp ] ; +test-suite "BOOST_HAS_STATIC_ASSERT" : +[ run ../has_static_assert_pass.cpp ] +[ compile-fail ../has_static_assert_fail.cpp ] ; +test-suite "BOOST_HAS_STDINT_H" : +[ run ../has_stdint_h_pass.cpp ] +[ compile-fail ../has_stdint_h_fail.cpp ] ; +test-suite "BOOST_HAS_STLP_USE_FACET" : +[ run ../has_stlp_use_facet_pass.cpp ] +[ compile-fail ../has_stlp_use_facet_fail.cpp ] ; +test-suite "BOOST_HAS_TR1_ARRAY" : +[ run ../has_tr1_array_pass.cpp ] +[ compile-fail ../has_tr1_array_fail.cpp ] ; +test-suite "BOOST_HAS_TR1_BIND" : +[ run ../has_tr1_bind_pass.cpp ] +[ compile-fail ../has_tr1_bind_fail.cpp ] ; +test-suite "BOOST_HAS_TR1_COMPLEX_OVERLOADS" : +[ run ../has_tr1_complex_over_pass.cpp ] +[ compile-fail ../has_tr1_complex_over_fail.cpp ] ; +test-suite "BOOST_HAS_TR1_COMPLEX_INVERSE_TRIG" : +[ run ../has_tr1_complex_trig_pass.cpp ] +[ compile-fail ../has_tr1_complex_trig_fail.cpp ] ; +test-suite "BOOST_HAS_TR1_FUNCTION" : +[ run ../has_tr1_function_pass.cpp ] +[ compile-fail ../has_tr1_function_fail.cpp ] ; +test-suite "BOOST_HAS_TR1_HASH" : +[ run ../has_tr1_hash_pass.cpp ] +[ compile-fail ../has_tr1_hash_fail.cpp ] ; +test-suite "BOOST_HAS_TR1_MEM_FN" : +[ run ../has_tr1_mem_fn_pass.cpp ] +[ compile-fail ../has_tr1_mem_fn_fail.cpp ] ; +test-suite "BOOST_HAS_TR1_RANDOM" : +[ run ../has_tr1_random_pass.cpp ] +[ compile-fail ../has_tr1_random_fail.cpp ] ; +test-suite "BOOST_HAS_TR1_REFERENCE_WRAPPER" : +[ run ../has_tr1_ref_wrap_pass.cpp ] +[ compile-fail ../has_tr1_ref_wrap_fail.cpp ] ; +test-suite "BOOST_HAS_TR1_REGEX" : +[ run ../has_tr1_regex_pass.cpp ] +[ compile-fail ../has_tr1_regex_fail.cpp ] ; +test-suite "BOOST_HAS_TR1_RESULT_OF" : +[ run ../has_tr1_result_of_pass.cpp ] +[ compile-fail ../has_tr1_result_of_fail.cpp ] ; +test-suite "BOOST_HAS_TR1_SHARED_PTR" : +[ run ../has_tr1_shared_ptr_pass.cpp ] +[ compile-fail ../has_tr1_shared_ptr_fail.cpp ] ; +test-suite "BOOST_HAS_TR1_TUPLE" : +[ run ../has_tr1_tuple_pass.cpp ] +[ compile-fail ../has_tr1_tuple_fail.cpp ] ; +test-suite "BOOST_HAS_TR1_TYPE_TRAITS" : +[ run ../has_tr1_type_traits_pass.cpp ] +[ compile-fail ../has_tr1_type_traits_fail.cpp ] ; +test-suite "BOOST_HAS_TR1_UNORDERED_MAP" : +[ run ../has_tr1_unordered_map_pass.cpp ] +[ compile-fail ../has_tr1_unordered_map_fail.cpp ] ; +test-suite "BOOST_HAS_TR1_UNORDERED_SET" : +[ run ../has_tr1_unordered_set_pass.cpp ] +[ compile-fail ../has_tr1_unordered_set_fail.cpp ] ; +test-suite "BOOST_HAS_TR1_UTILITY" : +[ run ../has_tr1_utility_pass.cpp ] +[ compile-fail ../has_tr1_utility_fail.cpp ] ; +test-suite "BOOST_HAS_UNISTD_H" : +[ run ../has_unistd_h_pass.cpp ] +[ compile-fail ../has_unistd_h_fail.cpp ] ; +test-suite "BOOST_HAS_VARIADIC_TMPL" : +[ run ../has_variadic_tmpl_pass.cpp ] +[ compile-fail ../has_variadic_tmpl_fail.cpp ] ; +test-suite "BOOST_MSVC6_MEMBER_TEMPLATES" : +[ run ../has_vc6_mem_templ_pass.cpp ] +[ compile-fail ../has_vc6_mem_templ_fail.cpp ] ; +test-suite "BOOST_MSVC_STD_ITERATOR" : +[ run ../has_vc_iterator_pass.cpp ] +[ compile-fail ../has_vc_iterator_fail.cpp ] ; +test-suite "BOOST_HAS_WINTHREADS" : +[ run ../has_winthreads_pass.cpp ] +[ compile-fail ../has_winthreads_fail.cpp ] ; +test-suite "BOOST_NO_0X_HDR_ARRAY" : +[ run ../no_0x_hdr_array_pass.cpp ] +[ compile-fail ../no_0x_hdr_array_fail.cpp ] ; +test-suite "BOOST_NO_0X_HDR_CHRONO" : +[ run ../no_0x_hdr_chrono_pass.cpp ] +[ compile-fail ../no_0x_hdr_chrono_fail.cpp ] ; +test-suite "BOOST_NO_0X_HDR_CODECVT" : +[ run ../no_0x_hdr_codecvt_pass.cpp ] +[ compile-fail ../no_0x_hdr_codecvt_fail.cpp ] ; +test-suite "BOOST_NO_0X_HDR_CONDITION_VARIABLE" : +[ run ../no_0x_hdr_condition_variable_pass.cpp ] +[ compile-fail ../no_0x_hdr_condition_variable_fail.cpp ] ; +test-suite "BOOST_NO_0X_HDR_FORWARD_LIST" : +[ run ../no_0x_hdr_forward_list_pass.cpp ] +[ compile-fail ../no_0x_hdr_forward_list_fail.cpp ] ; +test-suite "BOOST_NO_0X_HDR_FUTURE" : +[ run ../no_0x_hdr_future_pass.cpp ] +[ compile-fail ../no_0x_hdr_future_fail.cpp ] ; +test-suite "BOOST_NO_0X_HDR_INITIALIZER_LIST" : +[ run ../no_0x_hdr_initializer_list_pass.cpp ] +[ compile-fail ../no_0x_hdr_initializer_list_fail.cpp ] ; +test-suite "BOOST_NO_0X_HDR_MUTEX" : +[ run ../no_0x_hdr_mutex_pass.cpp ] +[ compile-fail ../no_0x_hdr_mutex_fail.cpp ] ; +test-suite "BOOST_NO_0X_HDR_RANDOM" : +[ run ../no_0x_hdr_random_pass.cpp ] +[ compile-fail ../no_0x_hdr_random_fail.cpp ] ; +test-suite "BOOST_NO_0X_HDR_RATIO" : +[ run ../no_0x_hdr_ratio_pass.cpp ] +[ compile-fail ../no_0x_hdr_ratio_fail.cpp ] ; +test-suite "BOOST_NO_0X_HDR_REGEX" : +[ run ../no_0x_hdr_regex_pass.cpp ] +[ compile-fail ../no_0x_hdr_regex_fail.cpp ] ; +test-suite "BOOST_NO_0X_HDR_SYSTEM_ERROR" : +[ run ../no_0x_hdr_system_error_pass.cpp ] +[ compile-fail ../no_0x_hdr_system_error_fail.cpp ] ; +test-suite "BOOST_NO_0X_HDR_THREAD" : +[ run ../no_0x_hdr_thread_pass.cpp ] +[ compile-fail ../no_0x_hdr_thread_fail.cpp ] ; +test-suite "BOOST_NO_0X_HDR_TUPLE" : +[ run ../no_0x_hdr_tuple_pass.cpp ] +[ compile-fail ../no_0x_hdr_tuple_fail.cpp ] ; +test-suite "BOOST_NO_0X_HDR_TYPEINDEX" : +[ run ../no_0x_hdr_typeindex_pass.cpp ] +[ compile-fail ../no_0x_hdr_typeindex_fail.cpp ] ; +test-suite "BOOST_NO_0X_HDR_TYPE_TRAITS" : +[ run ../no_0x_hdr_type_traits_pass.cpp ] +[ compile-fail ../no_0x_hdr_type_traits_fail.cpp ] ; +test-suite "BOOST_NO_0X_HDR_UNORDERED_MAP" : +[ run ../no_0x_hdr_unordered_map_pass.cpp ] +[ compile-fail ../no_0x_hdr_unordered_map_fail.cpp ] ; +test-suite "BOOST_NO_0X_HDR_UNORDERED_SET" : +[ run ../no_0x_hdr_unordered_set_pass.cpp ] +[ compile-fail ../no_0x_hdr_unordered_set_fail.cpp ] ; +test-suite "BOOST_NO_ADL_BARRIER" : +[ run ../no_adl_barrier_pass.cpp ] +[ compile-fail ../no_adl_barrier_fail.cpp ] ; +test-suite "BOOST_NO_ARGUMENT_DEPENDENT_LOOKUP" : +[ run ../no_arg_dep_lookup_pass.cpp ] +[ compile-fail ../no_arg_dep_lookup_fail.cpp ] ; +test-suite "BOOST_NO_ARRAY_TYPE_SPECIALIZATIONS" : +[ run ../no_array_type_spec_pass.cpp ] +[ compile-fail ../no_array_type_spec_fail.cpp ] ; +test-suite "BOOST_NO_AUTO_DECLARATIONS" : +[ run ../no_auto_declarations_pass.cpp ] +[ compile-fail ../no_auto_declarations_fail.cpp ] ; +test-suite "BOOST_NO_AUTO_MULTIDECLARATIONS" : +[ run ../no_auto_multidecl_pass.cpp ] +[ compile-fail ../no_auto_multidecl_fail.cpp ] ; +test-suite "BOOST_NO_AUTO_PTR" : +[ run ../no_auto_ptr_pass.cpp ] +[ compile-fail ../no_auto_ptr_fail.cpp ] ; +test-suite "BOOST_BCB_PARTIAL_SPECIALIZATION_BUG" : +[ run ../no_bcb_partial_spec_pass.cpp ] +[ compile-fail ../no_bcb_partial_spec_fail.cpp ] ; +test-suite "BOOST_NO_CHAR16_T" : +[ run ../no_char16_t_pass.cpp ] +[ compile-fail ../no_char16_t_fail.cpp ] ; +test-suite "BOOST_NO_CHAR32_T" : +[ run ../no_char32_t_pass.cpp ] +[ compile-fail ../no_char32_t_fail.cpp ] ; +test-suite "BOOST_NO_COMPLETE_VALUE_INITIALIZATION" : +[ run ../no_com_value_init_pass.cpp ] +[ compile-fail ../no_com_value_init_fail.cpp ] ; +test-suite "BOOST_NO_CONSTEXPR" : +[ run ../no_constexpr_pass.cpp ] +[ compile-fail ../no_constexpr_fail.cpp ] ; +test-suite "BOOST_NO_CTYPE_FUNCTIONS" : +[ run ../no_ctype_functions_pass.cpp ] +[ compile-fail ../no_ctype_functions_fail.cpp ] ; +test-suite "BOOST_NO_CV_SPECIALIZATIONS" : +[ run ../no_cv_spec_pass.cpp ] +[ compile-fail ../no_cv_spec_fail.cpp ] ; +test-suite "BOOST_NO_CV_VOID_SPECIALIZATIONS" : +[ run ../no_cv_void_spec_pass.cpp ] +[ compile-fail ../no_cv_void_spec_fail.cpp ] ; +test-suite "BOOST_NO_CWCHAR" : +[ run ../no_cwchar_pass.cpp ] +[ compile-fail ../no_cwchar_fail.cpp ] ; +test-suite "BOOST_NO_CWCTYPE" : +[ run ../no_cwctype_pass.cpp ] +[ compile-fail ../no_cwctype_fail.cpp ] ; +test-suite "BOOST_NO_DECLTYPE" : +[ run ../no_decltype_pass.cpp ] +[ compile-fail ../no_decltype_fail.cpp ] ; +test-suite "BOOST_NO_DECLTYPE_N3276" : +[ run ../no_decltype_n3276_pass.cpp ] +[ compile-fail ../no_decltype_n3276_fail.cpp ] ; +test-suite "BOOST_DEDUCED_TYPENAME" : +[ run ../no_ded_typename_pass.cpp ] +[ compile-fail ../no_ded_typename_fail.cpp ] ; +test-suite "BOOST_NO_DEFAULTED_FUNCTIONS" : +[ run ../no_defaulted_functions_pass.cpp ] +[ compile-fail ../no_defaulted_functions_fail.cpp ] ; +test-suite "BOOST_NO_DELETED_FUNCTIONS" : +[ run ../no_deleted_functions_pass.cpp ] +[ compile-fail ../no_deleted_functions_fail.cpp ] ; +test-suite "BOOST_NO_DEPENDENT_NESTED_DERIVATIONS" : +[ run ../no_dep_nested_class_pass.cpp ] +[ compile-fail ../no_dep_nested_class_fail.cpp ] ; +test-suite "BOOST_NO_DEPENDENT_TYPES_IN_TEMPLATE_VALUE_PARAMETERS" : +[ run ../no_dep_val_param_pass.cpp ] +[ compile-fail ../no_dep_val_param_fail.cpp ] ; +test-suite "BOOST_NO_EXCEPTIONS" : +[ run ../no_exceptions_pass.cpp ] +[ compile-fail ../no_exceptions_fail.cpp ] ; +test-suite "BOOST_NO_EXCEPTION_STD_NAMESPACE" : +[ run ../no_excep_std_pass.cpp ] +[ compile-fail ../no_excep_std_fail.cpp ] ; +test-suite "BOOST_NO_EXPLICIT_CONVERSION_OPERATORS" : +[ run ../no_explicit_cvt_ops_pass.cpp ] +[ compile-fail ../no_explicit_cvt_ops_fail.cpp ] ; +test-suite "BOOST_NO_EXPLICIT_FUNCTION_TEMPLATE_ARGUMENTS" : +[ run ../no_exp_func_tem_arg_pass.cpp ] +[ compile-fail ../no_exp_func_tem_arg_fail.cpp ] ; +test-suite "BOOST_NO_EXTERN_TEMPLATE" : +[ run ../no_extern_template_pass.cpp ] +[ compile-fail ../no_extern_template_fail.cpp ] ; +test-suite "BOOST_NO_FENV_H" : +[ run ../no_fenv_h_pass.cpp ] +[ compile-fail ../no_fenv_h_fail.cpp ] ; +test-suite "BOOST_NO_FUNCTION_TEMPLATE_DEFAULT_ARGS" : +[ run ../no_function_template_default_args_pass.cpp ] +[ compile-fail ../no_function_template_default_args_fail.cpp ] ; +test-suite "BOOST_NO_FUNCTION_TYPE_SPECIALIZATIONS" : +[ run ../no_function_type_spec_pass.cpp ] +[ compile-fail ../no_function_type_spec_fail.cpp ] ; +test-suite "BOOST_NO_FUNCTION_TEMPLATE_ORDERING" : +[ run ../no_func_tmp_order_pass.cpp ] +[ compile-fail ../no_func_tmp_order_fail.cpp ] ; +test-suite "BOOST_NO_MS_INT64_NUMERIC_LIMITS" : +[ run ../no_i64_limits_pass.cpp ] +[ compile-fail ../no_i64_limits_fail.cpp ] ; +test-suite "BOOST_NO_INITIALIZER_LISTS" : +[ run ../no_initializer_lists_pass.cpp ] +[ compile-fail ../no_initializer_lists_fail.cpp ] ; +test-suite "BOOST_NO_INCLASS_MEMBER_INITIALIZATION" : +[ run ../no_inline_memb_init_pass.cpp ] +[ compile-fail ../no_inline_memb_init_fail.cpp ] ; +test-suite "BOOST_NO_INTEGRAL_INT64_T" : +[ run ../no_integral_int64_t_pass.cpp ] +[ compile-fail ../no_integral_int64_t_fail.cpp ] ; +test-suite "BOOST_NO_IOSFWD" : +[ run ../no_iosfwd_pass.cpp ] +[ compile-fail ../no_iosfwd_fail.cpp ] ; +test-suite "BOOST_NO_IOSTREAM" : +[ run ../no_iostream_pass.cpp ] +[ compile-fail ../no_iostream_fail.cpp ] ; +test-suite "BOOST_NO_IS_ABSTRACT" : +[ run ../no_is_abstract_pass.cpp ] +[ compile-fail ../no_is_abstract_fail.cpp ] ; +test-suite "BOOST_NO_TEMPLATED_ITERATOR_CONSTRUCTORS" : +[ run ../no_iter_construct_pass.cpp ] +[ compile-fail ../no_iter_construct_fail.cpp ] ; +test-suite "BOOST_NO_LAMBDAS" : +[ run ../no_lambdas_pass.cpp ] +[ compile-fail ../no_lambdas_fail.cpp ] ; +test-suite "BOOST_NO_LIMITS" : +[ run ../no_limits_pass.cpp ] +[ compile-fail ../no_limits_fail.cpp ] ; +test-suite "BOOST_NO_LIMITS_COMPILE_TIME_CONSTANTS" : +[ run ../no_limits_const_exp_pass.cpp ] +[ compile-fail ../no_limits_const_exp_fail.cpp ] ; +test-suite "BOOST_NO_NUMERIC_LIMITS_LOWEST" : +[ run ../no_limits_lowest_pass.cpp ] +[ compile-fail ../no_limits_lowest_fail.cpp ] ; +test-suite "BOOST_NO_LONG_LONG_NUMERIC_LIMITS" : +[ run ../no_ll_limits_pass.cpp ] +[ compile-fail ../no_ll_limits_fail.cpp ] ; +test-suite "BOOST_NO_LONG_LONG" : +[ run ../no_long_long_pass.cpp ] +[ compile-fail ../no_long_long_fail.cpp ] ; +test-suite "BOOST_NO_MEMBER_FUNCTION_SPECIALIZATIONS" : +[ run ../no_mem_func_spec_pass.cpp ] +[ compile-fail ../no_mem_func_spec_fail.cpp ] ; +test-suite "BOOST_NO_MEMBER_TEMPLATES" : +[ run ../no_mem_templates_pass.cpp ] +[ compile-fail ../no_mem_templates_fail.cpp ] ; +test-suite "BOOST_NO_MEMBER_TEMPLATE_FRIENDS" : +[ run ../no_mem_templ_frnds_pass.cpp ] +[ compile-fail ../no_mem_templ_frnds_fail.cpp ] ; +test-suite "BOOST_NO_MEMBER_TEMPLATE_KEYWORD" : +[ run ../no_mem_tem_keyword_pass.cpp ] +[ compile-fail ../no_mem_tem_keyword_fail.cpp ] ; +test-suite "BOOST_NO_POINTER_TO_MEMBER_TEMPLATE_PARAMETERS" : +[ run ../no_mem_tem_pnts_pass.cpp ] +[ compile-fail ../no_mem_tem_pnts_fail.cpp ] ; +test-suite "BOOST_NO_NESTED_FRIENDSHIP" : +[ run ../no_nested_friendship_pass.cpp ] +[ compile-fail ../no_nested_friendship_fail.cpp ] ; +test-suite "BOOST_NO_NOEXCEPT" : +[ run ../no_noexcept_pass.cpp ] +[ compile-fail ../no_noexcept_fail.cpp ] ; +test-suite "BOOST_NO_NULLPTR" : +[ run ../no_nullptr_pass.cpp ] +[ compile-fail ../no_nullptr_fail.cpp ] ; +test-suite "BOOST_NO_OPERATORS_IN_NAMESPACE" : +[ run ../no_ops_in_namespace_pass.cpp ] +[ compile-fail ../no_ops_in_namespace_fail.cpp ] ; +test-suite "BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION" : +[ run ../no_partial_spec_pass.cpp ] +[ compile-fail ../no_partial_spec_fail.cpp ] ; +test-suite "BOOST_NO_PARTIAL_SPECIALIZATION_IMPLICIT_DEFAULT_ARGS" : +[ run ../no_part_spec_def_args_pass.cpp ] +[ compile-fail ../no_part_spec_def_args_fail.cpp ] ; +test-suite "BOOST_NO_PRIVATE_IN_AGGREGATE" : +[ run ../no_priv_aggregate_pass.cpp ] +[ compile-fail ../no_priv_aggregate_fail.cpp ] ; +test-suite "BOOST_NO_POINTER_TO_MEMBER_CONST" : +[ run ../no_ptr_mem_const_pass.cpp ] +[ compile-fail ../no_ptr_mem_const_fail.cpp ] ; +test-suite "BOOST_NO_RAW_LITERALS" : +[ run ../no_raw_literals_pass.cpp ] +[ compile-fail ../no_raw_literals_fail.cpp ] ; +test-suite "BOOST_NO_UNREACHABLE_RETURN_DETECTION" : +[ run ../no_ret_det_pass.cpp ] +[ compile-fail ../no_ret_det_fail.cpp ] ; +test-suite "BOOST_NO_RTTI" : +[ run ../no_rtti_pass.cpp ] +[ compile-fail ../no_rtti_fail.cpp ] ; +test-suite "BOOST_NO_RVALUE_REFERENCES" : +[ run ../no_rvalue_references_pass.cpp ] +[ compile-fail ../no_rvalue_references_fail.cpp ] ; +test-suite "BOOST_NO_SCOPED_ENUMS" : +[ run ../no_scoped_enums_pass.cpp ] +[ compile-fail ../no_scoped_enums_fail.cpp ] ; +test-suite "BOOST_NO_SFINAE" : +[ run ../no_sfinae_pass.cpp ] +[ compile-fail ../no_sfinae_fail.cpp ] ; +test-suite "BOOST_NO_SFINAE_EXPR" : +[ run ../no_sfinae_expr_pass.cpp ] +[ compile-fail ../no_sfinae_expr_fail.cpp ] ; +test-suite "BOOST_NO_STRINGSTREAM" : +[ run ../no_sstream_pass.cpp ] +[ compile-fail ../no_sstream_fail.cpp ] ; +test-suite "BOOST_NO_STATIC_ASSERT" : +[ run ../no_static_assert_pass.cpp ] +[ compile-fail ../no_static_assert_fail.cpp ] ; +test-suite "BOOST_NO_STDC_NAMESPACE" : +[ run ../no_stdc_namespace_pass.cpp ] +[ compile-fail ../no_stdc_namespace_fail.cpp ] ; +test-suite "BOOST_NO_STD_ALLOCATOR" : +[ run ../no_std_allocator_pass.cpp ] +[ compile-fail ../no_std_allocator_fail.cpp ] ; +test-suite "BOOST_NO_STD_DISTANCE" : +[ run ../no_std_distance_pass.cpp ] +[ compile-fail ../no_std_distance_fail.cpp ] ; +test-suite "BOOST_NO_STD_ITERATOR" : +[ run ../no_std_iterator_pass.cpp ] +[ compile-fail ../no_std_iterator_fail.cpp ] ; +test-suite "BOOST_NO_STD_ITERATOR_TRAITS" : +[ run ../no_std_iter_traits_pass.cpp ] +[ compile-fail ../no_std_iter_traits_fail.cpp ] ; +test-suite "BOOST_NO_STD_LOCALE" : +[ run ../no_std_locale_pass.cpp ] +[ compile-fail ../no_std_locale_fail.cpp ] ; +test-suite "BOOST_NO_STD_MESSAGES" : +[ run ../no_std_messages_pass.cpp ] +[ compile-fail ../no_std_messages_fail.cpp ] ; +test-suite "BOOST_NO_STD_MIN_MAX" : +[ run ../no_std_min_max_pass.cpp ] +[ compile-fail ../no_std_min_max_fail.cpp ] ; +test-suite "BOOST_NO_STD_OUTPUT_ITERATOR_ASSIGN" : +[ run ../no_std_oi_assign_pass.cpp ] +[ compile-fail ../no_std_oi_assign_fail.cpp ] ; +test-suite "BOOST_NO_STD_TYPEINFO" : +[ run ../no_std_typeinfo_pass.cpp ] +[ compile-fail ../no_std_typeinfo_fail.cpp ] ; +test-suite "BOOST_NO_STD_UNORDERED" : +[ run ../no_std_unordered_pass.cpp ] +[ compile-fail ../no_std_unordered_fail.cpp ] ; +test-suite "BOOST_NO_STD_USE_FACET" : +[ run ../no_std_use_facet_pass.cpp ] +[ compile-fail ../no_std_use_facet_fail.cpp ] ; +test-suite "BOOST_NO_STD_WSTREAMBUF" : +[ run ../no_std_wstreambuf_pass.cpp ] +[ compile-fail ../no_std_wstreambuf_fail.cpp ] ; +test-suite "BOOST_NO_STD_WSTRING" : +[ run ../no_std_wstring_pass.cpp ] +[ compile-fail ../no_std_wstring_fail.cpp ] ; +test-suite "BOOST_NO_SWPRINTF" : +[ run ../no_swprintf_pass.cpp ] +[ compile-fail ../no_swprintf_fail.cpp ] ; +test-suite "BOOST_NO_TEMPLATE_ALIASES" : +[ run ../no_template_aliases_pass.cpp ] +[ compile-fail ../no_template_aliases_fail.cpp ] ; +test-suite "BOOST_NO_TEMPLATED_IOSTREAMS" : +[ run ../no_template_streams_pass.cpp ] +[ compile-fail ../no_template_streams_fail.cpp ] ; +test-suite "BOOST_NO_TEMPLATE_TEMPLATES" : +[ run ../no_template_template_pass.cpp ] +[ compile-fail ../no_template_template_fail.cpp ] ; +test-suite "BOOST_NO_TWO_PHASE_NAME_LOOKUP" : +[ run ../no_two_phase_lookup_pass.cpp ] +[ compile-fail ../no_two_phase_lookup_fail.cpp ] ; +test-suite "BOOST_NO_TYPEID" : +[ run ../no_typeid_pass.cpp ] +[ compile-fail ../no_typeid_fail.cpp ] ; +test-suite "BOOST_NO_TYPENAME_WITH_CTOR" : +[ run ../no_typename_with_ctor_pass.cpp ] +[ compile-fail ../no_typename_with_ctor_fail.cpp ] ; +test-suite "BOOST_NO_UNICODE_LITERALS" : +[ run ../no_unicode_literals_pass.cpp ] +[ compile-fail ../no_unicode_literals_fail.cpp ] ; +test-suite "BOOST_NO_UNIFIED_INITIALIZATION_SYNTAX" : +[ run ../no_unified_init_pass.cpp ] +[ compile-fail ../no_unified_init_fail.cpp ] ; +test-suite "BOOST_FUNCTION_SCOPE_USING_DECLARATION_BREAKS_ADL" : +[ run ../no_using_breaks_adl_pass.cpp ] +[ compile-fail ../no_using_breaks_adl_fail.cpp ] ; +test-suite "BOOST_NO_USING_DECLARATION_OVERLOADS_FROM_TYPENAME_BASE" : +[ run ../no_using_decl_overld_pass.cpp ] +[ compile-fail ../no_using_decl_overld_fail.cpp ] ; +test-suite "BOOST_NO_USING_TEMPLATE" : +[ run ../no_using_template_pass.cpp ] +[ compile-fail ../no_using_template_fail.cpp ] ; +test-suite "BOOST_NO_VARIADIC_MACROS" : +[ run ../no_variadic_macros_pass.cpp ] +[ compile-fail ../no_variadic_macros_fail.cpp ] ; +test-suite "BOOST_NO_VARIADIC_TEMPLATES" : +[ run ../no_variadic_templates_pass.cpp ] +[ compile-fail ../no_variadic_templates_fail.cpp ] ; +test-suite "BOOST_NO_VOID_RETURNS" : +[ run ../no_void_returns_pass.cpp ] +[ compile-fail ../no_void_returns_fail.cpp ] ; +test-suite "BOOST_NO_INTRINSIC_WCHAR_T" : +[ run ../no_wchar_t_pass.cpp ] +[ compile-fail ../no_wchar_t_fail.cpp ] ; + diff --git a/libs/config/test/all/options_v2.jam b/libs/config/test/all/options_v2.jam new file mode 100644 index 0000000000..ac748ef0dd --- /dev/null +++ b/libs/config/test/all/options_v2.jam @@ -0,0 +1,12 @@ +# 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) + +project + : requirements + # threading tests require thread support turned on: + <threading>multi + ; + +local test-requirements = <library>../../test/build//boost_test_exec_monitor ; diff --git a/libs/config/test/boost_has_2arg_use_facet.ipp b/libs/config/test/boost_has_2arg_use_facet.ipp new file mode 100644 index 0000000000..7ed2b7c162 --- /dev/null +++ b/libs/config/test/boost_has_2arg_use_facet.ipp @@ -0,0 +1,32 @@ +// (C) Copyright John Maddock 2001. +// 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) + +// See http://www.boost.org/libs/config for most recent version. + +// MACRO: BOOST_HAS_TWO_ARG_USE_FACET +// TITLE: two argument version of use_facet +// DESCRIPTION: The standard library lacks a conforming std::use_facet, +// but has a two argument version that does the job. +// This is primarily for the Rogue Wave std lib. + +#include <locale> + + +namespace boost_has_two_arg_use_facet{ + +int test() +{ + std::locale l; + const std::ctype<char>& ct = std::use_facet(l, (std::ctype<char>*)0); + return 0; +} + +} + + + + + + diff --git a/libs/config/test/boost_has_bethreads.ipp b/libs/config/test/boost_has_bethreads.ipp new file mode 100644 index 0000000000..0e01699de4 --- /dev/null +++ b/libs/config/test/boost_has_bethreads.ipp @@ -0,0 +1,34 @@ +// (C) Copyright John Maddock 2001. +// 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) + +// See http://www.boost.org/libs/config for most recent version. + +// MACRO: BOOST_HAS_BETHREADS +// TITLE: BeOS Threads +// DESCRIPTION: The platform supports BeOS style threads. + +#include <OS.h> + + +namespace boost_has_bethreads{ + +int test() +{ + sem_id mut = create_sem(1, "test"); + if(mut > 0) + { + acquire_sem(mut); + release_sem(mut); + delete_sem(mut); + } + return 0; +} + +} + + + + + diff --git a/libs/config/test/boost_has_clock_gettime.ipp b/libs/config/test/boost_has_clock_gettime.ipp new file mode 100644 index 0000000000..59eee5859a --- /dev/null +++ b/libs/config/test/boost_has_clock_gettime.ipp @@ -0,0 +1,35 @@ +// (C) Copyright John Maddock 2001. +// 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) + +// See http://www.boost.org/libs/config for most recent version. + +// MACRO: BOOST_HAS_CLOCK_GETTIME +// TITLE: clock_gettime +// DESCRIPTION: The platform supports POSIX standard API clock_gettime. + +#include <time.h> + + +namespace boost_has_clock_gettime{ + +void f() +{ + // this is never called, it just has to compile: + timespec tp; + int res = clock_gettime(CLOCK_REALTIME, &tp); + (void) &res; +} + +int test() +{ + return 0; +} + +} + + + + + diff --git a/libs/config/test/boost_has_dirent_h.ipp b/libs/config/test/boost_has_dirent_h.ipp new file mode 100644 index 0000000000..5d60202021 --- /dev/null +++ b/libs/config/test/boost_has_dirent_h.ipp @@ -0,0 +1,30 @@ +// (C) Copyright John Maddock 2002. +// 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) + +// See http://www.boost.org/libs/config for most recent version. + +// MACRO: BOOST_HAS_DIRENT_H +// TITLE: <dirent.h> +// DESCRIPTION: The platform has an <dirent.h>. + +#include <dirent.h> + + +namespace boost_has_dirent_h{ + +int test() +{ + DIR* pd = opendir("foobar"); + if(pd) closedir(pd); + return 0; +} + +} + + + + + + diff --git a/libs/config/test/boost_has_expm1.ipp b/libs/config/test/boost_has_expm1.ipp new file mode 100644 index 0000000000..b219d50f17 --- /dev/null +++ b/libs/config/test/boost_has_expm1.ipp @@ -0,0 +1,25 @@ +// (C) Copyright John Maddock 2005. +// 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) + +// See http://www.boost.org/libs/config for most recent version. + +// MACRO: BOOST_HAS_EXPM1 +// TITLE: expm1 +// DESCRIPTION: The std lib has a C99-conforming expm1 function. + +#include <math.h> + +namespace boost_has_expm1{ + +int test() +{ + double x = 0.5; + x = ::expm1(x); + (void)x; + return 0; +} + +} + diff --git a/libs/config/test/boost_has_ftime.ipp b/libs/config/test/boost_has_ftime.ipp new file mode 100644 index 0000000000..ff04baf9ea --- /dev/null +++ b/libs/config/test/boost_has_ftime.ipp @@ -0,0 +1,32 @@ +// (C) Copyright John Maddock 2001. +// 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) + +// See http://www.boost.org/libs/config for most recent version. + +// MACRO: BOOST_HAS_FTIME +// TITLE: The platform has FTIME. +// DESCRIPTION: The platform supports the Win32 API type FTIME. + +#include <windows.h> + + +namespace boost_has_ftime{ + +void f(FILETIME) +{ + // this is never called, it just has to compile: +} + +int test() +{ + return 0; +} + +} + + + + + diff --git a/libs/config/test/boost_has_getsystemtimeasfiletime.ipp b/libs/config/test/boost_has_getsystemtimeasfiletime.ipp new file mode 100644 index 0000000000..d9b7e1c95c --- /dev/null +++ b/libs/config/test/boost_has_getsystemtimeasfiletime.ipp @@ -0,0 +1,30 @@ +// (C) Copyright John Maddock 2011. +// 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) + +// See http://www.boost.org/libs/config for most recent version. + +// MACRO: BOOST_HAS_GETSYSTEMTIMEASFILETIME +// TITLE: GetSystemTimeAsFileTime +// DESCRIPTION: The platform supports Win32 API GetSystemTimeAsFileTime. + +#include <windows.h> + + +namespace boost_has_getsystemtimeasfiletime{ + +void f() +{ + // this is never called, it just has to compile: + FILETIME ft; + GetSystemTimeAsFileTime(&ft); +} + +int test() +{ + return 0; +} + +} + diff --git a/libs/config/test/boost_has_gettimeofday.ipp b/libs/config/test/boost_has_gettimeofday.ipp new file mode 100644 index 0000000000..d79186a9be --- /dev/null +++ b/libs/config/test/boost_has_gettimeofday.ipp @@ -0,0 +1,35 @@ +// (C) Copyright John Maddock 2001. +// 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) + +// See http://www.boost.org/libs/config for most recent version. + +// MACRO: BOOST_HAS_GETTIMEOFDAY +// TITLE: gettimeofday +// DESCRIPTION: The platform supports POSIX standard API gettimeofday. + +#include <sys/time.h> + + +namespace boost_has_gettimeofday{ + +void f() +{ + // this is never called, it just has to compile: + timeval tp; + int res = gettimeofday(&tp, 0); + (void) &res; +} + +int test() +{ + return 0; +} + +} + + + + + diff --git a/libs/config/test/boost_has_hash.ipp b/libs/config/test/boost_has_hash.ipp new file mode 100644 index 0000000000..fb89764d48 --- /dev/null +++ b/libs/config/test/boost_has_hash.ipp @@ -0,0 +1,67 @@ +// (C) Copyright John Maddock 2001. +// 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) + +// See http://www.boost.org/libs/config for most recent version. + +// MACRO: BOOST_HAS_HASH +// TITLE: <hashset> and <hashmap> +// DESCRIPTION: The C++ implementation provides the (SGI) hash_set +// or hash_map classes. + +#if defined(__GLIBCXX__) || (defined(__GLIBCPP__) && __GLIBCPP__>=20020514) // GCC >= 3.1.0 +# ifdef BOOST_NO_STD_UNORDERED +# define BOOST_STD_EXTENSION_NAMESPACE __gnu_cxx +# include <ext/hash_set> +# include <ext/hash_map> +# else + // If we have BOOST_NO_STD_UNORDERED *not* defined, then we must + // not include the <ext/*> headers as they clash with the C++0x + // headers. ie in any given translation unit we can include one + // or the other, but not both. +# define DISABLE_BOOST_HAS_HASH_TEST +# endif +#else +#include <hash_set> +#include <hash_map> +#endif + +#ifndef BOOST_STD_EXTENSION_NAMESPACE +#define BOOST_STD_EXTENSION_NAMESPACE std +#endif + +namespace boost_has_hash{ + +#ifndef DISABLE_BOOST_HAS_HASH_TEST + +template <class Key, class Eq, class Hash, class Alloc> +void foo(const BOOST_STD_EXTENSION_NAMESPACE::hash_set<Key,Eq,Hash,Alloc>& ) +{ +} + +template <class Key, class T, class Eq, class Hash, class Alloc> +void foo(const BOOST_STD_EXTENSION_NAMESPACE::hash_map<Key,T,Eq,Hash,Alloc>& ) +{ +} + +#endif + +int test() +{ +#ifndef DISABLE_BOOST_HAS_HASH_TEST + BOOST_STD_EXTENSION_NAMESPACE::hash_set<int> hs; + foo(hs); + BOOST_STD_EXTENSION_NAMESPACE::hash_map<int, long> hm; + foo(hm); +#endif + return 0; +} + +} + + + + + + diff --git a/libs/config/test/boost_has_log1p.ipp b/libs/config/test/boost_has_log1p.ipp new file mode 100644 index 0000000000..9454d00be3 --- /dev/null +++ b/libs/config/test/boost_has_log1p.ipp @@ -0,0 +1,24 @@ +// (C) Copyright John Maddock 2005. +// 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) + +// See http://www.boost.org/libs/config for most recent version. + +// MACRO: BOOST_HAS_LOG1P +// TITLE: log1p +// DESCRIPTION: The std lib has a C99-conforming log1p function. + +#include <math.h> + +namespace boost_has_log1p{ + +int test() +{ + double x = 0.5; + x = ::log1p(x); + (void)x; + return 0; +} + +} diff --git a/libs/config/test/boost_has_long_long.ipp b/libs/config/test/boost_has_long_long.ipp new file mode 100644 index 0000000000..651021b495 --- /dev/null +++ b/libs/config/test/boost_has_long_long.ipp @@ -0,0 +1,36 @@ +// (C) Copyright John Maddock 2001. +// 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) + +// See http://www.boost.org/libs/config for most recent version. + +// MACRO: BOOST_HAS_LONG_LONG +// TITLE: long long +// DESCRIPTION: The platform supports long long. + +#include <cstdlib> + + +namespace boost_has_long_long{ + +int test() +{ +#ifdef __GNUC__ + __extension__ long long lli = 0LL; + __extension__ unsigned long long ulli = 0uLL; +#else + long long lli = 0LL; + unsigned long long ulli = 0uLL; +#endif + (void)&lli; + (void)&ulli; + return 0; +} + +} + + + + + diff --git a/libs/config/test/boost_has_macro_use_facet.ipp b/libs/config/test/boost_has_macro_use_facet.ipp new file mode 100644 index 0000000000..0e0726df43 --- /dev/null +++ b/libs/config/test/boost_has_macro_use_facet.ipp @@ -0,0 +1,35 @@ +// (C) Copyright John Maddock 2001. +// 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) + +// See http://www.boost.org/libs/config for most recent version. + +// MACRO: BOOST_HAS_MACRO_USE_FACET +// TITLE: macro version of use_facet: _USE +// DESCRIPTION: The standard library lacks a conforming std::use_facet, +// but has a macro _USE(loc, Type) that does the job. +// This is primarily for the Dinkumware std lib. + +#include <locale> + +#ifndef _USE +#error "macro _USE not defined" +#endif + +namespace boost_has_macro_use_facet{ + +int test() +{ + std::locale l; + const std::ctype<char>& ct = std::_USE(l, std::ctype<char>); + return 0; +} + +} + + + + + + diff --git a/libs/config/test/boost_has_ms_int64.ipp b/libs/config/test/boost_has_ms_int64.ipp new file mode 100644 index 0000000000..c8b47826b9 --- /dev/null +++ b/libs/config/test/boost_has_ms_int64.ipp @@ -0,0 +1,32 @@ +// (C) Copyright John Maddock 2001. +// 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) + +// See http://www.boost.org/libs/config for most recent version. + +// MACRO: BOOST_HAS_MS_INT64 +// TITLE: __int64 +// DESCRIPTION: The platform supports Microsoft style __int64. + +#include <cstdlib> + + +namespace boost_has_ms_int64{ + +int test() +{ + __int64 lli = 0i64; + unsigned __int64 ulli = 0ui64; + (void)lli; + (void)ulli; + return 0; +} + +} + + + + + + diff --git a/libs/config/test/boost_has_nanosleep.ipp b/libs/config/test/boost_has_nanosleep.ipp new file mode 100644 index 0000000000..9262c8cf5b --- /dev/null +++ b/libs/config/test/boost_has_nanosleep.ipp @@ -0,0 +1,36 @@ +// (C) Copyright John Maddock 2001. +// 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) + +// See http://www.boost.org/libs/config for most recent version. + +// MACRO: BOOST_HAS_NANOSLEEP +// TITLE: nanosleep +// DESCRIPTION: The platform supports POSIX API nanosleep. + +#include <time.h> + + +namespace boost_has_nanosleep{ + +void f() +{ + // this is never called, it just has to compile: + timespec ts = {0, 0}; + timespec rm; + int res = nanosleep(&ts, &rm); + (void) &res; +} + +int test() +{ + return 0; +} + +} + + + + + diff --git a/libs/config/test/boost_has_nl_types_h.ipp b/libs/config/test/boost_has_nl_types_h.ipp new file mode 100644 index 0000000000..9126adbf8f --- /dev/null +++ b/libs/config/test/boost_has_nl_types_h.ipp @@ -0,0 +1,29 @@ +// (C) Copyright John Maddock 2001. +// 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) + +// See http://www.boost.org/libs/config for most recent version. + +// MACRO: BOOST_HAS_NL_TYPES_H +// TITLE: <nl_types.h> +// DESCRIPTION: The platform has an <nl_types.h>. + +#include <nl_types.h> + + +namespace boost_has_nl_types_h{ + +int test() +{ + nl_catd cat = catopen("foo", 0); + if(cat >= 0) catclose(cat); + return 0; +} + +} + + + + + diff --git a/libs/config/test/boost_has_nrvo.ipp b/libs/config/test/boost_has_nrvo.ipp new file mode 100644 index 0000000000..2611b4ec0f --- /dev/null +++ b/libs/config/test/boost_has_nrvo.ipp @@ -0,0 +1,57 @@ +// (C) Copyright Terje Slettebo 2001. +// (C) Copyright John Maddock 2001. +// 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) + +// See http://www.boost.org/libs/config for most recent version. + +// MACRO: BOOST_HAS_NRVO +// TITLE: Named return value optimisation. +// DESCRIPTION: Named return value optimisation. + + +namespace boost_has_nrvo +{ + +class test_class +{ +public: + test_class() {} + test_class(const test_class &other) + { + ++copy_count; + } + + static int copy_count; +}; + +int test_class::copy_count; + +test_class f() +{ + test_class nrv; + + return nrv; +} + +int test() +{ + test_class::copy_count=0; + + f(); + + return test_class::copy_count; +} + +} // namespace boost_has_nrvo + + + + + + + + + + diff --git a/libs/config/test/boost_has_part_alloc.ipp b/libs/config/test/boost_has_part_alloc.ipp new file mode 100644 index 0000000000..dcef14cbe6 --- /dev/null +++ b/libs/config/test/boost_has_part_alloc.ipp @@ -0,0 +1,62 @@ +// (C) Copyright John Maddock 2001. +// 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) + +// See http://www.boost.org/libs/config for most recent version. + +// MACRO: BOOST_HAS_PARTIAL_STD_ALLOCATOR +// TITLE: limited std::allocator support +// DESCRIPTION: The std lib has at least some kind of stanfard allocator +// with allocate/deallocate members and probably not much more. + +#include <memory> + +namespace boost_has_partial_std_allocator{ + +// +// test everything except rebind template members: +// + +template <class T> +int test_allocator(const T& i) +{ + typedef std::allocator<int> alloc1_t; + typedef typename alloc1_t::size_type size_type; + typedef typename alloc1_t::difference_type difference_type; + typedef typename alloc1_t::pointer pointer; + typedef typename alloc1_t::const_pointer const_pointer; + typedef typename alloc1_t::reference reference; + typedef typename alloc1_t::const_reference const_reference; + typedef typename alloc1_t::value_type value_type; + + alloc1_t a1; + + pointer p = a1.allocate(1); + const_pointer cp = p; + a1.construct(p,i); + size_type s = a1.max_size(); + (void)s; + reference r = *p; + const_reference cr = *cp; + if(p != a1.address(r)) return -1; + if(cp != a1.address(cr)) return -1; + a1.destroy(p); + a1.deallocate(p,1); + + return 0; +} + + +int test() +{ + return test_allocator(0); +} + +} + + + + + + diff --git a/libs/config/test/boost_has_pthread_delay_np.ipp b/libs/config/test/boost_has_pthread_delay_np.ipp new file mode 100644 index 0000000000..294d3db5b2 --- /dev/null +++ b/libs/config/test/boost_has_pthread_delay_np.ipp @@ -0,0 +1,35 @@ +// (C) Copyright John Maddock 2001. +// 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) + +// See http://www.boost.org/libs/config for most recent version. + +// MACRO: BOOST_HAS_PTHREAD_DELAY_NP +// TITLE: pthread_delay_np +// DESCRIPTION: The platform supports non-standard pthread_delay_np API. + +#include <pthread.h> +#include <time.h> + + +namespace boost_has_pthread_delay_np{ + +void f() +{ + // this is never called, it just has to compile: + timespec ts; + int res = pthread_delay_np(&ts); +} + +int test() +{ + return 0; +} + +} + + + + + diff --git a/libs/config/test/boost_has_pthread_ma_st.ipp b/libs/config/test/boost_has_pthread_ma_st.ipp new file mode 100644 index 0000000000..0e985f2d8a --- /dev/null +++ b/libs/config/test/boost_has_pthread_ma_st.ipp @@ -0,0 +1,37 @@ +// (C) Copyright John Maddock 2001. +// 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) + +// See http://www.boost.org/libs/config for most recent version. + +// MACRO: BOOST_HAS_PTHREAD_MUTEXATTR_SETTYPE +// TITLE: pthread_mutexattr_settype +// DESCRIPTION: The platform supports POSIX API pthread_mutexattr_settype. + +#include <pthread.h> + + +namespace boost_has_pthread_mutexattr_settype{ + +void f() +{ + // this is never called, it just has to compile: + pthread_mutexattr_t attr; + pthread_mutexattr_init(&attr); + int type = 0; + pthread_mutexattr_settype(&attr, type); +} + +int test() +{ + return 0; +} + +} + + + + + + diff --git a/libs/config/test/boost_has_pthread_yield.ipp b/libs/config/test/boost_has_pthread_yield.ipp new file mode 100644 index 0000000000..625117a0ae --- /dev/null +++ b/libs/config/test/boost_has_pthread_yield.ipp @@ -0,0 +1,33 @@ +// (C) Copyright John Maddock 2001. +// 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) + +// See http://www.boost.org/libs/config for most recent version. + +// MACRO: BOOST_HAS_PTHREAD_YIELD +// TITLE: pthread_yield +// DESCRIPTION: The platform supports non standard API pthread_yield. + +#include <pthread.h> + + +namespace boost_has_pthread_yield{ + +void f() +{ + // this is never called, it just has to compile: + int res = pthread_yield(); +} + +int test() +{ + return 0; +} + +} + + + + + diff --git a/libs/config/test/boost_has_pthreads.ipp b/libs/config/test/boost_has_pthreads.ipp new file mode 100644 index 0000000000..eeeff65feb --- /dev/null +++ b/libs/config/test/boost_has_pthreads.ipp @@ -0,0 +1,64 @@ +// (C) Copyright John Maddock 2001. +// 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) + +// See http://www.boost.org/libs/config for most recent version. + +// MACRO: BOOST_HAS_PTHREADS +// TITLE: POSIX Threads +// DESCRIPTION: The platform supports POSIX style threads. + +#include <pthread.h> + + +namespace boost_has_pthreads{ + +extern "C" void* thread_proc(void* arg) +{ + return arg; +} + +int test() +{ + pthread_mutex_t mut; + int result = pthread_mutex_init(&mut, 0); + if(0 == result) + { + // + // Failure to be able to create and use a mutex + // is always a failure, even if the pthread + // library is just a non-functioning stub. + // + result |= pthread_mutex_lock(&mut); + result |= pthread_mutex_unlock(&mut); + result |= pthread_mutex_trylock(&mut); + result |= pthread_mutex_unlock(&mut); + result |= pthread_mutex_destroy(&mut); + // + // Try and create a thread, this is allowed + // to fail, in case we are linking to a pthread + // "stub" library. + // + pthread_t t; + int r = pthread_create(&t, 0, &thread_proc, 0); + // result |= r; + if(r == 0) + { + // + // If we can create a thread, then we must be able to join to it: + // + void* arg; + r = pthread_join(t, &arg); + result |= r; + } + } + return result; +} + +} + + + + + diff --git a/libs/config/test/boost_has_rvalue_refs.ipp b/libs/config/test/boost_has_rvalue_refs.ipp new file mode 100644 index 0000000000..f0ce174d72 --- /dev/null +++ b/libs/config/test/boost_has_rvalue_refs.ipp @@ -0,0 +1,26 @@ +// Copyright (C) 2007 Douglas Gregor +// 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) + +// See http://www.boost.org/libs/config for most recent version. + +// MACRO: BOOST_HAS_RVALUE_REFS +// TITLE: rvalue references +// DESCRIPTION: The compiler supports C++0x rvalue references + +namespace boost_has_rvalue_refs { + +void g(int&) {} + +template<typename F, typename T> +void forward(F f, T&& t) { f(static_cast<T&&>(t)); } + +int test() +{ + int x; + forward(g, x); + return 0; +} + +} diff --git a/libs/config/test/boost_has_sched_yield.ipp b/libs/config/test/boost_has_sched_yield.ipp new file mode 100644 index 0000000000..1302fbff27 --- /dev/null +++ b/libs/config/test/boost_has_sched_yield.ipp @@ -0,0 +1,34 @@ +// (C) Copyright John Maddock 2001. +// 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) + +// See http://www.boost.org/libs/config for most recent version. + +// MACRO: BOOST_HAS_SCHED_YIELD +// TITLE: sched_yield +// DESCRIPTION: The platform supports POSIX standard API sched_yield. + +#include <pthread.h> + + +namespace boost_has_sched_yield{ + +void f() +{ + // this is never called, it just has to compile: + int res = sched_yield(); + (void) &res; +} + +int test() +{ + return 0; +} + +} + + + + + diff --git a/libs/config/test/boost_has_sgi_type_traits.ipp b/libs/config/test/boost_has_sgi_type_traits.ipp new file mode 100644 index 0000000000..5848b68f5d --- /dev/null +++ b/libs/config/test/boost_has_sgi_type_traits.ipp @@ -0,0 +1,40 @@ +// (C) Copyright John Maddock 2001. +// 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) + +// See http://www.boost.org/libs/config for most recent version. + +// MACRO: BOOST_HAS_SGI_TYPE_TRAITS +// TITLE: SGI style <type_traits.h> +// DESCRIPTION: The standard library has it's own type_traits implementation. + +#include <type_traits.h> + + +namespace boost_has_sgi_type_traits{ + +struct foo_type{}; + +int test() +{ + ::__true_type t; + ::__false_type f; + typedef ::__type_traits<int>::has_trivial_destructor td; + typedef ::__type_traits<double>::has_trivial_assignment_operator ta; + typedef ::__type_traits<float>::has_trivial_copy_constructor tc; + typedef ::__type_traits<char>::has_trivial_default_constructor tdc; + typedef ::__type_traits<foo_type>::is_POD_type isp; + + (void) &t; // avoid "unused variable" warnings + (void) &f; + + return 0; +} + +} + + + + + diff --git a/libs/config/test/boost_has_sigaction.ipp b/libs/config/test/boost_has_sigaction.ipp new file mode 100644 index 0000000000..12170c1da7 --- /dev/null +++ b/libs/config/test/boost_has_sigaction.ipp @@ -0,0 +1,36 @@ +// (C) Copyright John Maddock 2001. +// 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) + +// See http://www.boost.org/libs/config for most recent version. + +// MACRO: BOOST_HAS_SIGACTION +// TITLE: sigaction +// DESCRIPTION: The platform supports POSIX standard API sigaction. + +#include <signal.h> + + +namespace boost_has_sigaction{ + +void f() +{ + // this is never called, it just has to compile: + struct sigaction* sa1 = 0 ; + struct sigaction* sa2 = 0 ; + int res = sigaction(0, sa1, sa2); + (void) &res; +} + +int test() +{ + return 0; +} + +} + + + + + diff --git a/libs/config/test/boost_has_slist.ipp b/libs/config/test/boost_has_slist.ipp new file mode 100644 index 0000000000..f3c37d4c20 --- /dev/null +++ b/libs/config/test/boost_has_slist.ipp @@ -0,0 +1,44 @@ +// (C) Copyright John Maddock 2001. +// 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) + +// See http://www.boost.org/libs/config for most recent version. + +// MACRO: BOOST_HAS_SLIST +// TITLE: <slist> +// DESCRIPTION: The C++ implementation provides the (SGI) slist class. + +#if defined(__GLIBCXX__) || (defined(__GLIBCPP__) && __GLIBCPP__>=20020514) // GCC >= 3.1.0 +# define BOOST_STD_EXTENSION_NAMESPACE __gnu_cxx +#include <ext/slist> +#else +#include <slist> +#endif + +#ifndef BOOST_STD_EXTENSION_NAMESPACE +#define BOOST_STD_EXTENSION_NAMESPACE std +#endif + +namespace boost_has_slist{ + +template <class T, class Alloc> +void foo(const BOOST_STD_EXTENSION_NAMESPACE::slist<T,Alloc>& ) +{ +} + + +int test() +{ + BOOST_STD_EXTENSION_NAMESPACE::slist<int> l; + foo(l); + return 0; +} + +} + + + + + + diff --git a/libs/config/test/boost_has_static_assert.ipp b/libs/config/test/boost_has_static_assert.ipp new file mode 100644 index 0000000000..545938a0ec --- /dev/null +++ b/libs/config/test/boost_has_static_assert.ipp @@ -0,0 +1,20 @@ +// Copyright (C) 2007 Douglas Gregor +// 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) + +// See http://www.boost.org/libs/config for most recent version. + +// MACRO: BOOST_HAS_STATIC_ASSERT +// TITLE: static assertions +// DESCRIPTION: The compiler supports C++0x static assertions + +namespace boost_has_static_assert { + +int test() +{ + static_assert(true, "OK"); + return 0; +} + +} diff --git a/libs/config/test/boost_has_stdint_h.ipp b/libs/config/test/boost_has_stdint_h.ipp new file mode 100644 index 0000000000..c731f503f4 --- /dev/null +++ b/libs/config/test/boost_has_stdint_h.ipp @@ -0,0 +1,48 @@ +// (C) Copyright John Maddock 2001. +// 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) + +// See http://www.boost.org/libs/config for most recent version. + +// MACRO: BOOST_HAS_STDINT_H +// TITLE: stdint.h +// DESCRIPTION: There are no 1998 C++ Standard headers <stdint.h> +// or <cstdint>, although the 1999 C Standard does +// include <stdint.h>. +// If <stdint.h> is present, <boost/stdint.h> can make +// good use of it, so a flag is supplied (signalling +// presence; thus the default is not present, conforming +// to the current C++ standard). + +# if defined(__hpux) || defined(__FreeBSD__) || defined(__IBMCPP__) +# include <inttypes.h> +# else +# include <stdint.h> +# endif + +namespace boost_has_stdint_h{ + +int test() +{ + int8_t i = 0; +#ifndef __QNX__ + // QNX has these under non-standard names, our cstdint.hpp will find them however: + int_fast8_t j = 0; + int_least8_t k = 0; + (void)j; + (void)k; +#endif + (void)i; + + return 0; +} + +} + + + + + + + diff --git a/libs/config/test/boost_has_stlp_use_facet.ipp b/libs/config/test/boost_has_stlp_use_facet.ipp new file mode 100644 index 0000000000..5b61b74129 --- /dev/null +++ b/libs/config/test/boost_has_stlp_use_facet.ipp @@ -0,0 +1,31 @@ +// (C) Copyright John Maddock 2001. +// 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) + +// See http://www.boost.org/libs/config for most recent version. + +// MACRO: BOOST_HAS_STLP_USE_FACET +// TITLE: STLport version of use_facet +// DESCRIPTION: The standard library lacks a conforming std::use_facet, +// but has a workaound class-version that does the job. +// This is primarily for the STLport std lib. + +#include <locale> + + +namespace boost_has_stlp_use_facet{ + +int test() +{ + std::locale l; + const std::ctype<char>& ct = *std::_Use_facet<std::ctype<char> >(l); + return 0; +} + +} + + + + + diff --git a/libs/config/test/boost_has_tr1_array.ipp b/libs/config/test/boost_has_tr1_array.ipp new file mode 100644 index 0000000000..5293dd8fe1 --- /dev/null +++ b/libs/config/test/boost_has_tr1_array.ipp @@ -0,0 +1,23 @@ +// (C) Copyright John Maddock 2005. +// 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) + +// See http://www.boost.org/libs/config for most recent version. + +// MACRO: BOOST_HAS_TR1_ARRAY +// TITLE: std::tr1::array +// DESCRIPTION: The std lib has a tr1-conforming array library. + +#include <array> + +namespace boost_has_tr1_array{ + +using std::tr1::array; + +int test() +{ + return 0; +} + +} diff --git a/libs/config/test/boost_has_tr1_bind.ipp b/libs/config/test/boost_has_tr1_bind.ipp new file mode 100644 index 0000000000..b3a6d181c7 --- /dev/null +++ b/libs/config/test/boost_has_tr1_bind.ipp @@ -0,0 +1,23 @@ +// (C) Copyright John Maddock 2005. +// 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) + +// See http://www.boost.org/libs/config for most recent version. + +// MACRO: BOOST_HAS_TR1_BIND +// TITLE: std::tr1::bind +// DESCRIPTION: The std lib has a tr1-conforming bind template function. + +#include <functional> + +namespace boost_has_tr1_bind{ + +using std::tr1::bind; + +int test() +{ + return 0; +} + +} diff --git a/libs/config/test/boost_has_tr1_complex_over.ipp b/libs/config/test/boost_has_tr1_complex_over.ipp new file mode 100644 index 0000000000..d7b880d7cb --- /dev/null +++ b/libs/config/test/boost_has_tr1_complex_over.ipp @@ -0,0 +1,24 @@ +// (C) Copyright John Maddock 2005. +// 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) + +// See http://www.boost.org/libs/config for most recent version. + +// MACRO: BOOST_HAS_TR1_COMPLEX_OVERLOADS +// TITLE: std::complex overloads +// DESCRIPTION: The std lib has a tr1-conforming set of std::complex overloads. + +#include <complex> + +namespace boost_has_tr1_complex_overloads{ + + +int test() +{ + std::arg(0); + std::conj(0.0); + return 0; +} + +} diff --git a/libs/config/test/boost_has_tr1_complex_trig.ipp b/libs/config/test/boost_has_tr1_complex_trig.ipp new file mode 100644 index 0000000000..bbd9f8cf50 --- /dev/null +++ b/libs/config/test/boost_has_tr1_complex_trig.ipp @@ -0,0 +1,30 @@ +// (C) Copyright John Maddock 2005. +// 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) + +// See http://www.boost.org/libs/config for most recent version. + +// MACRO: BOOST_HAS_TR1_COMPLEX_INVERSE_TRIG +// TITLE: std::complex inverse trig functions +// DESCRIPTION: The std lib has a tr1-conforming set of std::complex inverse trig functions. + +#include <complex> + +namespace boost_has_tr1_complex_inverse_trig{ + + +int test() +{ + std::complex<double> cd; + std::asin(cd); + std::acos(cd); + std::atan(cd); + std::asinh(cd); + std::acosh(cd); + std::atanh(cd); + std::fabs(cd); + return 0; +} + +} diff --git a/libs/config/test/boost_has_tr1_function.ipp b/libs/config/test/boost_has_tr1_function.ipp new file mode 100644 index 0000000000..ae4af295ca --- /dev/null +++ b/libs/config/test/boost_has_tr1_function.ipp @@ -0,0 +1,23 @@ +// (C) Copyright John Maddock 2005. +// 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) + +// See http://www.boost.org/libs/config for most recent version. + +// MACRO: BOOST_HAS_TR1_FUNCTION +// TITLE: std::tr1::function +// DESCRIPTION: The std lib has a tr1-conforming function template class. + +#include <functional> + +namespace boost_has_tr1_function{ + +using std::tr1::function; + +int test() +{ + return 0; +} + +} diff --git a/libs/config/test/boost_has_tr1_hash.ipp b/libs/config/test/boost_has_tr1_hash.ipp new file mode 100644 index 0000000000..3adc2ab18a --- /dev/null +++ b/libs/config/test/boost_has_tr1_hash.ipp @@ -0,0 +1,23 @@ +// (C) Copyright John Maddock 2005. +// 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) + +// See http://www.boost.org/libs/config for most recent version. + +// MACRO: BOOST_HAS_TR1_HASH +// TITLE: std::tr1::hash +// DESCRIPTION: The std lib has a tr1-conforming hash function library. + +#include <functional> + +namespace boost_has_tr1_hash{ + +using std::tr1::hash; + +int test() +{ + return 0; +} + +} diff --git a/libs/config/test/boost_has_tr1_mem_fn.ipp b/libs/config/test/boost_has_tr1_mem_fn.ipp new file mode 100644 index 0000000000..d5da8937fd --- /dev/null +++ b/libs/config/test/boost_has_tr1_mem_fn.ipp @@ -0,0 +1,23 @@ +// (C) Copyright John Maddock 2005. +// 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) + +// See http://www.boost.org/libs/config for most recent version. + +// MACRO: BOOST_HAS_TR1_MEM_FN +// TITLE: std::tr1::mem_fn +// DESCRIPTION: The std lib has a tr1-conforming mem_fn template function. + +#include <functional> + +namespace boost_has_tr1_mem_fn{ + +using std::tr1::mem_fn; + +int test() +{ + return 0; +} + +} diff --git a/libs/config/test/boost_has_tr1_random.ipp b/libs/config/test/boost_has_tr1_random.ipp new file mode 100644 index 0000000000..ddd88e7dcf --- /dev/null +++ b/libs/config/test/boost_has_tr1_random.ipp @@ -0,0 +1,23 @@ +// (C) Copyright John Maddock 2005. +// 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) + +// See http://www.boost.org/libs/config for most recent version. + +// MACRO: BOOST_HAS_TR1_RANDOM +// TITLE: std::tr1::random +// DESCRIPTION: The std lib has a tr1-conforming random numer library. + +#include <random> + +namespace boost_has_tr1_random{ + +using std::tr1::variate_generator; + +int test() +{ + return 0; +} + +} diff --git a/libs/config/test/boost_has_tr1_ref_wrap.ipp b/libs/config/test/boost_has_tr1_ref_wrap.ipp new file mode 100644 index 0000000000..76c002ccdf --- /dev/null +++ b/libs/config/test/boost_has_tr1_ref_wrap.ipp @@ -0,0 +1,24 @@ +// (C) Copyright John Maddock 2005. +// 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) + +// See http://www.boost.org/libs/config for most recent version. + +// MACRO: BOOST_HAS_TR1_REFERENCE_WRAPPER +// TITLE: std::tr1::reference_wrapper +// DESCRIPTION: The std lib has a tr1-conforming reference_wrapper. + +#include <functional> + +namespace boost_has_tr1_reference_wrapper{ + +int test() +{ + int i; + std::tr1::reference_wrapper<int> r = std::tr1::ref(i); + (void)r; + return 0; +} + +} diff --git a/libs/config/test/boost_has_tr1_regex.ipp b/libs/config/test/boost_has_tr1_regex.ipp new file mode 100644 index 0000000000..4f11c1e97c --- /dev/null +++ b/libs/config/test/boost_has_tr1_regex.ipp @@ -0,0 +1,24 @@ +// (C) Copyright John Maddock 2005. +// 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) + +// See http://www.boost.org/libs/config for most recent version. + +// MACRO: BOOST_HAS_TR1_REGEX +// TITLE: std::tr1::regex +// DESCRIPTION: The std lib has a tr1-conforming regex library. + +#include <regex> + +namespace boost_has_tr1_regex{ + +using std::tr1::regex; + +int test() +{ + return 0; +} + +} + diff --git a/libs/config/test/boost_has_tr1_result_of.ipp b/libs/config/test/boost_has_tr1_result_of.ipp new file mode 100644 index 0000000000..d578e9f94b --- /dev/null +++ b/libs/config/test/boost_has_tr1_result_of.ipp @@ -0,0 +1,24 @@ +// (C) Copyright John Maddock 2005. +// 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) + +// See http://www.boost.org/libs/config for most recent version. + +// MACRO: BOOST_HAS_TR1_RESULT_OF +// TITLE: std::tr1::result_of +// DESCRIPTION: The std lib has a tr1-conforming result_of template. + +#include <functional> + +namespace boost_has_tr1_result_of{ + +typedef std::tr1::result_of<int*(int)> r; +typedef r::type rr; + +int test() +{ + return 0; +} + +} diff --git a/libs/config/test/boost_has_tr1_shared_ptr.ipp b/libs/config/test/boost_has_tr1_shared_ptr.ipp new file mode 100644 index 0000000000..aea65dc14d --- /dev/null +++ b/libs/config/test/boost_has_tr1_shared_ptr.ipp @@ -0,0 +1,24 @@ +// (C) Copyright John Maddock 2005. +// 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) + +// See http://www.boost.org/libs/config for most recent version. + +// MACRO: BOOST_HAS_TR1_SHARED_PTR +// TITLE: std::tr1::shared_ptr +// DESCRIPTION: The std lib has a tr1-conforming shrared_ptr. + +#include <memory> + +namespace boost_has_tr1_shared_ptr{ + +int test() +{ + int i; + std::tr1::shared_ptr<int> r(new int()); + (void)r; + return 0; +} + +} diff --git a/libs/config/test/boost_has_tr1_tuple.ipp b/libs/config/test/boost_has_tr1_tuple.ipp new file mode 100644 index 0000000000..20c72dbdb6 --- /dev/null +++ b/libs/config/test/boost_has_tr1_tuple.ipp @@ -0,0 +1,23 @@ +// (C) Copyright John Maddock 2005. +// 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) + +// See http://www.boost.org/libs/config for most recent version. + +// MACRO: BOOST_HAS_TR1_TUPLE +// TITLE: std::tr1::tuple +// DESCRIPTION: The std lib has a tr1-conforming tuple library. + +#include <tuple> + +namespace boost_has_tr1_tuple{ + +using std::tr1::tuple; + +int test() +{ + return 0; +} + +} diff --git a/libs/config/test/boost_has_tr1_type_traits.ipp b/libs/config/test/boost_has_tr1_type_traits.ipp new file mode 100644 index 0000000000..6bbcd5e40f --- /dev/null +++ b/libs/config/test/boost_has_tr1_type_traits.ipp @@ -0,0 +1,23 @@ +// (C) Copyright John Maddock 2005. +// 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) + +// See http://www.boost.org/libs/config for most recent version. + +// MACRO: BOOST_HAS_TR1_TYPE_TRAITS +// TITLE: std::tr1::type_traits +// DESCRIPTION: The std lib has a tr1-conforming type traits library. + +#include <type_traits> + +namespace boost_has_tr1_type_traits{ + +using std::tr1::is_void; + +int test() +{ + return 0; +} + +} diff --git a/libs/config/test/boost_has_tr1_unordered_map.ipp b/libs/config/test/boost_has_tr1_unordered_map.ipp new file mode 100644 index 0000000000..8336cc7166 --- /dev/null +++ b/libs/config/test/boost_has_tr1_unordered_map.ipp @@ -0,0 +1,24 @@ +// (C) Copyright John Maddock 2005. +// 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) + +// See http://www.boost.org/libs/config for most recent version. + +// MACRO: BOOST_HAS_TR1_UNORDERED_MAP +// TITLE: std::tr1::unordered_map +// DESCRIPTION: The std lib has a tr1-conforming unordered map library. + +#include <unordered_map> + +namespace boost_has_tr1_unordered_map{ + +using std::tr1::unordered_map; +using std::tr1::unordered_multimap; + +int test() +{ + return 0; +} + +} diff --git a/libs/config/test/boost_has_tr1_unordered_set.ipp b/libs/config/test/boost_has_tr1_unordered_set.ipp new file mode 100644 index 0000000000..dcc33e5ec8 --- /dev/null +++ b/libs/config/test/boost_has_tr1_unordered_set.ipp @@ -0,0 +1,24 @@ +// (C) Copyright John Maddock 2005. +// 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) + +// See http://www.boost.org/libs/config for most recent version. + +// MACRO: BOOST_HAS_TR1_UNORDERED_SET +// TITLE: std::tr1::unordered_set +// DESCRIPTION: The std lib has a tr1-conforming unordered set library. + +#include <unordered_set> + +namespace boost_has_tr1_unordered_set{ + +using std::tr1::unordered_set; +using std::tr1::unordered_multiset; + +int test() +{ + return 0; +} + +} diff --git a/libs/config/test/boost_has_tr1_utility.ipp b/libs/config/test/boost_has_tr1_utility.ipp new file mode 100644 index 0000000000..bf97dece5f --- /dev/null +++ b/libs/config/test/boost_has_tr1_utility.ipp @@ -0,0 +1,25 @@ +// (C) Copyright John Maddock 2005. +// 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) + +// See http://www.boost.org/libs/config for most recent version. + +// MACRO: BOOST_HAS_TR1_UTILITY +// TITLE: std::tr1::utility +// DESCRIPTION: The std lib has a tr1-conforming utility header. + +#include <utility> + +namespace boost_has_tr1_utility{ + +using std::tr1::get; +using std::tr1::tuple_size; +using std::tr1::tuple_element; + +int test() +{ + return 0; +} + +} diff --git a/libs/config/test/boost_has_unistd_h.ipp b/libs/config/test/boost_has_unistd_h.ipp new file mode 100644 index 0000000000..b082c4fee5 --- /dev/null +++ b/libs/config/test/boost_has_unistd_h.ipp @@ -0,0 +1,26 @@ +// (C) Copyright John Maddock 2001. +// 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) + +// See http://www.boost.org/libs/config for most recent version. + +// MACRO: BOOST_HAS_UNISTD_H +// TITLE: <unistd.h> +// DESCRIPTION: The Platform provides <unistd.h>. + +#include <unistd.h> + +namespace boost_has_unistd_h{ + +int test() +{ + return 0; +} + +} + + + + + diff --git a/libs/config/test/boost_has_variadic_tmpl.ipp b/libs/config/test/boost_has_variadic_tmpl.ipp new file mode 100644 index 0000000000..539c512a90 --- /dev/null +++ b/libs/config/test/boost_has_variadic_tmpl.ipp @@ -0,0 +1,21 @@ +// Copyright (C) 2007 Douglas Gregor +// 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) + +// See http://www.boost.org/libs/config for most recent version. + +// MACRO: BOOST_HAS_VARIADIC_TMPL +// TITLE: variadic templates +// DESCRIPTION: The compiler supports C++0x variadic templates + +namespace boost_has_variadic_tmpl { + +template<typename... Elements> struct tuple {}; + +int test() +{ + return 0; +} + +} diff --git a/libs/config/test/boost_has_vc6_mem_templ.ipp b/libs/config/test/boost_has_vc6_mem_templ.ipp new file mode 100644 index 0000000000..fbce170947 --- /dev/null +++ b/libs/config/test/boost_has_vc6_mem_templ.ipp @@ -0,0 +1,58 @@ +// (C) Copyright John Maddock 2001. +// 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) + +// See http://www.boost.org/libs/config for most recent version. + +// MACRO: BOOST_MSVC6_MEMBER_TEMPLATES +// TITLE: microsoft member templates +// DESCRIPTION: Microsoft Visual C++ 6.0 has enough member +// template idiosyncrasies (being polite) that +// BOOST_NO_MEMBER_TEMPLATES is defined for this compiler. +// BOOST_MSVC6_MEMBER_TEMPLATES is defined to allow +// compiler specific workarounds. +#ifndef BOOST_NESTED_TEMPLATE +#define BOOST_NESTED_TEMPLATE template +#endif + +namespace boost_msvc6_member_templates{ + +template <class T> +struct foo +{ + template <class U> + struct nested + { + typedef foo<U> other; + }; + template <class U> + void mfoo(const U&) + { + } +}; + +template <class T> +void vc6_mem_test(T i) +{ + foo<double> f1; + typedef foo<T> ifoo; + f1.mfoo(i); + typedef typename ifoo::BOOST_NESTED_TEMPLATE nested<double> bound_t; + typedef typename bound_t::other other; + other o; + (void)o; +} + +int test() +{ + int i = 0; + vc6_mem_test(i); + return 0; +} + +} + + + + diff --git a/libs/config/test/boost_has_vc_iterator.ipp b/libs/config/test/boost_has_vc_iterator.ipp new file mode 100644 index 0000000000..e2fd5a6b46 --- /dev/null +++ b/libs/config/test/boost_has_vc_iterator.ipp @@ -0,0 +1,40 @@ +// (C) Copyright John Maddock 2001. +// 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) + +// See http://www.boost.org/libs/config for most recent version. + +// MACRO: BOOST_MSVC_STD_ITERATOR +// TITLE: microsoft's version of std::iterator +// DESCRIPTION: Microsoft's broken version of std::iterator +// is being used. + +#include <iterator> + +namespace boost_msvc_std_iterator{ + +int test() +{ + typedef std::iterator< + std::random_access_iterator_tag, + int + > iterator_type_2; + typedef std::reverse_iterator<const char*, const char> r_it; + + iterator_type_2::value_type v2 = 0; + iterator_type_2::iterator_category cat2; + // + // suppress some warnings: + // + (void)v2; + (void)cat2; + + return 0; +} + +} + + + + diff --git a/libs/config/test/boost_has_winthreads.ipp b/libs/config/test/boost_has_winthreads.ipp new file mode 100644 index 0000000000..28ebff0c06 --- /dev/null +++ b/libs/config/test/boost_has_winthreads.ipp @@ -0,0 +1,34 @@ +// (C) Copyright John Maddock 2001. +// 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) + +// See http://www.boost.org/libs/config for most recent version. + +// MACRO: BOOST_HAS_WINTHREADS +// TITLE: MS Windows threads +// DESCRIPTION: The platform supports MS Windows style threads. + +#include <windows.h> + + +namespace boost_has_winthreads{ + +int test() +{ + HANDLE h = CreateMutex(0, 0, 0); + if(h != NULL) + { + WaitForSingleObject(h, INFINITE); + ReleaseMutex(h); + CloseHandle(h); + } + return 0; +} + +} + + + + + diff --git a/libs/config/test/boost_no_0x_hdr_array.ipp b/libs/config/test/boost_no_0x_hdr_array.ipp new file mode 100644 index 0000000000..86609c8bf6 --- /dev/null +++ b/libs/config/test/boost_no_0x_hdr_array.ipp @@ -0,0 +1,23 @@ +// (C) Copyright Beman Dawes 2009 + +// 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) + +// See http://www.boost.org/libs/config for more information. + +// MACRO: BOOST_NO_0X_HDR_ARRAY +// TITLE: C++0x header <array> unavailable +// DESCRIPTION: The standard library does not supply C++0x header <array> + +#include <array> + +namespace boost_no_0x_hdr_array { + +int test() +{ + std::array<int, 3> a = { 1, 2, 3 }; + return a.size() == 3 ? 0 : 1; +} + +} diff --git a/libs/config/test/boost_no_0x_hdr_chrono.ipp b/libs/config/test/boost_no_0x_hdr_chrono.ipp new file mode 100644 index 0000000000..dad066923a --- /dev/null +++ b/libs/config/test/boost_no_0x_hdr_chrono.ipp @@ -0,0 +1,31 @@ +// (C) Copyright Beman Dawes 2009 + +// 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) + +// See http://www.boost.org/libs/config for more information. + +// MACRO: BOOST_NO_0X_HDR_CHRONO +// TITLE: C++0x header <chrono> unavailable +// DESCRIPTION: The standard library does not supply C++0x header <chrono> + +#include <chrono> + +namespace boost_no_0x_hdr_chrono { + +int test() +{ + using std::chrono::nanoseconds; + using std::chrono::microseconds; + using std::chrono::milliseconds; + using std::chrono::seconds; + using std::chrono::minutes; + using std::chrono::hours; + using std::chrono::system_clock; + using std::chrono::monotonic_clock; + using std::chrono::high_resolution_clock; + return 0; +} + +} diff --git a/libs/config/test/boost_no_0x_hdr_codecvt.ipp b/libs/config/test/boost_no_0x_hdr_codecvt.ipp new file mode 100644 index 0000000000..96d1ee1745 --- /dev/null +++ b/libs/config/test/boost_no_0x_hdr_codecvt.ipp @@ -0,0 +1,25 @@ +// (C) Copyright Beman Dawes 2009 + +// 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) + +// See http://www.boost.org/libs/config for more information. + +// MACRO: BOOST_NO_0X_HDR_CODECVT +// TITLE: C++0x header <codecvt> unavailable +// DESCRIPTION: The standard library does not supply C++0x header <codecvt> + +#include <codecvt> + +namespace boost_no_0x_hdr_codecvt { + +int test() +{ + using std::codecvt_utf8; + using std::codecvt_utf16; + using std::codecvt_utf8_utf16; + return 0; +} + +} diff --git a/libs/config/test/boost_no_0x_hdr_condition_variable.ipp b/libs/config/test/boost_no_0x_hdr_condition_variable.ipp new file mode 100644 index 0000000000..fc06a356ea --- /dev/null +++ b/libs/config/test/boost_no_0x_hdr_condition_variable.ipp @@ -0,0 +1,24 @@ +// (C) Copyright Beman Dawes 2009 + +// 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) + +// See http://www.boost.org/libs/config for more information. + +// MACRO: BOOST_NO_0X_HDR_CONDITION_VARIABLE +// TITLE: C++0x header <condition_variable> unavailable +// DESCRIPTION: The standard library does not supply C++0x header <condition_variable> + +#include <condition_variable> + +namespace boost_no_0x_hdr_condition_variable { + +int test() +{ + using std::condition_variable; + using std::condition_variable_any; + return 0; +} + +} diff --git a/libs/config/test/boost_no_0x_hdr_forward_list.ipp b/libs/config/test/boost_no_0x_hdr_forward_list.ipp new file mode 100644 index 0000000000..59d16afb56 --- /dev/null +++ b/libs/config/test/boost_no_0x_hdr_forward_list.ipp @@ -0,0 +1,23 @@ +// (C) Copyright Beman Dawes 2009 + +// 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) + +// See http://www.boost.org/libs/config for more information. + +// MACRO: BOOST_NO_0X_HDR_FORWARD_LIST +// TITLE: C++0x header <forward_list> unavailable +// DESCRIPTION: The standard library does not supply C++0x header <forward_list> + +#include <forward_list> + +namespace boost_no_0x_hdr_forward_list { + +int test() +{ + std::forward_list<int> l(2u, 2); + return *l.begin() == 2 ? 0 : 1; +} + +} diff --git a/libs/config/test/boost_no_0x_hdr_future.ipp b/libs/config/test/boost_no_0x_hdr_future.ipp new file mode 100644 index 0000000000..42fd55e662 --- /dev/null +++ b/libs/config/test/boost_no_0x_hdr_future.ipp @@ -0,0 +1,35 @@ +// (C) Copyright Beman Dawes 2009 + +// 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) + +// See http://www.boost.org/libs/config for more information. + +// MACRO: BOOST_NO_0X_HDR_FUTURE +// TITLE: C++0x header <future> unavailable +// DESCRIPTION: The standard library does not supply C++0x header <future> + +#include <future> + +namespace boost_no_0x_hdr_future { + +int test() +{ + using std::is_error_code_enum; + using std::make_error_code; + using std::make_error_condition; + using std::future_category; + using std::future_error; + using std::promise; + using std::promise; + using std::promise; + using std::future; + using std::shared_future; + using std::atomic_future; + using std::packaged_task; // undefined + using std::async; + return 0; +} + +} diff --git a/libs/config/test/boost_no_0x_hdr_initializer_list.ipp b/libs/config/test/boost_no_0x_hdr_initializer_list.ipp new file mode 100644 index 0000000000..c026ecbb2f --- /dev/null +++ b/libs/config/test/boost_no_0x_hdr_initializer_list.ipp @@ -0,0 +1,27 @@ +// (C) Copyright Beman Dawes 2009 + +// 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) + +// See http://www.boost.org/libs/config for more information. + +// MACRO: BOOST_NO_0X_HDR_INITIALIZER_LIST +// TITLE: C++0x header <initializer_list> unavailable +// DESCRIPTION: The standard library does not supply C++0x header <initializer_list> + +#include <initializer_list> + +namespace boost_no_0x_hdr_initializer_list { + +void foo(const std::initializer_list<const char*>& l) +{ +} + +int test() +{ + foo( { "a", "b", "c" } ); + return 0; +} + +} diff --git a/libs/config/test/boost_no_0x_hdr_mutex.ipp b/libs/config/test/boost_no_0x_hdr_mutex.ipp new file mode 100644 index 0000000000..d3a9d25b30 --- /dev/null +++ b/libs/config/test/boost_no_0x_hdr_mutex.ipp @@ -0,0 +1,26 @@ +// (C) Copyright Beman Dawes 2009 + +// 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) + +// See http://www.boost.org/libs/config for more information. + +// MACRO: BOOST_NO_0X_HDR_MUTEX +// TITLE: C++0x header <mutex> unavailable +// DESCRIPTION: The standard library does not supply C++0x header <mutex> + +#include <mutex> + +namespace boost_no_0x_hdr_mutex { + +int test() +{ + using std::mutex; + using std::recursive_mutex; + using std::timed_mutex; + using std::recursive_timed_mutex; + return 0; +} + +} diff --git a/libs/config/test/boost_no_0x_hdr_random.ipp b/libs/config/test/boost_no_0x_hdr_random.ipp new file mode 100644 index 0000000000..07d58b5e90 --- /dev/null +++ b/libs/config/test/boost_no_0x_hdr_random.ipp @@ -0,0 +1,31 @@ +// (C) Copyright Beman Dawes 2009 + +// 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) + +// See http://www.boost.org/libs/config for more information. + +// MACRO: BOOST_NO_0X_HDR_RANDOM +// TITLE: C++0x header <random> unavailable +// DESCRIPTION: The standard library does not supply C++0x header <random> + +#include <random> + +namespace boost_no_0x_hdr_random { + +int test() +{ + using std::minstd_rand0; + using std::mt19937; + using std::mt19937_64; + using std::ranlux24_base; + using std::ranlux48_base; + using std::ranlux24; + using std::ranlux48; + using std::knuth_b; + using std::default_random_engine; + return 0; +} + +} diff --git a/libs/config/test/boost_no_0x_hdr_ratio.ipp b/libs/config/test/boost_no_0x_hdr_ratio.ipp new file mode 100644 index 0000000000..beeab5b76e --- /dev/null +++ b/libs/config/test/boost_no_0x_hdr_ratio.ipp @@ -0,0 +1,37 @@ +// (C) Copyright Beman Dawes 2009 + +// 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) + +// See http://www.boost.org/libs/config for more information. + +// MACRO: BOOST_NO_0X_HDR_RATIO +// TITLE: C++0x header <ratio> unavailable +// DESCRIPTION: The standard library does not supply C++0x header <ratio> + +#include <ratio> + +namespace boost_no_0x_hdr_ratio { + +int test() +{ + using std::atto; + using std::femto; + using std::pico; + using std::nano; + using std::micro; + using std::milli; + using std::centi; + using std::deci; + using std::deca; + using std::hecto; + using std::kilo; + using std::mega; + using std::tera; + using std::peta; + using std::exa; + return 0; +} + +} diff --git a/libs/config/test/boost_no_0x_hdr_regex.ipp b/libs/config/test/boost_no_0x_hdr_regex.ipp new file mode 100644 index 0000000000..f82693e328 --- /dev/null +++ b/libs/config/test/boost_no_0x_hdr_regex.ipp @@ -0,0 +1,24 @@ +// (C) Copyright Beman Dawes 2009 + +// 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) + +// See http://www.boost.org/libs/config for more information. + +// MACRO: BOOST_NO_0X_HDR_REGEX +// TITLE: C++0x header <regex> unavailable +// DESCRIPTION: The standard library does not supply C++0x header <regex> + +#include <regex> + +namespace boost_no_0x_hdr_regex { + +int test() +{ + using std::regex; + using std::wregex; + return 0; +} + +} diff --git a/libs/config/test/boost_no_0x_hdr_system_error.ipp b/libs/config/test/boost_no_0x_hdr_system_error.ipp new file mode 100644 index 0000000000..158f7c1e06 --- /dev/null +++ b/libs/config/test/boost_no_0x_hdr_system_error.ipp @@ -0,0 +1,26 @@ +// (C) Copyright Beman Dawes 2009 + +// 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) + +// See http://www.boost.org/libs/config for more information. + +// MACRO: BOOST_NO_0X_HDR_SYSTEM_ERROR +// TITLE: C++0x header <system_error> unavailable +// DESCRIPTION: The standard library does not supply C++0x header <system_error> + +#include <system_error> + +namespace boost_no_0x_hdr_system_error { + +int test() +{ + using std::error_category; + using std::error_code; + using std::error_condition; + using std::system_error; + return 0; +} + +} diff --git a/libs/config/test/boost_no_0x_hdr_thread.ipp b/libs/config/test/boost_no_0x_hdr_thread.ipp new file mode 100644 index 0000000000..c07b03e495 --- /dev/null +++ b/libs/config/test/boost_no_0x_hdr_thread.ipp @@ -0,0 +1,27 @@ +// (C) Copyright Beman Dawes 2009 + +// 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) + +// See http://www.boost.org/libs/config for more information. + +// MACRO: BOOST_NO_0X_HDR_THREAD +// TITLE: C++0x header <thread> unavailable +// DESCRIPTION: The standard library does not supply C++0x header <thread> + +#include <thread> + +namespace boost_no_0x_hdr_thread { + +int test() +{ + using std::thread; + using std::this_thread::get_id; + using std::this_thread::yield; + using std::this_thread::sleep_until; + using std::this_thread::sleep_for; + return 0; +} + +} diff --git a/libs/config/test/boost_no_0x_hdr_tuple.ipp b/libs/config/test/boost_no_0x_hdr_tuple.ipp new file mode 100644 index 0000000000..1a3ff4560c --- /dev/null +++ b/libs/config/test/boost_no_0x_hdr_tuple.ipp @@ -0,0 +1,23 @@ +// (C) Copyright Beman Dawes 2009 + +// 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) + +// See http://www.boost.org/libs/config for more information. + +// MACRO: BOOST_NO_0X_HDR_TUPLE +// TITLE: C++0x header <tuple> unavailable +// DESCRIPTION: The standard library does not supply C++0x header <tuple> + +#include <tuple> + +namespace boost_no_0x_hdr_tuple { + +int test() +{ + std::tuple<int, int, long> t(0, 1, 2); + return 0; +} + +} diff --git a/libs/config/test/boost_no_0x_hdr_type_traits.ipp b/libs/config/test/boost_no_0x_hdr_type_traits.ipp new file mode 100644 index 0000000000..44dc6a6fb1 --- /dev/null +++ b/libs/config/test/boost_no_0x_hdr_type_traits.ipp @@ -0,0 +1,106 @@ +// (C) Copyright Beman Dawes 2009 + +// 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) + +// See http://www.boost.org/libs/config for more information. + +// MACRO: BOOST_NO_0X_HDR_TYPE_TRAITS +// TITLE: C++0x header <type_traits> unavailable +// DESCRIPTION: The standard library does not supply C++0x header <type_traits> + +#include <type_traits> + +namespace boost_no_0x_hdr_type_traits { + +int test() +{ + using std::integral_constant; + using std::true_type; + using std::false_type; + using std::is_void; + using std::is_integral; + using std::is_floating_point; + using std::is_array; + using std::is_pointer; + using std::is_lvalue_reference; + using std::is_rvalue_reference; + using std::is_member_object_pointer; + using std::is_member_function_pointer; + using std::is_enum; + using std::is_union; + using std::is_class; + using std::is_function; + using std::is_reference; + using std::is_arithmetic; + using std::is_fundamental; + using std::is_object; + using std::is_scalar; + using std::is_compound; + using std::is_member_pointer; + using std::is_const; + using std::is_volatile; + using std::is_trivial; + using std::is_trivially_copyable; + using std::is_standard_layout; + using std::is_pod; + using std::is_literal_type; + using std::is_empty; + using std::is_polymorphic; + using std::is_abstract; + using std::is_constructible; + using std::is_nothrow_constructible; + using std::has_default_constructor; + using std::has_copy_constructor; + using std::has_copy_assign; + using std::has_move_constructor; + using std::has_move_assign; + using std::has_trivial_default_constructor; + using std::has_trivial_copy_constructor; + using std::has_trivial_move_constructor; + using std::has_trivial_copy_assign; + using std::has_trivial_move_assign; + using std::has_trivial_destructor; + using std::has_nothrow_default_constructor; + using std::has_nothrow_copy_constructor; + using std::has_nothrow_move_constructor; + using std::has_nothrow_copy_assign; + using std::has_nothrow_move_assign; + using std::has_virtual_destructor; + using std::is_signed; + using std::is_unsigned; + using std::alignment_of; + using std::rank; + using std::extent; + using std::is_same; + using std::is_base_of; + using std::is_convertible; + using std::is_explicitly_convertible; + using std::remove_const; + using std::remove_volatile; + using std::remove_cv; + using std::add_const; + using std::add_volatile; + using std::add_cv; + using std::remove_reference; + using std::add_lvalue_reference; + using std::add_rvalue_reference; + using std::make_signed; + using std::make_unsigned; + using std::remove_extent; + using std::remove_all_extents; + using std::remove_pointer; + using std::add_pointer; + using std::aligned_storage; + using std::aligned_union; + using std::decay; + using std::enable_if; + using std::conditional; + using std::common_type; + using std::underlying_type; + using std::result_of; + return 0; +} + +} diff --git a/libs/config/test/boost_no_0x_hdr_typeindex.ipp b/libs/config/test/boost_no_0x_hdr_typeindex.ipp new file mode 100644 index 0000000000..b0555e7b11 --- /dev/null +++ b/libs/config/test/boost_no_0x_hdr_typeindex.ipp @@ -0,0 +1,25 @@ +// (C) Copyright Beman Dawes 2009 + +// 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) + +// See http://www.boost.org/libs/config for more information. + +// MACRO: BOOST_NO_0X_HDR_TYPEINDEX +// TITLE: C++0x header <typeindex> unavailable +// DESCRIPTION: The standard library does not supply C++0x header <typeindex> + +#include <typeindex> + +namespace boost_no_0x_hdr_typeindex { + +int test() +{ + std::type_index t1 = typeid(int); + std::type_index t2 = typeid(double); + std::hash<std::type_index> h; + return (t1 != t2) && (h(t1) != h(t2)) ? 0 : 1; +} + +} diff --git a/libs/config/test/boost_no_0x_hdr_unordered_map.ipp b/libs/config/test/boost_no_0x_hdr_unordered_map.ipp new file mode 100644 index 0000000000..3d44a1c58a --- /dev/null +++ b/libs/config/test/boost_no_0x_hdr_unordered_map.ipp @@ -0,0 +1,24 @@ +// (C) Copyright Beman Dawes 2009 + +// 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) + +// See http://www.boost.org/libs/config for more information. + +// MACRO: BOOST_NO_0X_HDR_UNORDERED_MAP +// TITLE: C++0x header <unordered_map> unavailable +// DESCRIPTION: The standard library does not supply C++0x header <unordered_map> + +#include <unordered_map> + +namespace boost_no_0x_hdr_unordered_map { + +int test() +{ + std::unordered_map<int, long> s1; + std::unordered_multimap<int, long> s2; + return s1.empty() && s2.empty() ? 0 : 1; +} + +} diff --git a/libs/config/test/boost_no_0x_hdr_unordered_set.ipp b/libs/config/test/boost_no_0x_hdr_unordered_set.ipp new file mode 100644 index 0000000000..f72f1b6aca --- /dev/null +++ b/libs/config/test/boost_no_0x_hdr_unordered_set.ipp @@ -0,0 +1,24 @@ +// (C) Copyright Beman Dawes 2009 + +// 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) + +// See http://www.boost.org/libs/config for more information. + +// MACRO: BOOST_NO_0X_HDR_UNORDERED_SET +// TITLE: C++0x header <unordered_set> unavailable +// DESCRIPTION: The standard library does not supply C++0x header <unordered_set> + +#include <unordered_set> + +namespace boost_no_0x_hdr_unordered_set { + +int test() +{ + std::unordered_set<int> s1; + std::unordered_multiset<int> s2; + return s1.empty() && s2.empty() ? 0 : 1; +} + +} diff --git a/libs/config/test/boost_no_adl_barrier.ipp b/libs/config/test/boost_no_adl_barrier.ipp new file mode 100644 index 0000000000..4065df096e --- /dev/null +++ b/libs/config/test/boost_no_adl_barrier.ipp @@ -0,0 +1,38 @@ +// (C) Copyright John Maddock 2008. +// 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) + +// See http://www.boost.org/libs/config for most recent version. + +// MACRO: BOOST_NO_ADL_BARRIER +// TITLE: Working ADL barriers. +// DESCRIPTION: If the compiler correctly handles ADL. + +namespace boost_no_adl_barrier{ + +namespace xxx { + namespace nested { + struct aaa {}; + } + void begin(nested::aaa) {} +} + +namespace nnn { + void begin(xxx::nested::aaa) {} +} + +int test() +{ + using namespace nnn; + xxx::nested::aaa a; + begin(a); // ambiguous error in msvc-9.0 + + return 0; +} + +} + + + + diff --git a/libs/config/test/boost_no_arg_dep_lookup.ipp b/libs/config/test/boost_no_arg_dep_lookup.ipp new file mode 100644 index 0000000000..d934d44aa7 --- /dev/null +++ b/libs/config/test/boost_no_arg_dep_lookup.ipp @@ -0,0 +1,37 @@ +// (C) Copyright John Maddock 2001. +// 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) + +// See http://www.boost.org/libs/config for most recent version. + +// MACRO: BOOST_NO_ARGUMENT_DEPENDENT_LOOKUP +// TITLE: Koenig lookup +// DESCRIPTION: Compiler does not implement +// argument-dependent lookup (also named Koenig lookup); +// see std::3.4.2 [basic.koenig.lookup] + + +namespace boost_no_argument_dependent_lookup{ + +namespace foobar{ + +struct test{}; + +void call_test(const test&) +{} + +} + +int test() +{ + foobar::test t; + call_test(t); + return 0; +} + + +} + + + diff --git a/libs/config/test/boost_no_array_type_spec.ipp b/libs/config/test/boost_no_array_type_spec.ipp new file mode 100644 index 0000000000..3048669a50 --- /dev/null +++ b/libs/config/test/boost_no_array_type_spec.ipp @@ -0,0 +1,30 @@ +// (C) Copyright John Maddock 2001. +// (C) Copyright Aleksey Gurtovoy 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) + +// See http://www.boost.org/libs/config for most recent version. + +// MACRO: BOOST_NO_ARRAY_TYPE_SPECIALIZATIONS +// TITLE: template specialisations of array types +// DESCRIPTION: If the compiler cannot handle template specialisations +// for array types + + +namespace boost_no_array_type_specializations{ + +template< typename T > struct is_array +{ +}; + +template< typename T, int N > struct is_array< T[N] > +{ +}; + +int test() +{ + return 0; +} + +} diff --git a/libs/config/test/boost_no_auto_declarations.ipp b/libs/config/test/boost_no_auto_declarations.ipp new file mode 100644 index 0000000000..65410827c2 --- /dev/null +++ b/libs/config/test/boost_no_auto_declarations.ipp @@ -0,0 +1,25 @@ +// Copyright (C) 2009 Andrey Semashev +// 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) + +// See http://www.boost.org/libs/config for most recent version. + +// MACRO: BOOST_NO_AUTO_DECLARATIONS +// TITLE: C++0x auto declarators unavailable +// DESCRIPTION: The compiler does not support C++0x declarations of variables with automatically deduced type + +namespace boost_no_auto_declarations { + +void check_f(int& x) +{ +} + +int test() +{ + auto x = 10; + check_f(x); + return 0; +} + +} diff --git a/libs/config/test/boost_no_auto_multidecl.ipp b/libs/config/test/boost_no_auto_multidecl.ipp new file mode 100644 index 0000000000..ea976612fb --- /dev/null +++ b/libs/config/test/boost_no_auto_multidecl.ipp @@ -0,0 +1,25 @@ +// Copyright (C) 2009 Andrey Semashev +// 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) + +// See http://www.boost.org/libs/config for most recent version. + +// MACRO: BOOST_NO_AUTO_MULTIDECLARATIONS +// TITLE: C++0x auto multideclarators unavailable +// DESCRIPTION: The compiler does not support C++0x declarations of series of variables with automatically deduced type + +namespace boost_no_auto_multideclarations { + +void check_f(int& x, int*& y) +{ +} + +int test() +{ + auto x = 10, *y = &x; + check_f(x, y); + return 0; +} + +} diff --git a/libs/config/test/boost_no_auto_ptr.ipp b/libs/config/test/boost_no_auto_ptr.ipp new file mode 100644 index 0000000000..c86669cd6e --- /dev/null +++ b/libs/config/test/boost_no_auto_ptr.ipp @@ -0,0 +1,53 @@ +// (C) Copyright John Maddock 2001. +// 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) + +// See http://www.boost.org/libs/config for most recent version. + +// MACRO: BOOST_NO_AUTO_PTR +// TITLE: std::auto_ptr +// DESCRIPTION: If the compiler / library supplies non-standard or broken +// std::auto_ptr. + +#include <memory> + +namespace boost_no_auto_ptr{ + +template <class T> +class my_ptr +{ + T* p; +public: + my_ptr(std::auto_ptr<T>& r) + { + p = r.release(); + } + my_ptr& operator=(std::auto_ptr<T>& r) + { + delete p; + p = r.release(); + return *this; + } + ~my_ptr() + { + delete p; + } +}; + + +int test() +{ + std::auto_ptr<int> ap1(new int); + my_ptr<int> mp(ap1); + std::auto_ptr<int> ap2(new int); + mp = ap2; + + return 0; +} + +} + + + + diff --git a/libs/config/test/boost_no_bcb_partial_spec.ipp b/libs/config/test/boost_no_bcb_partial_spec.ipp new file mode 100644 index 0000000000..e78877c8e9 --- /dev/null +++ b/libs/config/test/boost_no_bcb_partial_spec.ipp @@ -0,0 +1,53 @@ +// (C) Copyright Terje Slettebo 2002. +// 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) + + +// MACRO: BOOST_BCB_PARTIAL_SPECIALIZATION_BUG +// TITLE: Full partial specialization support. +// DESCRIPTION: Borland C++ Builder has some rather specific partial +// specialisation bugs which this code tests for. + + +#include <vector> + +namespace boost_bcb_partial_specialization_bug{ + + +template<class T1,class T2> +class Test +{ +}; + +template<class T1,class T2> +class Test<std::vector<T1>,T2> +{ +}; + +template<class T> +class Test<std::vector<int>,T> +{ +}; + +template <class T> +struct is_const{}; +template <class T> +struct is_const<T const>{}; + +int test() +{ + Test<std::vector<int>,double> v; + is_const<const int> ci; + (void)v; // warning suppression + (void)ci; + return 0; +} + + +} + + + + + diff --git a/libs/config/test/boost_no_char16_t.ipp b/libs/config/test/boost_no_char16_t.ipp new file mode 100644 index 0000000000..27d49c62a9 --- /dev/null +++ b/libs/config/test/boost_no_char16_t.ipp @@ -0,0 +1,32 @@ + +// (C) Copyright Beman Dawes 2008 + +// 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) + +// See http://www.boost.org/libs/config for more information. + +// MACRO: BOOST_NO_CHAR16_T +// TITLE: C++0x char16_t unavailable +// DESCRIPTION: The compiler does not support C++0x char16_t + +namespace boost_no_char16_t { + +// Microsoft VC++ 2010, and possibly other compilers, provides +// a typedef for char16_t rather than a new type. We want that +// to be an error, so provide an overloaded function that will +// be ambiguous if char16_t is just a typedef. +void f(const char16_t*){} +void f(const unsigned short*){} +void f(const unsigned int*){} +void f(const unsigned long*){} + +int test() +{ + const char16_t* p; + f(p); + return 0; +} + +} diff --git a/libs/config/test/boost_no_char32_t.ipp b/libs/config/test/boost_no_char32_t.ipp new file mode 100644 index 0000000000..5dfcd15ddb --- /dev/null +++ b/libs/config/test/boost_no_char32_t.ipp @@ -0,0 +1,31 @@ +// (C) Copyright Beman Dawes 2008 + +// 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) + +// See http://www.boost.org/libs/config for more information. + +// MACRO: BOOST_NO_CHAR32_T +// TITLE: C++0x char32_t unavailable +// DESCRIPTION: The compiler does not support C++0x char32_t + +namespace boost_no_char32_t { + +// Microsoft VC++ 2010, and possibly other compilers, provides +// a typedef for char32_t rather than a new type. We want that +// to be an error, so provide an overloaded function that will +// be ambiguous if char16_t is just a typedef. +void f(const char32_t*){} +void f(const unsigned short*){} +void f(const unsigned int*){} +void f(const unsigned long*){} + +int test() +{ + const char32_t* p; + f(p); + return 0; +} + +} diff --git a/libs/config/test/boost_no_com_value_init.ipp b/libs/config/test/boost_no_com_value_init.ipp new file mode 100644 index 0000000000..47e9ff52a4 --- /dev/null +++ b/libs/config/test/boost_no_com_value_init.ipp @@ -0,0 +1,1016 @@ +// (C) Copyright Niels Dekker 2010. +// 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) + +// See http://www.boost.org/libs/config for most recent version. + +// MACRO: BOOST_NO_COMPLETE_VALUE_INITIALIZATION +// TITLE: No complete value-initialization +// DESCRIPTION: The C++ compiler does not to have implemented value-initialization completely. +// See also boost/libs/utility/value_init.htm#compiler_issues + +#include <iostream> + +// This test checks various forms of value-initialization: +// - doing subobject initialization inside a constructor +// - creating a temporary object by T() +// - creating a heap object by doing new T() +// It checks various DefaultConstructible types, including fundamental types, +// enum, union, pointer types, array types, POD and non-POD class types. For +// each type of object, a helper function is_value_initialized(const T&) tells +// whether the object is value-initialized. +// +// Note: It appeared insufficient to just check a single POD and a single +// non-POD class type, because some compilers correctly value-initialize some +// POD and some non-POD objects, while failing to value-initialize others. +// +// The test returns the number of encountered value-initialization failures. + +namespace boost_no_complete_value_initialization +{ + enum enum_type { negative_number = -1, magic_number = 42 }; + + class incomplete_class; + + typedef int (*function_ptr_type)(int); + typedef int (incomplete_class::*member_function_ptr_type)(int); + + // A POD struct. + struct pod_struct + { + enum_type e; + bool b; + char c; + unsigned char uc; + short s; + int i; + unsigned u; + long l; + float f; + double d; + long double ld; + void* p; + }; + + bool is_value_initialized(const pod_struct& arg) + { + return + arg.b == 0 && + arg.e == 0 && + arg.c == 0 && + arg.uc == 0 && + arg.s == 0 && + arg.i == 0 && + arg.u == 0 && + arg.l == 0 && + arg.f == 0 && + arg.d == 0 && + arg.p == 0; + } + + // A POD struct derived from another POD struct. + struct derived_pod_struct: pod_struct + { + int derived_data; + }; + + bool is_value_initialized(const derived_pod_struct& arg) + { + const pod_struct& base_subobject = arg; + return arg.derived_data == 0 && is_value_initialized(base_subobject); + } + + + struct empty_struct + { + }; + + + // A POD aggregate struct derived from an empty struct. + // Similar to struct Foo1 from Microsoft Visual C++ bug report 484295, + // "VC++ does not value-initialize members of derived classes without + // user-declared constructor", reported in 2009 by Sylvester Hesp: + // https://connect.microsoft.com/VisualStudio/feedback/details/484295 + struct derived_struct: empty_struct + { + int data; + }; + + bool is_value_initialized(const derived_struct& arg) + { + return arg.data == 0; + } + + + // A struct, having a bit-field. + struct bit_field_struct + { + bool b : 1; + char c : 7; + unsigned u: 8 * sizeof(unsigned) - 1; + }; + + bool is_value_initialized(const bit_field_struct& arg) + { + return arg.b == false && arg.c == '\0'&& arg.u == 0U; + } + + // A struct, having a function pointer. + struct function_ptr_struct + { + function_ptr_type data; + }; + + bool is_value_initialized(const function_ptr_struct& arg) + { + return arg.data == 0; + } + + // A struct, having a member function pointer. + struct member_function_ptr_struct + { + member_function_ptr_type data; + }; + + bool is_value_initialized(const member_function_ptr_struct& arg) + { + return arg.data == 0; + } + + struct int_pair_struct + { + int first; + int second; + }; + + typedef int int_pair_struct::*ptr_to_member_type; + + struct ptr_to_member_struct + { + ptr_to_member_type data; + }; + + bool is_value_initialized(const ptr_to_member_struct& arg) + { + return arg.data == 0; + } + + // A struct, having an int. Equivalent to the struct TData, from CodeGear bug + // report 51854, "Value-initialization: POD struct should be zero-initialized", + // reported by me (Niels Dekker, LKEB) in 2007: + // http://qc.embarcadero.com/wc/qcmain.aspx?d=51854 + struct int_struct + { + int data; + }; + + bool is_value_initialized(const int_struct& arg) + { + return arg.data == 0; + } + + + // A struct, having an int_struct. + struct int_struct_holder + { + int_struct data; + }; + + bool is_value_initialized(const int_struct_holder& arg) + { + return is_value_initialized(arg.data); + } + + + // A struct derived from int_struct. + struct derived_int_struct: int_struct + { + }; + + bool is_value_initialized(const derived_int_struct& arg) + { + return arg.data == 0; + } + + + struct char_array_struct + { + char data[42]; + }; + + bool is_value_initialized(const char_array_struct& arg) + { + for ( unsigned i = 0; i < sizeof(arg.data); ++i) + { + if ( arg.data[i] != 0 ) + { + return false; + } + } + return true; + } + + + class private_int_holder + { + private: + int m_data; + + friend bool is_value_initialized(const private_int_holder& arg) + { + return arg.m_data == 0; + } + }; + + + // Equivalent to the Stats class from GCC Bug 33916, + // "Default constructor fails to initialize array members", reported in 2007 by + // Michael Elizabeth Chastain: http://gcc.gnu.org/bugzilla/show_bug.cgi?id=33916 + class private_int_array_pair + { + friend bool is_value_initialized(const private_int_array_pair& arg); + private: + int first[12]; + int second[12]; + }; + + bool is_value_initialized(const private_int_array_pair& arg) + { + for ( unsigned i = 0; i < 12; ++i) + { + if ( (arg.first[i] != 0) || (arg.second[i] != 0) ) + { + return false; + } + } + return true; + } + + + union pod_struct_and_int_union + { + pod_struct first; + int second; + }; + + bool is_value_initialized(const pod_struct_and_int_union& arg) + { + // When a union is zero-initialized, its first non-static + // named data member is zero-initialized ([dcl.init]). + return is_value_initialized(arg.first); + } + + + union int_and_pod_struct_union + { + int first; + pod_struct second; + }; + + bool is_value_initialized(const int_and_pod_struct_union& arg) + { + return arg.first == 0; + } + + + // A class that holds a "magic" enum value. + // Note: This is not a POD class, because it has a user-defined + // default constructor. + class enum_holder + { + enum_type m_enum; + public: + + enum_holder() + : + m_enum(magic_number) + { + } + + bool is_value_initialized() const + { + return m_enum == magic_number; + } + }; + + bool is_value_initialized(const enum_holder& arg) + { + return arg.is_value_initialized(); + } + + + // An aggregate struct of a non-POD class and an int. + // Similar to struct A from Microsoft Visual C++ bug report 100744, + // "Value-initialization in new-expression", reported in 2005 by + // Pavel Kuznetsov (MetaCommunications Engineering): + // https://connect.microsoft.com/VisualStudio/feedback/details/100744 + struct enum_holder_and_int + { + enum_holder e; + int i; + }; + + bool is_value_initialized(const enum_holder_and_int& arg) + { + return arg.e.is_value_initialized() && arg.i == 0; + } + + class user_defined_copy_constructor_holder + { + public: + int data; + + user_defined_copy_constructor_holder() + : + data(0) + { + } + + user_defined_copy_constructor_holder(const user_defined_copy_constructor_holder& arg) + : + data(arg.data) + { + } + }; + + // An aggregate struct that has a data member which has a user-defined + // copy constructor and a data member of a scalar type. + // Similar to struct B from Microsoft Visual C++ bug report 499606, + // "Presence of copy constructor breaks member class initialization", + // reported in 2009 by Alex Vakulenko: + // https://connect.microsoft.com/VisualStudio/feedback/details/499606 + struct user_defined_copy_constructor_holder_and_int + { + user_defined_copy_constructor_holder first; + int second; + }; + + bool is_value_initialized(const user_defined_copy_constructor_holder_and_int& arg) + { + return arg.first.data == 0 && arg.second == 0; + } + + + // An class that has a private and a protected int data member. + class private_and_protected_int + { + private: + int private_int; + protected: + int protected_int; + public: + friend bool is_value_initialized(const private_and_protected_int& arg) + { + return arg.private_int == 0 && arg.protected_int == 0; + } + }; + + + class user_defined_destructor_holder + { + public: + int i; + ~user_defined_destructor_holder() + { + } + }; + + bool is_value_initialized(const user_defined_destructor_holder& arg) + { + return arg.i == 0; + } + + + class virtual_destructor_holder + { + public: + int i; + virtual ~virtual_destructor_holder() + { + } + }; + + bool is_value_initialized(const virtual_destructor_holder& arg) + { + return arg.i == 0; + } + + + // A class that is not a POD type. + class non_pod_class + { + private: + enum_holder m_enum_holder; + + public: + int i; + + virtual bool is_value_initialized() const + { + return m_enum_holder.is_value_initialized() && i == 0; + } + + virtual ~non_pod_class() {} + }; + + bool is_value_initialized(const non_pod_class& arg) + { + return arg.is_value_initialized(); + } + + + typedef char _2d_char_array_type[3][4]; + + bool is_value_initialized(const _2d_char_array_type& arg) + { + for(unsigned i = 0; i < sizeof(_2d_char_array_type); ++i) + { + if ((*arg)[i] != 0) + { + return false; + } + } + return true; + } + + typedef char _3d_char_array_type[5][6][7]; + + bool is_value_initialized(const _3d_char_array_type& arg) + { + for(unsigned i = 0; i < sizeof(_3d_char_array_type); ++i) + { + if ((**arg)[i] != 0) + { + return false; + } + } + return true; + } + + + + // Tells whether an object of a scalar type T is value-initialized. + template <class T> + bool is_value_initialized(const T& arg) + { + return arg == 0; + } + + + // Wraps a heap object that it has allocated by doing new T(). + template <class T> + class heap_object_wrapper + { + private: + T* const m_ptr; + + // The following function is intentionally left unimplemented + // (as if deleted, "= delete", in C++0x): + void operator=(heap_object_wrapper); + + public: + heap_object_wrapper() + : + m_ptr(new T()) + { + } + + ~heap_object_wrapper() + { + delete m_ptr; + } + + // The copy-constructor is intentionally left unimplemented. + heap_object_wrapper(const heap_object_wrapper&); + + bool is_wrapped_object_value_initialized() const + { + return (m_ptr != 0) && is_value_initialized(*m_ptr); + } + }; + + template <class T> + bool is_value_initialized(const heap_object_wrapper<T>& arg) + { + return arg.is_wrapped_object_value_initialized(); + } + + + // Returns zero when the specified object is value-initializated, and one otherwise. + // Prints a message to standard output if the value-initialization has failed. + template <class T> + unsigned failed_to_value_initialized(const T& object, const char *const object_name) + { + if ( is_value_initialized(object) ) + { + return 0u; + } + else + { + std::cout << "Note: Failed to value-initialize " << object_name << '.' << std::endl; + return 1u; + } + } + +// A macro that passed both the name and the value of the specified object to +// the function above here. +#define FAILED_TO_VALUE_INITIALIZE(value) failed_to_value_initialized(value, #value) + + + // value_initializer initializes each of its data members by means + // of an empty set of parentheses, and allows checking whether + // each of them is indeed value-initialized, as specified by + // the C++ Standard ([dcl.init]). + // + // Note: its base class, int_struct, is there to try to reproduce GCC Bug 30111, + // "Value-initialization of POD base class doesn't initialize members", reported + // by Jonathan Wakely in 2006: http://gcc.gnu.org/bugzilla/show_bug.cgi?id=30111 + class value_initializer: private int_struct + { + private: + enum_holder m_enum_holder; + enum_holder m_enum_holder_array[2]; + enum_type m_enum; + enum_type m_enum_array[2]; + bool m_bool; + bool m_bool_array[2]; + char m_char; + char m_char_array[2]; + _2d_char_array_type m_2d_char_array; + _3d_char_array_type m_3d_char_array; + unsigned char m_unsigned_char; + unsigned char m_unsigned_char_array[2]; + short m_short; + short m_short_array[2]; + int m_int; + int m_int_array[2]; + unsigned m_unsigned; + unsigned m_unsigned_array[2]; + long m_long; + long m_long_array[2]; + float m_float; + float m_float_array[2]; + double m_double; + double m_double_array[2]; + long double m_long_double; + long double m_long_double_array[2]; + void* m_void_ptr; + void* m_void_ptr_array[2]; + function_ptr_type m_function_ptr; + function_ptr_type m_function_ptr_array[2]; + function_ptr_struct m_function_ptr_struct; + function_ptr_struct m_function_ptr_struct_array[2]; + member_function_ptr_type m_member_function_ptr; + member_function_ptr_type m_member_function_ptr_array[2]; + member_function_ptr_struct m_member_function_ptr_struct; + member_function_ptr_struct m_member_function_ptr_struct_array[2]; + ptr_to_member_type m_ptr_to_member; + ptr_to_member_type m_ptr_to_member_array[2]; + ptr_to_member_struct m_ptr_to_member_struct; + ptr_to_member_struct m_ptr_to_member_struct_array[2]; + bit_field_struct m_bit_field_struct; + bit_field_struct m_bit_field_struct_array[2]; + int_struct m_int_struct; + int_struct m_int_struct_array[2]; + int_struct m_int_struct_holder; + int_struct m_int_struct_holder_array[2]; + pod_struct m_pod_struct; + pod_struct m_pod_struct_array[2]; + derived_pod_struct m_derived_pod_struct; + derived_pod_struct m_derived_pod_struct_array[2]; + derived_struct m_derived_struct; + derived_struct m_derived_struct_array[2]; + derived_int_struct m_derived_int_struct; + derived_int_struct m_derived_int_struct_array[2]; + private_int_holder m_private_int_holder; + private_int_holder m_private_int_holder_array[2]; + char_array_struct m_char_array_struct; + char_array_struct m_char_array_struct_array[2]; + private_int_array_pair m_private_int_array_pair; + private_int_array_pair m_private_int_array_pair_array[2]; + enum_holder_and_int m_enum_holder_and_int; + enum_holder_and_int m_enum_holder_and_int_array[2]; + private_and_protected_int m_private_and_protected_int; + private_and_protected_int m_private_and_protected_int_array[2]; + user_defined_copy_constructor_holder_and_int m_user_defined_copy_constructor_holder_and_int; + user_defined_copy_constructor_holder_and_int m_user_defined_copy_constructor_holder_and_int_array[2]; + user_defined_destructor_holder m_user_defined_destructor_holder; + user_defined_destructor_holder m_user_defined_destructor_holder_array[2]; + virtual_destructor_holder m_virtual_destructor_holder; + virtual_destructor_holder m_virtual_destructor_holder_array[2]; + non_pod_class m_non_pod; + non_pod_class m_non_pod_array[2]; + pod_struct_and_int_union m_pod_struct_and_int_union; + pod_struct_and_int_union m_pod_struct_and_int_union_array[2]; + int_and_pod_struct_union m_int_and_pod_struct_union; + int_and_pod_struct_union m_int_and_pod_struct_union_array[2]; + + public: + // Default constructor. Tries to value-initialize its base subobject and all + // of its data.members. + value_initializer() + : + // Note: CodeGear/Borland may produce a warning, W8039, for each data member + // whose type is an array type, saying "Constructor initializer list ignored". + // If it does, it probably won't value-initialize those arrays, as reported + // by me (Niels Dekker, LKEB) in 2010, report 83751, "Value-initialization: + // arrays should have each element value-initialized", + // http://qc.embarcadero.com/wc/qcmain.aspx?d=83751 + // On the other hand, Microsoft Visual C++ may produce warnings of type C4351, + // saying "new behavior: elements of array '...' will be default initialized", + // which is actually the right behavior! + int_struct(), + m_enum_holder(), + m_enum_holder_array(), + m_enum(), + m_enum_array(), + m_bool(), + m_bool_array(), + m_char(), + m_char_array(), + m_2d_char_array(), + m_3d_char_array(), + m_unsigned_char(), + m_unsigned_char_array(), + m_short(), + m_short_array(), + m_int(), + m_int_array(), + m_unsigned(), + m_unsigned_array(), + m_long(), + m_long_array(), + m_float(), + m_float_array(), + m_double(), + m_double_array(), + m_long_double(), + m_long_double_array(), + m_void_ptr(), + m_void_ptr_array(), + m_function_ptr(), + m_function_ptr_array(), + m_function_ptr_struct(), + m_function_ptr_struct_array(), + m_member_function_ptr(), + m_member_function_ptr_array(), + m_member_function_ptr_struct(), + m_member_function_ptr_struct_array(), + m_ptr_to_member(), + m_ptr_to_member_array(), + m_ptr_to_member_struct(), + m_ptr_to_member_struct_array(), + m_bit_field_struct(), + m_bit_field_struct_array(), + m_int_struct(), + m_int_struct_array(), + m_int_struct_holder(), + m_int_struct_holder_array(), + m_pod_struct(), + m_pod_struct_array(), + m_derived_pod_struct(), + m_derived_pod_struct_array(), + m_derived_struct(), + m_derived_struct_array(), + m_derived_int_struct(), + m_derived_int_struct_array(), + m_private_int_holder(), + m_private_int_holder_array(), + m_char_array_struct(), + m_char_array_struct_array(), + m_private_int_array_pair(), + m_private_int_array_pair_array(), + m_enum_holder_and_int(), + m_enum_holder_and_int_array(), + m_private_and_protected_int(), + m_private_and_protected_int_array(), + m_user_defined_copy_constructor_holder_and_int(), + m_user_defined_copy_constructor_holder_and_int_array(), + m_user_defined_destructor_holder(), + m_user_defined_destructor_holder_array(), + m_virtual_destructor_holder(), + m_virtual_destructor_holder_array(), + m_non_pod(), + m_non_pod_array(), + m_pod_struct_and_int_union(), + m_pod_struct_and_int_union_array(), + m_int_and_pod_struct_union(), + m_int_and_pod_struct_union_array() + { + } + + // Returns the number of failures. + unsigned check_value_initialization_of_subobjects() const + { + const unsigned num_failures = + FAILED_TO_VALUE_INITIALIZE(int_struct::data) + + FAILED_TO_VALUE_INITIALIZE(m_enum_holder) + + FAILED_TO_VALUE_INITIALIZE(m_enum_holder_array[0]) + + FAILED_TO_VALUE_INITIALIZE(m_enum_holder_array[1]) + + FAILED_TO_VALUE_INITIALIZE(m_enum) + + FAILED_TO_VALUE_INITIALIZE(m_enum_array[0]) + + FAILED_TO_VALUE_INITIALIZE(m_enum_array[1]) + + FAILED_TO_VALUE_INITIALIZE(m_bool) + + FAILED_TO_VALUE_INITIALIZE(m_bool_array[0]) + + FAILED_TO_VALUE_INITIALIZE(m_bool_array[1]) + + FAILED_TO_VALUE_INITIALIZE(m_char) + + FAILED_TO_VALUE_INITIALIZE(m_char_array[0]) + + FAILED_TO_VALUE_INITIALIZE(m_char_array[1]) + + FAILED_TO_VALUE_INITIALIZE(m_2d_char_array) + + FAILED_TO_VALUE_INITIALIZE(m_3d_char_array) + + FAILED_TO_VALUE_INITIALIZE(m_unsigned_char) + + FAILED_TO_VALUE_INITIALIZE(m_unsigned_char_array[0]) + + FAILED_TO_VALUE_INITIALIZE(m_unsigned_char_array[1]) + + FAILED_TO_VALUE_INITIALIZE(m_short) + + FAILED_TO_VALUE_INITIALIZE(m_short_array[0]) + + FAILED_TO_VALUE_INITIALIZE(m_short_array[1]) + + FAILED_TO_VALUE_INITIALIZE(m_int) + + FAILED_TO_VALUE_INITIALIZE(m_int_array[0]) + + FAILED_TO_VALUE_INITIALIZE(m_int_array[1]) + + FAILED_TO_VALUE_INITIALIZE(m_unsigned) + + FAILED_TO_VALUE_INITIALIZE(m_unsigned_array[0]) + + FAILED_TO_VALUE_INITIALIZE(m_unsigned_array[1]) + + FAILED_TO_VALUE_INITIALIZE(m_long) + + FAILED_TO_VALUE_INITIALIZE(m_long_array[0]) + + FAILED_TO_VALUE_INITIALIZE(m_long_array[1]) + + FAILED_TO_VALUE_INITIALIZE(m_float) + + FAILED_TO_VALUE_INITIALIZE(m_float_array[0]) + + FAILED_TO_VALUE_INITIALIZE(m_float_array[1]) + + FAILED_TO_VALUE_INITIALIZE(m_double) + + FAILED_TO_VALUE_INITIALIZE(m_double_array[0]) + + FAILED_TO_VALUE_INITIALIZE(m_double_array[1]) + + FAILED_TO_VALUE_INITIALIZE(m_long_double) + + FAILED_TO_VALUE_INITIALIZE(m_long_double_array[0]) + + FAILED_TO_VALUE_INITIALIZE(m_long_double_array[1]) + + FAILED_TO_VALUE_INITIALIZE(m_void_ptr) + + FAILED_TO_VALUE_INITIALIZE(m_void_ptr_array[0]) + + FAILED_TO_VALUE_INITIALIZE(m_void_ptr_array[1]) + + FAILED_TO_VALUE_INITIALIZE(m_function_ptr) + + FAILED_TO_VALUE_INITIALIZE(m_function_ptr_array[0]) + + FAILED_TO_VALUE_INITIALIZE(m_function_ptr_array[1]) + + FAILED_TO_VALUE_INITIALIZE(m_function_ptr_struct) + + FAILED_TO_VALUE_INITIALIZE(m_function_ptr_struct_array[0]) + + FAILED_TO_VALUE_INITIALIZE(m_function_ptr_struct_array[1]) + + FAILED_TO_VALUE_INITIALIZE(m_member_function_ptr) + + FAILED_TO_VALUE_INITIALIZE(m_member_function_ptr_array[0]) + + FAILED_TO_VALUE_INITIALIZE(m_member_function_ptr_array[1]) + + FAILED_TO_VALUE_INITIALIZE(m_member_function_ptr_struct) + + FAILED_TO_VALUE_INITIALIZE(m_member_function_ptr_struct_array[0]) + + FAILED_TO_VALUE_INITIALIZE(m_member_function_ptr_struct_array[1]) + + FAILED_TO_VALUE_INITIALIZE(m_ptr_to_member) + + FAILED_TO_VALUE_INITIALIZE(m_ptr_to_member_array[0]) + + FAILED_TO_VALUE_INITIALIZE(m_ptr_to_member_array[1]) + + FAILED_TO_VALUE_INITIALIZE(m_ptr_to_member_struct) + + FAILED_TO_VALUE_INITIALIZE(m_ptr_to_member_struct_array[0]) + + FAILED_TO_VALUE_INITIALIZE(m_ptr_to_member_struct_array[1]) + + FAILED_TO_VALUE_INITIALIZE(m_bit_field_struct) + + FAILED_TO_VALUE_INITIALIZE(m_bit_field_struct_array[0]) + + FAILED_TO_VALUE_INITIALIZE(m_bit_field_struct_array[1]) + + FAILED_TO_VALUE_INITIALIZE(m_int_struct) + + FAILED_TO_VALUE_INITIALIZE(m_int_struct_array[0]) + + FAILED_TO_VALUE_INITIALIZE(m_int_struct_array[1]) + + FAILED_TO_VALUE_INITIALIZE(m_int_struct_holder) + + FAILED_TO_VALUE_INITIALIZE(m_int_struct_holder_array[0]) + + FAILED_TO_VALUE_INITIALIZE(m_int_struct_holder_array[1]) + + FAILED_TO_VALUE_INITIALIZE(m_pod_struct) + + FAILED_TO_VALUE_INITIALIZE(m_pod_struct_array[0]) + + FAILED_TO_VALUE_INITIALIZE(m_pod_struct_array[1]) + + FAILED_TO_VALUE_INITIALIZE(m_derived_pod_struct) + + FAILED_TO_VALUE_INITIALIZE(m_derived_pod_struct_array[0]) + + FAILED_TO_VALUE_INITIALIZE(m_derived_pod_struct_array[1]) + + FAILED_TO_VALUE_INITIALIZE(m_derived_struct) + + FAILED_TO_VALUE_INITIALIZE(m_derived_struct_array[0]) + + FAILED_TO_VALUE_INITIALIZE(m_derived_struct_array[1]) + + FAILED_TO_VALUE_INITIALIZE(m_derived_int_struct) + + FAILED_TO_VALUE_INITIALIZE(m_derived_int_struct_array[0]) + + FAILED_TO_VALUE_INITIALIZE(m_derived_int_struct_array[1]) + + FAILED_TO_VALUE_INITIALIZE(m_private_int_holder) + + FAILED_TO_VALUE_INITIALIZE(m_private_int_holder_array[0]) + + FAILED_TO_VALUE_INITIALIZE(m_private_int_holder_array[1]) + + FAILED_TO_VALUE_INITIALIZE(m_char_array_struct) + + FAILED_TO_VALUE_INITIALIZE(m_char_array_struct_array[0]) + + FAILED_TO_VALUE_INITIALIZE(m_char_array_struct_array[1]) + + FAILED_TO_VALUE_INITIALIZE(m_private_int_array_pair) + + FAILED_TO_VALUE_INITIALIZE(m_private_int_array_pair_array[0]) + + FAILED_TO_VALUE_INITIALIZE(m_private_int_array_pair_array[1]) + + FAILED_TO_VALUE_INITIALIZE(m_enum_holder_and_int) + + FAILED_TO_VALUE_INITIALIZE(m_enum_holder_and_int_array[0]) + + FAILED_TO_VALUE_INITIALIZE(m_enum_holder_and_int_array[1]) + + FAILED_TO_VALUE_INITIALIZE(m_private_and_protected_int) + + FAILED_TO_VALUE_INITIALIZE(m_private_and_protected_int_array[0]) + + FAILED_TO_VALUE_INITIALIZE(m_private_and_protected_int_array[1]) + + FAILED_TO_VALUE_INITIALIZE(m_user_defined_copy_constructor_holder_and_int) + + FAILED_TO_VALUE_INITIALIZE(m_user_defined_copy_constructor_holder_and_int_array[0]) + + FAILED_TO_VALUE_INITIALIZE(m_user_defined_copy_constructor_holder_and_int_array[1]) + + FAILED_TO_VALUE_INITIALIZE(m_user_defined_destructor_holder) + + FAILED_TO_VALUE_INITIALIZE(m_user_defined_destructor_holder_array[0]) + + FAILED_TO_VALUE_INITIALIZE(m_user_defined_destructor_holder_array[1]) + + FAILED_TO_VALUE_INITIALIZE(m_virtual_destructor_holder) + + FAILED_TO_VALUE_INITIALIZE(m_virtual_destructor_holder_array[0]) + + FAILED_TO_VALUE_INITIALIZE(m_virtual_destructor_holder_array[1]) + + FAILED_TO_VALUE_INITIALIZE(m_non_pod) + + FAILED_TO_VALUE_INITIALIZE(m_non_pod_array[0]) + + FAILED_TO_VALUE_INITIALIZE(m_non_pod_array[1]) + + FAILED_TO_VALUE_INITIALIZE(m_pod_struct_and_int_union) + + FAILED_TO_VALUE_INITIALIZE(m_pod_struct_and_int_union_array[0]) + + FAILED_TO_VALUE_INITIALIZE(m_pod_struct_and_int_union_array[1]) + + FAILED_TO_VALUE_INITIALIZE(m_int_and_pod_struct_union) + + FAILED_TO_VALUE_INITIALIZE(m_int_and_pod_struct_union_array[0]) + + FAILED_TO_VALUE_INITIALIZE(m_int_and_pod_struct_union_array[1]); + return num_failures; + } + }; + + // Checks value-initialization of a number of small temporary objects. + // Returns the number of failures. + unsigned check_value_initialization_of_temporaries() + { + typedef long double long_double_type; + typedef unsigned char unsigned_char_type; + typedef void* void_ptr_type; + + const unsigned num_failures = + FAILED_TO_VALUE_INITIALIZE(enum_holder()) + + FAILED_TO_VALUE_INITIALIZE(enum_type()) + + FAILED_TO_VALUE_INITIALIZE(bool()) + + FAILED_TO_VALUE_INITIALIZE(char()) + + FAILED_TO_VALUE_INITIALIZE(unsigned_char_type()) + + FAILED_TO_VALUE_INITIALIZE(short()) + + FAILED_TO_VALUE_INITIALIZE(int()) + + FAILED_TO_VALUE_INITIALIZE(unsigned()) + + FAILED_TO_VALUE_INITIALIZE(long()) + + FAILED_TO_VALUE_INITIALIZE(float()) + + FAILED_TO_VALUE_INITIALIZE(double()) + + FAILED_TO_VALUE_INITIALIZE(long_double_type()) + + FAILED_TO_VALUE_INITIALIZE(void_ptr_type()) + + FAILED_TO_VALUE_INITIALIZE(bit_field_struct()) + + FAILED_TO_VALUE_INITIALIZE(function_ptr_type()) + + FAILED_TO_VALUE_INITIALIZE(function_ptr_struct()) + + FAILED_TO_VALUE_INITIALIZE(member_function_ptr_type()) + + FAILED_TO_VALUE_INITIALIZE(member_function_ptr_struct()) + + FAILED_TO_VALUE_INITIALIZE(ptr_to_member_type()) + + FAILED_TO_VALUE_INITIALIZE(ptr_to_member_struct()) + + FAILED_TO_VALUE_INITIALIZE(int_struct()) + + FAILED_TO_VALUE_INITIALIZE(int_struct_holder()) + + FAILED_TO_VALUE_INITIALIZE(pod_struct()) + + FAILED_TO_VALUE_INITIALIZE(derived_pod_struct()) + + FAILED_TO_VALUE_INITIALIZE(derived_struct()) + + FAILED_TO_VALUE_INITIALIZE(derived_int_struct()) + + FAILED_TO_VALUE_INITIALIZE(private_int_holder()) + + FAILED_TO_VALUE_INITIALIZE(char_array_struct()) + + FAILED_TO_VALUE_INITIALIZE(private_int_array_pair()) + + // IBM's XL V10.1.0.0 may fail to value-initialize a temporary of a non-POD + // type like enum_holder_and_int, virtual_destructor_holder, or non_pod_class, + // as appeared at the Boost Config/trunk regression page in April 2010. + // Michael Wong (IBM Canada Ltd) confirmed the issue to me (Niels Dekker, LKEB), + // and gave it high priority. + FAILED_TO_VALUE_INITIALIZE(enum_holder_and_int()) + + FAILED_TO_VALUE_INITIALIZE(private_and_protected_int()) + + FAILED_TO_VALUE_INITIALIZE(user_defined_copy_constructor_holder_and_int()) + + // The following line, doing user_defined_destructor_holder(), causes + // a compilation error on Embarcadero 2010 (Borland/CodeGear 6.21), + // as reported by me (Niels Dekker, LKEB) in 2010, bug report 83851, + // "Value-initialized temporary triggers internal backend error C1798", + // http://qc.embarcadero.com/wc/qcmain.aspx?d=83851 + FAILED_TO_VALUE_INITIALIZE(user_defined_destructor_holder()) + + FAILED_TO_VALUE_INITIALIZE(virtual_destructor_holder()) + + FAILED_TO_VALUE_INITIALIZE(non_pod_class()) + + FAILED_TO_VALUE_INITIALIZE(pod_struct_and_int_union()) + + FAILED_TO_VALUE_INITIALIZE(int_and_pod_struct_union()); + return num_failures; + } + + // Checks value-initialization of small heap objects. + // Returns the number of failures. + unsigned check_value_initialization_of_heap_objects() + { + const unsigned num_failures = + FAILED_TO_VALUE_INITIALIZE( heap_object_wrapper<enum_holder>() ) + + FAILED_TO_VALUE_INITIALIZE( heap_object_wrapper<enum_type>() ) + + FAILED_TO_VALUE_INITIALIZE( heap_object_wrapper<bool>() ) + + FAILED_TO_VALUE_INITIALIZE( heap_object_wrapper<char>() ) + + FAILED_TO_VALUE_INITIALIZE( heap_object_wrapper<unsigned char>() ) + + FAILED_TO_VALUE_INITIALIZE( heap_object_wrapper<short>() ) + + FAILED_TO_VALUE_INITIALIZE( heap_object_wrapper<int>() ) + + FAILED_TO_VALUE_INITIALIZE( heap_object_wrapper<unsigned>() ) + + FAILED_TO_VALUE_INITIALIZE( heap_object_wrapper<long>() ) + + FAILED_TO_VALUE_INITIALIZE( heap_object_wrapper<float>() ) + + FAILED_TO_VALUE_INITIALIZE( heap_object_wrapper<double>() ) + + FAILED_TO_VALUE_INITIALIZE( heap_object_wrapper<long double>() ) + + FAILED_TO_VALUE_INITIALIZE( heap_object_wrapper<void*>() ) + + FAILED_TO_VALUE_INITIALIZE( heap_object_wrapper<function_ptr_type>() ) + + FAILED_TO_VALUE_INITIALIZE( heap_object_wrapper<function_ptr_struct>() ) + + FAILED_TO_VALUE_INITIALIZE( heap_object_wrapper<member_function_ptr_type>() ) + + FAILED_TO_VALUE_INITIALIZE( heap_object_wrapper<member_function_ptr_struct>() ) + + FAILED_TO_VALUE_INITIALIZE( heap_object_wrapper<ptr_to_member_type>() ) + + FAILED_TO_VALUE_INITIALIZE( heap_object_wrapper<ptr_to_member_struct>() ) + + FAILED_TO_VALUE_INITIALIZE( heap_object_wrapper<bit_field_struct>() ) + + FAILED_TO_VALUE_INITIALIZE( heap_object_wrapper<int_struct>() ) + + FAILED_TO_VALUE_INITIALIZE( heap_object_wrapper<int_struct>() ) + + FAILED_TO_VALUE_INITIALIZE( heap_object_wrapper<pod_struct>() ) + + FAILED_TO_VALUE_INITIALIZE( heap_object_wrapper<derived_pod_struct>() ) + + FAILED_TO_VALUE_INITIALIZE( heap_object_wrapper<derived_struct>() ) + + FAILED_TO_VALUE_INITIALIZE( heap_object_wrapper<derived_int_struct>() ) + + FAILED_TO_VALUE_INITIALIZE( heap_object_wrapper<char_array_struct>() ) + + FAILED_TO_VALUE_INITIALIZE( heap_object_wrapper<private_int_holder>() ) + + FAILED_TO_VALUE_INITIALIZE( heap_object_wrapper<private_int_array_pair>() ) + + FAILED_TO_VALUE_INITIALIZE( heap_object_wrapper<enum_holder_and_int>() ) + + FAILED_TO_VALUE_INITIALIZE( heap_object_wrapper<private_and_protected_int>() ) + + FAILED_TO_VALUE_INITIALIZE( heap_object_wrapper<user_defined_copy_constructor_holder_and_int>() ) + + FAILED_TO_VALUE_INITIALIZE( heap_object_wrapper<user_defined_destructor_holder>() ) + + FAILED_TO_VALUE_INITIALIZE( heap_object_wrapper<virtual_destructor_holder>() ) + + FAILED_TO_VALUE_INITIALIZE( heap_object_wrapper<non_pod_class>() ) + + FAILED_TO_VALUE_INITIALIZE( heap_object_wrapper<pod_struct_and_int_union>() ) + + FAILED_TO_VALUE_INITIALIZE( heap_object_wrapper<int_and_pod_struct_union>() ); + return num_failures; + } + + // Equivalent to the dirty_stack() function from GCC Bug 33916, + // "Default constructor fails to initialize array members", reported in 2007 by + // Michael Elizabeth Chastain: http://gcc.gnu.org/bugzilla/show_bug.cgi?id=33916 + void dirty_stack() + { + unsigned char array_on_stack[sizeof(value_initializer) + 256]; + for (unsigned i = 0; i < sizeof(array_on_stack); ++i) + { + array_on_stack[i] = 0x11; + } + } + + + // Checks value-initialization of the subobjects of a temporary object, + // an object on the stack, an object on the heap; furthermore it checks + // value-initialization of a number of smaller temporary objects and + // heap objects. + int test() + { + unsigned total_num_failures = 0; + + dirty_stack(); + const unsigned num_failures_of_subobjects_of_a_temporary = + value_initializer().check_value_initialization_of_subobjects(); + + total_num_failures += num_failures_of_subobjects_of_a_temporary; + if ( total_num_failures > 0 ) + { + std::cout << "- Number of subobject initialization failures of a temporary: " + << num_failures_of_subobjects_of_a_temporary << std::endl; + } + dirty_stack(); + value_initializer object_on_stack; + const unsigned num_failures_of_subobjects_on_stack = + object_on_stack.check_value_initialization_of_subobjects(); + + total_num_failures += num_failures_of_subobjects_on_stack; + if ( total_num_failures > 0 ) + { + std::cout << "- Number of subobject initialization failures on the stack: " + << num_failures_of_subobjects_on_stack << std::endl; + } + const value_initializer* const ptr = new value_initializer(); + const unsigned num_failures_of_subobjects_on_heap = ptr->check_value_initialization_of_subobjects(); + delete ptr; + + total_num_failures += num_failures_of_subobjects_on_heap; + if ( total_num_failures > 0 ) + { + std::cout << "- Number of subobject initialization failures on the heap: " + << num_failures_of_subobjects_on_heap << std::endl; + } + + dirty_stack(); + const unsigned num_failures_of_temporaries = check_value_initialization_of_temporaries(); + + total_num_failures += num_failures_of_temporaries; + if ( total_num_failures > 0 ) + { + std::cout << "- Number of initialization failures of temporary objects: " + << num_failures_of_temporaries << std::endl; + } + + const unsigned num_failures_of_heap_objects = check_value_initialization_of_heap_objects(); + + total_num_failures += num_failures_of_heap_objects; + if ( total_num_failures > 0 ) + { + std::cout << "- Number of failures of heap objects: " + << num_failures_of_heap_objects << std::endl; + } + + if ( total_num_failures > 0 ) + { + std::cout << "-- Total number of initialization failures (" + << num_failures_of_subobjects_of_a_temporary << '+' + << num_failures_of_subobjects_on_stack << '+' + << num_failures_of_subobjects_on_heap << '+' + << num_failures_of_temporaries << '+' + << num_failures_of_heap_objects << "): " + << total_num_failures + << "\nDetected by boost_no_complete_value_initialization::test() revision 32." + << std::endl; + } + return static_cast<int>(total_num_failures); + } + +} // End of namespace. diff --git a/libs/config/test/boost_no_constexpr.ipp b/libs/config/test/boost_no_constexpr.ipp new file mode 100644 index 0000000000..bc0ad7cc6a --- /dev/null +++ b/libs/config/test/boost_no_constexpr.ipp @@ -0,0 +1,46 @@ +// (C) Copyright Beman Dawes 2008 + +// 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) + +// See http://www.boost.org/libs/config for more information. + +// MACRO: BOOST_NO_CONSTEXPR +// TITLE: C++0x constexpr unavailable +// DESCRIPTION: The compiler does not support C++0x constexpr + +namespace boost_no_constexpr { + +void quiet_warning(int){} + +constexpr int square(int x) { return x * x; } // from N2235 + +// from 5.19: +constexpr const int* addr(const int& ir) { return &ir; } +static const int x = 5; +constexpr const int* xp = addr(x); + +struct A +{ + constexpr A(int i) : val(i) { } + constexpr operator int() { return val; } + constexpr operator long() { return 43; } +private: + int val; +}; + +template<int> struct X { }; + +constexpr A a = 42; + +X<a> xx; // OK: unique conversion to int + +int test() +{ + int i = square(5); + quiet_warning(i); + return 0; +} + +} diff --git a/libs/config/test/boost_no_ctype_functions.ipp b/libs/config/test/boost_no_ctype_functions.ipp new file mode 100644 index 0000000000..ec23d594a1 --- /dev/null +++ b/libs/config/test/boost_no_ctype_functions.ipp @@ -0,0 +1,44 @@ +// (C) Copyright John Maddock 2001. +// 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) + +// See http://www.boost.org/libs/config for most recent version. + +// MACRO: BOOST_NO_CTYPE_FUNCTIONS +// TITLE: functions in <ctype.h> +// DESCRIPTION: The Platform does not provide functions for the character- +// classifying operations in <ctype.h>. Some platforms provide +// macros and don't provide functions. Under C++ it's an error +// to provide the macros at all, but that's a separate issue. + +#include <ctype.h> + +namespace boost_no_ctype_functions { + +extern "C" { + typedef int (* character_classify_function)(int); +} + +void pass_function(character_classify_function) +{ +} + +int test() +{ + pass_function(isalpha); + pass_function(isalnum); + pass_function(iscntrl); + pass_function(isdigit); + pass_function(isgraph); + pass_function(islower); + pass_function(isprint); + pass_function(ispunct); + pass_function(isspace); + pass_function(isupper); + pass_function(isxdigit); + return 0; +} + +} + diff --git a/libs/config/test/boost_no_cv_spec.ipp b/libs/config/test/boost_no_cv_spec.ipp new file mode 100644 index 0000000000..d2fc6311bf --- /dev/null +++ b/libs/config/test/boost_no_cv_spec.ipp @@ -0,0 +1,47 @@ +// (C) Copyright John Maddock 2001. +// 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) + +// See http://www.boost.org/libs/config for most recent version. + +// MACRO: BOOST_NO_CV_SPECIALIZATIONS +// TITLE: template specialisations of cv-qualified types +// DESCRIPTION: If template specialisations for cv-qualified types +// conflict with a specialisation for a cv-unqualififed type. + + +namespace boost_no_cv_specializations{ + +template <class T> +struct is_int +{ +}; + +template <> +struct is_int<int> +{}; + +template <> +struct is_int<const int> +{}; + +template <> +struct is_int<volatile int> +{}; + +template <> +struct is_int<const volatile int> +{}; + +int test() +{ + return 0; +} + + +} + + + + diff --git a/libs/config/test/boost_no_cv_void_spec.ipp b/libs/config/test/boost_no_cv_void_spec.ipp new file mode 100644 index 0000000000..c3bc254812 --- /dev/null +++ b/libs/config/test/boost_no_cv_void_spec.ipp @@ -0,0 +1,45 @@ +// (C) Copyright John Maddock 2001. +// 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) + +// See http://www.boost.org/libs/config for most recent version. + +// MACRO: BOOST_NO_CV_VOID_SPECIALIZATIONS +// TITLE: template specialisations of cv-qualified void +// DESCRIPTION: If template specialisations for cv-void types +// conflict with a specialisation for void. + + +namespace boost_no_cv_void_specializations{ + +template <class T> +struct is_void +{ +}; + +template <> +struct is_void<void> +{}; + +template <> +struct is_void<const void> +{}; + +template <> +struct is_void<volatile void> +{}; + +template <> +struct is_void<const volatile void> +{}; + +int test() +{ + return 0; +} + +} + + + diff --git a/libs/config/test/boost_no_cwchar.ipp b/libs/config/test/boost_no_cwchar.ipp new file mode 100644 index 0000000000..d1117018d9 --- /dev/null +++ b/libs/config/test/boost_no_cwchar.ipp @@ -0,0 +1,33 @@ +// (C) Copyright John Maddock 2001. +// 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) + +// See http://www.boost.org/libs/config for most recent version. + +// MACRO: BOOST_NO_CWCHAR +// TITLE: <wchar.h> and <cwchar> +// DESCRIPTION: The Platform does not provide <wchar.h> and <cwchar>. + +#include <cwchar> +#include <wchar.h> + +namespace boost_no_cwchar{ + +int test() +{ + wchar_t c1[2] = { 0 }; + wchar_t c2[2] = { 0 }; + if(wcscmp(c1,c2) || wcslen(c1)) return -1; + wcscpy(c1,c2); + wcsxfrm(c1,c2,0); + return 0; +} + +} + + + + + + diff --git a/libs/config/test/boost_no_cwctype.ipp b/libs/config/test/boost_no_cwctype.ipp new file mode 100644 index 0000000000..d6a7355a27 --- /dev/null +++ b/libs/config/test/boost_no_cwctype.ipp @@ -0,0 +1,47 @@ +// (C) Copyright John Maddock 2001. +// 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) + +// See http://www.boost.org/libs/config for most recent version. + +// MACRO: BOOST_NO_CWCTYPE +// TITLE: <wctype.h> and <cwctype> +// DESCRIPTION: The Platform does not provide <wctype.h> and <cwctype>. + +// +// Note that some platforms put these prototypes in the wrong headers, +// we have to include pretty well all the string headers on the chance that +// one of them will contain what we want! +// +#include <cwctype> +#include <wctype.h> +#include <cwchar> +#include <wchar.h> +#include <cctype> +#include <ctype.h> + +namespace boost_no_cwctype{ + +int test() +{ + if(!(iswalpha(L'a') && + iswcntrl(L'\r') && + iswdigit(L'2') && + iswlower(L'a') && + iswpunct(L',') && + iswspace(L' ') && + iswupper(L'A') && + iswxdigit(L'A') + )) return -1; + if(L'a' != towlower(L'A')) return -1; + return 0; +} + +} + + + + + + diff --git a/libs/config/test/boost_no_decltype.ipp b/libs/config/test/boost_no_decltype.ipp new file mode 100644 index 0000000000..e67f55afd6 --- /dev/null +++ b/libs/config/test/boost_no_decltype.ipp @@ -0,0 +1,54 @@ + +// (C) Copyright Beman Dawes 2008 + +// 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) + +// See http://www.boost.org/libs/config for more information. + +// MACRO: BOOST_NO_DECLTYPE +// TITLE: C++0x decltype unavailable +// DESCRIPTION: The compiler does not support C++0x decltype + +namespace boost_no_decltype { + +void quiet_warning(int){} + +struct test_class +{ + test_class() {} +}; + +test_class get_test_class() +{ + return test_class(); +} + +template<typename F> +void baz(F f) +{ + // + // Strangely VC-10 deduces the return type of F + // to be "test_class&". Remove the constructor + // from test_class and then decltype does work OK!! + // + typedef decltype(f()) res; + res r; +} + +int test() +{ + int i; + decltype(i) j; +// quiet_warning(j); + decltype(get_test_class()) k; + #ifndef _MSC_VER + // Although the VC++ decltype is buggy, we none the less enable support, + // so don't test the bugs for now! + baz(get_test_class); + #endif + return 0; +} + +} diff --git a/libs/config/test/boost_no_decltype_n3276.ipp b/libs/config/test/boost_no_decltype_n3276.ipp new file mode 100644 index 0000000000..f0c3688b3e --- /dev/null +++ b/libs/config/test/boost_no_decltype_n3276.ipp @@ -0,0 +1,137 @@ + +// (C) Copyright Eric Niebler 2011 + +// 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) + +// See http://www.boost.org/libs/config for more information. + +// MACRO: BOOST_NO_DECLTYPE_N3276 +// TITLE: C++0x decltype v1.1 unavailable +// DESCRIPTION: The compiler does not support extensions to C++0x +// decltype as described in N3276 and accepted in Madrid, +// March 2011: +// <http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2011/n3276.pdf> + +namespace boost_no_decltype_n3276 { + +// A simplified result_of implementation. +// that uses decltype. +template<typename Sig> +struct result_of; + +template<typename T> +T& declvar(); + +// use decltype +template<typename Fun, typename T> +struct result_of<Fun(T)> +{ + typedef decltype(declvar<Fun>()(declvar<T>())) type; +}; + +template<typename Fun, typename T, typename U> +struct result_of<Fun(T, U)> +{ + typedef decltype(declvar<Fun>()(declvar<T>(), declvar<U>())) type; +}; + +// simple tuple type +template<typename A0 = void, typename A1 = void, typename A2 = void> +struct tuple; + +template<typename A0> +struct tuple<A0, void, void> +{ + A0 a0_; + + tuple(A0 const &a0) + : a0_(a0) + {} +}; + +template<typename A0, typename A1> +struct tuple<A0, A1> +{ + A0 a0_; + A1 a1_; + + tuple(A0 const &a0, A1 const & a1) + : a0_(a0) + , a1_(a1) + {} +}; + +// A node in an expression tree +template<class Tag, class Args> // Args is a tuple. +struct Expr; + +// A function object that builds expression nodes +template<class Tag> +struct MakeExpr +{ + template<class T> + Expr<Tag, tuple<T> > operator()(T const & t) const + { + return Expr<Tag, tuple<T> >(tuple<T>(t)); + } + + template<class T, typename U> + Expr<Tag, tuple<T, U> > operator()(T const & t, U const & u) const + { + return Expr<Tag, tuple<T, U> >(tuple<T, U>(t, u)); + } +}; + +// Here are tag types that encode in an expression node +// what operation created the node. +struct Terminal; +struct BinaryPlus; +struct FunctionCall; + +typedef MakeExpr<Terminal> MakeTerminal; +typedef MakeExpr<BinaryPlus> MakeBinaryPlus; +typedef MakeExpr<FunctionCall> MakeFunctionCall; + +template<class Tag, class Args> +struct Expr +{ + Args args_; + + explicit Expr(Args const & t) : args_(t) {} + + // An overloaded operator+ that creates a binary plus node + template<typename RTag, typename RArgs> + typename result_of<MakeBinaryPlus(Expr, Expr<RTag, RArgs>)>::type + operator+(Expr<RTag, RArgs> const &right) const + { + return MakeBinaryPlus()(*this, right); + } + + // An overloaded function call operator that creates a unary + // function call node + typename result_of<MakeFunctionCall(Expr)>::type + operator()() const + { + return MakeFunctionCall()(*this); + } +}; + +int test() +{ + // This is a terminal in an expression tree + Expr<Terminal, tuple<int> > i = MakeTerminal()(42); + + i + i; // OK, this creates a binary plus node. + + i(); // OK, this creates a unary function-call node. + // NOTE: If N3276 has not been implemented, this + // line will set off an infinite cascade of template + // instantiations that will run the compiler out of + // memory. + + return 0; +} + +} diff --git a/libs/config/test/boost_no_ded_typename.ipp b/libs/config/test/boost_no_ded_typename.ipp new file mode 100644 index 0000000000..ef58d272a1 --- /dev/null +++ b/libs/config/test/boost_no_ded_typename.ipp @@ -0,0 +1,40 @@ +// (C) Copyright John Maddock and Dave Abrahams 2002. +// 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) + +// See http://www.boost.org/libs/config for most recent version. + +// MACRO: BOOST_DEDUCED_TYPENAME +// TITLE: deduced typenames +// DESCRIPTION: Some compilers can't use the typename keyword in deduced contexts. + +#ifndef BOOST_DEDUCED_TYPENAME +#define BOOST_DEDUCED_TYPENAME typename +#endif + + +namespace boost_deduced_typename{ + +template <class T> +int f(T const volatile*, BOOST_DEDUCED_TYPENAME T::type* = 0) +{ + return 0; +} + +struct X { typedef int type; }; + +int test() +{ + return f((X*)0); +} + +} + + + + + + + + diff --git a/libs/config/test/boost_no_defaulted_functions.ipp b/libs/config/test/boost_no_defaulted_functions.ipp new file mode 100644 index 0000000000..fcf02fd076 --- /dev/null +++ b/libs/config/test/boost_no_defaulted_functions.ipp @@ -0,0 +1,28 @@ +// (C) Copyright Beman Dawes 2008 + +// 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) + +// See http://www.boost.org/libs/config for more information. + +// MACRO: BOOST_NO_DEFAULTED_FUNCTIONS +// TITLE: C++0x defaulted functions unavailable +// DESCRIPTION: The compiler does not support C++0x defaulted functions + +#if defined(__GNUC__) && !defined(__GXX_EXPERIMENTAL_CXX0X__) && !defined(BOOST_INTEL_STDCXX0X) +# error Defaulted functions are not supported in non-C++0x mode +#endif + +namespace boost_no_defaulted_functions { + + struct foo { + foo() = default; + }; + +int test() +{ + return 0; +} + +} diff --git a/libs/config/test/boost_no_deleted_functions.ipp b/libs/config/test/boost_no_deleted_functions.ipp new file mode 100644 index 0000000000..00397dffd8 --- /dev/null +++ b/libs/config/test/boost_no_deleted_functions.ipp @@ -0,0 +1,28 @@ +// (C) Copyright Beman Dawes 2008 + +// 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) + +// See http://www.boost.org/libs/config for more information. + +// MACRO: BOOST_NO_DELETED_FUNCTIONS +// TITLE: C++0x =delete functions unavailable +// DESCRIPTION: The compiler does not support C++0x =delete functions + +#if defined(__GNUC__) && !defined(__GXX_EXPERIMENTAL_CXX0X__) && !defined(BOOST_INTEL_STDCXX0X) +# error Deleted functions are not supported in non-C++0x mode +#endif + +namespace boost_no_deleted_functions { + + struct foo { + foo() = delete; + }; + +int test() +{ + return 0; +} + +} diff --git a/libs/config/test/boost_no_dep_nested_class.ipp b/libs/config/test/boost_no_dep_nested_class.ipp new file mode 100644 index 0000000000..42c5750305 --- /dev/null +++ b/libs/config/test/boost_no_dep_nested_class.ipp @@ -0,0 +1,58 @@ +// (C) Copyright John Maddock 2001. +// 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) + +// See http://www.boost.org/libs/config for most recent version. + +// MACRO: BOOST_NO_DEPENDENT_NESTED_DERIVATIONS +// TITLE: dependent nested template classes +// DESCRIPTION: The compiler fails to compile +// a nested class that has a dependent base class: +// template<typename T> +// struct foo : { +// template<typename U> +// struct bar : public U {}; +// }; +#ifndef BOOST_NESTED_TEMPLATE +#define BOOST_NESTED_TEMPLATE template +#endif + + +namespace boost_no_dependent_nested_derivations{ + +struct UDT1{}; +struct UDT2{}; + +template<typename T> +struct foo +{ + template<typename U> + struct bar : public foo<U> + {}; +}; + +template <class T> +void foo_test(T) +{ + typedef foo<T> foo_type; + typedef typename foo_type::BOOST_NESTED_TEMPLATE bar<UDT2> bar_type; + foo<T> ft; + bar_type bt; + (void) &bt; + (void) &ft; +} + +int test() +{ + foo_test(UDT1()); + return 0; +} + +} + + + + + + diff --git a/libs/config/test/boost_no_dep_val_param.ipp b/libs/config/test/boost_no_dep_val_param.ipp new file mode 100644 index 0000000000..759bef0587 --- /dev/null +++ b/libs/config/test/boost_no_dep_val_param.ipp @@ -0,0 +1,37 @@ +// (C) Copyright John Maddock 2001. +// 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) + +// See http://www.boost.org/libs/config for most recent version. + +// MACRO: BOOST_NO_DEPENDENT_TYPES_IN_TEMPLATE_VALUE_PARAMETERS +// TITLE: dependent non-type template parameters +// DESCRIPTION: Template value parameters cannot have a dependent +// type, for example: +// template<class T, typename T::type value> +// class X { ... }; + + +namespace boost_no_dependent_types_in_template_value_parameters{ + +template <class T, typename T::type value = 0> +class X +{}; + +template <class T> +struct typifier +{ + typedef T type; +}; + +int test() +{ + X<typifier<int> > x; + (void) &x; // avoid "unused variable" warning + return 0; +} + +} + + diff --git a/libs/config/test/boost_no_excep_std.ipp b/libs/config/test/boost_no_excep_std.ipp new file mode 100644 index 0000000000..10d48f470f --- /dev/null +++ b/libs/config/test/boost_no_excep_std.ipp @@ -0,0 +1,35 @@ +// (C) Copyright John Maddock 2001. +// 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) + +// See http://www.boost.org/libs/config for most recent version. + +// MACRO: BOOST_NO_EXCEPTION_STD_NAMESPACE +// TITLE: <exception> is in namespace std +// DESCRIPTION: Some std libs don't put the contents of +// <exception> in namespace std. + +#include <exception> + +namespace boost_no_exception_std_namespace{ + +int t(int i) +{ + if(i) + std::terminate(); + return 0; +} + +int test() +{ + return t(0); +} + +} + + + + + + diff --git a/libs/config/test/boost_no_exceptions.ipp b/libs/config/test/boost_no_exceptions.ipp new file mode 100644 index 0000000000..862088f5e9 --- /dev/null +++ b/libs/config/test/boost_no_exceptions.ipp @@ -0,0 +1,43 @@ +// (C) Copyright John Maddock 2001. +// 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) + +// See http://www.boost.org/libs/config for most recent version. + +// MACRO: BOOST_NO_EXCEPTIONS +// TITLE: exception handling support +// DESCRIPTION: The compiler in its current translation mode supports +// exception handling. + + +namespace boost_no_exceptions{ + +void throw_it(int i) +{ + throw i; +} + +int test() +{ + try + { + throw_it(2); + } + catch(int i) + { + return (i == 2) ? 0 : -1; + } + catch(...) + { + return -1; + } + return -1; +} + +} + + + + + diff --git a/libs/config/test/boost_no_exp_func_tem_arg.ipp b/libs/config/test/boost_no_exp_func_tem_arg.ipp new file mode 100644 index 0000000000..3333b22b63 --- /dev/null +++ b/libs/config/test/boost_no_exp_func_tem_arg.ipp @@ -0,0 +1,55 @@ +// (C) Copyright John Maddock 2001. +// 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) + +// See http://www.boost.org/libs/config for most recent version. + +// MACRO: BOOST_NO_EXPLICIT_FUNCTION_TEMPLATE_ARGUMENTS +// TITLE: non-deduced function template parameters +// DESCRIPTION: Can only use deduced template arguments when +// calling function template instantiations. + +#if defined(BOOST_MSVC) && (BOOST_MSVC <= 1200) +#error "This is known to be buggy under VC6" +#endif + + +namespace boost_no_explicit_function_template_arguments{ + +struct foo +{ + template<class T> int bar(){return 0;} + template<int I> int bar(){return 1;} +}; + +int test_0() +{ + return 0; +} + + +template <int i> +bool foo_17041(int j) +{ + return (i == j); +} + +int test() +{ + foo f; + int a = f.bar<char>(); + int b = f.bar<2>(); + if((a !=0) || (b != 1))return -1; + + if(0 == foo_17041<8>(8)) return -1; + if(0 == foo_17041<4>(4)) return -1; + if(0 == foo_17041<5>(5)) return -1; + return 0; +} + +} + + + + diff --git a/libs/config/test/boost_no_explicit_cvt_ops.ipp b/libs/config/test/boost_no_explicit_cvt_ops.ipp new file mode 100644 index 0000000000..c0d68c4522 --- /dev/null +++ b/libs/config/test/boost_no_explicit_cvt_ops.ipp @@ -0,0 +1,33 @@ +// (C) Copyright Beman Dawes 2008 + +// 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) + +// See http://www.boost.org/libs/config for more information. + +// MACRO: BOOST_NO_EXPLICIT_CONVERSION_OPERATORS +// TITLE: C++0x explicit conversion operators unavailable +// DESCRIPTION: The compiler does not support C++0x explicit conversion operators + +#if defined(__GNUC__) && !defined(__GXX_EXPERIMENTAL_CXX0X__) && !defined(BOOST_INTEL_STDCXX0X) +# error This feature is not available in non-C++0x mode +#endif + +namespace boost_no_explicit_conversion_operators { + +void quiet_warning(int){} + + struct foo { + explicit operator int() { return 1; } + }; + +int test() +{ + foo f; + int i = int(f); + quiet_warning(i); + return 0; +} + +} diff --git a/libs/config/test/boost_no_extern_template.ipp b/libs/config/test/boost_no_extern_template.ipp new file mode 100644 index 0000000000..0965470b5a --- /dev/null +++ b/libs/config/test/boost_no_extern_template.ipp @@ -0,0 +1,41 @@ +// (C) Copyright Beman Dawes 2008 + +// 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) + +// See http://www.boost.org/libs/config for more information. + +// MACRO: BOOST_NO_EXTERN_TEMPLATE +// TITLE: C++0x extern template unavailable +// DESCRIPTION: The compiler does not support C++0x extern template + +namespace boost_no_extern_template { + +template<class T, class U> void f(T const* p, U const* q) +{ + p = q; +} + +template <class T> +class must_not_compile +{ +public: + void f(T const* p, int const* q); +}; + +template <class T> +void must_not_compile<T>::f(T const* p, int const* q) +{ + p = q; +} + +extern template void f<>(int const*, float const*); +extern template class must_not_compile<int>; + +int test() +{ + return 0; +} + +} diff --git a/libs/config/test/boost_no_fenv_h.ipp b/libs/config/test/boost_no_fenv_h.ipp new file mode 100644 index 0000000000..1bb71160e3 --- /dev/null +++ b/libs/config/test/boost_no_fenv_h.ipp @@ -0,0 +1,58 @@ +// (C) Copyright John Maddock 2001. +// (C) Copyright Bryce Lelbach 2010. +// 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) + +// See http://www.boost.org/libs/config for most recent version. + +// MACRO: BOOST_NO_FENV_H +// TITLE: fenv.h +// DESCRIPTION: There is no standard <fenv.h> available. If <fenv.h> is +// available, <boost/detail/fenv.hpp> should be included +// instead of directly including <fenv.h>. + +#include <fenv.h> + +namespace boost_no_fenv_h { + +int test() +{ + /// C++0x required typedefs + typedef ::fenv_t has_fenv_t; + typedef ::fexcept_t has_fexcept_t; + + /// C++0x required macros + #if !defined(FE_DIVBYZERO) + #error platform does not define FE_DIVBYZERO + #endif + + #if !defined(FE_INEXACT) + #error platform does not define FE_INEXACT + #endif + + #if !defined(FE_ALL_EXCEPT) + #error platform does not define FE_ALL_EXCEPT + #endif + + int i; + fexcept_t fe; + fenv_t env; + + i = feclearexcept(FE_ALL_EXCEPT); + i += fetestexcept(FE_ALL_EXCEPT); // All flags should be zero + i += fegetexceptflag(&fe, FE_ALL_EXCEPT); + i += fesetexceptflag(&fe, FE_ALL_EXCEPT); + i += feraiseexcept(0); + i += fesetround(fegetround()); + i += fegetenv(&env); + i += fesetenv(&env); + i += feholdexcept(&env); + if(i) + i += feupdateenv(&env); + + return i; +} + +} + diff --git a/libs/config/test/boost_no_func_tmp_order.ipp b/libs/config/test/boost_no_func_tmp_order.ipp new file mode 100644 index 0000000000..ab6986514b --- /dev/null +++ b/libs/config/test/boost_no_func_tmp_order.ipp @@ -0,0 +1,49 @@ +// (C) Copyright John Maddock 2001. +// 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) + +// See http://www.boost.org/libs/config for most recent version. + +// MACRO: BOOST_NO_FUNCTION_TEMPLATE_ORDERING +// TITLE: no function template ordering +// DESCRIPTION: The compiler does not perform +// function template ordering or its function +// template ordering is incorrect. +// +// template<typename T> void f(T); // #1 +// template<typename T, typename U> void f(T (*)(U)); // #2 +// void bar(int); +// f(&bar); // should choose #2. + + +namespace boost_no_function_template_ordering{ + +template<typename T> +bool f(T) +{ + return false; +} + +template<typename T, typename U> +bool f(T (*)(U)) +{ + return true; +} + +void bar(int) +{ +} + +int test() +{ + int i = 0; + return f(i) || !f(&bar); +} + +} + + + + + diff --git a/libs/config/test/boost_no_function_template_default_args.ipp b/libs/config/test/boost_no_function_template_default_args.ipp new file mode 100644 index 0000000000..686d44ce7f --- /dev/null +++ b/libs/config/test/boost_no_function_template_default_args.ipp @@ -0,0 +1,38 @@ +// (C) Copyright Mathias Gaunard 2009. +// 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) + +// See http://www.boost.org/libs/config for the most recent version. + +// MACRO: BOOST_NO_FUNCTION_TEMPLATE_DEFAULT_ARGS +// TITLE: Default template arguments for function templates +// DESCRIPTION: Default template arguments for function templates are not supported. + +namespace boost_no_function_template_default_args +{ + +template<typename T = int> +T foo() +{ + return 0; +} + +template<typename T, typename U> +bool is_same(T, U) +{ + return false; +} + +template<typename T> +bool is_same(T, T) +{ + return true; +} + +int test() +{ + return !is_same(foo<>(), 0) || is_same(foo<>(), 0L); +} + +} // namespace boost_no_function_template_default_args diff --git a/libs/config/test/boost_no_function_type_spec.ipp b/libs/config/test/boost_no_function_type_spec.ipp new file mode 100644 index 0000000000..d91d0fb4e1 --- /dev/null +++ b/libs/config/test/boost_no_function_type_spec.ipp @@ -0,0 +1,44 @@ +// (C) Copyright John Maddock 2001. +// (C) Copyright Aleksey Gurtovoy 2003. +// (C) Copyright Alisdair Meredith 2006. +// 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) + +// See http://www.boost.org/libs/config for most recent version. + +// MACRO: BOOST_NO_FUNCTION_TYPE_SPECIALIZATIONS +// TITLE: template specialisations of function types +// DESCRIPTION: If the compiler cannot handle template specialisations +// for function types + + +namespace boost_no_function_type_specializations{ + +template< typename T > struct is_function +{ +}; + +struct X {}; +enum Y { value }; + +// Tesst can declare specializations +typedef is_function< int( int ) > scalar_types; +typedef is_function< X( X ) > user_defined_type; +typedef is_function< int( Y ) > check_enum; +typedef is_function< X( X, int ) > multiple_arguments; + +// Partial specialization test +// confirm const, volatile, pointers and references in args +template< typename X, typename Y, typename Z > +struct is_function< X( Y const &, volatile Z * ) > +{ +}; + + +int test() +{ + return 0; +} + +} diff --git a/libs/config/test/boost_no_i64_limits.ipp b/libs/config/test/boost_no_i64_limits.ipp new file mode 100644 index 0000000000..b82bf2f583 --- /dev/null +++ b/libs/config/test/boost_no_i64_limits.ipp @@ -0,0 +1,29 @@ +// (C) Copyright John Maddock 2001. +// 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) + +// See http://www.boost.org/libs/config for most recent version. + +// MACRO: BOOST_NO_MS_INT64_NUMERIC_LIMITS +// TITLE: std::numeric_limits<__int64> +// DESCRIPTION: The C++ implementation does not provide the a specialisation +// for std::numeric_limits<__int64>. + +#include <limits> + +namespace boost_no_ms_int64_numeric_limits{ + +int test() +{ + if(0 == std::numeric_limits<__int64>::is_specialized) return -1; + if(0 == std::numeric_limits<unsigned __int64>::is_specialized) return -1; + return 0; +} + +} + + + + + diff --git a/libs/config/test/boost_no_initializer_lists.ipp b/libs/config/test/boost_no_initializer_lists.ipp new file mode 100644 index 0000000000..5bc58c22b7 --- /dev/null +++ b/libs/config/test/boost_no_initializer_lists.ipp @@ -0,0 +1,34 @@ +// (C) Copyright Daniel James 2008. +// 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) + +// See http://www.boost.org/libs/config for most recent version. + + +// MACRO: BOOST_NO_INITIALIZER_LISTS +// TITLE: Initializer Lists +// DESCRIPTION: If the compiler does not support C++0x initializer lists + +#include <initializer_list> +#include <vector> +#include <string> + +namespace boost_no_initializer_lists { + +void quiet_warning(const std::initializer_list<int>&){} + +void f(std::initializer_list<int>) +{ +} + +int test() +{ + std::vector<std::string> v{"once", "upon", "a", "time"}; // See C++ std 8.5.4 + f( { 1, 2, 3, 4 } ); + std::initializer_list<int> x = { 1, 2 }; + quiet_warning(x); + return 0; +} + +} diff --git a/libs/config/test/boost_no_inline_memb_init.ipp b/libs/config/test/boost_no_inline_memb_init.ipp new file mode 100644 index 0000000000..4f8c45d7c8 --- /dev/null +++ b/libs/config/test/boost_no_inline_memb_init.ipp @@ -0,0 +1,55 @@ +// (C) Copyright John Maddock 2001. +// 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) + +// See http://www.boost.org/libs/config for most recent version. + +// MACRO: BOOST_NO_INCLASS_MEMBER_INITIALIZATION +// TITLE: inline member constant initialisation +// DESCRIPTION: Compiler violates std::9.4.2/4. + + +namespace boost_no_inclass_member_initialization{ + +struct UDT{}; + + +template <bool b1, bool b2, bool b3, bool b4, bool b5, bool b6, bool b7> +struct ice_or_helper +{ + static const bool value = true; +}; +template <> +struct ice_or_helper<false, false, false, false, false, false, false> +{ + static const bool value = false; +}; + +template <bool b1, bool b2, bool b3 = false, bool b4 = false, bool b5 = false, bool b6 = false, bool b7 = false> +struct ice_or +{ + static const bool value = ice_or_helper<b1, b2, b3, b4, b5, b6, b7>::value; +}; + +template <class T> +struct is_int +{ + static const bool value = false; +}; + +template <> +struct is_int<int> +{ + static const bool value = true; +}; + +int test() +{ + typedef int a1[ice_or< is_int<int>::value, is_int<UDT>::value>::value ? 1 : -1]; + return 0; +} + +} + + diff --git a/libs/config/test/boost_no_integral_int64_t.ipp b/libs/config/test/boost_no_integral_int64_t.ipp new file mode 100644 index 0000000000..eb11640a85 --- /dev/null +++ b/libs/config/test/boost_no_integral_int64_t.ipp @@ -0,0 +1,54 @@ +// (C) Copyright John Maddock 2001. +// 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) + +// See http://www.boost.org/libs/config for most recent version. + +// MACRO: BOOST_NO_INTEGRAL_INT64_T +// TITLE: long long and integral constant expressions +// DESCRIPTION: The platform supports long long in integral constant expressions. + +#include <cstdlib> + + +namespace boost_no_integral_int64_t{ + +#ifdef BOOST_NO_INCLASS_MEMBER_INITIALIZATION +enum{ mask = 1uLL << 50 }; + +template <unsigned long long m> +struct llt +{ + enum{ value = m }; +}; +#else +#ifdef __GNUC__ +__extension__ +#endif +static const unsigned long long mask = 1uLL << 50; + +#ifdef __GNUC__ +__extension__ +#endif +template <unsigned long long m> +struct llt +{ +#ifdef __GNUC__ +__extension__ +#endif + static const unsigned long long value = m; +}; +#endif + +int test() +{ + return llt<mask>::value != (1uLL << 50); +} + +} + + + + + diff --git a/libs/config/test/boost_no_iosfwd.ipp b/libs/config/test/boost_no_iosfwd.ipp new file mode 100644 index 0000000000..86ac42e62f --- /dev/null +++ b/libs/config/test/boost_no_iosfwd.ipp @@ -0,0 +1,23 @@ +// (C) Copyright Peter Dimov 2007. +// 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) + +// See http://www.boost.org/libs/config for most recent version. + +// MACRO: BOOST_NO_IOSFWD +// TITLE: <iosfwd> +// DESCRIPTION: The <iosfwd> header is missing + +#include <iosfwd> + +namespace boost_no_iosfwd +{ + +int test() +{ + return 0; +} + +} + diff --git a/libs/config/test/boost_no_iostream.ipp b/libs/config/test/boost_no_iostream.ipp new file mode 100644 index 0000000000..abaceac330 --- /dev/null +++ b/libs/config/test/boost_no_iostream.ipp @@ -0,0 +1,25 @@ +// (C) Copyright Peter Dimov 2007. +// 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) + +// See http://www.boost.org/libs/config for most recent version. + +// MACRO: BOOST_NO_IOSTREAM +// TITLE: No iostream support +// DESCRIPTION: The <iostream>, <istream>, <ostream> headers are missing + +#include <iostream> +#include <istream> +#include <ostream> + +namespace boost_no_iostream +{ + +int test() +{ + return 0; +} + +} + diff --git a/libs/config/test/boost_no_is_abstract.ipp b/libs/config/test/boost_no_is_abstract.ipp new file mode 100644 index 0000000000..d44695c8d9 --- /dev/null +++ b/libs/config/test/boost_no_is_abstract.ipp @@ -0,0 +1,53 @@ +// (C) Copyright John Maddock and Dave Abrahams 2002. +// 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) + +// See http://www.boost.org/libs/config for most recent version. + +// MACRO: BOOST_NO_IS_ABSTRACT +// TITLE: is_abstract implementation technique +// DESCRIPTION: Some compilers can't handle the code used for is_abstract even if they support SFINAE. + + +namespace boost_no_is_abstract{ + +#if defined(__CODEGEARC__) +template<class T> +struct is_abstract_test +{ + enum{ value = __is_abstract(T) }; +}; +#else +template<class T> +struct is_abstract_test +{ + // Deduction fails if T is void, function type, + // reference type (14.8.2/2)or an abstract class type + // according to review status issue #337 + // + template<class U> + static double check_sig(U (*)[1]); + template<class U> + static char check_sig(...); + +#ifdef __GNUC__ + enum{ s1 = sizeof(is_abstract_test<T>::template check_sig<T>(0)) }; +#else + enum{ s1 = sizeof(check_sig<T>(0)) }; +#endif + + enum{ value = (s1 == sizeof(char)) }; +}; +#endif + +struct non_abstract{}; +struct abstract{ virtual void foo() = 0; }; + +int test() +{ + return is_abstract_test<non_abstract>::value == is_abstract_test<abstract>::value; +} + +} + diff --git a/libs/config/test/boost_no_iter_construct.ipp b/libs/config/test/boost_no_iter_construct.ipp new file mode 100644 index 0000000000..e87a76fc44 --- /dev/null +++ b/libs/config/test/boost_no_iter_construct.ipp @@ -0,0 +1,38 @@ +// (C) Copyright John Maddock 2001. +// 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) + +// See http://www.boost.org/libs/config for most recent version. + +// MACRO: BOOST_NO_TEMPLATED_ITERATOR_CONSTRUCTORS +// TITLE: template iterator-constructors +// DESCRIPTION: The standard library does not provide +// templated iterator constructors for its containers. + +#include <vector> +#include <deque> +#include <list> + +namespace boost_no_templated_iterator_constructors{ + +int test() +{ + std::vector<int> v1; + std::deque<int> d1; + std::list<char> l1; + + // + // now try constructors: + std::vector<long> v2(d1.begin(), d1.end()); + std::deque<long> d2(v1.begin(), v1.end()); + std::list<long> l2(d1.begin(), d1.end()); + + return 0; +} + +} + + + + diff --git a/libs/config/test/boost_no_lambdas.ipp b/libs/config/test/boost_no_lambdas.ipp new file mode 100644 index 0000000000..3f6ae2b08f --- /dev/null +++ b/libs/config/test/boost_no_lambdas.ipp @@ -0,0 +1,25 @@ +// (C) Copyright Beman Dawes 2009 + +// 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) + +// See http://www.boost.org/libs/config for more information. + +// MACRO: BOOST_NO_LAMBDAS +// TITLE: C++0x lambda feature unavailable +// DESCRIPTION: The compiler does not support the C++0x lambda feature + +#if defined(__GNUC__) && !defined(__GXX_EXPERIMENTAL_CXX0X__) && !defined(BOOST_INTEL_STDCXX0X) +# error This feature is not available in non-C++0x mode +#endif + +namespace boost_no_lambdas { + +int test() +{ + [](){}; + return 0; +} + +} diff --git a/libs/config/test/boost_no_limits.ipp b/libs/config/test/boost_no_limits.ipp new file mode 100644 index 0000000000..e7a011b88f --- /dev/null +++ b/libs/config/test/boost_no_limits.ipp @@ -0,0 +1,34 @@ +// (C) Copyright John Maddock 2001. +// 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) + +// See http://www.boost.org/libs/config for most recent version. + +// MACRO: BOOST_NO_LIMITS +// TITLE: <limits> +// DESCRIPTION: The C++ implementation does not provide the <limits> header. + +#include <limits> + +namespace boost_no_limits{ + +int test() +{ + if(0 == std::numeric_limits<int>::is_specialized) return -1; + if(0 == std::numeric_limits<long>::is_specialized) return -1; + if(0 == std::numeric_limits<char>::is_specialized) return -1; + if(0 == std::numeric_limits<unsigned char>::is_specialized) return -1; + if(0 == std::numeric_limits<signed char>::is_specialized) return -1; + if(0 == std::numeric_limits<float>::is_specialized) return -1; + if(0 == std::numeric_limits<double>::is_specialized) return -1; + if(0 == std::numeric_limits<long double>::is_specialized) return -1; + return 0; +} + +} + + + + + diff --git a/libs/config/test/boost_no_limits_const_exp.ipp b/libs/config/test/boost_no_limits_const_exp.ipp new file mode 100644 index 0000000000..8438f7eae9 --- /dev/null +++ b/libs/config/test/boost_no_limits_const_exp.ipp @@ -0,0 +1,42 @@ +// (C) Copyright John Maddock 2001. +// 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) + +// See http://www.boost.org/libs/config for most recent version. + +// MACRO: BOOST_NO_LIMITS_COMPILE_TIME_CONSTANTS +// TITLE: compile time constants in <limits> +// DESCRIPTION: constants such as numeric_limits<T>::is_signed +// are not available for use at compile-time. + +#include <limits> + +namespace boost_no_limits_compile_time_constants{ + +struct UDT{}; + +template <int i> +struct assert_ice +{ + enum { value = i }; +}; + +int test() +{ + assert_ice< ::std::numeric_limits<int>::is_signed > one; + assert_ice< ::std::numeric_limits<double>::is_specialized > two; + assert_ice< ::std::numeric_limits<UDT>::is_specialized > three; + assert_ice< ::std::numeric_limits<UDT>::is_signed > four; + (void)one; + (void)two; + (void)three; + (void)four; + return 0; +} + +} + + + + diff --git a/libs/config/test/boost_no_limits_lowest.ipp b/libs/config/test/boost_no_limits_lowest.ipp new file mode 100644 index 0000000000..ae09aa724f --- /dev/null +++ b/libs/config/test/boost_no_limits_lowest.ipp @@ -0,0 +1,31 @@ +// (C) Copyright Vicente J. Botet Escriba 2010. +// 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) + +// See http://www.boost.org/libs/config for most recent version. + +// MACRO: BOOST_NO_NUMERIC_LIMITS_LOWEST +// TITLE: static function lowest() in numeric_limits class <limits> +// DESCRIPTION: static function numeric_limits<T>::lowest() are not available for use. + +#include <limits> + +namespace boost_no_numeric_limits_lowest{ + +int f() +{ + // this is never called, it just has to compile: + return std::numeric_limits<int>::lowest(); +} + +int test() +{ + return 0; +} + +} + + + + diff --git a/libs/config/test/boost_no_ll_limits.ipp b/libs/config/test/boost_no_ll_limits.ipp new file mode 100644 index 0000000000..8f7db7dca6 --- /dev/null +++ b/libs/config/test/boost_no_ll_limits.ipp @@ -0,0 +1,37 @@ +// (C) Copyright John Maddock 2001. +// 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) + +// See http://www.boost.org/libs/config for most recent version. + +// MACRO: BOOST_NO_LONG_LONG_NUMERIC_LIMITS +// TITLE: std::numeric_limits<long long> +// DESCRIPTION: The C++ implementation does not provide the a specialisation +// for std::numeric_limits<long long>. + +#include <limits> + +namespace boost_no_long_long_numeric_limits{ + +int test() +{ +#ifdef __GNUC__ +__extension__ +#endif + typedef long long llt; +#ifdef __GNUC__ +__extension__ +#endif + typedef unsigned long long ullt; + if(0 == std::numeric_limits<llt>::is_specialized) return -1; + if(0 == std::numeric_limits<ullt>::is_specialized) return -1; + return 0; +} + +} + + + + + diff --git a/libs/config/test/boost_no_long_long.ipp b/libs/config/test/boost_no_long_long.ipp new file mode 100644 index 0000000000..52ee3edcf5 --- /dev/null +++ b/libs/config/test/boost_no_long_long.ipp @@ -0,0 +1,36 @@ +// (C) Copyright John Maddock 2001. +// 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) + +// See http://www.boost.org/libs/config for most recent version. + +// MACRO: BOOST_NO_LONG_LONG +// TITLE: C++0x long long unavailable +// DESCRIPTION: The platform does not support C++0x long long. + +#include <cstdlib> + + +namespace boost_no_long_long{ + +int test() +{ +#ifdef __GNUC__ + __extension__ long long lli = 0LL; + __extension__ unsigned long long ulli = 0uLL; +#else + long long lli = 0LL; + unsigned long long ulli = 0uLL; +#endif + (void)&lli; + (void)&ulli; + return 0; +} + +} + + + + + diff --git a/libs/config/test/boost_no_mem_func_spec.ipp b/libs/config/test/boost_no_mem_func_spec.ipp new file mode 100644 index 0000000000..96cf92a278 --- /dev/null +++ b/libs/config/test/boost_no_mem_func_spec.ipp @@ -0,0 +1,62 @@ +// (C) Copyright John Maddock 2002. +// 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) + +// See http://www.boost.org/libs/config for most recent version. + +// MACRO: BOOST_NO_MEMBER_FUNCTION_SPECIALIZATIONS +// TITLE: Specialisation of individual member functions. +// DESCRIPTION: Verify that specializations of individual members +// of template classes work OK. + + +namespace boost_no_member_function_specializations{ + + +template<class T> +class foo +{ +public: + foo(); + foo(const T&); + ~foo(); + int bar(); +}; + +// declare specialisations: +template<> foo<int>::foo(); +template<> foo<int>::foo(const int&); +template<> foo<int>::~foo(); +template<> int foo<int>::bar(); + +// provide defaults: +template<class T> foo<T>::foo(){} +template<class T> foo<T>::foo(const T&){} +template<class T> foo<T>::~foo(){} +template<class T> int foo<T>::bar(){ return 0; } + +// provide defs: +template<> foo<int>::foo(){} +template<> foo<int>::foo(const int&){} +template<> foo<int>::~foo(){} +template<> int foo<int>::bar(){ return 1; } + + +int test() +{ + foo<double> f1; + foo<int> f2; + f1.bar(); + f2.bar(); + return 0; +} + + +} + + + + + + diff --git a/libs/config/test/boost_no_mem_tem_keyword.ipp b/libs/config/test/boost_no_mem_tem_keyword.ipp new file mode 100644 index 0000000000..4f0901fc55 --- /dev/null +++ b/libs/config/test/boost_no_mem_tem_keyword.ipp @@ -0,0 +1,69 @@ +// (C) Copyright John Maddock 2001. +// 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) + +// See http://www.boost.org/libs/config for most recent version. + +// MACRO: BOOST_NO_MEMBER_TEMPLATE_KEYWORD +// TITLE: member templates keyword +// DESCRIPTION: Member template keyword not supported. + +namespace boost_no_member_template_keyword{ + +#ifndef BOOST_NO_MEMBER_TEMPLATES + +template <class T> +struct foo +{ + template <class U> + struct nested + { + typedef foo<U> other; + }; + template <class U> + void mfoo(const U&); +}; + +template <class T> +template <class U> +void foo<T>::mfoo(const U&) +{ +} + +template <class T> +void test_proc(T i) +{ + foo<double> f1; + typedef foo<T> ifoo; + f1.mfoo(i); + f1.template mfoo<T>(i); + typedef typename ifoo::template nested<double> bound_t; + typedef typename bound_t::other other; + other o; + (void) &o; // avoid "unused variable" warning +} + +#else +template <class T> +void test_proc(T) +{ +} +#endif + +int test() +{ + test_proc(0); + return 0; +} + + +} + + + + + + + + diff --git a/libs/config/test/boost_no_mem_tem_pnts.ipp b/libs/config/test/boost_no_mem_tem_pnts.ipp new file mode 100644 index 0000000000..ad96620273 --- /dev/null +++ b/libs/config/test/boost_no_mem_tem_pnts.ipp @@ -0,0 +1,50 @@ +// Copyright (C) Joaquin M Lopez Munoz 2004. +// 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) + +// See http://www.boost.org/libs/config for most recent version. + +// MACRO: BOOST_NO_POINTER_TO_MEMBER_TEMPLATE_PARAMETERS +// TITLE: pointers to members as template arguments +// DESCRIPTION: Non-type template parameters which take pointers +// to members, fail to work correctly. + + +namespace boost_no_pointer_to_member_template_parameters{ + +struct pair +{ + int x, y; + + pair(int x_,int y_) + : x(x_), y(y_) + {} +}; + +template<int pair::* PtrToPairMember> +struct foo +{ + int bar(pair& p) + { + return p.*PtrToPairMember; + } +}; + +int test() +{ + pair p(0,1); + foo<&pair::x> fx; + foo<&pair::y> fy; + + if((fx.bar(p) != 0) || (fy.bar(p) != 1)) + return 1; + return 0; +} + +} + + + + + diff --git a/libs/config/test/boost_no_mem_templ_frnds.ipp b/libs/config/test/boost_no_mem_templ_frnds.ipp new file mode 100644 index 0000000000..c1c1b63084 --- /dev/null +++ b/libs/config/test/boost_no_mem_templ_frnds.ipp @@ -0,0 +1,72 @@ +// (C) Copyright John Maddock 2001. +// 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) + +// See http://www.boost.org/libs/config for most recent version. + +// MACRO: BOOST_NO_MEMBER_TEMPLATE_FRIENDS +// TITLE: member template friends +// DESCRIPTION: Member template friend syntax +// ("template<class P> friend class frd;") +// described in the C++ Standard, +// 14.5.3, not supported. + + +namespace boost_no_member_template_friends{ + +template <class T> +class foobar; + +template <class T> +class foo; + +template <class T> +bool must_be_friend_proc(const foo<T>& f); + +template <class T> +class foo +{ +private: + template<typename Y> friend class foobar; + template<typename Y> friend class foo; + template<typename Y> friend bool must_be_friend_proc(const foo<Y>& f); + int i; +public: + foo(){ i = 0; } + template <class U> + foo(const foo<U>& f){ i = f.i; } +}; + +template <class T> +bool must_be_friend_proc(const foo<T>& f) +{ return f.i != 0; } + +template <class T> +class foobar +{ + int i; +public: + template <class U> + foobar(const foo<U>& f) + { i = f.i; } +}; + + +int test() +{ + foo<int> fi; + foo<double> fd(fi); + must_be_friend_proc(fd); + foobar<long> fb(fi); + (void) &fb; // avoid "unused variable" warning + return 0; +} + +} + + + + + + diff --git a/libs/config/test/boost_no_mem_templates.ipp b/libs/config/test/boost_no_mem_templates.ipp new file mode 100644 index 0000000000..873580f3c2 --- /dev/null +++ b/libs/config/test/boost_no_mem_templates.ipp @@ -0,0 +1,64 @@ +// (C) Copyright John Maddock 2001. +// 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) + +// See http://www.boost.org/libs/config for most recent version. + +// MACRO: BOOST_NO_MEMBER_TEMPLATES +// TITLE: member templates +// DESCRIPTION: Member template functions not fully supported. + +#ifndef BOOST_NESTED_TEMPLATE +#define BOOST_NESTED_TEMPLATE template +#endif + + +namespace boost_no_member_templates{ + +template <class T> +struct foo +{ + template <class U> + struct nested + { + typedef foo<U> other; + }; + template <class U> + void mfoo(const U&); +}; + +template <class T> +template <class U> +void foo<T>::mfoo(const U&) +{ +} + +template <class T> +void test_proc(T i) +{ + foo<double> f1; + typedef foo<T> ifoo; + f1.mfoo(i); + //f1.template mfoo<T>(i); + typedef typename ifoo::BOOST_NESTED_TEMPLATE nested<double> bound_t; + typedef typename bound_t::other other; + other o; + (void) &o; +} + +int test() +{ + test_proc(0); + return 0; +} + + +} + + + + + + + diff --git a/libs/config/test/boost_no_nested_friendship.ipp b/libs/config/test/boost_no_nested_friendship.ipp new file mode 100644 index 0000000000..7ff9cc42fe --- /dev/null +++ b/libs/config/test/boost_no_nested_friendship.ipp @@ -0,0 +1,44 @@ +// Copyright (C) 2008 N. Musatti +// 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) + +// See http://www.boost.org/libs/config for most recent version. + +// MACRO: BOOST_NO_NESTED_FRIENDSHIP +// TITLE: Access to private members from nested classes +// DESCRIPTION: If the compiler fails to support access to private members +// from nested classes + +namespace boost_no_nested_friendship { + +class A { +public: + A() {} + struct B { + int f(A& a) + { + a.f1(); + a.f2(a); + return a.b; + } + }; + +private: + static int b; + static void f1(){} + template <class T> + static void f2(const T&){} +}; + +int A::b = 0; + +int test() +{ + A a; + A::B b; + return b.f(a); +} + +} + diff --git a/libs/config/test/boost_no_noexcept.ipp b/libs/config/test/boost_no_noexcept.ipp new file mode 100644 index 0000000000..f041ef412f --- /dev/null +++ b/libs/config/test/boost_no_noexcept.ipp @@ -0,0 +1,26 @@ +// Copyright (C) 2011 Takaya Saito +// 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) + +// See http://www.boost.org/libs/config for most recent version. + +// MACRO: BOOST_NO_NOEXCEPT +// TITLE: C++0x noexcept unavailable +// DESCRIPTION: The compiler does not support C++0x noexcept + +namespace boost_no_noexcept { + +void quiet_warning(bool){} + +int f() noexcept ; +int g() noexcept( noexcept( f() ) ) ; + +int test() +{ + bool b = noexcept( g() ); + quiet_warning(b); + return 0; +} + +} diff --git a/libs/config/test/boost_no_nullptr.ipp b/libs/config/test/boost_no_nullptr.ipp new file mode 100644 index 0000000000..dd06f7fdd2 --- /dev/null +++ b/libs/config/test/boost_no_nullptr.ipp @@ -0,0 +1,24 @@ +// (C) Copyright Beman Dawes 2009 + +// 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) + +// See http://www.boost.org/libs/config for more information. + +// MACRO: BOOST_NO_NULLPTR +// TITLE: C++0x nullptr feature unavailable +// DESCRIPTION: The compiler does not support the C++0x nullptr feature + +namespace boost_no_nullptr { + +void quiet_warning(const int*){} + +int test() +{ + int * p = nullptr; + quiet_warning(p); + return 0; +} + +} diff --git a/libs/config/test/boost_no_ops_in_namespace.ipp b/libs/config/test/boost_no_ops_in_namespace.ipp new file mode 100644 index 0000000000..895d9bae0e --- /dev/null +++ b/libs/config/test/boost_no_ops_in_namespace.ipp @@ -0,0 +1,73 @@ +// (C) Copyright Jeremy Siek 1999. +// (C) Copyright David Abrahams 1999. +// (C) Copyright John Maddock 2001. +// 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) + +// See http://www.boost.org/libs/config for most recent version. + +// MACRO: BOOST_NO_OPERATORS_IN_NAMESPACE +// TITLE: friend operators in namespace +// DESCRIPTION: Compiler requires inherited operator +// friend functions to be defined at namespace scope, +// then using'ed to boost. +// Probably GCC specific. See boost/operators.hpp for example. + +namespace boost{ + +// +// the following is taken right out of <boost/operators.hpp> +// +template <class T> +struct addable1 +{ + friend T operator+(T x, const T& y) { return x += y; } + friend bool operator != (const T& a, const T& b) { return !(a == b); } +}; + +struct spoiler1 +{}; + +spoiler1 operator+(const spoiler1&,const spoiler1&); +bool operator !=(const spoiler1&, const spoiler1&); + + +} // namespace boost + +namespace boost_no_operators_in_namespace{ + +struct spoiler2 +{}; + +spoiler2 operator+(const spoiler2&,const spoiler2&); +bool operator !=(const spoiler2&, const spoiler2&); + + +class add : public boost::addable1<add> +{ + int val; +public: + add(int i) { val = i; } + add(const add& a){ val = a.val; } + add& operator+=(const add& a) { val += a.val; return *this; } + bool operator==(const add& a)const { return val == a.val; } +}; + +int test() +{ + add a1(2); + add a2(3); + add a3(0); + a3 = a1 + a2; + bool b1 = (a1 == a2); + b1 = (a1 != a2); + (void)b1; + return 0; +} + +} + + + + diff --git a/libs/config/test/boost_no_part_spec_def_args.ipp b/libs/config/test/boost_no_part_spec_def_args.ipp new file mode 100644 index 0000000000..91ef53768c --- /dev/null +++ b/libs/config/test/boost_no_part_spec_def_args.ipp @@ -0,0 +1,46 @@ +// (C) Copyright John Maddock 2008. +// 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) + +// See http://www.boost.org/libs/config for most recent version. + +// MACRO: BOOST_NO_PARTIAL_SPECIALIZATION_IMPLICIT_DEFAULT_ARGS +// TITLE: Default arguments in partial specialization +// DESCRIPTION: The compiler chokes if a partial specialization relies on default arguments in the primary template. + +namespace boost_no_partial_specialization_implicit_default_args{ + +template <class T> +struct one +{ +}; + +template <class T1, class T2 = void> +struct tag +{ +}; + +template <class T1> +struct tag<one<T1> > +{ +}; + +template <class T> +void consume_variable(T const&){} + +int test() +{ + tag<int> t1; + consume_variable(t1); + tag<one<int> > t2; + consume_variable(t2); + tag<int, double> t3; + consume_variable(t3); + tag<one<int>, double> t4; + consume_variable(t4); + return 0; +} + +} + diff --git a/libs/config/test/boost_no_partial_spec.ipp b/libs/config/test/boost_no_partial_spec.ipp new file mode 100644 index 0000000000..036744eb5e --- /dev/null +++ b/libs/config/test/boost_no_partial_spec.ipp @@ -0,0 +1,56 @@ +// (C) Copyright John Maddock 2001. +// 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) + +// See http://www.boost.org/libs/config for most recent version. + +// MACRO: BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION +// TITLE: partial specialisation +// DESCRIPTION: Class template partial specialization +// (14.5.4 [temp.class.spec]) not supported. + + +namespace boost_no_template_partial_specialization{ + +template <class T> +struct partial1 +{ + typedef T& type; +}; + +template <class T> +struct partial1<T&> +{ + typedef T& type; +}; + +template <class T, bool b> +struct partial2 +{ + typedef T& type; +}; + +template <class T> +struct partial2<T,true> +{ + typedef T type; +}; + + +int test() +{ + int i = 0; + partial1<int&>::type p1 = i; + partial2<int&,true>::type p2 = i; + (void)p1; + (void)p2; + (void)i; + return 0; +} + +} + + + + diff --git a/libs/config/test/boost_no_priv_aggregate.ipp b/libs/config/test/boost_no_priv_aggregate.ipp new file mode 100644 index 0000000000..ca1aee785a --- /dev/null +++ b/libs/config/test/boost_no_priv_aggregate.ipp @@ -0,0 +1,39 @@ +// (C) Copyright John Maddock 2001. +// 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) + +// See http://www.boost.org/libs/config for most recent version. + +// MACRO: BOOST_NO_PRIVATE_IN_AGGREGATE +// TITLE: private in aggregate types +// DESCRIPTION: The compiler misreads 8.5.1, treating classes +// as non-aggregate if they contain private or +// protected member functions. + + +namespace boost_no_private_in_aggregate{ + +struct t +{ +private: + void foo(){ i = j; } +public: + void uncallable(); // silences warning from GCC + int i; + int j; +}; + + +int test() +{ + t inst = { 0, 0, }; + (void) &inst; // avoid "unused variable" warning + return 0; +} + +} + + + + diff --git a/libs/config/test/boost_no_ptr_mem_const.ipp b/libs/config/test/boost_no_ptr_mem_const.ipp new file mode 100644 index 0000000000..ef6dda5cb0 --- /dev/null +++ b/libs/config/test/boost_no_ptr_mem_const.ipp @@ -0,0 +1,86 @@ +// Copyright (c) 2000 +// Cadenza New Zealand Ltd +// +// (C) Copyright John Maddock 2001. +// +// 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) + +// See http://www.boost.org/libs/config for the most recent version. + +// MACRO: BOOST_NO_POINTER_TO_MEMBER_CONST +// TITLE: pointers to const member functions +// DESCRIPTION: The compiler does not correctly handle +// pointers to const member functions, preventing use +// of these in overloaded function templates. +// See boost/functional.hpp for example. + +#include <functional> + +namespace boost_no_pointer_to_member_const{ + +template <class S, class T> +class const_mem_fun_t : public std::unary_function<const T*, S> +{ +public: + explicit const_mem_fun_t(S (T::*p)() const) + : + ptr(p) + {} + S operator()(const T* p) const + { + return (p->*ptr)(); + } +private: + S (T::*ptr)() const; +}; + +template <class S, class T, class A> +class const_mem_fun1_t : public std::binary_function<const T*, A, S> +{ +public: + explicit const_mem_fun1_t(S (T::*p)(A) const) + : + ptr(p) + {} + S operator()(const T* p, const A& x) const + { + return (p->*ptr)(x); + } +private: + S (T::*ptr)(A) const; +}; + +template<class S, class T> +inline const_mem_fun_t<S,T> mem_fun(S (T::*f)() const) +{ + return const_mem_fun_t<S,T>(f); +} + +template<class S, class T, class A> +inline const_mem_fun1_t<S,T,A> mem_fun(S (T::*f)(A) const) +{ + return const_mem_fun1_t<S,T,A>(f); +} + +class tester +{ +public: + void foo1()const{} + int foo2(int i)const{ return i*2; } +}; + + +int test() +{ + boost_no_pointer_to_member_const::mem_fun(&tester::foo1); + boost_no_pointer_to_member_const::mem_fun(&tester::foo2); + return 0; +} + +} + + + + diff --git a/libs/config/test/boost_no_raw_literals.ipp b/libs/config/test/boost_no_raw_literals.ipp new file mode 100644 index 0000000000..3362db3059 --- /dev/null +++ b/libs/config/test/boost_no_raw_literals.ipp @@ -0,0 +1,27 @@ +// (C) Copyright Beman Dawes 2008 + +// 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) + +// See http://www.boost.org/libs/config for more information. + +// MACRO: BOOST_NO_RAW_LITERALS +// TITLE: C++0x raw string literals unavailable +// DESCRIPTION: The compiler does not support C++0x raw string literals + +namespace boost_no_raw_literals { + +void quiet_warning(const char*){} +void quiet_warning(const wchar_t*){} + +int test() +{ + const char* s = R"(abc)"; + quiet_warning(s); + const wchar_t* ws = LR"(abc)"; + quiet_warning(ws); + return 0; +} + +} diff --git a/libs/config/test/boost_no_ret_det.ipp b/libs/config/test/boost_no_ret_det.ipp new file mode 100644 index 0000000000..c2f08ac291 --- /dev/null +++ b/libs/config/test/boost_no_ret_det.ipp @@ -0,0 +1,36 @@ +// (C) Copyright John Maddock 2001. +// 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) + +// See http://www.boost.org/libs/config for the most recent version. + +// MACRO: BOOST_NO_UNREACHABLE_RETURN_DETECTION +// TITLE: detection of unreachable returns +// DESCRIPTION: If a return is unreachable, then no return +// statement should be required, however some +// compilers insist on it, while other issue a +// bunch of warnings if it is in fact present. + + +namespace boost_no_unreachable_return_detection{ + +int checker() +{ + throw 0; + // no return statement: we don't ever get here... +} + +int check = 0; + +int test() +{ + if(check) + return checker(); + return 0; +} + +} + + + diff --git a/libs/config/test/boost_no_rtti.ipp b/libs/config/test/boost_no_rtti.ipp new file mode 100644 index 0000000000..dd8992bcea --- /dev/null +++ b/libs/config/test/boost_no_rtti.ipp @@ -0,0 +1,57 @@ +// (C) Copyright John Maddock 2008. +// 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) + +// See http://www.boost.org/libs/config for most recent version. + +// MACRO: BOOST_NO_RTTI +// TITLE: RTTI unavailable +// DESCRIPTION: The compiler does not support RTTI in this mode + +#include <typeinfo> + +class A +{ +public: + A(){} + virtual void t(); +}; + +void A::t() +{ +} + +class B : public A +{ +public: + B(){} + virtual void t(); +}; + +void B::t() +{ +} + +namespace boost_no_rtti +{ + +int check_f(const A& a) +{ + return typeid(a) == typeid(B) ? 0 : 1; +} + +int test() +{ + try{ + B b; + return check_f(b); + } + catch(...) + { + return 1; + } +} + +} + diff --git a/libs/config/test/boost_no_rvalue_references.ipp b/libs/config/test/boost_no_rvalue_references.ipp new file mode 100644 index 0000000000..4540bb640c --- /dev/null +++ b/libs/config/test/boost_no_rvalue_references.ipp @@ -0,0 +1,26 @@ +// Copyright (C) 2007 Douglas Gregor +// 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) + +// See http://www.boost.org/libs/config for most recent version. + +// MACRO: BOOST_NO_RVALUE_REFERENCES +// TITLE: C++0x rvalue references unavailable +// DESCRIPTION: The compiler does not support C++0x rvalue references + +namespace boost_no_rvalue_references { + +void g(int&) {} + +template<typename F, typename T> +void forward(F f, T&& t) { f(static_cast<T&&>(t)); } + +int test() +{ + int x; + forward(g, x); + return 0; +} + +} diff --git a/libs/config/test/boost_no_scoped_enums.ipp b/libs/config/test/boost_no_scoped_enums.ipp new file mode 100644 index 0000000000..8b6a4a667c --- /dev/null +++ b/libs/config/test/boost_no_scoped_enums.ipp @@ -0,0 +1,28 @@ +// (C) Copyright Beman Dawes 2008 + +// 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) + +// See http://www.boost.org/libs/config for more information. + +// MACRO: BOOST_NO_SCOPED_ENUMS +// TITLE: C++0x scoped enum unavailable +// DESCRIPTION: The compiler does not support C++0x scoped enum + +namespace boost_no_scoped_enums { + +int test() +{ + enum class scoped_enum { yes, no, maybe }; + // This tests bug http://gcc.gnu.org/bugzilla/show_bug.cgi?id=38064 + bool b = (scoped_enum::yes == scoped_enum::yes) + && (scoped_enum::yes != scoped_enum::no) + && (scoped_enum::yes < scoped_enum::no) + && (scoped_enum::yes <= scoped_enum::no) + && (scoped_enum::no > scoped_enum::yes) + && (scoped_enum::no >= scoped_enum::yes); + return b ? 0 : 1; +} + +} diff --git a/libs/config/test/boost_no_sfinae.ipp b/libs/config/test/boost_no_sfinae.ipp new file mode 100644 index 0000000000..57dad28250 --- /dev/null +++ b/libs/config/test/boost_no_sfinae.ipp @@ -0,0 +1,68 @@ +// (C) Copyright Eric Friedman 2003. +// Some modifications by Jeremiah Willcock and Jaakko Jarvi. +// Use, modification, and distribution is 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) + +// MACRO: BOOST_NO_SFINAE +// TITLE: SFINAE (substitution failure is not an error) +// DESCRIPTION: SFINAE not supported. + + +namespace boost_no_sfinae { + +namespace f1_a { +template <typename T> +int f1(T*, float) +{ + return 0; +} +} using f1_a::f1; + +namespace f1_b { +template <typename T> +int f1(T*, int, typename T::int_* = 0) +{ + return 1; +} +} using f1_b::f1; + +namespace f2_a { +template <typename T> +int f2(T*, float) +{ + return 2; +} +} using f2_a::f2; + +namespace f2_b { +template <typename T> +typename T::int_ f2(T*, int) +{ + return 3; +} +} using f2_b::f2; + +struct test_t +{ + typedef int int_; +}; + +struct test2_t {}; + +int test() +{ + test_t* t = 0; + test2_t* t2 = 0; + bool correct = + (f1(t, 0) == 1) && + (f1(t2, 0) == 0) && + (f2(t, 0) == 3) && + (f2(t2, 0) == 2); + return !correct; +} + +} + + + diff --git a/libs/config/test/boost_no_sfinae_expr.ipp b/libs/config/test/boost_no_sfinae_expr.ipp new file mode 100644 index 0000000000..c3ce89e817 --- /dev/null +++ b/libs/config/test/boost_no_sfinae_expr.ipp @@ -0,0 +1,37 @@ +// (C) Copyright Mathias Gaunard 2009. +// 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) + +// See http://www.boost.org/libs/config for the most recent version. + +// MACRO: BOOST_NO_SFINAE_EXPR +// TITLE: SFINAE for expressions +// DESCRIPTION: SFINAE for expressions not supported. + +namespace boost_no_sfinae_expr +{ + +template<typename T> +struct has_foo +{ + typedef char NotFound; + struct Found { char x[2]; }; + + template<int> struct dummy {}; + + template<class X> static Found test(dummy< sizeof((*(X*)0).foo(), 0) >*); + template<class X> static NotFound test( ... ); + + static const bool value = (sizeof(Found) == sizeof(test<T>(0))); +}; + +struct test1 {}; +struct test2 { void foo(); }; + +int test() +{ + return has_foo<test1>::value || !has_foo<test2>::value; +} + +} // namespace boost_no_sfinae_expr diff --git a/libs/config/test/boost_no_sstream.ipp b/libs/config/test/boost_no_sstream.ipp new file mode 100644 index 0000000000..6d06b11a63 --- /dev/null +++ b/libs/config/test/boost_no_sstream.ipp @@ -0,0 +1,29 @@ +// (C) Copyright John Maddock 2001. +// 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) + +// See http://www.boost.org/libs/config for the most recent version. + +// MACRO: BOOST_NO_STRINGSTREAM +// TITLE: <sstream> +// DESCRIPTION: The C++ implementation does not provide the <sstream> header. + +#include <sstream> +#include <string> + +namespace boost_no_stringstream{ + +int test() +{ + std::stringstream ss; + ss << "abc"; + std::string s = ss.str(); + return (s != "abc"); +} + +} + + + + diff --git a/libs/config/test/boost_no_static_assert.ipp b/libs/config/test/boost_no_static_assert.ipp new file mode 100644 index 0000000000..858d91bc98 --- /dev/null +++ b/libs/config/test/boost_no_static_assert.ipp @@ -0,0 +1,20 @@ +// Copyright (C) 2007 Douglas Gregor +// 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) + +// See http://www.boost.org/libs/config for most recent version. + +// MACRO: BOOST_NO_STATIC_ASSERT +// TITLE: C++0x static_assert unavailable +// DESCRIPTION: The compiler does not support C++0x static assertions + +namespace boost_no_static_assert { + +int test() +{ + static_assert(true, "OK"); + return 0; +} + +} diff --git a/libs/config/test/boost_no_std_allocator.ipp b/libs/config/test/boost_no_std_allocator.ipp new file mode 100644 index 0000000000..da88386b7f --- /dev/null +++ b/libs/config/test/boost_no_std_allocator.ipp @@ -0,0 +1,70 @@ +// (C) Copyright John Maddock 2001. +// 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) + +// See http://www.boost.org/libs/config for the most recent version. + +// MACRO: BOOST_NO_STD_ALLOCATOR +// TITLE: std::allocator +// DESCRIPTION: The C++ standard library does not provide +// a standards conforming std::allocator. + +#ifndef BOOST_NESTED_TEMPLATE +#define BOOST_NESTED_TEMPLATE template +#endif + +#include <memory> + +namespace boost_no_std_allocator{ + +template <class T> +int test_allocator(const T& i) +{ + typedef std::allocator<int> alloc1_t; + typedef typename alloc1_t::size_type size_type; + typedef typename alloc1_t::difference_type difference_type; + typedef typename alloc1_t::pointer pointer; + typedef typename alloc1_t::const_pointer const_pointer; + typedef typename alloc1_t::reference reference; + typedef typename alloc1_t::const_reference const_reference; + typedef typename alloc1_t::value_type value_type; + + typedef typename alloc1_t::BOOST_NESTED_TEMPLATE rebind<double> binder_t; + typedef typename binder_t::other alloc2_t; + + alloc1_t a1; + alloc1_t a2(a1); + + pointer p = a1.allocate(1); + const_pointer cp = p; + a1.construct(p,i); + size_type s = a1.max_size(); + (void)s; + reference r = *p; + const_reference cr = *cp; + if(p != a1.address(r)) return -1; + if(cp != a1.address(cr)) return -1; + a1.destroy(p); + a1.deallocate(p,1); + + alloc2_t a3(a1); + // this chokes early versions of the MSL library + // and isn't currently required by anything in boost + // so don't test for now... + // a3 = a2; + return 0; +} + + +int test() +{ + return test_allocator(0); +} + +} + + + + + diff --git a/libs/config/test/boost_no_std_distance.ipp b/libs/config/test/boost_no_std_distance.ipp new file mode 100644 index 0000000000..93affff7a2 --- /dev/null +++ b/libs/config/test/boost_no_std_distance.ipp @@ -0,0 +1,31 @@ +// (C) Copyright John Maddock 2001. +// 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) + +// See http://www.boost.org/libs/config for the most recent version. + +// MACRO: BOOST_NO_STD_DISTANCE +// TITLE: std::distance +// DESCRIPTION: The platform does not have a conforming version of std::distance. + +#include <algorithm> +#include <iterator> + + +namespace boost_no_std_distance{ + +int test() +{ + const char* begin = 0; + const char* end = 0; + if(std::distance(begin, end)) return -1; + return 0; +} + +} + + + + + diff --git a/libs/config/test/boost_no_std_iter_traits.ipp b/libs/config/test/boost_no_std_iter_traits.ipp new file mode 100644 index 0000000000..31a9394d5f --- /dev/null +++ b/libs/config/test/boost_no_std_iter_traits.ipp @@ -0,0 +1,80 @@ +// (C) Copyright John Maddock 2001. +// 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) + +// See http://www.boost.org/libs/config for the most recent version. + +// MACRO: BOOST_NO_STD_ITERATOR_TRAITS +// TITLE: std::iterator_traits +// DESCRIPTION: The compiler does not provide a standard +// compliant implementation of std::iterator_traits. +// Note that the compiler may still have a non-standard +// implementation. + +#include <iterator> +#include <stddef.h> + +namespace boost_no_std_iterator_traits{ + +struct UDT_iterator +{ + typedef int value_type; + typedef ptrdiff_t difference_type; + typedef int* pointer; + typedef int& reference; + typedef std::input_iterator_tag iterator_category; +}; + +struct UDT{}; + + +int test() +{ + std::iterator_traits<UDT_iterator>::value_type v = 0; + std::iterator_traits<UDT_iterator>::difference_type d = 0; + std::iterator_traits<UDT_iterator>::pointer p = &v; + std::iterator_traits<UDT_iterator>::reference r = v; + std::iterator_traits<UDT_iterator>::iterator_category cat; + + std::iterator_traits<UDT*>::value_type v2; + std::iterator_traits<UDT*>::difference_type d2 = 0; + std::iterator_traits<UDT*>::pointer p2 = &v2; + std::iterator_traits<UDT*>::reference r2 = v2; + std::iterator_traits<UDT*>::iterator_category cat2; + + std::iterator_traits<const UDT*>::value_type v3; + std::iterator_traits<const UDT*>::difference_type d3 = 0; + std::iterator_traits<const UDT*>::pointer p3 = &v3; + std::iterator_traits<const UDT*>::reference r3 = v3; + std::iterator_traits<const UDT*>::iterator_category cat3; + + // + // suppress some warnings: + // + (void) &v; + (void) &d; + (void) &p; + (void) &r; + (void) &cat; + + (void) &v2; + (void) &d2; + (void) &p2; + (void) &r2; + (void) &cat2; + + (void) &v3; + (void) &d3; + (void) &p3; + (void) &r3; + (void) &cat3; + + return 0; +} + +} + + + + diff --git a/libs/config/test/boost_no_std_iterator.ipp b/libs/config/test/boost_no_std_iterator.ipp new file mode 100644 index 0000000000..e5332ef359 --- /dev/null +++ b/libs/config/test/boost_no_std_iterator.ipp @@ -0,0 +1,67 @@ +// (C) Copyright John Maddock 2001. +// 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) + +// See http://www.boost.org/libs/config for the most recent version. + +// MACRO: BOOST_NO_STD_ITERATOR +// TITLE: std::iterator +// DESCRIPTION: The C++ implementation fails to provide the +// std::iterator class. + +#include <iterator> +#include <stddef.h> + +namespace boost_no_std_iterator{ + + +int test() +{ + typedef std::iterator< + std::random_access_iterator_tag, + int, + ptrdiff_t, + int*, + int& + > iterator_type; + + iterator_type::value_type v = 0; + iterator_type::difference_type d = 0; + iterator_type::pointer p = &v; + iterator_type::reference r = v; + iterator_type::iterator_category cat; + + typedef std::iterator< + std::random_access_iterator_tag, + int + > iterator_type_2; + + iterator_type_2::value_type v2 = 0; + iterator_type_2::difference_type d2 = 0; + iterator_type_2::pointer p2 = &v2; + iterator_type_2::reference r2 = v2; + iterator_type_2::iterator_category cat2; + // + // suppress some warnings: + // + (void) &v; + (void) &d; + (void) &p; + (void) &r; + (void) &cat; + + (void) &v2; + (void) &d2; + (void) &p2; + (void) &r2; + (void) &cat2; + + return 0; +} + +} + + + + diff --git a/libs/config/test/boost_no_std_locale.ipp b/libs/config/test/boost_no_std_locale.ipp new file mode 100644 index 0000000000..29d8e32324 --- /dev/null +++ b/libs/config/test/boost_no_std_locale.ipp @@ -0,0 +1,36 @@ +// (C) Copyright John Maddock 2001. +// 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) + +// See http://www.boost.org/libs/config for the most recent version. + +// MACRO: BOOST_NO_STD_LOCALE +// TITLE: std::locale +// DESCRIPTION: The standard library lacks std::locale. + +#include <locale> + +namespace boost_no_std_locale{ + +int test() +{ + std::locale l1; + // + // ideally we would construct a locale from a facet, + // but that requires template member functions which + // may not be available, instead just check that we can + // construct a pointer to a facet: + // + const std::ctype<char>* pct = 0; + (void) &l1; + (void) &pct; + return 0; +} + +} + + + + + diff --git a/libs/config/test/boost_no_std_messages.ipp b/libs/config/test/boost_no_std_messages.ipp new file mode 100644 index 0000000000..3fbd6f07e8 --- /dev/null +++ b/libs/config/test/boost_no_std_messages.ipp @@ -0,0 +1,39 @@ +// (C) Copyright John Maddock 2001. +// 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) + +// See http://www.boost.org/libs/config for the most recent version. + +// MACRO: BOOST_NO_STD_MESSAGES +// TITLE: std::messages<charT> +// DESCRIPTION: The standard library lacks a conforming std::messages facet. + +#include <locale> + + +namespace boost_no_std_messages{ + +// +// this just has to complile, not run: +// +void test_messages(const std::messages<char>& m) +{ + static const std::locale l; + static const std::string name("foobar"); + m.close(m.open(name, l)); +} + +int test() +{ + const std::messages<char>* pmf = 0; + (void) &pmf; + return 0; +} + +} + + + + + diff --git a/libs/config/test/boost_no_std_min_max.ipp b/libs/config/test/boost_no_std_min_max.ipp new file mode 100644 index 0000000000..a8260062b7 --- /dev/null +++ b/libs/config/test/boost_no_std_min_max.ipp @@ -0,0 +1,33 @@ +// (C) Copyright John Maddock 2001. +// 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) + +// See http://www.boost.org/libs/config for the most recent version. + +// MACRO: BOOST_NO_STD_MIN_MAX +// TITLE: std::min and std::max +// DESCRIPTION: The C++ standard library does not provide +// the (min)() and (max)() template functions that +// should be in <algorithm>. + +#include <algorithm> + +namespace boost_no_std_min_max{ + + +int test() +{ + int i = 0; + int j = 2; + if((std::min)(i,j) != 0) return -1; + if((std::max)(i,j) != 2) return -1; + + return 0; +} + +} + + + + diff --git a/libs/config/test/boost_no_std_oi_assign.ipp b/libs/config/test/boost_no_std_oi_assign.ipp new file mode 100644 index 0000000000..9d5061442d --- /dev/null +++ b/libs/config/test/boost_no_std_oi_assign.ipp @@ -0,0 +1,42 @@ +// (C) Copyright John Maddock 2001. +// 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) + +// See http://www.boost.org/libs/config for the most recent version. + +// MACRO: BOOST_NO_STD_OUTPUT_ITERATOR_ASSIGN +// TITLE: That the std output iterators are assignable +// DESCRIPTION: Some std lib output iterators are not assignable +// even this is required by the standard. + +#include <iterator> +#include <list> +#include <iostream> + + +namespace boost_no_std_output_iterator_assign { + +int test() +{ + std::list<int> l; + std::back_insert_iterator<std::list<int> > bi1(l); + std::back_insert_iterator<std::list<int> > bi2(l); + bi1 = bi2; + + std::front_insert_iterator<std::list<int> > fi1(l); + std::front_insert_iterator<std::list<int> > fi2(l); + fi1 = fi2; + + std::ostream_iterator<char> osi1(std::cout); + std::ostream_iterator<char> osi2(std::cout); + osi1 = osi2; + + return 0; +} + +} + + + + diff --git a/libs/config/test/boost_no_std_typeinfo.ipp b/libs/config/test/boost_no_std_typeinfo.ipp new file mode 100644 index 0000000000..a55a94d81f --- /dev/null +++ b/libs/config/test/boost_no_std_typeinfo.ipp @@ -0,0 +1,26 @@ +// (C) Copyright Peter Dimov 2007. +// 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) + +// See http://www.boost.org/libs/config for most recent version. + +// MACRO: BOOST_NO_STD_TYPEINFO +// TITLE: type_info not in namespace std +// DESCRIPTION: The <typeinfo> header declares type_info in the global namespace instead of std + +#include <typeinfo> + +namespace boost_no_std_typeinfo +{ +void quiet_warning(const std::type_info*){} + +int test() +{ + std::type_info * p = 0; + quiet_warning(p); + return 0; +} + +} + diff --git a/libs/config/test/boost_no_std_unordered.ipp b/libs/config/test/boost_no_std_unordered.ipp new file mode 100644 index 0000000000..c7ad0869df --- /dev/null +++ b/libs/config/test/boost_no_std_unordered.ipp @@ -0,0 +1,27 @@ +// (C) Copyright John Maddock and Dave Abrahams 2002. +// 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) + +// See http://www.boost.org/libs/config for most recent version. + +// MACRO: BOOST_NO_STD_UNORDERED +// TITLE: <unordered_map> and <unordered_set> +// DESCRIPTION: Check for C++0x unordered container support + +#include <unordered_map> +#include <unordered_set> + +namespace boost_no_std_unordered{ + +int test() +{ + std::unordered_map<int, int> im; + std::unordered_set<int> is; + std::unordered_multimap<int, int> imm; + std::unordered_multiset<int> ims; + return im.size() + is.size() + imm.size() + ims.size(); // all zero +} + +} + diff --git a/libs/config/test/boost_no_std_use_facet.ipp b/libs/config/test/boost_no_std_use_facet.ipp new file mode 100644 index 0000000000..c207af7d37 --- /dev/null +++ b/libs/config/test/boost_no_std_use_facet.ipp @@ -0,0 +1,29 @@ +// (C) Copyright John Maddock 2001. +// 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) + +// See http://www.boost.org/libs/config for the most recent version. + +// MACRO: BOOST_NO_STD_USE_FACET +// TITLE: std::use_facet +// DESCRIPTION: The standard library lacks a conforming std::use_facet. + +#include <locale> + +namespace boost_no_std_use_facet{ + +int test() +{ + std::locale l; + const std::ctype<char>& ct = std::use_facet<std::ctype<char> >(l); + (void)ct; + return 0; +} + +} + + + + + diff --git a/libs/config/test/boost_no_std_wstreambuf.ipp b/libs/config/test/boost_no_std_wstreambuf.ipp new file mode 100644 index 0000000000..1be252eed2 --- /dev/null +++ b/libs/config/test/boost_no_std_wstreambuf.ipp @@ -0,0 +1,108 @@ +// (C) Copyright John Maddock 2001. +// 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) + +// See http://www.boost.org/libs/config for most recent version. + +// MACRO: BOOST_NO_STD_WSTREAMBUF +// TITLE: std::basic_streambuf<wchar_t> +// DESCRIPTION: The standard library lacks std::basic_streambuf<wchar_t>. + +#include <iostream> +#include <streambuf> +#include <string> + +namespace boost_no_std_wstreambuf{ + +template <class charT, + class traits = ::std::char_traits<charT> > +class parser_buf : public ::std::basic_streambuf<charT, traits> +{ + typedef ::std::basic_streambuf<charT, traits> base_type; + typedef typename base_type::int_type int_type; + typedef typename base_type::char_type char_type; + typedef typename base_type::pos_type pos_type; + typedef ::std::streamsize streamsize; + typedef typename base_type::off_type off_type; +public: + parser_buf() : base_type() { setbuf(0, 0); } + const charT* getnext() { return this->gptr(); } +protected: + std::basic_streambuf<charT, traits>* setbuf(char_type* s, streamsize n); + typename parser_buf<charT, traits>::pos_type seekpos(pos_type sp, ::std::ios_base::openmode which); + typename parser_buf<charT, traits>::pos_type seekoff(off_type off, ::std::ios_base::seekdir way, ::std::ios_base::openmode which); +private: + parser_buf& operator=(const parser_buf&) + { return *this; }; + parser_buf(const parser_buf&){}; +}; + +template<class charT, class traits> +std::basic_streambuf<charT, traits>* +parser_buf<charT, traits>::setbuf(char_type* s, streamsize n) +{ + this->setg(s, s, s + n); + return this; +} + +template<class charT, class traits> +typename parser_buf<charT, traits>::pos_type +parser_buf<charT, traits>::seekoff(off_type off, ::std::ios_base::seekdir way, ::std::ios_base::openmode which) +{ + typedef typename parser_buf<charT, traits>::pos_type pos_type; + if(which & ::std::ios_base::out) + return pos_type(off_type(-1)); + int size = this->egptr() - this->eback(); + int pos = this->gptr() - this->eback(); + charT* g = this->eback(); + switch(way) + { + case ::std::ios_base::beg: + if((off < 0) || (off > size)) + return pos_type(off_type(-1)); + else + this->setg(g, g + off, g + size); + case ::std::ios_base::end: + if((off < 0) || (off > size)) + return pos_type(off_type(-1)); + else + this->setg(g, g + size - off, g + size); + case ::std::ios_base::cur: + { + int newpos = pos + off; + if((newpos < 0) || (newpos > size)) + return pos_type(off_type(-1)); + else + this->setg(g, g + newpos, g + size); + } + } + return static_cast<pos_type>(this->gptr() - this->eback()); +} + +template<class charT, class traits> +typename parser_buf<charT, traits>::pos_type +parser_buf<charT, traits>::seekpos(pos_type sp, ::std::ios_base::openmode which) +{ + if(which & ::std::ios_base::out) + return pos_type(off_type(-1)); + int size = this->egptr() - this->eback(); + charT* g = this->eback(); + if(off_type(sp) <= size) + { + this->setg(g, g + off_type(sp), g + size); + } + return pos_type(off_type(-1)); +} + + +int test() +{ + return 0; +} + +template class parser_buf<char>; +template class parser_buf<wchar_t>; + +} + diff --git a/libs/config/test/boost_no_std_wstring.ipp b/libs/config/test/boost_no_std_wstring.ipp new file mode 100644 index 0000000000..d79fd95faf --- /dev/null +++ b/libs/config/test/boost_no_std_wstring.ipp @@ -0,0 +1,28 @@ +// (C) Copyright John Maddock 2001. +// 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) + +// See http://www.boost.org/libs/config for most recent version. + +// MACRO: BOOST_NO_STD_WSTRING +// TITLE: std::wstring +// DESCRIPTION: The standard library lacks std::wstring. + +#include <string> + +namespace boost_no_std_wstring{ + +int test() +{ + std::wstring s; + if(*s.c_str() || (s.begin() != s.end()) || s.size() || (sizeof(std::wstring::value_type) != sizeof(wchar_t))) return -1; + return 0; +} + +} + + + + + diff --git a/libs/config/test/boost_no_stdc_namespace.ipp b/libs/config/test/boost_no_stdc_namespace.ipp new file mode 100644 index 0000000000..993aec747f --- /dev/null +++ b/libs/config/test/boost_no_stdc_namespace.ipp @@ -0,0 +1,43 @@ +// (C) Copyright John Maddock 2001. +// 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) + +// See http://www.boost.org/libs/config for most recent version. + +// MACRO: BOOST_NO_STDC_NAMESPACE +// TITLE: std:: namespace for C API's +// DESCRIPTION: The contents of C++ standard headers for C library +// functions (the <c...> headers) have not been placed +// in namespace std. This test is difficult - some libraries +// "fake" the std C functions by adding using declarations +// to import them into namespace std, unfortunately they don't +// necessarily catch all of them... + +#include <cstring> +#include <cctype> +#include <ctime> + +#undef isspace +#undef isalpha +#undef ispunct + +namespace boost_no_stdc_namespace{ + + +int test() +{ + char c = 0; +#ifndef BOOST_NO_CTYPE_FUNCTIONS + std::isspace(c); + std::isalpha(c); + std::ispunct(c); +#endif + (void)std::strlen(&c); + std::clock(); + + return 0; +} + +} + diff --git a/libs/config/test/boost_no_swprintf.ipp b/libs/config/test/boost_no_swprintf.ipp new file mode 100644 index 0000000000..4b3a460f83 --- /dev/null +++ b/libs/config/test/boost_no_swprintf.ipp @@ -0,0 +1,31 @@ +// (C) Copyright John Maddock 2001. +// 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) + +// See http://www.boost.org/libs/config for most recent version. + +// MACRO: BOOST_NO_SWPRINTF +// TITLE: swprintf +// DESCRIPTION: The platform does not have a conforming version of swprintf. + +#include <wchar.h> +#include <stdio.h> + + +namespace boost_no_swprintf{ + +int test() +{ + wchar_t buf[10]; + swprintf(buf, 10, L"%d", 10); + return 0; +} + +} + + + + + + diff --git a/libs/config/test/boost_no_template_aliases.ipp b/libs/config/test/boost_no_template_aliases.ipp new file mode 100644 index 0000000000..e420da78b6 --- /dev/null +++ b/libs/config/test/boost_no_template_aliases.ipp @@ -0,0 +1,22 @@ +// (C) Copyright Beman Dawes 2009 + +// 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) + +// See http://www.boost.org/libs/config for more information. + +// MACRO: BOOST_NO_TEMPLATE_ALIASES +// TITLE: C++0x template_aliases feature unavailable +// DESCRIPTION: The compiler does not support the C++0x template_aliases feature + +namespace boost_no_template_aliases { + +using PINT = void (*)(int); // using plus C-style type + +int test() +{ + return 0; +} + +} diff --git a/libs/config/test/boost_no_template_streams.ipp b/libs/config/test/boost_no_template_streams.ipp new file mode 100644 index 0000000000..3379d590ba --- /dev/null +++ b/libs/config/test/boost_no_template_streams.ipp @@ -0,0 +1,28 @@ +// (C) Copyright John Maddock 2008. +// 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) + +// See http://www.boost.org/libs/config for most recent version. + +// MACRO: BOOST_NO_TEMPLATED_IOSTREAMS +// TITLE: basic_iostream<> +// DESCRIPTION: The platform supports "new style" templated iostreams. + +#include <iostream> + + +namespace boost_no_templated_iostreams{ + +int test() +{ + std::basic_ostream<char, std::char_traits<char> >& osr = std::cout; + return 0; +} + +} + + + + + diff --git a/libs/config/test/boost_no_template_template.ipp b/libs/config/test/boost_no_template_template.ipp new file mode 100644 index 0000000000..a079445246 --- /dev/null +++ b/libs/config/test/boost_no_template_template.ipp @@ -0,0 +1,50 @@ +// (C) Copyright John Maddock 2002. +// 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) + +// See http://www.boost.org/libs/config for most recent version. + +// MACRO: BOOST_NO_TEMPLATE_TEMPLATES +// TITLE: template template paramters. +// DESCRIPTION: Verify that template template parameters both work +// and can be deduced through a function call. + + +namespace boost_no_template_templates{ + + +template<class T> +class foo +{ +public: + foo(){}; + foo(const T&){}; + const foo& bar()const{ return *this; } + foo& operator=(const foo&){ return *this; } +}; + +template<typename T, template<typename> class U> +U<T> sinhc_pi(const U<T> x) +{ + return x.bar(); +} + + +int test() +{ + foo<double> f1; + foo<int> f2; + f1 = sinhc_pi(f1); + f2 = sinhc_pi(f2); + return 0; +} + + +} + + + + + + diff --git a/libs/config/test/boost_no_two_phase_lookup.ipp b/libs/config/test/boost_no_two_phase_lookup.ipp new file mode 100644 index 0000000000..2c5419c8d9 --- /dev/null +++ b/libs/config/test/boost_no_two_phase_lookup.ipp @@ -0,0 +1,41 @@ +// (C) Copyright Alisdair Meredith 2006. +// 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) + +// See http://www.boost.org/libs/config for most recent version. + +// MACRO: BOOST_NO_TWO_PHASE_NAME_LOOKUP +// TITLE: Two phase name lookup +// DESCRIPTION: If the compiler does not perform two phase name lookup + +namespace boost_no_two_phase_name_lookup { + +template< class T > +struct base { + int call() { + return 1; + } +}; + +int call() { + return 0; +} + +template< class T > +struct derived : base< T > { + int call_test() { + return call(); + } +}; + +int test() +{ + derived< int > d; + return d.call_test(); +} + +} + + + diff --git a/libs/config/test/boost_no_typeid.ipp b/libs/config/test/boost_no_typeid.ipp new file mode 100644 index 0000000000..3b127d5f0d --- /dev/null +++ b/libs/config/test/boost_no_typeid.ipp @@ -0,0 +1,24 @@ +// (C) Copyright Peter Dimov 2007. +// 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) + +// See http://www.boost.org/libs/config for most recent version. + +// MACRO: BOOST_NO_TYPEID +// TITLE: typeid unavailable +// DESCRIPTION: The compiler does not support typeid in this mode + +#include <typeinfo> + +namespace boost_no_typeid +{ + +int test() +{ + typeid(int); + return 0; +} + +} + diff --git a/libs/config/test/boost_no_typename_with_ctor.ipp b/libs/config/test/boost_no_typename_with_ctor.ipp new file mode 100644 index 0000000000..68a5a0ecc7 --- /dev/null +++ b/libs/config/test/boost_no_typename_with_ctor.ipp @@ -0,0 +1,33 @@ +// Copyright (C) 2008 N. Musatti +// 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) + +// See http://www.boost.org/libs/config for most recent version. + +// MACRO: BOOST_NO_TYPENAME_WITH_CTOR +// TITLE: Use of typename keyword with constructors +// DESCRIPTION: If the compiler rejects the typename keyword when calling +// the constructor of a dependent type + +namespace boost_no_typename_with_ctor { + +struct A {}; + +template <typename T> +struct B { + typedef T type; +}; + +template <typename T> +typename T::type f() { + return typename T::type(); +} + +int test() { + A a = f<B<A> >(); + return 0; +} + +} + diff --git a/libs/config/test/boost_no_unicode_literals.ipp b/libs/config/test/boost_no_unicode_literals.ipp new file mode 100644 index 0000000000..ec8963ba80 --- /dev/null +++ b/libs/config/test/boost_no_unicode_literals.ipp @@ -0,0 +1,26 @@ +// (C) Copyright Beman Dawes 2008 + +// 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) + +// See http://www.boost.org/libs/config for more information. + +// MACRO: BOOST_NO_UNICODE_LITERALS +// TITLE: C++0x unicode literals unavailable +// DESCRIPTION: The compiler does not support C++0x Unicode literals (N2442) + +namespace boost_no_unicode_literals { + +void quiet_warning(const char*){} + +int test() +{ + const char* c8 = u8""; + const char16_t* c16 = u""; + const char32_t* c32 = U""; + quiet_warning(c8); + return 0; +} + +} diff --git a/libs/config/test/boost_no_unified_init.ipp b/libs/config/test/boost_no_unified_init.ipp new file mode 100644 index 0000000000..9f1c3b411f --- /dev/null +++ b/libs/config/test/boost_no_unified_init.ipp @@ -0,0 +1,53 @@ +// Copyright (C) 2011 John Maddock +// 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) + +// See http://www.boost.org/libs/config for most recent version. + +// MACRO: BOOST_NO_UNIFIED_INITIALIZATION_SYNTAX +// TITLE: C++0x unified initialization syntax unavailable +// DESCRIPTION: The compiler does not support C++0x unified initialization syntax: see http://en.wikipedia.org/wiki/C%2B%2B0x#Uniform_initialization + +namespace boost_no_unified_initialization_syntax { + +struct BasicStruct +{ + int x; + double y; +}; + +struct AltStruct +{ +public: + AltStruct(int x, double y) : x_{x}, y_{y} {} +private: + int x_; + double y_; +}; + +struct IdString +{ + std::string name; + int identifier; + bool operator == (const IdString& other) + { + return identifier == other.identifier && name == other.name; + } +}; + +IdString get_string() +{ + return {"SomeName", 4}; //Note the lack of explicit type. +} + +int test() +{ + BasicStruct var1{5, 3.2}; + AltStruct var2{2, 4.3}; + + IdString id{"SomeName", 4}; + return id == get_string() ? 0 : 1; +} + +} diff --git a/libs/config/test/boost_no_using_breaks_adl.ipp b/libs/config/test/boost_no_using_breaks_adl.ipp new file mode 100644 index 0000000000..437d9fdc7a --- /dev/null +++ b/libs/config/test/boost_no_using_breaks_adl.ipp @@ -0,0 +1,72 @@ +// (C) Copyright John Maddock 2001. +// 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) + +// See http://www.boost.org/libs/config for most recent version. + +// MACRO: BOOST_FUNCTION_SCOPE_USING_DECLARATION_BREAKS_ADL +// TITLE: broken ADL +// DESCRIPTION: Using declarations break argument dependent lookup +// (probably Borland specific), the fix is to use +// using namespace whatever; rather than +// using whatever::symbol;. + + +namespace boost_ns +{ + template <class T> + T* get_pointer(T* p) + { return p; } + + namespace inner2 + { + template <class T> + struct X {}; + + template <class T> + T* get_pointer(X<T>) + { return 0; } + } +} + +namespace user_ns +{ + template <class T> + struct Y{}; + + template <class T> + T* get_pointer(user_ns::Y<T>) + { return 0; } + + template <class T> + int f(T x) + { + // use this as a workaround: + //using namespace boost; + // this statement breaks ADL: + using boost_ns::get_pointer; // conforming compilers require + // this one to find the auto_ptr + // and T* overloads + return get_pointer(x) == 0; + } +} + +namespace boost_function_scope_using_declaration_breaks_adl{ + +int test() +{ + int i; + typedef void* pv; + i = user_ns::f(pv()); + i = user_ns::f(boost_ns::inner2::X<int>()); + return 0; +} + +} + + + + + + diff --git a/libs/config/test/boost_no_using_decl_overld.ipp b/libs/config/test/boost_no_using_decl_overld.ipp new file mode 100644 index 0000000000..c0174636e2 --- /dev/null +++ b/libs/config/test/boost_no_using_decl_overld.ipp @@ -0,0 +1,33 @@ +// (C) Copyright Eric Friedman 2002. +// 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) + +// MACRO: BOOST_NO_USING_DECLARATION_OVERLOADS_FROM_TYPENAME_BASE +// TITLE: using declaration function overloads from a typename base +// DESCRIPTION: The compiler will not accept a using declaration +// that brings a function from a typename used as a base class +// into a derived class if functions of the same name +// are present in the derived class. + +namespace boost_no_using_declaration_overloads_from_typename_base { + +struct base +{ + static void f() { } +}; + +template <typename T, typename Base> +struct using_overloads_from_typename_base : Base +{ + using Base::f; + static T f(const T& t) { return t; } +}; + +int test() +{ + using_overloads_from_typename_base<int,base>::f(); + return using_overloads_from_typename_base<int,base>::f(0); +} + +} diff --git a/libs/config/test/boost_no_using_template.ipp b/libs/config/test/boost_no_using_template.ipp new file mode 100644 index 0000000000..73e8b9f30a --- /dev/null +++ b/libs/config/test/boost_no_using_template.ipp @@ -0,0 +1,47 @@ +// (C) Copyright John Maddock 2001. +// 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) + +// See http://www.boost.org/libs/config for most recent version. + +// MACRO: BOOST_NO_USING_TEMPLATE +// TITLE: using template declarations +// DESCRIPTION: The compiler will not accept a using declaration +// that imports a class or function template +// into a named namespace. Probably Borland/MSVC6 specific. + +template <class T> +int global_foo(T) +{ + return 0; +} + +template <class T, class U = void> +struct op +{ + friend op<T,U> operator +(const op&, const op&) + { + return op(); + }; +}; + +namespace boost_no_using_template{ + +using ::global_foo; +using ::op; + +int test() +{ + boost_no_using_template::op<int, int> a; + boost_no_using_template::op<int, int> b; + a+b; + return boost_no_using_template::global_foo(0); +} + +} + + + + + diff --git a/libs/config/test/boost_no_variadic_macros.ipp b/libs/config/test/boost_no_variadic_macros.ipp new file mode 100644 index 0000000000..7df683b3ef --- /dev/null +++ b/libs/config/test/boost_no_variadic_macros.ipp @@ -0,0 +1,64 @@ +// Copyright (C) 2010 Edward Diener +// 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) + +// See http://www.boost.org/libs/config for most recent version. + +// MACRO: BOOST_NO_VARIADIC_MACROS +// TITLE: C++0x variadic macros unavailable +// DESCRIPTION: The compiler does not support C++0x variadic macros + +// This is a simple test + +#define TEST_VARIADIC_MACRO_SIMPLE(avalue,...) __VA_ARGS__ + +/* + + This is a more complicated test, which Steve Watanabe graciously + supplied, when I asked if it were possible to strip the parantheses + from a macro argument. I have changed the names somewhat to prevent + any common clashes with other macros in the config testing suite + by prepending to each macro name TEST_VARIADIC_MACRO_. + + You may find this test overdone and may want to remove it. + +*/ + +#define TEST_VARIADIC_MACRO_CAT(x, y) TEST_VARIADIC_MACRO_CAT_I(x, y) +#define TEST_VARIADIC_MACRO_CAT_I(x, y) x ## y + +#define TEST_VARIADIC_MACRO_APPLY(macro, args) TEST_VARIADIC_MACRO_APPLY_I(macro, args) +#define TEST_VARIADIC_MACRO_APPLY_I(macro, args) macro args + +#define TEST_VARIADIC_MACRO_STRIP_PARENS(x) TEST_VARIADIC_MACRO_EVAL((TEST_VARIADIC_MACRO_STRIP_PARENS_I x), x) +#define TEST_VARIADIC_MACRO_STRIP_PARENS_I(...) 1,1 + +#define TEST_VARIADIC_MACRO_EVAL(test, x) TEST_VARIADIC_MACRO_EVAL_I(test, x) +#define TEST_VARIADIC_MACRO_EVAL_I(test, x) TEST_VARIADIC_MACRO_MAYBE_STRIP_PARENS(TEST_VARIADIC_MACRO_TEST_ARITY test, x) + +#define TEST_VARIADIC_MACRO_TEST_ARITY(...) TEST_VARIADIC_MACRO_APPLY(TEST_VARIADIC_MACRO_TEST_ARITY_I, (__VA_ARGS__, 2, 1)) +#define TEST_VARIADIC_MACRO_TEST_ARITY_I(a,b,c,...) c + +#define TEST_VARIADIC_MACRO_MAYBE_STRIP_PARENS(cond, x) TEST_VARIADIC_MACRO_MAYBE_STRIP_PARENS_I(cond, x) +#define TEST_VARIADIC_MACRO_MAYBE_STRIP_PARENS_I(cond, x) TEST_VARIADIC_MACRO_CAT(TEST_VARIADIC_MACRO_MAYBE_STRIP_PARENS_, cond)(x) + +#define TEST_VARIADIC_MACRO_MAYBE_STRIP_PARENS_1(x) x +#define TEST_VARIADIC_MACRO_MAYBE_STRIP_PARENS_2(x) TEST_VARIADIC_MACRO_APPLY(TEST_VARIADIC_MACRO_MAYBE_STRIP_PARENS_2_I, x) +#define TEST_VARIADIC_MACRO_MAYBE_STRIP_PARENS_2_I(...) __VA_ARGS__ + +namespace boost_no_variadic_macros { + +void quiet_warning(int){} + +template<TEST_VARIADIC_MACRO_STRIP_PARENS((typename T,int))> struct test_variadic_macro_class {}; + +int test() +{ + + int x = TEST_VARIADIC_MACRO_STRIP_PARENS(3); + quiet_warning(x); + return 0; +} + +} diff --git a/libs/config/test/boost_no_variadic_templates.ipp b/libs/config/test/boost_no_variadic_templates.ipp new file mode 100644 index 0000000000..68af2d71eb --- /dev/null +++ b/libs/config/test/boost_no_variadic_templates.ipp @@ -0,0 +1,21 @@ +// Copyright (C) 2007 Douglas Gregor +// 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) + +// See http://www.boost.org/libs/config for most recent version. + +// MACRO: BOOST_NO_VARIADIC_TEMPLATES +// TITLE: C++0x variadic templates unavailable +// DESCRIPTION: The compiler does not support C++0x variadic templates + +namespace boost_no_variadic_templates { + +template<typename... Elements> struct tuple {}; + +int test() +{ + return 0; +} + +} diff --git a/libs/config/test/boost_no_void_returns.ipp b/libs/config/test/boost_no_void_returns.ipp new file mode 100644 index 0000000000..920c44bfa5 --- /dev/null +++ b/libs/config/test/boost_no_void_returns.ipp @@ -0,0 +1,34 @@ +// (C) Copyright John Maddock 2001. +// 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) + +// See http://www.boost.org/libs/config for most recent version. + +// MACRO: BOOST_NO_VOID_RETURNS +// TITLE: no void returns +// DESCRIPTION: The compiler does not allow a void function +// to return the result of calling another void +// function. +// +// void f() {} +// void g() { return f(); } + + +namespace boost_no_void_returns{ + +void f() {} + +void g() { return f(); } + +int test() +{ + return 0; +} + +} + + + + + diff --git a/libs/config/test/boost_no_wchar_t.ipp b/libs/config/test/boost_no_wchar_t.ipp new file mode 100644 index 0000000000..8a9825845d --- /dev/null +++ b/libs/config/test/boost_no_wchar_t.ipp @@ -0,0 +1,45 @@ +// (C) Copyright John Maddock 2001. +// 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) + +// See http://www.boost.org/libs/config for most recent version. + +// MACRO: BOOST_NO_INTRINSIC_WCHAR_T +// TITLE: intrinsic wchar_t +// DESCRIPTION: The C++ implementation does not provide wchar_t, +// or it is really a synonym for another integral type. +// Use this symbol to decide whether it is appropriate +// to explicitly specialize a template on wchar_t if there +// is already a specialization for other integer types. + +#ifndef BOOST_NO_CWCHAR +#include <wchar.h> +#endif + +namespace boost_no_intrinsic_wchar_t{ + +template <class T> +struct is_int{ int i; }; + +template <> struct is_int<unsigned char>{ int i; }; +template <> struct is_int<signed char>{ int i; }; +template <> struct is_int<char>{ int i; }; +template <> struct is_int<unsigned short>{ int i; }; +template <> struct is_int<short>{ int i; }; +template <> struct is_int<unsigned int>{ int i; }; +template <> struct is_int<int>{ int i; }; +template <> struct is_int<unsigned long>{ int i; }; +template <> struct is_int<long>{ int i; }; +template <> struct is_int<wchar_t>{ int i; }; + +int test() +{ + return 0; +} + +} + + + + diff --git a/libs/config/test/config_info.cpp b/libs/config/test/config_info.cpp new file mode 100644 index 0000000000..f565ec5742 --- /dev/null +++ b/libs/config/test/config_info.cpp @@ -0,0 +1,1141 @@ +// Boost config.hpp configuration test program file -----------------------// + +// (C) Copyright John Maddock 2001 - 2003. +// (C) Copyright Jens Maurer 2001. +// (C) Copyright Peter Dimov 2001. +// (C) Copyright Darin Adler 2001. +// (C) Copyright Beman Dawes 2002. +// 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) + +// See http://www.boost.org/libs/config for most recent version. +// +// Revision $Id: config_info.cpp 76122 2011-12-23 17:17:31Z johnmaddock $ +// + +#include <boost/config.hpp> +#include <boost/version.hpp> +#include <iostream> +#include <iomanip> +#include <string.h> +#include <limits.h> +#include <stdlib.h> +#include <stddef.h> + +#ifdef BOOST_HAS_UNISTD_H +#include <unistd.h> +#endif + +#if defined(__MINGW32__) +# include <_mingw.h> +#endif + +static unsigned int indent = 4; +static unsigned int width = 40; + +using std::cout; +using std::istream; + +void print_macro(const char* name, const char* value) +{ + // if name == value+1 then then macro is not defined, + // in which case we don't print anything: + if(0 != strcmp(name, value+1)) + { + for(unsigned i = 0; i < indent; ++i) std::cout.put(' '); + std::cout << std::setw(width); + cout.setf(istream::left, istream::adjustfield); + std::cout << name; + if(value[1]) + { + // macro has a value: + std::cout << value << "\n"; + } + else + { + // macro is defined but has no value: + std::cout << " [no value]\n"; + } + } +} + +#define PRINT_MACRO(X) print_macro(#X, BOOST_STRINGIZE(=X)) + +template <class T> +void print_expression(const char* expression, T val) +{ + for(unsigned i = 0; i < indent; ++i) std::cout.put(' '); + std::cout << std::setw(width); + std::cout.setf(istream::left, istream::adjustfield); + std::cout << expression << "=" << val << std::endl; +} + +#define PRINT_EXPRESSION(E) print_expression(#E, E); + +template <class T> +void print_byte_order(const char* what, T /* t */ ) +{ + T val = 0; + unsigned i; + for(i = 1; i < sizeof(T); ++i) + { + val |= (CHAR_BIT * static_cast<T>(i)) << (CHAR_BIT * static_cast<T>(i)); + } + const char* p = reinterpret_cast<const char*>(&val); + + for(i = 0; i < indent; ++i) std::cout.put(' '); + std::cout << std::setw(width); + std::cout.setf(istream::left, istream::adjustfield); + std::cout << what << "="; + for(i = 0; i < sizeof(T); ++i) + { + std::cout << (int)p[i] << " "; + } + std::cout << std::endl; +} + +#define PRINT_ORDER(T) print_byte_order(BOOST_STRINGIZE(byte order for type T), T()) + +template <class T> +void print_sign(const char* what, T t) +{ + t = static_cast<T>(-1); // cast suppresses warnings + for(unsigned i = 0; i < indent; ++i) std::cout.put(' '); + std::cout << "Type " << what << " is " << ((t > 0) ? "unsigned" : "signed") << std::endl; +} + +#define PRINT_SIGN(T) print_sign(#T, T()) + + +void print_compiler_macros() +{ + std::cout << BOOST_COMPILER << "\n"; + // Borland options: + PRINT_MACRO(__BORLANDC__); + PRINT_MACRO(__CDECL__); + PRINT_MACRO(_CHAR_UNSIGNED); + PRINT_MACRO(__CODEGUARD__); + PRINT_MACRO(__CONSOLE__); + PRINT_MACRO(_CPPUNWIND); + PRINT_MACRO(__cplusplus); + PRINT_MACRO(__FLAT__); + PRINT_MACRO(__FUNC__); + PRINT_MACRO(_M_IX86); + PRINT_MACRO(__MSDOS__); + PRINT_MACRO(__MT__ ); + PRINT_MACRO(__PASCAL__); + PRINT_MACRO(__STDC__); + PRINT_MACRO(__TLS__); + PRINT_MACRO(_WCHAR_T); + PRINT_MACRO(_Windows); + PRINT_MACRO(__WIN32__); + PRINT_MACRO(_WIN32); + PRINT_MACRO(_WIN64); + PRINT_MACRO(_WIN32_WCE); + PRINT_MACRO(WIN32); + PRINT_MACRO(_RTLDLL); + PRINT_MACRO(__DEBUG); + +// Internal MSVC 7 error workaround (Peter Dimov) + +#ifndef _NATIVE_WCHAR_T_DEFINED + PRINT_MACRO(_WCHAR_T_DEFINED); +#endif + // MSVC macros: + PRINT_MACRO(_CPPRTTI); + PRINT_MACRO(_DLL); + PRINT_MACRO(_M_ALPHA); + PRINT_MACRO(_M_MPPC); + PRINT_MACRO(_M_MRX000); + PRINT_MACRO(_M_PPC); + PRINT_MACRO(_MFC_VER); + PRINT_MACRO(_MSC_EXTENSIONS); + PRINT_MACRO(_MSC_VER); + PRINT_MACRO(_MSC_FULL_VER); + PRINT_MACRO(_MT); + PRINT_MACRO(_NATIVE_WCHAR_T_DEFINED); + // GNUC options: + PRINT_MACRO(__GNUC__); + PRINT_MACRO(__GNUC_MINOR__); + PRINT_MACRO(__GNUC_PATCHLEVEL__); + PRINT_MACRO(__STDC_VERSION__); + PRINT_MACRO(__GNUG__); + PRINT_MACRO(__STRICT_ANSI__); + PRINT_MACRO(__GXX_EXPERIMENTAL_CXX0X__); + PRINT_MACRO(__VERSION__); + PRINT_MACRO(__OPTIMIZE__); + PRINT_MACRO(__CHAR_UNSIGNED__); + PRINT_MACRO(__REGISTER_PREFIX__); + PRINT_MACRO(__USER_LABEL_PREFIX__); + PRINT_MACRO(__GNUPRO__); + PRINT_MACRO(__EXCEPTIONS); + PRINT_MACRO(__FreeBSD__); + PRINT_MACRO(__FreeBSD_cc_version); + PRINT_MACRO(__ELF__); + PRINT_MACRO(__GNUPRO__); + PRINT_MACRO(unix); + PRINT_MACRO(bsd); + PRINT_MACRO(vax); + PRINT_MACRO(mc68000); + PRINT_MACRO(m68k); + PRINT_MACRO(M68020); + PRINT_MACRO(_AM29K); + PRINT_MACRO(ns32000); + PRINT_MACRO(sun); + PRINT_MACRO(pyr); + PRINT_MACRO(sequent); + PRINT_MACRO(__i386__); + PRINT_MACRO(__sparc); + PRINT_MACRO(__sparc__); + PRINT_MACRO(__powerpc__); + PRINT_MACRO(__hppa); + PRINT_MACRO(__CYGWIN__); + PRINT_MACRO(__MINGW32__); + // HP aCC: + PRINT_MACRO(__HP_aCC); + PRINT_MACRO(_HPACC_); + PRINT_MACRO(__LP64__); + PRINT_MACRO(__RISC2_0__); + PRINT_MACRO(__STDCPP__); + PRINT_MACRO(__hppa); + PRINT_MACRO(__hpux); + PRINT_MACRO(__hp9000s800); + PRINT_MACRO(__hp9000s700); + PRINT_MACRO(_PA_RISC1_1); + PRINT_MACRO(__HPUX_SOURCE); + PRINT_MACRO(_INCLUDE__STDC_A1_SOURCE); + // SGI IRIX: + PRINT_MACRO(__sgi); + PRINT_MACRO(_COMPILER_VERSION); + // Sunpro: + PRINT_MACRO(__SUNPRO_CC); + PRINT_MACRO(__SUNPRO_CC_COMPAT); + PRINT_MACRO(__BUILTIN_VA_ARG_INCR); + PRINT_MACRO(__sun); + PRINT_MACRO(__SVR4); + PRINT_MACRO(__unix); + PRINT_MACRO(__sparcv9); + PRINT_MACRO(__i386); + PRINT_MACRO(i386); + // Metrowerks + PRINT_MACRO(__MWERKS__); + PRINT_MACRO(__MSL__); + PRINT_MACRO(__MSL_CPP__); + PRINT_MACRO(__A5__); + PRINT_MACRO(__embedded_cplusplus); + PRINT_MACRO(__fourbyteints__); + PRINT_MACRO(__IEEEdoubles__); + PRINT_MACRO(__MC68K__); + PRINT_MACRO(__MC68020__); + PRINT_MACRO(__MC68881__); + PRINT_MACRO(__MIPS__); + PRINT_MACRO(__MIPS_ISA2__); + PRINT_MACRO(__MIPS_ISA3__); + PRINT_MACRO(__MIPS_ISA4__); + PRINT_MACRO(__MWBROWSER__); + PRINT_MACRO(__profile__); + PRINT_MACRO(__powerc); + PRINT_MACRO(_powerc); + PRINT_MACRO(__POWERPC__); + PRINT_MACRO(macintosh); + PRINT_MACRO(__MACH__); + PRINT_MACRO(__APPLE__); + PRINT_MACRO(__APPLE_CC__); + // MPW (MrCpp and SCpp) + PRINT_MACRO(__MRC__); + PRINT_MACRO(__SC__); + PRINT_MACRO(__FPCE__); + PRINT_MACRO(__FPCE_IEEE__); + PRINT_MACRO(MPW_CPLUS); + PRINT_MACRO(MPW_C); + PRINT_MACRO(__MC601); + PRINT_MACRO(__POWERPC); + PRINT_MACRO(__useAppleExts__); + PRINT_MACRO(powerc); + PRINT_MACRO(MC68000); + PRINT_MACRO(THINK_PLUS); + PRINT_MACRO(mc68881); + PRINT_MACRO(__FAR_CODE__); + PRINT_MACRO(__FAR_DATA__); + PRINT_MACRO(__CFM68K__); + // EDG + PRINT_MACRO(__EDG__); + PRINT_MACRO(__EDG_VERSION__); + PRINT_MACRO(c_plusplus); // indication for strict mode + PRINT_MACRO(_BOOL); + PRINT_MACRO(_EXPLICIT); + PRINT_MACRO(__SIGNED_CHARS__); + PRINT_MACRO(_TYPENAME); + PRINT_MACRO(_WCHAR_T); + PRINT_MACRO(__ARRAY_OPERATORS); + PRINT_MACRO(__EDG_ABI_COMPATIBILITY_VERSION); + PRINT_MACRO(__EDG_IMPLICIT_USING_STD); + PRINT_MACRO(__EDG_RUNTIME_USES_NAMESPACES); + PRINT_MACRO(__BOOL_DEFINED); + PRINT_MACRO(__RTTI); + PRINT_MACRO(__PLACEMENT_DELETE); + PRINT_MACRO(__NO_LONG_LONG); + + // Intel options: + PRINT_MACRO(__INTEL__); + PRINT_MACRO(__ICC); + PRINT_MACRO(__ICL); + PRINT_MACRO(__ECC); + PRINT_MACRO(__INTEL_COMPILER); + PRINT_MACRO(__INITIAL_POINTER_SIZE); + PRINT_MACRO(_INTEGRAL_MAX_BITS); + PRINT_MACRO(__INTEL_COMPILER_BUILD_DATE); + PRINT_MACRO(__INTEL_MS_COMPAT_LEVEL); + PRINT_MACRO(__LONG_DOUBLE_SIZE__); + PRINT_MACRO(_M_X64); + PRINT_MACRO(_OPENMP); + PRINT_MACRO(_OPENMPT); + PRINT_MACRO(_PGO_INSTRUMENT); + PRINT_MACRO(__QMSPP_); + + // Cray options: + PRINT_MACRO(_CRAYC); + PRINT_MACRO(_RELEASE); + PRINT_MACRO(cray); + PRINT_MACRO(CRAY); + PRINT_MACRO(CRAY1); + PRINT_MACRO(_CRAY1); + PRINT_MACRO(_CRAYMPP); + PRINT_MACRO(_CRAYT3E); + PRINT_MACRO(_CRAYIEEE); + PRINT_MACRO(_ADDR32); + PRINT_MACRO(_ADDR64); + PRINT_MACRO(_LD64); + PRINT_MACRO(_FASTMD); + PRINT_MACRO(_MAXVL); + + // misc compilers not covered so far: + PRINT_MACRO(__USLC__); + PRINT_MACRO(__DECCXX); + PRINT_MACRO(__IBMCPP__); + PRINT_MACRO(_REENTRANT); + PRINT_MACRO(_PTHREADS); + PRINT_MACRO(__STDC_HOSTED__); + PRINT_MACRO(__COMO__); + PRINT_MACRO(__COMO_VERSION__); + PRINT_MACRO(__DM__); + PRINT_MACRO(__osf__); + PRINT_MACRO(__OSF__); + PRINT_MACRO(__QNXNTO__); + PRINT_MACRO(__QNX__); + PRINT_MACRO(_NTO_VERSION); + PRINT_MACRO(__OPEN64__); + PRINT_MACRO(__open64); +} + +void print_stdlib_macros() +{ + std::cout << BOOST_STDLIB << std::endl; + #ifdef _RWSTD_VER + // Rogue Wave 2.x config options: + PRINT_MACRO(__NO_EDG_EXCEPTION_CLASSES); + PRINT_MACRO(_RWSTD_ALLOCATOR); + PRINT_MACRO(_RWSTD_BAD_ALLOC_DEFINED); + PRINT_MACRO(_RWSTD_BAD_EXCEPTION_DEFINED); + PRINT_MACRO(_RWSTD_BOUNDS_CHECKING); + PRINT_MACRO(_RWSTD_COMPILE_INSTANTIATE); + PRINT_MACRO(_RWSTD_DEFAULT_PRECISION); + PRINT_MACRO(_RWSTD_EXCEPTION_DEFINED); + PRINT_MACRO(_RWSTD_EXCEPTION_HANDLER_IN_STD); + PRINT_MACRO(_RWSTD_EXCEPTION_PREDEFINED); + PRINT_MACRO(_RWSTD_FLT_ROUNDS_IS_CONSTANT); + PRINT_MACRO(_RWSTD_LOCALIZED_ERRORS); + PRINT_MACRO(_RWSTD_MESSAGE); + PRINT_MACRO(_RWSTD_MUTEXATTR_DEFAULT); + PRINT_MACRO(_RWSTD_NO_ANSI_SPRINTF); + PRINT_MACRO(_RWSTD_NO_ARG_MATCH); + PRINT_MACRO(_RWSTD_NO_BAD_CAST); + PRINT_MACRO(_RWSTD_NO_BASE_CLASS_MATCH); + PRINT_MACRO(_RWSTD_NO_BOOL); + PRINT_MACRO(_RWSTD_NO_BUILTIN_CTOR); + PRINT_MACRO(_RWSTD_NO_CATOPEN_CATGETS); + PRINT_MACRO(_RWSTD_NO_CLASS_PARTIAL_SPEC); + PRINT_MACRO(_RWSTD_NO_COMPLEX_DEFAULT_TEMPLATES); + PRINT_MACRO(_RWSTD_NO_COMPLICATED_EXCEPTIONS); + PRINT_MACRO(_RWSTD_NO_COMPLICATED_TYPEDEF); + PRINT_MACRO(_RWSTD_NO_CONST_INST); + PRINT_MACRO(_RWSTD_NO_CTOR_RETURN); + PRINT_MACRO(_RWSTD_NO_DEFAULT_FOR_TPARAM); + PRINT_MACRO(_RWSTD_NO_DEFAULT_TEMPLATE_ARGS); + PRINT_MACRO(_RWSTD_NO_DESTROY_BUILTIN); + PRINT_MACRO(_RWSTD_NO_DESTROY_NONBUILTIN); + PRINT_MACRO(_RWSTD_NO_EMBEDDED_TYPEDEF); + PRINT_MACRO(_RWSTD_NO_EX_SPEC); + PRINT_MACRO(_RWSTD_NO_EXCEPTIONS); + PRINT_MACRO(_RWSTD_NO_EXPLICIT); + PRINT_MACRO(_RWSTD_NO_EXPLICIT_ARG); + PRINT_MACRO(_RWSTD_NO_EXPLICIT_FUNC_INSTANTIATION); + PRINT_MACRO(_RWSTD_NO_EXPLICIT_INSTANTIATION); + PRINT_MACRO(_RWSTD_NO_EXTENSION); + PRINT_MACRO(_RWSTD_NO_FORWARD_SPECIALIZATIONS); + PRINT_MACRO(_RWSTD_NO_FPOS_T); + PRINT_MACRO(_RWSTD_NO_FRIEND_TEMPLATES); + PRINT_MACRO(_RWSTD_NO_FUNC_PARTIAL_SPEC); + PRINT_MACRO(_RWSTD_NO_GETTIMEOFDAY); + PRINT_MACRO(_RWSTD_NO_GLOBAL_TZ); + PRINT_MACRO(_RWSTD_NO_INHERITED_TYPEDEFS); + PRINT_MACRO(_RWSTD_NO_INIT_CONST_TEMPLATE_REF_ARG); + PRINT_MACRO(_RWSTD_NO_INT_TYPEDEF); + PRINT_MACRO(_RWSTD_NO_LDIV); + PRINT_MACRO(_RWSTD_NO_LEADING_UNDERSCORE); + PRINT_MACRO(_RWSTD_NO_LOCALE); + PRINT_MACRO(_RWSTD_NO_LONG_NAME); + PRINT_MACRO(_RWSTD_NO_LONGDOUBLE); + PRINT_MACRO(_RWSTD_NO_MBSTATE_T); + PRINT_MACRO(_RWSTD_NO_MEM_CLASS_TEMPLATES); + PRINT_MACRO(_RWSTD_NO_MEMBER_TEMPLATES); + PRINT_MACRO(_RWSTD_NO_MEMBER_TYPE_TPARAM); + PRINT_MACRO(_RWSTD_NO_MEMBER_WO_DEF_CTOR); + PRINT_MACRO(_RWSTD_NO_MEMMOVE); + PRINT_MACRO(_RWSTD_NO_MULTI_DIM_ARRAY); + PRINT_MACRO(_RWSTD_NO_MUTABLE); + PRINT_MACRO(_RWSTD_NO_NAME_INJECTION); + PRINT_MACRO(_RWSTD_NO_NAMESPACE); + PRINT_MACRO(_RWSTD_NO_NESTING_TEMPLATES); + PRINT_MACRO(_RWSTD_NO_NEW_BRACKETS); + PRINT_MACRO(_RWSTD_NO_NEW_DECL); + PRINT_MACRO(_RWSTD_NO_NEW_HEADER); + PRINT_MACRO(_RWSTD_NO_NEW_TEMPLATE_SYNTAX); + PRINT_MACRO(_RWSTD_NO_NONCLASS_ARROW_RETURN); + PRINT_MACRO(_RWSTD_NO_NONTYPE_ARGS); + PRINT_MACRO(_RWSTD_NO_ONLY_NEEDED_INSTANTIATION); + PRINT_MACRO(_RWSTD_NO_OVERLOAD_C_POW); + PRINT_MACRO(_RWSTD_NO_OVERLOAD_OF_TEMPLATE_FUNCTION); + PRINT_MACRO(_RWSTD_NO_OVERLOAD_WCHAR); + PRINT_MACRO(_RWSTD_NO_PART_SPEC_OVERLOAD); + PRINT_MACRO(_RWSTD_NO_RET_TEMPLATE); + PRINT_MACRO(_RWSTD_NO_SIMPLE_DEFAULT_TEMPLATES); + PRINT_MACRO(_RWSTD_NO_STATIC_CAST); + PRINT_MACRO(_RWSTD_NO_STATIC_DEF); + PRINT_MACRO(_RWSTD_NO_STATIC_DEF2); + PRINT_MACRO(_RWSTD_NO_STATIC_DEF3); + PRINT_MACRO(_RWSTD_NO_STATIC_MEM_DEF); + PRINT_MACRO(_RWSTD_NO_STI_SIMPLE); + PRINT_MACRO(_RWSTD_NO_STI_TEMPLATE); + PRINT_MACRO(_RWSTD_NO_STREAM_LONG_DOUBLE); + PRINT_MACRO(_RWSTD_NO_STRFTIME_CAPC); + PRINT_MACRO(_RWSTD_NO_STRICT_TEMPLATE_INSTANTIATE); + PRINT_MACRO(_RWSTD_NO_SWPRINTF); + PRINT_MACRO(_RWSTD_NO_TEMPLATE_ON_RETURN_TYPE); + PRINT_MACRO(_RWSTD_NO_TEMPLATE_TEMPLATE); + PRINT_MACRO(_RWSTD_NO_THREADS); + PRINT_MACRO(_RWSTD_NO_THROW_SPEC_ON_NEW); + PRINT_MACRO(_RWSTD_NO_THROW_WITH_SHARED); + PRINT_MACRO(_RWSTD_NO_TYPEDEF_INST); + PRINT_MACRO(_RWSTD_NO_TYPEDEF_OVERLOAD); + PRINT_MACRO(_RWSTD_NO_TYPENAME); + PRINT_MACRO(_RWSTD_NO_UNDEFINED_FRIEND); + PRINT_MACRO(_RWSTD_NO_UNINITIALIZED_STATIC_DEF); + PRINT_MACRO(_RWSTD_NO_WCHAR_H); + PRINT_MACRO(_RWSTD_NO_WCTYPE_H); + PRINT_MACRO(_RWSTD_NO_WIDE_CHAR); + PRINT_MACRO(_RWSTD_NO_WINT_TYPE); + PRINT_MACRO(_RWSTD_NO_WSTR); + PRINT_MACRO(_RWSTD_NOT_ALL_WSTR_CFUNCTIONS); + PRINT_MACRO(_RWSTD_POSIX_D10_THREADS); + PRINT_MACRO(_RWSTD_POSIX_THREADS); + PRINT_MACRO(_RWSTD_REQUIRES_IEEEFP); + PRINT_MACRO(_RWSTD_SOLARIS_THREADS); + PRINT_MACRO(_RWSTD_STRUCT_TM_TZ); + PRINT_MACRO(_RWSTD_WIDE_STRING_NULL_PROBLEM); + #elif defined(__STD_RWCOMPILER_H__) + // Rogue Wave 1.x std lib: + PRINT_MACRO(__NO_EDG_EXCEPTION_CLASSES); + PRINT_MACRO(RWSTD_ALLOCATOR); + PRINT_MACRO(RWSTD_BAD_ALLOC_DEFINED); + PRINT_MACRO(RWSTD_BAD_EXCEPTION_DEFINED); + PRINT_MACRO(RWSTD_BOUNDS_CHECKING); + PRINT_MACRO(RWSTD_COMPILE_INSTANTIATE); + PRINT_MACRO(RWSTD_DEFAULT_PRECISION); + PRINT_MACRO(RWSTD_EXCEPTION_DEFINED); + PRINT_MACRO(RWSTD_EXCEPTION_HANDLER_IN_STD); + PRINT_MACRO(RWSTD_EXCEPTION_PREDEFINED); + PRINT_MACRO(RWSTD_FLT_ROUNDS_IS_CONSTANT); + PRINT_MACRO(RWSTD_LOCALIZED_ERRORS); + PRINT_MACRO(RWSTD_MESSAGE); + PRINT_MACRO(RWSTD_MUTEXATTR_DEFAULT); + PRINT_MACRO(RWSTD_NO_ANSI_SPRINTF); + PRINT_MACRO(RWSTD_NO_ARG_MATCH); + PRINT_MACRO(RWSTD_NO_BAD_CAST); + PRINT_MACRO(RWSTD_NO_BASE_CLASS_MATCH); + PRINT_MACRO(RWSTD_NO_BOOL); + PRINT_MACRO(RWSTD_NO_BUILTIN_CTOR); + PRINT_MACRO(RWSTD_NO_CATOPEN_CATGETS); + PRINT_MACRO(RWSTD_NO_CLASS_PARTIAL_SPEC); + PRINT_MACRO(RWSTD_NO_COMPLEX_DEFAULT_TEMPLATES); + PRINT_MACRO(RWSTD_NO_COMPLICATED_EXCEPTIONS); + PRINT_MACRO(RWSTD_NO_COMPLICATED_TYPEDEF); + PRINT_MACRO(RWSTD_NO_CONST_INST); + PRINT_MACRO(RWSTD_NO_CTOR_RETURN); + PRINT_MACRO(RWSTD_NO_DEFAULT_FOR_TPARAM); + PRINT_MACRO(RWSTD_NO_DEFAULT_TEMPLATE_ARGS); + PRINT_MACRO(RWSTD_NO_DESTROY_BUILTIN); + PRINT_MACRO(RWSTD_NO_DESTROY_NONBUILTIN); + PRINT_MACRO(RWSTD_NO_EMBEDDED_TYPEDEF); + PRINT_MACRO(RWSTD_NO_EX_SPEC); + PRINT_MACRO(RWSTD_NO_EXCEPTIONS); + PRINT_MACRO(RWSTD_NO_EXPLICIT); + PRINT_MACRO(RWSTD_NO_EXPLICIT_ARG); + PRINT_MACRO(RWSTD_NO_EXPLICIT_FUNC_INSTANTIATION); + PRINT_MACRO(RWSTD_NO_EXPLICIT_INSTANTIATION); + PRINT_MACRO(RWSTD_NO_EXTENSION); + PRINT_MACRO(RWSTD_NO_FORWARD_SPECIALIZATIONS); + PRINT_MACRO(RWSTD_NO_FPOS_T); + PRINT_MACRO(RWSTD_NO_FRIEND_TEMPLATES); + PRINT_MACRO(RWSTD_NO_FUNC_PARTIAL_SPEC); + PRINT_MACRO(RWSTD_NO_GETTIMEOFDAY); + PRINT_MACRO(RWSTD_NO_GLOBAL_TZ); + PRINT_MACRO(RWSTD_NO_INHERITED_TYPEDEFS); + PRINT_MACRO(RWSTD_NO_INIT_CONST_TEMPLATE_REF_ARG); + PRINT_MACRO(RWSTD_NO_INT_TYPEDEF); + PRINT_MACRO(RWSTD_NO_LDIV); + PRINT_MACRO(RWSTD_NO_LEADING_UNDERSCORE); + PRINT_MACRO(RWSTD_NO_LOCALE); + PRINT_MACRO(RWSTD_NO_LONG_NAME); + PRINT_MACRO(RWSTD_NO_LONGDOUBLE); + PRINT_MACRO(RWSTD_NO_MBSTATE_T); + PRINT_MACRO(RWSTD_NO_MEM_CLASS_TEMPLATES); + PRINT_MACRO(RWSTD_NO_MEMBER_TEMPLATES); + PRINT_MACRO(RWSTD_NO_MEMBER_TYPE_TPARAM); + PRINT_MACRO(RWSTD_NO_MEMBER_WO_DEF_CTOR); + PRINT_MACRO(RWSTD_NO_MEMMOVE); + PRINT_MACRO(RWSTD_NO_MULTI_DIM_ARRAY); + PRINT_MACRO(RWSTD_NO_MUTABLE); + PRINT_MACRO(RWSTD_NO_NAME_INJECTION); + PRINT_MACRO(RWSTD_NO_NAMESPACE); + PRINT_MACRO(RWSTD_NO_NESTING_TEMPLATES); + PRINT_MACRO(RWSTD_NO_NEW_BRACKETS); + PRINT_MACRO(RWSTD_NO_NEW_DECL); + PRINT_MACRO(RWSTD_NO_NEW_HEADER); + PRINT_MACRO(RWSTD_NO_NEW_TEMPLATE_SYNTAX); + PRINT_MACRO(RWSTD_NO_NONCLASS_ARROW_RETURN); + PRINT_MACRO(RWSTD_NO_NONTYPE_ARGS); + PRINT_MACRO(RWSTD_NO_ONLY_NEEDED_INSTANTIATION); + PRINT_MACRO(RWSTD_NO_OVERLOAD_C_POW); + PRINT_MACRO(RWSTD_NO_OVERLOAD_OF_TEMPLATE_FUNCTION); + PRINT_MACRO(RWSTD_NO_OVERLOAD_WCHAR); + PRINT_MACRO(RWSTD_NO_PART_SPEC_OVERLOAD); + PRINT_MACRO(RWSTD_NO_RET_TEMPLATE); + PRINT_MACRO(RWSTD_NO_SIMPLE_DEFAULT_TEMPLATES); + PRINT_MACRO(RWSTD_NO_STATIC_CAST); + PRINT_MACRO(RWSTD_NO_STATIC_DEF); + PRINT_MACRO(RWSTD_NO_STATIC_DEF2); + PRINT_MACRO(RWSTD_NO_STATIC_DEF3); + PRINT_MACRO(RWSTD_NO_STATIC_MEM_DEF); + PRINT_MACRO(RWSTD_NO_STI_SIMPLE); + PRINT_MACRO(RWSTD_NO_STI_TEMPLATE); + PRINT_MACRO(RWSTD_NO_STREAM_LONG_DOUBLE); + PRINT_MACRO(RWSTD_NO_STRFTIME_CAPC); + PRINT_MACRO(RWSTD_NO_STRICT_TEMPLATE_INSTANTIATE); + PRINT_MACRO(RWSTD_NO_SWPRINTF); + PRINT_MACRO(RWSTD_NO_TEMPLATE_ON_RETURN_TYPE); + PRINT_MACRO(RWSTD_NO_TEMPLATE_TEMPLATE); + PRINT_MACRO(RWSTD_NO_THREADS); + PRINT_MACRO(RWSTD_NO_THROW_SPEC_ON_NEW); + PRINT_MACRO(RWSTD_NO_THROW_WITH_SHARED); + PRINT_MACRO(RWSTD_NO_TYPEDEF_INST); + PRINT_MACRO(RWSTD_NO_TYPEDEF_OVERLOAD); + PRINT_MACRO(RWSTD_NO_TYPENAME); + PRINT_MACRO(RWSTD_NO_UNDEFINED_FRIEND); + PRINT_MACRO(RWSTD_NO_UNINITIALIZED_STATIC_DEF); + PRINT_MACRO(RWSTD_NO_WCHAR_H); + PRINT_MACRO(RWSTD_NO_WCTYPE_H); + PRINT_MACRO(RWSTD_NO_WIDE_CHAR); + PRINT_MACRO(RWSTD_NO_WINT_TYPE); + PRINT_MACRO(RWSTD_NO_WSTR); + PRINT_MACRO(RWSTD_NOT_ALL_WSTR_CFUNCTIONS); + PRINT_MACRO(RWSTD_POSIX_D10_THREADS); + PRINT_MACRO(RWSTD_POSIX_THREADS); + PRINT_MACRO(RWSTD_REQUIRES_IEEEFP); + PRINT_MACRO(RWSTD_SOLARIS_THREADS); + PRINT_MACRO(RWSTD_STRUCT_TM_TZ); + PRINT_MACRO(RWSTD_WIDE_STRING_NULL_PROBLEM); + #endif + // Dinkumware options: + PRINT_MACRO(_CPPLIB_VER); + PRINT_MACRO(_GLOBAL_USING); + PRINT_MACRO(_HAS_EXCEPTIONS); + PRINT_MACRO(_HAS_MEMBER_TEMPLATES_REBIND); + PRINT_MACRO(_HAS_TEMPLATE_PARTIAL_ORDERING); + // STLPort and generic SGI STL options: + PRINT_MACRO(__SGI_STL_NO_ARROW_OPERATOR); + PRINT_MACRO(__SGI_STL_OWN_IOSTREAMS); + PRINT_MACRO(__SGI_STL_PORT); + PRINT_MACRO(__STL_AUTOMATIC_TYPE_TRAITS); + PRINT_MACRO(__STL_BASE_MATCH_BUG); + PRINT_MACRO(__STL_BASE_TYPEDEF_BUG); + PRINT_MACRO(__STL_BASE_TYPEDEF_OUTSIDE_BUG); + PRINT_MACRO(__STL_BROKEN_USING_DIRECTIVE); + PRINT_MACRO(__STL_CONST_CONSTRUCTOR_BUG); + PRINT_MACRO(__STL_DEBUG); + PRINT_MACRO(__STL_DEBUG_ALLOC); + PRINT_MACRO(__STL_DEFAULT_CONSTRUCTOR_BUG); + PRINT_MACRO(__STL_DEFAULT_TYPE_PARAM); + PRINT_MACRO(__STL_DONT_REDEFINE_STD); + PRINT_MACRO(__STL_DONT_USE_BOOL_TYPEDEF); + PRINT_MACRO(__STL_HAS_NO_EXCEPTIONS); + PRINT_MACRO(__STL_HAS_NO_NAMESPACES); + PRINT_MACRO(__STL_HAS_NO_NEW_C_HEADERS); + PRINT_MACRO(__STL_HAS_NO_NEW_IOSTREAMS); + PRINT_MACRO(__STL_IMPORT_VENDOR_CSTD); + PRINT_MACRO(__STL_LIMITED_DEFAULT_TEMPLATES); + PRINT_MACRO(__STL_LINK_TIME_INSTANTIATION); + PRINT_MACRO(__STL_LONG_LONG); + PRINT_MACRO(__STL_LOOP_INLINE_PROBLEMS); + PRINT_MACRO(__STL_MEMBER_POINTER_PARAM_BUG); + PRINT_MACRO(__STL_NEED_EXPLICIT); + PRINT_MACRO(__STL_NEED_MUTABLE); + PRINT_MACRO(__STL_NEED_TYPENAME); + PRINT_MACRO(__STL_NESTED_TYPE_PARAM_BUG); + PRINT_MACRO(__STL_NO_BAD_ALLOC); + PRINT_MACRO(__STL_NO_BOOL); + PRINT_MACRO(__STL_NO_CLASS_PARTIAL_SPECIALIZATION); + PRINT_MACRO(__STL_NO_CSTD_FUNCTION_IMPORTS); + PRINT_MACRO(__STL_NO_DEFAULT_NON_TYPE_PARAM); + PRINT_MACRO(__STL_NO_EXCEPTION_HEADER); + PRINT_MACRO(__STL_NO_EXCEPTION_SPEC); + PRINT_MACRO(__STL_NO_EXCEPTIONS); + PRINT_MACRO(__STL_NO_EXPLICIT_FUNCTION_TMPL_ARGS); + PRINT_MACRO(__STL_NO_FRIEND_TEMPLATES); + PRINT_MACRO(__STL_NO_FUNCTION_TMPL_PARTIAL_ORDER); + PRINT_MACRO(__STL_NO_IOSTREAMS); + PRINT_MACRO(__STL_NO_LONG_DOUBLE); + PRINT_MACRO(__STL_NO_MEMBER_TEMPLATE_CLASSES); + PRINT_MACRO(__STL_NO_MEMBER_TEMPLATE_KEYWORD); + PRINT_MACRO(__STL_NO_MEMBER_TEMPLATES); + PRINT_MACRO(__STL_NO_METHOD_SPECIALIZATION); + PRINT_MACRO(__STL_NO_NAMESPACES); + PRINT_MACRO(__STL_NO_NEW_IOSTREAMS); + PRINT_MACRO(__STL_NO_NEW_NEW_HEADER); + PRINT_MACRO(__STL_NO_NEW_STYLE_CASTS); + PRINT_MACRO(__STL_NO_PARTIAL_SPECIALIZATION_SYNTAX); + PRINT_MACRO(__STL_NO_QUALIFIED_FRIENDS); + PRINT_MACRO(__STL_NO_RELOPS_NAMESPACE); + PRINT_MACRO(__STL_NO_SGI_IOSTREAMS); + PRINT_MACRO(__STL_NO_STATIC_TEMPLATE_DATA); + PRINT_MACRO(__STL_NO_TEMPLATE_CONVERSIONS); + PRINT_MACRO(__STL_NO_WCHAR_T); + PRINT_MACRO(__STL_NON_TYPE_TMPL_PARAM_BUG); + PRINT_MACRO(__STL_NONTEMPL_BASE_MATCH_BUG); + PRINT_MACRO(__STL_PARTIAL_SPEC_NEEDS_TEMPLATE_ARGS); + PRINT_MACRO(__STL_RAND48); + PRINT_MACRO(__STL_STATIC_ARRAY_BUG); + PRINT_MACRO(__STL_STATIC_CONST_INIT_BUG); + PRINT_MACRO(__STL_STATIC_CONST_INIT_BUG); + PRINT_MACRO(__STL_THROW_RETURN_BUG); + PRINT_MACRO(__STL_TRIVIAL_CONSTRUCTOR_BUG); + PRINT_MACRO(__STL_TRIVIAL_DESTRUCTOR_BUG); + PRINT_MACRO(__STL_UNINITIALIZABLE_PRIVATE); + PRINT_MACRO(__STL_USE_ABBREVS); + PRINT_MACRO(__STL_USE_DEFALLOC); + PRINT_MACRO(__STL_USE_MALLOC); + PRINT_MACRO(__STL_USE_NEW_C_HEADERS); + PRINT_MACRO(__STL_USE_NEW_IOSTREAMS); + PRINT_MACRO(__STL_USE_NEWALLOC); + PRINT_MACRO(__STL_USE_OWN_NAMESPACE); + PRINT_MACRO(__STL_USE_SGI_ALLOCATORS); + PRINT_MACRO(__STL_WCHAR_T_IS_USHORT); + PRINT_MACRO(__STL_WEAK_ATTRIBUTE); + PRINT_MACRO(__STL_YVALS_H); + PRINT_MACRO(_NOTHREADS); + PRINT_MACRO(_PTHREADS); +#if defined(__SGI_STL_PORT) && (__SGI_STL_PORT > 0x0400) + PRINT_MACRO(_STLP_AUTOMATIC_TYPE_TRAITS); + PRINT_MACRO(_STLP_BASE_MATCH_BUG); + PRINT_MACRO(_STLP_BASE_TYPEDEF_BUG); + PRINT_MACRO(_STLP_BASE_TYPEDEF_OUTSIDE_BUG); + PRINT_MACRO(_STLP_BROKEN_USING_DIRECTIVE); + PRINT_MACRO(_STLP_CONST_CONSTRUCTOR_BUG); + PRINT_MACRO(_STLP_DEBUG); + PRINT_MACRO(_STLP_DEBUG_ALLOC); + PRINT_MACRO(_STLP_DEFAULT_CONSTRUCTOR_BUG); + PRINT_MACRO(_STLP_DEFAULT_TYPE_PARAM); + PRINT_MACRO(_STLP_DONT_REDEFINE_STD); + PRINT_MACRO(_STLP_DONT_USE_BOOL_TYPEDEF); + PRINT_MACRO(_STLP_HAS_NO_EXCEPTIONS); + PRINT_MACRO(_STLP_HAS_NO_NAMESPACES); + PRINT_MACRO(_STLP_HAS_NO_NEW_C_HEADERS); + PRINT_MACRO(_STLP_HAS_NO_NEW_IOSTREAMS); + PRINT_MACRO(_STLP_IMPORT_VENDOR_CSTD); + PRINT_MACRO(_STLP_LIMITED_DEFAULT_TEMPLATES); + PRINT_MACRO(_STLP_LINK_TIME_INSTANTIATION); + PRINT_MACRO(_STLP_LONG_LONG); + PRINT_MACRO(_STLP_LOOP_INLINE_PROBLEMS); + PRINT_MACRO(_STLP_MEMBER_POINTER_PARAM_BUG); + PRINT_MACRO(_STLP_NEED_EXPLICIT); + PRINT_MACRO(_STLP_NEED_MUTABLE); + PRINT_MACRO(_STLP_NEED_TYPENAME); + PRINT_MACRO(_STLP_NESTED_TYPE_PARAM_BUG); + PRINT_MACRO(_STLP_NO_ARROW_OPERATOR); + PRINT_MACRO(_STLP_NO_BAD_ALLOC); + PRINT_MACRO(_STLP_NO_BOOL); + PRINT_MACRO(_STLP_NO_CLASS_PARTIAL_SPECIALIZATION); + PRINT_MACRO(_STLP_NO_CSTD_FUNCTION_IMPORTS); + PRINT_MACRO(_STLP_NO_DEFAULT_NON_TYPE_PARAM); + PRINT_MACRO(_STLP_NO_EXCEPTION_HEADER); + PRINT_MACRO(_STLP_NO_EXCEPTION_SPEC); + PRINT_MACRO(_STLP_NO_EXCEPTIONS); + PRINT_MACRO(_STLP_NO_EXPLICIT_FUNCTION_TMPL_ARGS); + PRINT_MACRO(_STLP_NO_FRIEND_TEMPLATES); + PRINT_MACRO(_STLP_NO_FUNCTION_TMPL_PARTIAL_ORDER); + PRINT_MACRO(_STLP_NO_IOSTREAMS); + PRINT_MACRO(_STLP_NO_LONG_DOUBLE); + PRINT_MACRO(_STLP_NO_MEMBER_TEMPLATE_CLASSES); + PRINT_MACRO(_STLP_NO_MEMBER_TEMPLATE_KEYWORD); + PRINT_MACRO(_STLP_NO_MEMBER_TEMPLATES); + PRINT_MACRO(_STLP_NO_METHOD_SPECIALIZATION); + PRINT_MACRO(_STLP_NO_NAMESPACES); + PRINT_MACRO(_STLP_NO_NEW_IOSTREAMS); + PRINT_MACRO(_STLP_NO_NEW_NEW_HEADER); + PRINT_MACRO(_STLP_NO_NEW_STYLE_CASTS); + PRINT_MACRO(_STLP_NO_PARTIAL_SPECIALIZATION_SYNTAX); + PRINT_MACRO(_STLP_NO_QUALIFIED_FRIENDS); + PRINT_MACRO(_STLP_NO_RELOPS_NAMESPACE); + PRINT_MACRO(_STLP_NO_SGI_IOSTREAMS); + PRINT_MACRO(_STLP_NO_STATIC_TEMPLATE_DATA); + PRINT_MACRO(_STLP_NO_TEMPLATE_CONVERSIONS); + PRINT_MACRO(_STLP_NO_WCHAR_T); + PRINT_MACRO(_STLP_NON_TYPE_TMPL_PARAM_BUG); + PRINT_MACRO(_STLP_NONTEMPL_BASE_MATCH_BUG); + PRINT_MACRO(_STLP_OWN_IOSTREAMS); + PRINT_MACRO(_STLP_PARTIAL_SPEC_NEEDS_TEMPLATE_ARGS); + PRINT_MACRO(_STLP_RAND48); + PRINT_MACRO(_STLP_STATIC_ARRAY_BUG); + PRINT_MACRO(_STLP_STATIC_CONST_INIT_BUG); + PRINT_MACRO(_STLP_STATIC_CONST_INIT_BUG); + PRINT_MACRO(_STLP_THROW_RETURN_BUG); + PRINT_MACRO(_STLP_TRIVIAL_CONSTRUCTOR_BUG); + PRINT_MACRO(_STLP_TRIVIAL_DESTRUCTOR_BUG); + PRINT_MACRO(_STLP_UNINITIALIZABLE_PRIVATE); + PRINT_MACRO(_STLP_USE_ABBREVS); + PRINT_MACRO(_STLP_USE_DEFALLOC); + PRINT_MACRO(_STLP_USE_MALLOC); + PRINT_MACRO(_STLP_USE_NEW_C_HEADERS); + PRINT_MACRO(_STLP_USE_NEWALLOC); + PRINT_MACRO(_STLP_USE_OWN_NAMESPACE); + PRINT_MACRO(_STLP_USE_SGI_ALLOCATORS); + PRINT_MACRO(_STLP_WCHAR_T_IS_USHORT); + PRINT_MACRO(_STLP_WEAK_ATTRIBUTE); + PRINT_MACRO(_STLP_YVALS_H); +#endif + PRINT_MACRO(__GLIBCPP__); + PRINT_MACRO(_GLIBCPP_USE_WCHAR_T); + PRINT_MACRO(_GLIBCPP_VERSION); + PRINT_MACRO(__GLIBCXX__); + PRINT_MACRO(_GLIBCXX_USE_WCHAR_T); + PRINT_MACRO(_GLIBCXX_VERSION); + PRINT_MACRO(_GLIBCXX_USE_LONG_LONG); + PRINT_MACRO(_GLIBCXX_USE_NLS); + PRINT_MACRO(_GLIBCXX_USE_C99_MATH); + PRINT_MACRO(_GLIBCXX_USE_C99); + PRINT_MACRO(_GLIBCXX_CONCEPT_CHECKS); + PRINT_MACRO(_GLIBCXX_USE_LFS); + PRINT_MACRO(_GLIBCXX_SYMVER); + PRINT_MACRO(_GLIBCXX_MEM_LIMITS); + PRINT_MACRO(_GLIBCXX_HOSTED); + PRINT_MACRO(_GLIBCXX_SJLJ_EXCEPTIONS); + + // Modena C++ standard library + PRINT_MACRO(MSIPL_ANSI_HEADER); + PRINT_MACRO(MSIPL_BOOL_BUILTIN); + PRINT_MACRO(MSIPL_DEF_EXPLICIT); + PRINT_MACRO(MSIPL_DEF_TEMPARG); + PRINT_MACRO(MSIPL_EXPINST_ALLOWED); + PRINT_MACRO(MSIPL_EXPLICIT_FUNC_TEMPLATE_ARG); + PRINT_MACRO(MISPL_EXPLICIT_TEMPLATE_ARGUMENT); + PRINT_MACRO(MSIPL_FUNC_TEMPLATE_DEFARG); + PRINT_MACRO(MSIPL_MEMBER_TEMPLATE); + PRINT_MACRO(MSIPL_MULTITHREAD); + PRINT_MACRO(MSIPL_NON_TYPE_TEMPARG); + PRINT_MACRO(MSIPL_PARTIAL_TEMPL); + PRINT_MACRO(MSIPL_STATIC_CONST_INIT); + PRINT_MACRO(MSIPL_TEMPL_NEWSPEC); + PRINT_MACRO(MSIPL_TYPENAME); + PRINT_MACRO(MSIPL_USING_NAMESPACE); + PRINT_MACRO(MSIPL_WCHART); +} + +void print_platform_macros() +{ + std::cout << "Detected Platform: " << BOOST_PLATFORM << std::endl; + // signedness: + PRINT_SIGN(char); + PRINT_SIGN(wchar_t); + // byte ordering: + PRINT_ORDER(short); + PRINT_ORDER(int); + PRINT_ORDER(long); + // sizes: + PRINT_EXPRESSION(sizeof(wchar_t)); + PRINT_EXPRESSION(sizeof(short)); + PRINT_EXPRESSION(sizeof(int)); + PRINT_EXPRESSION(sizeof(long)); + PRINT_EXPRESSION(sizeof(size_t)); + PRINT_EXPRESSION(sizeof(ptrdiff_t)); + PRINT_EXPRESSION(sizeof(void*)); + PRINT_EXPRESSION(sizeof(void(*)(void))); + PRINT_EXPRESSION(sizeof(float)); + PRINT_EXPRESSION(sizeof(double)); + PRINT_EXPRESSION(sizeof(long double)); + // limits: + PRINT_MACRO(CHAR_BIT); + PRINT_MACRO(CHAR_MAX); + PRINT_MACRO(WCHAR_MAX); + PRINT_MACRO(SHRT_MAX); + PRINT_MACRO(INT_MAX); + PRINT_MACRO(LONG_MAX); + PRINT_MACRO(LLONG_MAX); + PRINT_MACRO(LONG_LONG_MAX); + PRINT_MACRO(LONGLONG_MAX); + PRINT_MACRO(ULLONG_MAX); // <boost/cstdint.hpp> uses these, so we need to know them + PRINT_MACRO(ULONG_LONG_MAX); + PRINT_MACRO(ULONGLONG_MAX); + // general C99: + PRINT_MACRO(__STDC_IEC_559__); + PRINT_MACRO(__STDC_IEC_559_COMPLEX__); + PRINT_MACRO(__STDC_ISO_10646__); + // GNU: + PRINT_MACRO(__GLIBC__); + PRINT_MACRO(__GLIBC_MINOR__); + PRINT_MACRO(__GNU_LIBRARY__); + PRINT_MACRO(_BSD_SOURCE); + PRINT_MACRO(_GNU_SOURCE); + PRINT_MACRO(_ISOC99_SOURCE); + PRINT_MACRO(_ISOC9X_SOURCE); + PRINT_MACRO(_LARGEFILE_SOURCE); + PRINT_MACRO(_LARGEFILE64_SOURCE); + PRINT_MACRO(_SVID_SOURCE); + PRINT_MACRO(_THREAD_SAFE); + PRINT_MACRO(_XOPEN_SOURCE_EXTENDED); + PRINT_MACRO(XPG); + PRINT_MACRO(__MINGW32_MAJOR_VERSION); + PRINT_MACRO(__MINGW32_MINOR_VERSION); + // POSIX: + PRINT_MACRO(_POSIX_ADVISORY_INFO); + PRINT_MACRO(_POSIX_ASYNCHRONOUS_IO); + PRINT_MACRO(_POSIX_BARRIERS); + PRINT_MACRO(_POSIX_C_SOURCE); + PRINT_MACRO(_POSIX_CHOWN_RESTRICTED); + PRINT_MACRO(_POSIX_CLOCK_SELECTION); + PRINT_MACRO(_POSIX_CPUTIME); + PRINT_MACRO(_POSIX_FSYNC); + PRINT_MACRO(_POSIX_JOB_CONTROL); + PRINT_MACRO(_POSIX_MAPPED_FILES); + PRINT_MACRO(_POSIX_MEMLOCK); + PRINT_MACRO(_POSIX_MEMLOCK_RANGE); + PRINT_MACRO(_POSIX_MEMORY_PROTECTION); + PRINT_MACRO(_POSIX_MESSAGE_PASSING); + PRINT_MACRO(_POSIX_MONOTONIC_CLOCK); + PRINT_MACRO(_POSIX_NO_TRUNC); + PRINT_MACRO(_POSIX_PRIORITIZED_IO); + PRINT_MACRO(_POSIX_PRIORITY_SCHEDULING); + PRINT_MACRO(_POSIX_RAW_SOCKETS); + PRINT_MACRO(_POSIX_READER_WRITER_LOCKS); + PRINT_MACRO(_POSIX_REALTIME_SIGNALS); + PRINT_MACRO(_POSIX_REGEXP); + PRINT_MACRO(_POSIX_SAVED_IDS); + PRINT_MACRO(_POSIX_SEMAPHORES); + PRINT_MACRO(_POSIX_SHARED_MEMORY_OBJECTS); + PRINT_MACRO(_POSIX_SHELL); + PRINT_MACRO(_POSIX_SOURCE); + PRINT_MACRO(_POSIX_SPAWN); + PRINT_MACRO(_POSIX_SPIN_LOCKS); + PRINT_MACRO(_POSIX_SPORADIC_SERVER); + PRINT_MACRO(_POSIX_SYNCHRONIZED_IO); + PRINT_MACRO(_POSIX_THREAD_ATTR_STACKADDR); + PRINT_MACRO(_POSIX_THREAD_ATTR_STACKSIZE); + PRINT_MACRO(_POSIX_THREAD_CPUTIME); + PRINT_MACRO(_POSIX_THREAD_PRIO_INHERIT); + PRINT_MACRO(_POSIX_THREAD_PRIO_PROTECT); + PRINT_MACRO(_POSIX_THREAD_PRIORITY_SCHEDULING); + PRINT_MACRO(_POSIX_THREAD_PROCESS_SHARED); + PRINT_MACRO(_POSIX_THREAD_SAFE_FUNCTIONS); + PRINT_MACRO(_POSIX_THREAD_SPORADIC_SERVER); + PRINT_MACRO(_POSIX_THREADS); + PRINT_MACRO(_POSIX_TIMEOUTS); + PRINT_MACRO(_POSIX_TIMERS); + PRINT_MACRO(_POSIX_TRACE); + PRINT_MACRO(_POSIX_TRACE_EVENT_FILTER); + PRINT_MACRO(_POSIX_TRACE_INHERIT); + PRINT_MACRO(_POSIX_TRACE_LOG); + PRINT_MACRO(_POSIX_TYPED_MEMORY_OBJECTS); + PRINT_MACRO(_POSIX_VDISABLE); + PRINT_MACRO(_POSIX_VERSION); + PRINT_MACRO(_POSIX2_C_BIND); + PRINT_MACRO(_POSIX2_C_DEV); + PRINT_MACRO(_POSIX2_CHAR_TERM); + PRINT_MACRO(_POSIX2_FORT_DEV); + PRINT_MACRO(_POSIX2_FORT_RUN); + PRINT_MACRO(_POSIX2_LOCALEDEF); + PRINT_MACRO(_POSIX2_PBS); + PRINT_MACRO(_POSIX2_PBS_ACCOUNTING); + PRINT_MACRO(_POSIX2_PBS_CHECKPOINT); + PRINT_MACRO(_POSIX2_PBS_LOCATE); + PRINT_MACRO(_POSIX2_PBS_MESSAGE); + PRINT_MACRO(_POSIX2_PBS_TRACK); + PRINT_MACRO(_POSIX2_SW_DEV); + PRINT_MACRO(_POSIX2_UPE); + PRINT_MACRO(_POSIX2_VERSION); + PRINT_MACRO(_V6_ILP32_OFF32); + PRINT_MACRO(_V6_ILP32_OFFBIG); + PRINT_MACRO(_V6_LP64_OFF64); + PRINT_MACRO(_V6_LPBIG_OFFBIG); + PRINT_MACRO(_XBS5_ILP32_OFF32); + PRINT_MACRO(_XBS5_ILP32_OFFBIG); + PRINT_MACRO(_XBS5_LP64_OFF64); + PRINT_MACRO(_XBS5_LPBIG_OFFBIG); + PRINT_MACRO(_XOPEN_CRYPT); + PRINT_MACRO(_XOPEN_ENH_I18N); + PRINT_MACRO(_XOPEN_LEGACY); + PRINT_MACRO(_XOPEN_REALTIME); + PRINT_MACRO(_XOPEN_REALTIME_THREADS); + PRINT_MACRO(_XOPEN_SHM); + PRINT_MACRO(_XOPEN_SOURCE); + PRINT_MACRO(_XOPEN_STREAMS); + PRINT_MACRO(_XOPEN_UNIX); + PRINT_MACRO(_XOPEN_VERSION); + // Misc: + PRINT_MACRO(__USE_BSD); + PRINT_MACRO(_FILE_OFFSET_BITS); +} + +void print_boost_macros() +{ + std::cout << "Boost version " << BOOST_STRINGIZE(BOOST_VERSION) << std::endl; + // config setup macros first: + PRINT_MACRO(BOOST_USER_CONFIG); + PRINT_MACRO(BOOST_COMPILER_CONFIG); + PRINT_MACRO(BOOST_STDLIB_CONFIG); + PRINT_MACRO(BOOST_PLATFORM_CONFIG); + PRINT_MACRO(BOOST_NO_CONFIG); + PRINT_MACRO(BOOST_NO_USER_CONFIG); + PRINT_MACRO(BOOST_NO_COMPILER_CONFIG); + PRINT_MACRO(BOOST_NO_STDLIB_CONFIG); + PRINT_MACRO(BOOST_NO_PLATFORM_CONFIG); + // then defect and feature macros: + PRINT_MACRO(BOOST_DISABLE_THREADS); + PRINT_MACRO(BOOST_DISABLE_WIN32); + PRINT_MACRO(BOOST_HAS_THREADS); + PRINT_MACRO(BOOST_WINDOWS); + + // BEGIN GENERATED BLOCK DO NOT EDIT THIS!!!!!! + PRINT_MACRO(BOOST_BCB_PARTIAL_SPECIALIZATION_BUG); + PRINT_MACRO(BOOST_DEDUCED_TYPENAME); + PRINT_MACRO(BOOST_FUNCTION_SCOPE_USING_DECLARATION_BREAKS_ADL); + PRINT_MACRO(BOOST_HAS_BETHREADS); + PRINT_MACRO(BOOST_HAS_CLOCK_GETTIME); + PRINT_MACRO(BOOST_HAS_DIRENT_H); + PRINT_MACRO(BOOST_HAS_EXPM1); + PRINT_MACRO(BOOST_HAS_FTIME); + PRINT_MACRO(BOOST_HAS_GETSYSTEMTIMEASFILETIME); + PRINT_MACRO(BOOST_HAS_GETTIMEOFDAY); + PRINT_MACRO(BOOST_HAS_HASH); + PRINT_MACRO(BOOST_HAS_LOG1P); + PRINT_MACRO(BOOST_HAS_LONG_LONG); + PRINT_MACRO(BOOST_HAS_MACRO_USE_FACET); + PRINT_MACRO(BOOST_HAS_MS_INT64); + PRINT_MACRO(BOOST_HAS_NANOSLEEP); + PRINT_MACRO(BOOST_HAS_NL_TYPES_H); + PRINT_MACRO(BOOST_HAS_NRVO); + PRINT_MACRO(BOOST_HAS_PARTIAL_STD_ALLOCATOR); + PRINT_MACRO(BOOST_HAS_PTHREADS); + PRINT_MACRO(BOOST_HAS_PTHREAD_DELAY_NP); + PRINT_MACRO(BOOST_HAS_PTHREAD_MUTEXATTR_SETTYPE); + PRINT_MACRO(BOOST_HAS_PTHREAD_YIELD); + PRINT_MACRO(BOOST_HAS_RVALUE_REFS); + PRINT_MACRO(BOOST_HAS_SCHED_YIELD); + PRINT_MACRO(BOOST_HAS_SGI_TYPE_TRAITS); + PRINT_MACRO(BOOST_HAS_SIGACTION); + PRINT_MACRO(BOOST_HAS_SLIST); + PRINT_MACRO(BOOST_HAS_STATIC_ASSERT); + PRINT_MACRO(BOOST_HAS_STDINT_H); + PRINT_MACRO(BOOST_HAS_STLP_USE_FACET); + PRINT_MACRO(BOOST_HAS_TR1_ARRAY); + PRINT_MACRO(BOOST_HAS_TR1_BIND); + PRINT_MACRO(BOOST_HAS_TR1_COMPLEX_INVERSE_TRIG); + PRINT_MACRO(BOOST_HAS_TR1_COMPLEX_OVERLOADS); + PRINT_MACRO(BOOST_HAS_TR1_FUNCTION); + PRINT_MACRO(BOOST_HAS_TR1_HASH); + PRINT_MACRO(BOOST_HAS_TR1_MEM_FN); + PRINT_MACRO(BOOST_HAS_TR1_RANDOM); + PRINT_MACRO(BOOST_HAS_TR1_REFERENCE_WRAPPER); + PRINT_MACRO(BOOST_HAS_TR1_REGEX); + PRINT_MACRO(BOOST_HAS_TR1_RESULT_OF); + PRINT_MACRO(BOOST_HAS_TR1_SHARED_PTR); + PRINT_MACRO(BOOST_HAS_TR1_TUPLE); + PRINT_MACRO(BOOST_HAS_TR1_TYPE_TRAITS); + PRINT_MACRO(BOOST_HAS_TR1_UNORDERED_MAP); + PRINT_MACRO(BOOST_HAS_TR1_UNORDERED_SET); + PRINT_MACRO(BOOST_HAS_TR1_UTILITY); + PRINT_MACRO(BOOST_HAS_TWO_ARG_USE_FACET); + PRINT_MACRO(BOOST_HAS_UNISTD_H); + PRINT_MACRO(BOOST_HAS_VARIADIC_TMPL); + PRINT_MACRO(BOOST_HAS_WINTHREADS); + PRINT_MACRO(BOOST_MSVC6_MEMBER_TEMPLATES); + PRINT_MACRO(BOOST_MSVC_STD_ITERATOR); + PRINT_MACRO(BOOST_NO_0X_HDR_ARRAY); + PRINT_MACRO(BOOST_NO_0X_HDR_CHRONO); + PRINT_MACRO(BOOST_NO_0X_HDR_CODECVT); + PRINT_MACRO(BOOST_NO_0X_HDR_CONDITION_VARIABLE); + PRINT_MACRO(BOOST_NO_0X_HDR_FORWARD_LIST); + PRINT_MACRO(BOOST_NO_0X_HDR_FUTURE); + PRINT_MACRO(BOOST_NO_0X_HDR_INITIALIZER_LIST); + PRINT_MACRO(BOOST_NO_0X_HDR_MUTEX); + PRINT_MACRO(BOOST_NO_0X_HDR_RANDOM); + PRINT_MACRO(BOOST_NO_0X_HDR_RATIO); + PRINT_MACRO(BOOST_NO_0X_HDR_REGEX); + PRINT_MACRO(BOOST_NO_0X_HDR_SYSTEM_ERROR); + PRINT_MACRO(BOOST_NO_0X_HDR_THREAD); + PRINT_MACRO(BOOST_NO_0X_HDR_TUPLE); + PRINT_MACRO(BOOST_NO_0X_HDR_TYPEINDEX); + PRINT_MACRO(BOOST_NO_0X_HDR_TYPE_TRAITS); + PRINT_MACRO(BOOST_NO_0X_HDR_UNORDERED_MAP); + PRINT_MACRO(BOOST_NO_0X_HDR_UNORDERED_SET); + PRINT_MACRO(BOOST_NO_ADL_BARRIER); + PRINT_MACRO(BOOST_NO_ARGUMENT_DEPENDENT_LOOKUP); + PRINT_MACRO(BOOST_NO_ARRAY_TYPE_SPECIALIZATIONS); + PRINT_MACRO(BOOST_NO_AUTO_DECLARATIONS); + PRINT_MACRO(BOOST_NO_AUTO_MULTIDECLARATIONS); + PRINT_MACRO(BOOST_NO_AUTO_PTR); + PRINT_MACRO(BOOST_NO_CHAR16_T); + PRINT_MACRO(BOOST_NO_CHAR32_T); + PRINT_MACRO(BOOST_NO_COMPLETE_VALUE_INITIALIZATION); + PRINT_MACRO(BOOST_NO_CONSTEXPR); + PRINT_MACRO(BOOST_NO_CTYPE_FUNCTIONS); + PRINT_MACRO(BOOST_NO_CV_SPECIALIZATIONS); + PRINT_MACRO(BOOST_NO_CV_VOID_SPECIALIZATIONS); + PRINT_MACRO(BOOST_NO_CWCHAR); + PRINT_MACRO(BOOST_NO_CWCTYPE); + PRINT_MACRO(BOOST_NO_DECLTYPE); + PRINT_MACRO(BOOST_NO_DECLTYPE_N3276); + PRINT_MACRO(BOOST_NO_DEFAULTED_FUNCTIONS); + PRINT_MACRO(BOOST_NO_DELETED_FUNCTIONS); + PRINT_MACRO(BOOST_NO_DEPENDENT_NESTED_DERIVATIONS); + PRINT_MACRO(BOOST_NO_DEPENDENT_TYPES_IN_TEMPLATE_VALUE_PARAMETERS); + PRINT_MACRO(BOOST_NO_EXCEPTIONS); + PRINT_MACRO(BOOST_NO_EXCEPTION_STD_NAMESPACE); + PRINT_MACRO(BOOST_NO_EXPLICIT_CONVERSION_OPERATORS); + PRINT_MACRO(BOOST_NO_EXPLICIT_FUNCTION_TEMPLATE_ARGUMENTS); + PRINT_MACRO(BOOST_NO_EXTERN_TEMPLATE); + PRINT_MACRO(BOOST_NO_FENV_H); + PRINT_MACRO(BOOST_NO_FUNCTION_TEMPLATE_DEFAULT_ARGS); + PRINT_MACRO(BOOST_NO_FUNCTION_TEMPLATE_ORDERING); + PRINT_MACRO(BOOST_NO_FUNCTION_TYPE_SPECIALIZATIONS); + PRINT_MACRO(BOOST_NO_INCLASS_MEMBER_INITIALIZATION); + PRINT_MACRO(BOOST_NO_INITIALIZER_LISTS); + PRINT_MACRO(BOOST_NO_INTEGRAL_INT64_T); + PRINT_MACRO(BOOST_NO_INTRINSIC_WCHAR_T); + PRINT_MACRO(BOOST_NO_IOSFWD); + PRINT_MACRO(BOOST_NO_IOSTREAM); + PRINT_MACRO(BOOST_NO_IS_ABSTRACT); + PRINT_MACRO(BOOST_NO_LAMBDAS); + PRINT_MACRO(BOOST_NO_LIMITS); + PRINT_MACRO(BOOST_NO_LIMITS_COMPILE_TIME_CONSTANTS); + PRINT_MACRO(BOOST_NO_LONG_LONG); + PRINT_MACRO(BOOST_NO_LONG_LONG_NUMERIC_LIMITS); + PRINT_MACRO(BOOST_NO_MEMBER_FUNCTION_SPECIALIZATIONS); + PRINT_MACRO(BOOST_NO_MEMBER_TEMPLATES); + PRINT_MACRO(BOOST_NO_MEMBER_TEMPLATE_FRIENDS); + PRINT_MACRO(BOOST_NO_MEMBER_TEMPLATE_KEYWORD); + PRINT_MACRO(BOOST_NO_MS_INT64_NUMERIC_LIMITS); + PRINT_MACRO(BOOST_NO_NESTED_FRIENDSHIP); + PRINT_MACRO(BOOST_NO_NOEXCEPT); + PRINT_MACRO(BOOST_NO_NULLPTR); + PRINT_MACRO(BOOST_NO_NUMERIC_LIMITS_LOWEST); + PRINT_MACRO(BOOST_NO_OPERATORS_IN_NAMESPACE); + PRINT_MACRO(BOOST_NO_PARTIAL_SPECIALIZATION_IMPLICIT_DEFAULT_ARGS); + PRINT_MACRO(BOOST_NO_POINTER_TO_MEMBER_CONST); + PRINT_MACRO(BOOST_NO_POINTER_TO_MEMBER_TEMPLATE_PARAMETERS); + PRINT_MACRO(BOOST_NO_PRIVATE_IN_AGGREGATE); + PRINT_MACRO(BOOST_NO_RAW_LITERALS); + PRINT_MACRO(BOOST_NO_RTTI); + PRINT_MACRO(BOOST_NO_RVALUE_REFERENCES); + PRINT_MACRO(BOOST_NO_SCOPED_ENUMS); + PRINT_MACRO(BOOST_NO_SFINAE); + PRINT_MACRO(BOOST_NO_SFINAE_EXPR); + PRINT_MACRO(BOOST_NO_STATIC_ASSERT); + PRINT_MACRO(BOOST_NO_STDC_NAMESPACE); + PRINT_MACRO(BOOST_NO_STD_ALLOCATOR); + PRINT_MACRO(BOOST_NO_STD_DISTANCE); + PRINT_MACRO(BOOST_NO_STD_ITERATOR); + PRINT_MACRO(BOOST_NO_STD_ITERATOR_TRAITS); + PRINT_MACRO(BOOST_NO_STD_LOCALE); + PRINT_MACRO(BOOST_NO_STD_MESSAGES); + PRINT_MACRO(BOOST_NO_STD_MIN_MAX); + PRINT_MACRO(BOOST_NO_STD_OUTPUT_ITERATOR_ASSIGN); + PRINT_MACRO(BOOST_NO_STD_TYPEINFO); + PRINT_MACRO(BOOST_NO_STD_UNORDERED); + PRINT_MACRO(BOOST_NO_STD_USE_FACET); + PRINT_MACRO(BOOST_NO_STD_WSTREAMBUF); + PRINT_MACRO(BOOST_NO_STD_WSTRING); + PRINT_MACRO(BOOST_NO_STRINGSTREAM); + PRINT_MACRO(BOOST_NO_SWPRINTF); + PRINT_MACRO(BOOST_NO_TEMPLATED_IOSTREAMS); + PRINT_MACRO(BOOST_NO_TEMPLATED_ITERATOR_CONSTRUCTORS); + PRINT_MACRO(BOOST_NO_TEMPLATE_ALIASES); + PRINT_MACRO(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION); + PRINT_MACRO(BOOST_NO_TEMPLATE_TEMPLATES); + PRINT_MACRO(BOOST_NO_TWO_PHASE_NAME_LOOKUP); + PRINT_MACRO(BOOST_NO_TYPEID); + PRINT_MACRO(BOOST_NO_TYPENAME_WITH_CTOR); + PRINT_MACRO(BOOST_NO_UNICODE_LITERALS); + PRINT_MACRO(BOOST_NO_UNIFIED_INITIALIZATION_SYNTAX); + PRINT_MACRO(BOOST_NO_UNREACHABLE_RETURN_DETECTION); + PRINT_MACRO(BOOST_NO_USING_DECLARATION_OVERLOADS_FROM_TYPENAME_BASE); + PRINT_MACRO(BOOST_NO_USING_TEMPLATE); + PRINT_MACRO(BOOST_NO_VARIADIC_MACROS); + PRINT_MACRO(BOOST_NO_VARIADIC_TEMPLATES); + PRINT_MACRO(BOOST_NO_VOID_RETURNS); + + + + + + + + + + + + + + + // END GENERATED BLOCK + + PRINT_MACRO(BOOST_INTEL); + PRINT_MACRO(BOOST_MSVC); + PRINT_MACRO(BOOST_STD_EXTENSION_NAMESPACE); + PRINT_MACRO(BOOST_UNREACHABLE_RETURN(0)); + PRINT_MACRO(BOOST_CONSTEXPR); + PRINT_MACRO(BOOST_CONSTEXPR_OR_CONST); + PRINT_MACRO(BOOST_STATIC_CONSTEXPR); + PRINT_MACRO(BOOST_NOEXCEPT); + PRINT_MACRO(BOOST_FORCEINLINE); +} + +void print_separator() +{ + std::cout << +"\n\n*********************************************************************\n\n"; +} + +int main() +{ + + // boost compiler workaround defines + print_compiler_macros(); + print_separator(); + print_stdlib_macros(); + print_separator(); + print_platform_macros(); + print_separator(); + print_boost_macros(); + + return 0; +} diff --git a/libs/config/test/config_test.cpp b/libs/config/test/config_test.cpp new file mode 100644 index 0000000000..a203548cd6 --- /dev/null +++ b/libs/config/test/config_test.cpp @@ -0,0 +1,1701 @@ +// This file was automatically generated on Sun Nov 27 09:43:19 2011 +// by libs/config/tools/generate.cpp +// Copyright John Maddock 2002-4. +// 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) + +// See http://www.boost.org/libs/config for the most recent version.// +// Revision $Id: config_test.cpp 76122 2011-12-23 17:17:31Z johnmaddock $ +// + +// Test file for config setup +// This file should compile, if it does not then +// one or more macros need to be defined. +// see boost_*.ipp for more details + +// Do not edit this file, it was generated automatically by + +#include <boost/config.hpp> +#include <iostream> +#include "test.hpp" + +int error_count = 0; + +#ifndef BOOST_NO_0X_HDR_ARRAY +#include "boost_no_0x_hdr_array.ipp" +#else +namespace boost_no_0x_hdr_array = empty_boost; +#endif +#ifndef BOOST_NO_0X_HDR_CHRONO +#include "boost_no_0x_hdr_chrono.ipp" +#else +namespace boost_no_0x_hdr_chrono = empty_boost; +#endif +#ifndef BOOST_NO_0X_HDR_CODECVT +#include "boost_no_0x_hdr_codecvt.ipp" +#else +namespace boost_no_0x_hdr_codecvt = empty_boost; +#endif +#ifndef BOOST_NO_0X_HDR_CONDITION_VARIABLE +#include "boost_no_0x_hdr_condition_variable.ipp" +#else +namespace boost_no_0x_hdr_condition_variable = empty_boost; +#endif +#ifndef BOOST_NO_0X_HDR_FORWARD_LIST +#include "boost_no_0x_hdr_forward_list.ipp" +#else +namespace boost_no_0x_hdr_forward_list = empty_boost; +#endif +#ifndef BOOST_NO_0X_HDR_FUTURE +#include "boost_no_0x_hdr_future.ipp" +#else +namespace boost_no_0x_hdr_future = empty_boost; +#endif +#ifndef BOOST_NO_0X_HDR_INITIALIZER_LIST +#include "boost_no_0x_hdr_initializer_list.ipp" +#else +namespace boost_no_0x_hdr_initializer_list = empty_boost; +#endif +#ifndef BOOST_NO_0X_HDR_MUTEX +#include "boost_no_0x_hdr_mutex.ipp" +#else +namespace boost_no_0x_hdr_mutex = empty_boost; +#endif +#ifndef BOOST_NO_0X_HDR_RANDOM +#include "boost_no_0x_hdr_random.ipp" +#else +namespace boost_no_0x_hdr_random = empty_boost; +#endif +#ifndef BOOST_NO_0X_HDR_RATIO +#include "boost_no_0x_hdr_ratio.ipp" +#else +namespace boost_no_0x_hdr_ratio = empty_boost; +#endif +#ifndef BOOST_NO_0X_HDR_REGEX +#include "boost_no_0x_hdr_regex.ipp" +#else +namespace boost_no_0x_hdr_regex = empty_boost; +#endif +#ifndef BOOST_NO_0X_HDR_SYSTEM_ERROR +#include "boost_no_0x_hdr_system_error.ipp" +#else +namespace boost_no_0x_hdr_system_error = empty_boost; +#endif +#ifndef BOOST_NO_0X_HDR_THREAD +#include "boost_no_0x_hdr_thread.ipp" +#else +namespace boost_no_0x_hdr_thread = empty_boost; +#endif +#ifndef BOOST_NO_0X_HDR_TUPLE +#include "boost_no_0x_hdr_tuple.ipp" +#else +namespace boost_no_0x_hdr_tuple = empty_boost; +#endif +#ifndef BOOST_NO_0X_HDR_TYPEINDEX +#include "boost_no_0x_hdr_typeindex.ipp" +#else +namespace boost_no_0x_hdr_typeindex = empty_boost; +#endif +#ifndef BOOST_NO_0X_HDR_TYPE_TRAITS +#include "boost_no_0x_hdr_type_traits.ipp" +#else +namespace boost_no_0x_hdr_type_traits = empty_boost; +#endif +#ifndef BOOST_NO_0X_HDR_UNORDERED_MAP +#include "boost_no_0x_hdr_unordered_map.ipp" +#else +namespace boost_no_0x_hdr_unordered_map = empty_boost; +#endif +#ifndef BOOST_NO_0X_HDR_UNORDERED_SET +#include "boost_no_0x_hdr_unordered_set.ipp" +#else +namespace boost_no_0x_hdr_unordered_set = empty_boost; +#endif +#ifndef BOOST_NO_ADL_BARRIER +#include "boost_no_adl_barrier.ipp" +#else +namespace boost_no_adl_barrier = empty_boost; +#endif +#ifndef BOOST_NO_ARGUMENT_DEPENDENT_LOOKUP +#include "boost_no_arg_dep_lookup.ipp" +#else +namespace boost_no_argument_dependent_lookup = empty_boost; +#endif +#ifndef BOOST_NO_ARRAY_TYPE_SPECIALIZATIONS +#include "boost_no_array_type_spec.ipp" +#else +namespace boost_no_array_type_specializations = empty_boost; +#endif +#ifndef BOOST_NO_AUTO_DECLARATIONS +#include "boost_no_auto_declarations.ipp" +#else +namespace boost_no_auto_declarations = empty_boost; +#endif +#ifndef BOOST_NO_AUTO_MULTIDECLARATIONS +#include "boost_no_auto_multidecl.ipp" +#else +namespace boost_no_auto_multideclarations = empty_boost; +#endif +#ifndef BOOST_NO_AUTO_PTR +#include "boost_no_auto_ptr.ipp" +#else +namespace boost_no_auto_ptr = empty_boost; +#endif +#ifndef BOOST_BCB_PARTIAL_SPECIALIZATION_BUG +#include "boost_no_bcb_partial_spec.ipp" +#else +namespace boost_bcb_partial_specialization_bug = empty_boost; +#endif +#ifndef BOOST_NO_CHAR16_T +#include "boost_no_char16_t.ipp" +#else +namespace boost_no_char16_t = empty_boost; +#endif +#ifndef BOOST_NO_CHAR32_T +#include "boost_no_char32_t.ipp" +#else +namespace boost_no_char32_t = empty_boost; +#endif +#ifndef BOOST_NO_COMPLETE_VALUE_INITIALIZATION +#include "boost_no_com_value_init.ipp" +#else +namespace boost_no_complete_value_initialization = empty_boost; +#endif +#ifndef BOOST_NO_CONSTEXPR +#include "boost_no_constexpr.ipp" +#else +namespace boost_no_constexpr = empty_boost; +#endif +#ifndef BOOST_NO_CTYPE_FUNCTIONS +#include "boost_no_ctype_functions.ipp" +#else +namespace boost_no_ctype_functions = empty_boost; +#endif +#ifndef BOOST_NO_CV_SPECIALIZATIONS +#include "boost_no_cv_spec.ipp" +#else +namespace boost_no_cv_specializations = empty_boost; +#endif +#ifndef BOOST_NO_CV_VOID_SPECIALIZATIONS +#include "boost_no_cv_void_spec.ipp" +#else +namespace boost_no_cv_void_specializations = empty_boost; +#endif +#ifndef BOOST_NO_CWCHAR +#include "boost_no_cwchar.ipp" +#else +namespace boost_no_cwchar = empty_boost; +#endif +#ifndef BOOST_NO_CWCTYPE +#include "boost_no_cwctype.ipp" +#else +namespace boost_no_cwctype = empty_boost; +#endif +#ifndef BOOST_NO_DECLTYPE +#include "boost_no_decltype.ipp" +#else +namespace boost_no_decltype = empty_boost; +#endif +#ifndef BOOST_NO_DECLTYPE_N3276 +#include "boost_no_decltype_n3276.ipp" +#else +namespace boost_no_decltype_n3276 = empty_boost; +#endif +#ifndef BOOST_DEDUCED_TYPENAME +#include "boost_no_ded_typename.ipp" +#else +namespace boost_deduced_typename = empty_boost; +#endif +#ifndef BOOST_NO_DEFAULTED_FUNCTIONS +#include "boost_no_defaulted_functions.ipp" +#else +namespace boost_no_defaulted_functions = empty_boost; +#endif +#ifndef BOOST_NO_DELETED_FUNCTIONS +#include "boost_no_deleted_functions.ipp" +#else +namespace boost_no_deleted_functions = empty_boost; +#endif +#ifndef BOOST_NO_DEPENDENT_NESTED_DERIVATIONS +#include "boost_no_dep_nested_class.ipp" +#else +namespace boost_no_dependent_nested_derivations = empty_boost; +#endif +#ifndef BOOST_NO_DEPENDENT_TYPES_IN_TEMPLATE_VALUE_PARAMETERS +#include "boost_no_dep_val_param.ipp" +#else +namespace boost_no_dependent_types_in_template_value_parameters = empty_boost; +#endif +#ifndef BOOST_NO_EXCEPTIONS +#include "boost_no_exceptions.ipp" +#else +namespace boost_no_exceptions = empty_boost; +#endif +#ifndef BOOST_NO_EXCEPTION_STD_NAMESPACE +#include "boost_no_excep_std.ipp" +#else +namespace boost_no_exception_std_namespace = empty_boost; +#endif +#ifndef BOOST_NO_EXPLICIT_CONVERSION_OPERATORS +#include "boost_no_explicit_cvt_ops.ipp" +#else +namespace boost_no_explicit_conversion_operators = empty_boost; +#endif +#ifndef BOOST_NO_EXPLICIT_FUNCTION_TEMPLATE_ARGUMENTS +#include "boost_no_exp_func_tem_arg.ipp" +#else +namespace boost_no_explicit_function_template_arguments = empty_boost; +#endif +#ifndef BOOST_NO_EXTERN_TEMPLATE +#include "boost_no_extern_template.ipp" +#else +namespace boost_no_extern_template = empty_boost; +#endif +#ifndef BOOST_NO_FENV_H +#include "boost_no_fenv_h.ipp" +#else +namespace boost_no_fenv_h = empty_boost; +#endif +#ifndef BOOST_NO_FUNCTION_TEMPLATE_DEFAULT_ARGS +#include "boost_no_function_template_default_args.ipp" +#else +namespace boost_no_function_template_default_args = empty_boost; +#endif +#ifndef BOOST_NO_FUNCTION_TYPE_SPECIALIZATIONS +#include "boost_no_function_type_spec.ipp" +#else +namespace boost_no_function_type_specializations = empty_boost; +#endif +#ifndef BOOST_NO_FUNCTION_TEMPLATE_ORDERING +#include "boost_no_func_tmp_order.ipp" +#else +namespace boost_no_function_template_ordering = empty_boost; +#endif +#ifndef BOOST_NO_MS_INT64_NUMERIC_LIMITS +#include "boost_no_i64_limits.ipp" +#else +namespace boost_no_ms_int64_numeric_limits = empty_boost; +#endif +#ifndef BOOST_NO_INITIALIZER_LISTS +#include "boost_no_initializer_lists.ipp" +#else +namespace boost_no_initializer_lists = empty_boost; +#endif +#ifndef BOOST_NO_INCLASS_MEMBER_INITIALIZATION +#include "boost_no_inline_memb_init.ipp" +#else +namespace boost_no_inclass_member_initialization = empty_boost; +#endif +#ifndef BOOST_NO_INTEGRAL_INT64_T +#include "boost_no_integral_int64_t.ipp" +#else +namespace boost_no_integral_int64_t = empty_boost; +#endif +#ifndef BOOST_NO_IOSFWD +#include "boost_no_iosfwd.ipp" +#else +namespace boost_no_iosfwd = empty_boost; +#endif +#ifndef BOOST_NO_IOSTREAM +#include "boost_no_iostream.ipp" +#else +namespace boost_no_iostream = empty_boost; +#endif +#ifndef BOOST_NO_IS_ABSTRACT +#include "boost_no_is_abstract.ipp" +#else +namespace boost_no_is_abstract = empty_boost; +#endif +#ifndef BOOST_NO_TEMPLATED_ITERATOR_CONSTRUCTORS +#include "boost_no_iter_construct.ipp" +#else +namespace boost_no_templated_iterator_constructors = empty_boost; +#endif +#ifndef BOOST_NO_LAMBDAS +#include "boost_no_lambdas.ipp" +#else +namespace boost_no_lambdas = empty_boost; +#endif +#ifndef BOOST_NO_LIMITS +#include "boost_no_limits.ipp" +#else +namespace boost_no_limits = empty_boost; +#endif +#ifndef BOOST_NO_LIMITS_COMPILE_TIME_CONSTANTS +#include "boost_no_limits_const_exp.ipp" +#else +namespace boost_no_limits_compile_time_constants = empty_boost; +#endif +#ifndef BOOST_NO_NUMERIC_LIMITS_LOWEST +#include "boost_no_limits_lowest.ipp" +#else +namespace boost_no_numeric_limits_lowest = empty_boost; +#endif +#ifndef BOOST_NO_LONG_LONG_NUMERIC_LIMITS +#include "boost_no_ll_limits.ipp" +#else +namespace boost_no_long_long_numeric_limits = empty_boost; +#endif +#ifndef BOOST_NO_LONG_LONG +#include "boost_no_long_long.ipp" +#else +namespace boost_no_long_long = empty_boost; +#endif +#ifndef BOOST_NO_MEMBER_FUNCTION_SPECIALIZATIONS +#include "boost_no_mem_func_spec.ipp" +#else +namespace boost_no_member_function_specializations = empty_boost; +#endif +#ifndef BOOST_NO_MEMBER_TEMPLATES +#include "boost_no_mem_templates.ipp" +#else +namespace boost_no_member_templates = empty_boost; +#endif +#ifndef BOOST_NO_MEMBER_TEMPLATE_FRIENDS +#include "boost_no_mem_templ_frnds.ipp" +#else +namespace boost_no_member_template_friends = empty_boost; +#endif +#ifndef BOOST_NO_MEMBER_TEMPLATE_KEYWORD +#include "boost_no_mem_tem_keyword.ipp" +#else +namespace boost_no_member_template_keyword = empty_boost; +#endif +#ifndef BOOST_NO_POINTER_TO_MEMBER_TEMPLATE_PARAMETERS +#include "boost_no_mem_tem_pnts.ipp" +#else +namespace boost_no_pointer_to_member_template_parameters = empty_boost; +#endif +#ifndef BOOST_NO_NESTED_FRIENDSHIP +#include "boost_no_nested_friendship.ipp" +#else +namespace boost_no_nested_friendship = empty_boost; +#endif +#ifndef BOOST_NO_NOEXCEPT +#include "boost_no_noexcept.ipp" +#else +namespace boost_no_noexcept = empty_boost; +#endif +#ifndef BOOST_NO_NULLPTR +#include "boost_no_nullptr.ipp" +#else +namespace boost_no_nullptr = empty_boost; +#endif +#ifndef BOOST_NO_OPERATORS_IN_NAMESPACE +#include "boost_no_ops_in_namespace.ipp" +#else +namespace boost_no_operators_in_namespace = empty_boost; +#endif +#ifndef BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION +#include "boost_no_partial_spec.ipp" +#else +namespace boost_no_template_partial_specialization = empty_boost; +#endif +#ifndef BOOST_NO_PARTIAL_SPECIALIZATION_IMPLICIT_DEFAULT_ARGS +#include "boost_no_part_spec_def_args.ipp" +#else +namespace boost_no_partial_specialization_implicit_default_args = empty_boost; +#endif +#ifndef BOOST_NO_PRIVATE_IN_AGGREGATE +#include "boost_no_priv_aggregate.ipp" +#else +namespace boost_no_private_in_aggregate = empty_boost; +#endif +#ifndef BOOST_NO_POINTER_TO_MEMBER_CONST +#include "boost_no_ptr_mem_const.ipp" +#else +namespace boost_no_pointer_to_member_const = empty_boost; +#endif +#ifndef BOOST_NO_RAW_LITERALS +#include "boost_no_raw_literals.ipp" +#else +namespace boost_no_raw_literals = empty_boost; +#endif +#ifndef BOOST_NO_UNREACHABLE_RETURN_DETECTION +#include "boost_no_ret_det.ipp" +#else +namespace boost_no_unreachable_return_detection = empty_boost; +#endif +#ifndef BOOST_NO_RTTI +#include "boost_no_rtti.ipp" +#else +namespace boost_no_rtti = empty_boost; +#endif +#ifndef BOOST_NO_RVALUE_REFERENCES +#include "boost_no_rvalue_references.ipp" +#else +namespace boost_no_rvalue_references = empty_boost; +#endif +#ifndef BOOST_NO_SCOPED_ENUMS +#include "boost_no_scoped_enums.ipp" +#else +namespace boost_no_scoped_enums = empty_boost; +#endif +#ifndef BOOST_NO_SFINAE +#include "boost_no_sfinae.ipp" +#else +namespace boost_no_sfinae = empty_boost; +#endif +#ifndef BOOST_NO_SFINAE_EXPR +#include "boost_no_sfinae_expr.ipp" +#else +namespace boost_no_sfinae_expr = empty_boost; +#endif +#ifndef BOOST_NO_STRINGSTREAM +#include "boost_no_sstream.ipp" +#else +namespace boost_no_stringstream = empty_boost; +#endif +#ifndef BOOST_NO_STATIC_ASSERT +#include "boost_no_static_assert.ipp" +#else +namespace boost_no_static_assert = empty_boost; +#endif +#ifndef BOOST_NO_STDC_NAMESPACE +#include "boost_no_stdc_namespace.ipp" +#else +namespace boost_no_stdc_namespace = empty_boost; +#endif +#ifndef BOOST_NO_STD_ALLOCATOR +#include "boost_no_std_allocator.ipp" +#else +namespace boost_no_std_allocator = empty_boost; +#endif +#ifndef BOOST_NO_STD_DISTANCE +#include "boost_no_std_distance.ipp" +#else +namespace boost_no_std_distance = empty_boost; +#endif +#ifndef BOOST_NO_STD_ITERATOR +#include "boost_no_std_iterator.ipp" +#else +namespace boost_no_std_iterator = empty_boost; +#endif +#ifndef BOOST_NO_STD_ITERATOR_TRAITS +#include "boost_no_std_iter_traits.ipp" +#else +namespace boost_no_std_iterator_traits = empty_boost; +#endif +#ifndef BOOST_NO_STD_LOCALE +#include "boost_no_std_locale.ipp" +#else +namespace boost_no_std_locale = empty_boost; +#endif +#ifndef BOOST_NO_STD_MESSAGES +#include "boost_no_std_messages.ipp" +#else +namespace boost_no_std_messages = empty_boost; +#endif +#ifndef BOOST_NO_STD_MIN_MAX +#include "boost_no_std_min_max.ipp" +#else +namespace boost_no_std_min_max = empty_boost; +#endif +#ifndef BOOST_NO_STD_OUTPUT_ITERATOR_ASSIGN +#include "boost_no_std_oi_assign.ipp" +#else +namespace boost_no_std_output_iterator_assign = empty_boost; +#endif +#ifndef BOOST_NO_STD_TYPEINFO +#include "boost_no_std_typeinfo.ipp" +#else +namespace boost_no_std_typeinfo = empty_boost; +#endif +#ifndef BOOST_NO_STD_UNORDERED +#include "boost_no_std_unordered.ipp" +#else +namespace boost_no_std_unordered = empty_boost; +#endif +#ifndef BOOST_NO_STD_USE_FACET +#include "boost_no_std_use_facet.ipp" +#else +namespace boost_no_std_use_facet = empty_boost; +#endif +#ifndef BOOST_NO_STD_WSTREAMBUF +#include "boost_no_std_wstreambuf.ipp" +#else +namespace boost_no_std_wstreambuf = empty_boost; +#endif +#ifndef BOOST_NO_STD_WSTRING +#include "boost_no_std_wstring.ipp" +#else +namespace boost_no_std_wstring = empty_boost; +#endif +#ifndef BOOST_NO_SWPRINTF +#include "boost_no_swprintf.ipp" +#else +namespace boost_no_swprintf = empty_boost; +#endif +#ifndef BOOST_NO_TEMPLATE_ALIASES +#include "boost_no_template_aliases.ipp" +#else +namespace boost_no_template_aliases = empty_boost; +#endif +#ifndef BOOST_NO_TEMPLATED_IOSTREAMS +#include "boost_no_template_streams.ipp" +#else +namespace boost_no_templated_iostreams = empty_boost; +#endif +#ifndef BOOST_NO_TEMPLATE_TEMPLATES +#include "boost_no_template_template.ipp" +#else +namespace boost_no_template_templates = empty_boost; +#endif +#ifndef BOOST_NO_TWO_PHASE_NAME_LOOKUP +#include "boost_no_two_phase_lookup.ipp" +#else +namespace boost_no_two_phase_name_lookup = empty_boost; +#endif +#ifndef BOOST_NO_TYPEID +#include "boost_no_typeid.ipp" +#else +namespace boost_no_typeid = empty_boost; +#endif +#ifndef BOOST_NO_TYPENAME_WITH_CTOR +#include "boost_no_typename_with_ctor.ipp" +#else +namespace boost_no_typename_with_ctor = empty_boost; +#endif +#ifndef BOOST_NO_UNICODE_LITERALS +#include "boost_no_unicode_literals.ipp" +#else +namespace boost_no_unicode_literals = empty_boost; +#endif +#ifndef BOOST_NO_UNIFIED_INITIALIZATION_SYNTAX +#include "boost_no_unified_init.ipp" +#else +namespace boost_no_unified_initialization_syntax = empty_boost; +#endif +#ifndef BOOST_FUNCTION_SCOPE_USING_DECLARATION_BREAKS_ADL +#include "boost_no_using_breaks_adl.ipp" +#else +namespace boost_function_scope_using_declaration_breaks_adl = empty_boost; +#endif +#ifndef BOOST_NO_USING_DECLARATION_OVERLOADS_FROM_TYPENAME_BASE +#include "boost_no_using_decl_overld.ipp" +#else +namespace boost_no_using_declaration_overloads_from_typename_base = empty_boost; +#endif +#ifndef BOOST_NO_USING_TEMPLATE +#include "boost_no_using_template.ipp" +#else +namespace boost_no_using_template = empty_boost; +#endif +#ifndef BOOST_NO_VARIADIC_MACROS +#include "boost_no_variadic_macros.ipp" +#else +namespace boost_no_variadic_macros = empty_boost; +#endif +#ifndef BOOST_NO_VARIADIC_TEMPLATES +#include "boost_no_variadic_templates.ipp" +#else +namespace boost_no_variadic_templates = empty_boost; +#endif +#ifndef BOOST_NO_VOID_RETURNS +#include "boost_no_void_returns.ipp" +#else +namespace boost_no_void_returns = empty_boost; +#endif +#ifndef BOOST_NO_INTRINSIC_WCHAR_T +#include "boost_no_wchar_t.ipp" +#else +namespace boost_no_intrinsic_wchar_t = empty_boost; +#endif + +#ifdef BOOST_HAS_TWO_ARG_USE_FACET +#include "boost_has_2arg_use_facet.ipp" +#else +namespace boost_has_two_arg_use_facet = empty_boost; +#endif +#ifdef BOOST_HAS_BETHREADS +#include "boost_has_bethreads.ipp" +#else +namespace boost_has_bethreads = empty_boost; +#endif +#ifdef BOOST_HAS_CLOCK_GETTIME +#include "boost_has_clock_gettime.ipp" +#else +namespace boost_has_clock_gettime = empty_boost; +#endif +#ifdef BOOST_HAS_DIRENT_H +#include "boost_has_dirent_h.ipp" +#else +namespace boost_has_dirent_h = empty_boost; +#endif +#ifdef BOOST_HAS_EXPM1 +#include "boost_has_expm1.ipp" +#else +namespace boost_has_expm1 = empty_boost; +#endif +#ifdef BOOST_HAS_FTIME +#include "boost_has_ftime.ipp" +#else +namespace boost_has_ftime = empty_boost; +#endif +#ifdef BOOST_HAS_GETSYSTEMTIMEASFILETIME +#include "boost_has_getsystemtimeasfiletime.ipp" +#else +namespace boost_has_getsystemtimeasfiletime = empty_boost; +#endif +#ifdef BOOST_HAS_GETTIMEOFDAY +#include "boost_has_gettimeofday.ipp" +#else +namespace boost_has_gettimeofday = empty_boost; +#endif +#ifdef BOOST_HAS_HASH +#include "boost_has_hash.ipp" +#else +namespace boost_has_hash = empty_boost; +#endif +#ifdef BOOST_HAS_LOG1P +#include "boost_has_log1p.ipp" +#else +namespace boost_has_log1p = empty_boost; +#endif +#ifdef BOOST_HAS_LONG_LONG +#include "boost_has_long_long.ipp" +#else +namespace boost_has_long_long = empty_boost; +#endif +#ifdef BOOST_HAS_MACRO_USE_FACET +#include "boost_has_macro_use_facet.ipp" +#else +namespace boost_has_macro_use_facet = empty_boost; +#endif +#ifdef BOOST_HAS_MS_INT64 +#include "boost_has_ms_int64.ipp" +#else +namespace boost_has_ms_int64 = empty_boost; +#endif +#ifdef BOOST_HAS_NANOSLEEP +#include "boost_has_nanosleep.ipp" +#else +namespace boost_has_nanosleep = empty_boost; +#endif +#ifdef BOOST_HAS_NL_TYPES_H +#include "boost_has_nl_types_h.ipp" +#else +namespace boost_has_nl_types_h = empty_boost; +#endif +#ifdef BOOST_HAS_NRVO +#include "boost_has_nrvo.ipp" +#else +namespace boost_has_nrvo = empty_boost; +#endif +#ifdef BOOST_HAS_PARTIAL_STD_ALLOCATOR +#include "boost_has_part_alloc.ipp" +#else +namespace boost_has_partial_std_allocator = empty_boost; +#endif +#ifdef BOOST_HAS_PTHREADS +#include "boost_has_pthreads.ipp" +#else +namespace boost_has_pthreads = empty_boost; +#endif +#ifdef BOOST_HAS_PTHREAD_DELAY_NP +#include "boost_has_pthread_delay_np.ipp" +#else +namespace boost_has_pthread_delay_np = empty_boost; +#endif +#ifdef BOOST_HAS_PTHREAD_MUTEXATTR_SETTYPE +#include "boost_has_pthread_ma_st.ipp" +#else +namespace boost_has_pthread_mutexattr_settype = empty_boost; +#endif +#ifdef BOOST_HAS_PTHREAD_YIELD +#include "boost_has_pthread_yield.ipp" +#else +namespace boost_has_pthread_yield = empty_boost; +#endif +#ifdef BOOST_HAS_RVALUE_REFS +#include "boost_has_rvalue_refs.ipp" +#else +namespace boost_has_rvalue_refs = empty_boost; +#endif +#ifdef BOOST_HAS_SCHED_YIELD +#include "boost_has_sched_yield.ipp" +#else +namespace boost_has_sched_yield = empty_boost; +#endif +#ifdef BOOST_HAS_SGI_TYPE_TRAITS +#include "boost_has_sgi_type_traits.ipp" +#else +namespace boost_has_sgi_type_traits = empty_boost; +#endif +#ifdef BOOST_HAS_SIGACTION +#include "boost_has_sigaction.ipp" +#else +namespace boost_has_sigaction = empty_boost; +#endif +#ifdef BOOST_HAS_SLIST +#include "boost_has_slist.ipp" +#else +namespace boost_has_slist = empty_boost; +#endif +#ifdef BOOST_HAS_STATIC_ASSERT +#include "boost_has_static_assert.ipp" +#else +namespace boost_has_static_assert = empty_boost; +#endif +#ifdef BOOST_HAS_STDINT_H +#include "boost_has_stdint_h.ipp" +#else +namespace boost_has_stdint_h = empty_boost; +#endif +#ifdef BOOST_HAS_STLP_USE_FACET +#include "boost_has_stlp_use_facet.ipp" +#else +namespace boost_has_stlp_use_facet = empty_boost; +#endif +#ifdef BOOST_HAS_TR1_ARRAY +#include "boost_has_tr1_array.ipp" +#else +namespace boost_has_tr1_array = empty_boost; +#endif +#ifdef BOOST_HAS_TR1_BIND +#include "boost_has_tr1_bind.ipp" +#else +namespace boost_has_tr1_bind = empty_boost; +#endif +#ifdef BOOST_HAS_TR1_COMPLEX_OVERLOADS +#include "boost_has_tr1_complex_over.ipp" +#else +namespace boost_has_tr1_complex_overloads = empty_boost; +#endif +#ifdef BOOST_HAS_TR1_COMPLEX_INVERSE_TRIG +#include "boost_has_tr1_complex_trig.ipp" +#else +namespace boost_has_tr1_complex_inverse_trig = empty_boost; +#endif +#ifdef BOOST_HAS_TR1_FUNCTION +#include "boost_has_tr1_function.ipp" +#else +namespace boost_has_tr1_function = empty_boost; +#endif +#ifdef BOOST_HAS_TR1_HASH +#include "boost_has_tr1_hash.ipp" +#else +namespace boost_has_tr1_hash = empty_boost; +#endif +#ifdef BOOST_HAS_TR1_MEM_FN +#include "boost_has_tr1_mem_fn.ipp" +#else +namespace boost_has_tr1_mem_fn = empty_boost; +#endif +#ifdef BOOST_HAS_TR1_RANDOM +#include "boost_has_tr1_random.ipp" +#else +namespace boost_has_tr1_random = empty_boost; +#endif +#ifdef BOOST_HAS_TR1_REFERENCE_WRAPPER +#include "boost_has_tr1_ref_wrap.ipp" +#else +namespace boost_has_tr1_reference_wrapper = empty_boost; +#endif +#ifdef BOOST_HAS_TR1_REGEX +#include "boost_has_tr1_regex.ipp" +#else +namespace boost_has_tr1_regex = empty_boost; +#endif +#ifdef BOOST_HAS_TR1_RESULT_OF +#include "boost_has_tr1_result_of.ipp" +#else +namespace boost_has_tr1_result_of = empty_boost; +#endif +#ifdef BOOST_HAS_TR1_SHARED_PTR +#include "boost_has_tr1_shared_ptr.ipp" +#else +namespace boost_has_tr1_shared_ptr = empty_boost; +#endif +#ifdef BOOST_HAS_TR1_TUPLE +#include "boost_has_tr1_tuple.ipp" +#else +namespace boost_has_tr1_tuple = empty_boost; +#endif +#ifdef BOOST_HAS_TR1_TYPE_TRAITS +#include "boost_has_tr1_type_traits.ipp" +#else +namespace boost_has_tr1_type_traits = empty_boost; +#endif +#ifdef BOOST_HAS_TR1_UNORDERED_MAP +#include "boost_has_tr1_unordered_map.ipp" +#else +namespace boost_has_tr1_unordered_map = empty_boost; +#endif +#ifdef BOOST_HAS_TR1_UNORDERED_SET +#include "boost_has_tr1_unordered_set.ipp" +#else +namespace boost_has_tr1_unordered_set = empty_boost; +#endif +#ifdef BOOST_HAS_TR1_UTILITY +#include "boost_has_tr1_utility.ipp" +#else +namespace boost_has_tr1_utility = empty_boost; +#endif +#ifdef BOOST_HAS_UNISTD_H +#include "boost_has_unistd_h.ipp" +#else +namespace boost_has_unistd_h = empty_boost; +#endif +#ifdef BOOST_HAS_VARIADIC_TMPL +#include "boost_has_variadic_tmpl.ipp" +#else +namespace boost_has_variadic_tmpl = empty_boost; +#endif +#ifdef BOOST_MSVC6_MEMBER_TEMPLATES +#include "boost_has_vc6_mem_templ.ipp" +#else +namespace boost_msvc6_member_templates = empty_boost; +#endif +#ifdef BOOST_MSVC_STD_ITERATOR +#include "boost_has_vc_iterator.ipp" +#else +namespace boost_msvc_std_iterator = empty_boost; +#endif +#ifdef BOOST_HAS_WINTHREADS +#include "boost_has_winthreads.ipp" +#else +namespace boost_has_winthreads = empty_boost; +#endif + +int main( int, char *[] ) +{ + if(0 != boost_has_two_arg_use_facet::test()) + { + std::cerr << "Failed test for BOOST_HAS_TWO_ARG_USE_FACET at: " << __FILE__ << ":" << __LINE__ << std::endl; + ++error_count; + } + if(0 != boost_has_bethreads::test()) + { + std::cerr << "Failed test for BOOST_HAS_BETHREADS at: " << __FILE__ << ":" << __LINE__ << std::endl; + ++error_count; + } + if(0 != boost_has_clock_gettime::test()) + { + std::cerr << "Failed test for BOOST_HAS_CLOCK_GETTIME at: " << __FILE__ << ":" << __LINE__ << std::endl; + ++error_count; + } + if(0 != boost_has_dirent_h::test()) + { + std::cerr << "Failed test for BOOST_HAS_DIRENT_H at: " << __FILE__ << ":" << __LINE__ << std::endl; + ++error_count; + } + if(0 != boost_has_expm1::test()) + { + std::cerr << "Failed test for BOOST_HAS_EXPM1 at: " << __FILE__ << ":" << __LINE__ << std::endl; + ++error_count; + } + if(0 != boost_has_ftime::test()) + { + std::cerr << "Failed test for BOOST_HAS_FTIME at: " << __FILE__ << ":" << __LINE__ << std::endl; + ++error_count; + } + if(0 != boost_has_getsystemtimeasfiletime::test()) + { + std::cerr << "Failed test for BOOST_HAS_GETSYSTEMTIMEASFILETIME at: " << __FILE__ << ":" << __LINE__ << std::endl; + ++error_count; + } + if(0 != boost_has_gettimeofday::test()) + { + std::cerr << "Failed test for BOOST_HAS_GETTIMEOFDAY at: " << __FILE__ << ":" << __LINE__ << std::endl; + ++error_count; + } + if(0 != boost_has_hash::test()) + { + std::cerr << "Failed test for BOOST_HAS_HASH at: " << __FILE__ << ":" << __LINE__ << std::endl; + ++error_count; + } + if(0 != boost_has_log1p::test()) + { + std::cerr << "Failed test for BOOST_HAS_LOG1P at: " << __FILE__ << ":" << __LINE__ << std::endl; + ++error_count; + } + if(0 != boost_has_long_long::test()) + { + std::cerr << "Failed test for BOOST_HAS_LONG_LONG at: " << __FILE__ << ":" << __LINE__ << std::endl; + ++error_count; + } + if(0 != boost_has_macro_use_facet::test()) + { + std::cerr << "Failed test for BOOST_HAS_MACRO_USE_FACET at: " << __FILE__ << ":" << __LINE__ << std::endl; + ++error_count; + } + if(0 != boost_has_ms_int64::test()) + { + std::cerr << "Failed test for BOOST_HAS_MS_INT64 at: " << __FILE__ << ":" << __LINE__ << std::endl; + ++error_count; + } + if(0 != boost_has_nanosleep::test()) + { + std::cerr << "Failed test for BOOST_HAS_NANOSLEEP at: " << __FILE__ << ":" << __LINE__ << std::endl; + ++error_count; + } + if(0 != boost_has_nl_types_h::test()) + { + std::cerr << "Failed test for BOOST_HAS_NL_TYPES_H at: " << __FILE__ << ":" << __LINE__ << std::endl; + ++error_count; + } + if(0 != boost_has_nrvo::test()) + { + std::cerr << "Failed test for BOOST_HAS_NRVO at: " << __FILE__ << ":" << __LINE__ << std::endl; + ++error_count; + } + if(0 != boost_has_partial_std_allocator::test()) + { + std::cerr << "Failed test for BOOST_HAS_PARTIAL_STD_ALLOCATOR at: " << __FILE__ << ":" << __LINE__ << std::endl; + ++error_count; + } + if(0 != boost_has_pthreads::test()) + { + std::cerr << "Failed test for BOOST_HAS_PTHREADS at: " << __FILE__ << ":" << __LINE__ << std::endl; + ++error_count; + } + if(0 != boost_has_pthread_delay_np::test()) + { + std::cerr << "Failed test for BOOST_HAS_PTHREAD_DELAY_NP at: " << __FILE__ << ":" << __LINE__ << std::endl; + ++error_count; + } + if(0 != boost_has_pthread_mutexattr_settype::test()) + { + std::cerr << "Failed test for BOOST_HAS_PTHREAD_MUTEXATTR_SETTYPE at: " << __FILE__ << ":" << __LINE__ << std::endl; + ++error_count; + } + if(0 != boost_has_pthread_yield::test()) + { + std::cerr << "Failed test for BOOST_HAS_PTHREAD_YIELD at: " << __FILE__ << ":" << __LINE__ << std::endl; + ++error_count; + } + if(0 != boost_has_rvalue_refs::test()) + { + std::cerr << "Failed test for BOOST_HAS_RVALUE_REFS at: " << __FILE__ << ":" << __LINE__ << std::endl; + ++error_count; + } + if(0 != boost_has_sched_yield::test()) + { + std::cerr << "Failed test for BOOST_HAS_SCHED_YIELD at: " << __FILE__ << ":" << __LINE__ << std::endl; + ++error_count; + } + if(0 != boost_has_sgi_type_traits::test()) + { + std::cerr << "Failed test for BOOST_HAS_SGI_TYPE_TRAITS at: " << __FILE__ << ":" << __LINE__ << std::endl; + ++error_count; + } + if(0 != boost_has_sigaction::test()) + { + std::cerr << "Failed test for BOOST_HAS_SIGACTION at: " << __FILE__ << ":" << __LINE__ << std::endl; + ++error_count; + } + if(0 != boost_has_slist::test()) + { + std::cerr << "Failed test for BOOST_HAS_SLIST at: " << __FILE__ << ":" << __LINE__ << std::endl; + ++error_count; + } + if(0 != boost_has_static_assert::test()) + { + std::cerr << "Failed test for BOOST_HAS_STATIC_ASSERT at: " << __FILE__ << ":" << __LINE__ << std::endl; + ++error_count; + } + if(0 != boost_has_stdint_h::test()) + { + std::cerr << "Failed test for BOOST_HAS_STDINT_H at: " << __FILE__ << ":" << __LINE__ << std::endl; + ++error_count; + } + if(0 != boost_has_stlp_use_facet::test()) + { + std::cerr << "Failed test for BOOST_HAS_STLP_USE_FACET at: " << __FILE__ << ":" << __LINE__ << std::endl; + ++error_count; + } + if(0 != boost_has_tr1_array::test()) + { + std::cerr << "Failed test for BOOST_HAS_TR1_ARRAY at: " << __FILE__ << ":" << __LINE__ << std::endl; + ++error_count; + } + if(0 != boost_has_tr1_bind::test()) + { + std::cerr << "Failed test for BOOST_HAS_TR1_BIND at: " << __FILE__ << ":" << __LINE__ << std::endl; + ++error_count; + } + if(0 != boost_has_tr1_complex_overloads::test()) + { + std::cerr << "Failed test for BOOST_HAS_TR1_COMPLEX_OVERLOADS at: " << __FILE__ << ":" << __LINE__ << std::endl; + ++error_count; + } + if(0 != boost_has_tr1_complex_inverse_trig::test()) + { + std::cerr << "Failed test for BOOST_HAS_TR1_COMPLEX_INVERSE_TRIG at: " << __FILE__ << ":" << __LINE__ << std::endl; + ++error_count; + } + if(0 != boost_has_tr1_function::test()) + { + std::cerr << "Failed test for BOOST_HAS_TR1_FUNCTION at: " << __FILE__ << ":" << __LINE__ << std::endl; + ++error_count; + } + if(0 != boost_has_tr1_hash::test()) + { + std::cerr << "Failed test for BOOST_HAS_TR1_HASH at: " << __FILE__ << ":" << __LINE__ << std::endl; + ++error_count; + } + if(0 != boost_has_tr1_mem_fn::test()) + { + std::cerr << "Failed test for BOOST_HAS_TR1_MEM_FN at: " << __FILE__ << ":" << __LINE__ << std::endl; + ++error_count; + } + if(0 != boost_has_tr1_random::test()) + { + std::cerr << "Failed test for BOOST_HAS_TR1_RANDOM at: " << __FILE__ << ":" << __LINE__ << std::endl; + ++error_count; + } + if(0 != boost_has_tr1_reference_wrapper::test()) + { + std::cerr << "Failed test for BOOST_HAS_TR1_REFERENCE_WRAPPER at: " << __FILE__ << ":" << __LINE__ << std::endl; + ++error_count; + } + if(0 != boost_has_tr1_regex::test()) + { + std::cerr << "Failed test for BOOST_HAS_TR1_REGEX at: " << __FILE__ << ":" << __LINE__ << std::endl; + ++error_count; + } + if(0 != boost_has_tr1_result_of::test()) + { + std::cerr << "Failed test for BOOST_HAS_TR1_RESULT_OF at: " << __FILE__ << ":" << __LINE__ << std::endl; + ++error_count; + } + if(0 != boost_has_tr1_shared_ptr::test()) + { + std::cerr << "Failed test for BOOST_HAS_TR1_SHARED_PTR at: " << __FILE__ << ":" << __LINE__ << std::endl; + ++error_count; + } + if(0 != boost_has_tr1_tuple::test()) + { + std::cerr << "Failed test for BOOST_HAS_TR1_TUPLE at: " << __FILE__ << ":" << __LINE__ << std::endl; + ++error_count; + } + if(0 != boost_has_tr1_type_traits::test()) + { + std::cerr << "Failed test for BOOST_HAS_TR1_TYPE_TRAITS at: " << __FILE__ << ":" << __LINE__ << std::endl; + ++error_count; + } + if(0 != boost_has_tr1_unordered_map::test()) + { + std::cerr << "Failed test for BOOST_HAS_TR1_UNORDERED_MAP at: " << __FILE__ << ":" << __LINE__ << std::endl; + ++error_count; + } + if(0 != boost_has_tr1_unordered_set::test()) + { + std::cerr << "Failed test for BOOST_HAS_TR1_UNORDERED_SET at: " << __FILE__ << ":" << __LINE__ << std::endl; + ++error_count; + } + if(0 != boost_has_tr1_utility::test()) + { + std::cerr << "Failed test for BOOST_HAS_TR1_UTILITY at: " << __FILE__ << ":" << __LINE__ << std::endl; + ++error_count; + } + if(0 != boost_has_unistd_h::test()) + { + std::cerr << "Failed test for BOOST_HAS_UNISTD_H at: " << __FILE__ << ":" << __LINE__ << std::endl; + ++error_count; + } + if(0 != boost_has_variadic_tmpl::test()) + { + std::cerr << "Failed test for BOOST_HAS_VARIADIC_TMPL at: " << __FILE__ << ":" << __LINE__ << std::endl; + ++error_count; + } + if(0 != boost_msvc6_member_templates::test()) + { + std::cerr << "Failed test for BOOST_MSVC6_MEMBER_TEMPLATES at: " << __FILE__ << ":" << __LINE__ << std::endl; + ++error_count; + } + if(0 != boost_msvc_std_iterator::test()) + { + std::cerr << "Failed test for BOOST_MSVC_STD_ITERATOR at: " << __FILE__ << ":" << __LINE__ << std::endl; + ++error_count; + } + if(0 != boost_has_winthreads::test()) + { + std::cerr << "Failed test for BOOST_HAS_WINTHREADS at: " << __FILE__ << ":" << __LINE__ << std::endl; + ++error_count; + } + if(0 != boost_no_0x_hdr_array::test()) + { + std::cerr << "Failed test for BOOST_NO_0X_HDR_ARRAY at: " << __FILE__ << ":" << __LINE__ << std::endl; + ++error_count; + } + if(0 != boost_no_0x_hdr_chrono::test()) + { + std::cerr << "Failed test for BOOST_NO_0X_HDR_CHRONO at: " << __FILE__ << ":" << __LINE__ << std::endl; + ++error_count; + } + if(0 != boost_no_0x_hdr_codecvt::test()) + { + std::cerr << "Failed test for BOOST_NO_0X_HDR_CODECVT at: " << __FILE__ << ":" << __LINE__ << std::endl; + ++error_count; + } + if(0 != boost_no_0x_hdr_condition_variable::test()) + { + std::cerr << "Failed test for BOOST_NO_0X_HDR_CONDITION_VARIABLE at: " << __FILE__ << ":" << __LINE__ << std::endl; + ++error_count; + } + if(0 != boost_no_0x_hdr_forward_list::test()) + { + std::cerr << "Failed test for BOOST_NO_0X_HDR_FORWARD_LIST at: " << __FILE__ << ":" << __LINE__ << std::endl; + ++error_count; + } + if(0 != boost_no_0x_hdr_future::test()) + { + std::cerr << "Failed test for BOOST_NO_0X_HDR_FUTURE at: " << __FILE__ << ":" << __LINE__ << std::endl; + ++error_count; + } + if(0 != boost_no_0x_hdr_initializer_list::test()) + { + std::cerr << "Failed test for BOOST_NO_0X_HDR_INITIALIZER_LIST at: " << __FILE__ << ":" << __LINE__ << std::endl; + ++error_count; + } + if(0 != boost_no_0x_hdr_mutex::test()) + { + std::cerr << "Failed test for BOOST_NO_0X_HDR_MUTEX at: " << __FILE__ << ":" << __LINE__ << std::endl; + ++error_count; + } + if(0 != boost_no_0x_hdr_random::test()) + { + std::cerr << "Failed test for BOOST_NO_0X_HDR_RANDOM at: " << __FILE__ << ":" << __LINE__ << std::endl; + ++error_count; + } + if(0 != boost_no_0x_hdr_ratio::test()) + { + std::cerr << "Failed test for BOOST_NO_0X_HDR_RATIO at: " << __FILE__ << ":" << __LINE__ << std::endl; + ++error_count; + } + if(0 != boost_no_0x_hdr_regex::test()) + { + std::cerr << "Failed test for BOOST_NO_0X_HDR_REGEX at: " << __FILE__ << ":" << __LINE__ << std::endl; + ++error_count; + } + if(0 != boost_no_0x_hdr_system_error::test()) + { + std::cerr << "Failed test for BOOST_NO_0X_HDR_SYSTEM_ERROR at: " << __FILE__ << ":" << __LINE__ << std::endl; + ++error_count; + } + if(0 != boost_no_0x_hdr_thread::test()) + { + std::cerr << "Failed test for BOOST_NO_0X_HDR_THREAD at: " << __FILE__ << ":" << __LINE__ << std::endl; + ++error_count; + } + if(0 != boost_no_0x_hdr_tuple::test()) + { + std::cerr << "Failed test for BOOST_NO_0X_HDR_TUPLE at: " << __FILE__ << ":" << __LINE__ << std::endl; + ++error_count; + } + if(0 != boost_no_0x_hdr_typeindex::test()) + { + std::cerr << "Failed test for BOOST_NO_0X_HDR_TYPEINDEX at: " << __FILE__ << ":" << __LINE__ << std::endl; + ++error_count; + } + if(0 != boost_no_0x_hdr_type_traits::test()) + { + std::cerr << "Failed test for BOOST_NO_0X_HDR_TYPE_TRAITS at: " << __FILE__ << ":" << __LINE__ << std::endl; + ++error_count; + } + if(0 != boost_no_0x_hdr_unordered_map::test()) + { + std::cerr << "Failed test for BOOST_NO_0X_HDR_UNORDERED_MAP at: " << __FILE__ << ":" << __LINE__ << std::endl; + ++error_count; + } + if(0 != boost_no_0x_hdr_unordered_set::test()) + { + std::cerr << "Failed test for BOOST_NO_0X_HDR_UNORDERED_SET at: " << __FILE__ << ":" << __LINE__ << std::endl; + ++error_count; + } + if(0 != boost_no_adl_barrier::test()) + { + std::cerr << "Failed test for BOOST_NO_ADL_BARRIER at: " << __FILE__ << ":" << __LINE__ << std::endl; + ++error_count; + } + if(0 != boost_no_argument_dependent_lookup::test()) + { + std::cerr << "Failed test for BOOST_NO_ARGUMENT_DEPENDENT_LOOKUP at: " << __FILE__ << ":" << __LINE__ << std::endl; + ++error_count; + } + if(0 != boost_no_array_type_specializations::test()) + { + std::cerr << "Failed test for BOOST_NO_ARRAY_TYPE_SPECIALIZATIONS at: " << __FILE__ << ":" << __LINE__ << std::endl; + ++error_count; + } + if(0 != boost_no_auto_declarations::test()) + { + std::cerr << "Failed test for BOOST_NO_AUTO_DECLARATIONS at: " << __FILE__ << ":" << __LINE__ << std::endl; + ++error_count; + } + if(0 != boost_no_auto_multideclarations::test()) + { + std::cerr << "Failed test for BOOST_NO_AUTO_MULTIDECLARATIONS at: " << __FILE__ << ":" << __LINE__ << std::endl; + ++error_count; + } + if(0 != boost_no_auto_ptr::test()) + { + std::cerr << "Failed test for BOOST_NO_AUTO_PTR at: " << __FILE__ << ":" << __LINE__ << std::endl; + ++error_count; + } + if(0 != boost_bcb_partial_specialization_bug::test()) + { + std::cerr << "Failed test for BOOST_BCB_PARTIAL_SPECIALIZATION_BUG at: " << __FILE__ << ":" << __LINE__ << std::endl; + ++error_count; + } + if(0 != boost_no_char16_t::test()) + { + std::cerr << "Failed test for BOOST_NO_CHAR16_T at: " << __FILE__ << ":" << __LINE__ << std::endl; + ++error_count; + } + if(0 != boost_no_char32_t::test()) + { + std::cerr << "Failed test for BOOST_NO_CHAR32_T at: " << __FILE__ << ":" << __LINE__ << std::endl; + ++error_count; + } + if(0 != boost_no_complete_value_initialization::test()) + { + std::cerr << "Failed test for BOOST_NO_COMPLETE_VALUE_INITIALIZATION at: " << __FILE__ << ":" << __LINE__ << std::endl; + ++error_count; + } + if(0 != boost_no_constexpr::test()) + { + std::cerr << "Failed test for BOOST_NO_CONSTEXPR at: " << __FILE__ << ":" << __LINE__ << std::endl; + ++error_count; + } + if(0 != boost_no_ctype_functions::test()) + { + std::cerr << "Failed test for BOOST_NO_CTYPE_FUNCTIONS at: " << __FILE__ << ":" << __LINE__ << std::endl; + ++error_count; + } + if(0 != boost_no_cv_specializations::test()) + { + std::cerr << "Failed test for BOOST_NO_CV_SPECIALIZATIONS at: " << __FILE__ << ":" << __LINE__ << std::endl; + ++error_count; + } + if(0 != boost_no_cv_void_specializations::test()) + { + std::cerr << "Failed test for BOOST_NO_CV_VOID_SPECIALIZATIONS at: " << __FILE__ << ":" << __LINE__ << std::endl; + ++error_count; + } + if(0 != boost_no_cwchar::test()) + { + std::cerr << "Failed test for BOOST_NO_CWCHAR at: " << __FILE__ << ":" << __LINE__ << std::endl; + ++error_count; + } + if(0 != boost_no_cwctype::test()) + { + std::cerr << "Failed test for BOOST_NO_CWCTYPE at: " << __FILE__ << ":" << __LINE__ << std::endl; + ++error_count; + } + if(0 != boost_no_decltype::test()) + { + std::cerr << "Failed test for BOOST_NO_DECLTYPE at: " << __FILE__ << ":" << __LINE__ << std::endl; + ++error_count; + } + if(0 != boost_no_decltype_n3276::test()) + { + std::cerr << "Failed test for BOOST_NO_DECLTYPE_N3276 at: " << __FILE__ << ":" << __LINE__ << std::endl; + ++error_count; + } + if(0 != boost_deduced_typename::test()) + { + std::cerr << "Failed test for BOOST_DEDUCED_TYPENAME at: " << __FILE__ << ":" << __LINE__ << std::endl; + ++error_count; + } + if(0 != boost_no_defaulted_functions::test()) + { + std::cerr << "Failed test for BOOST_NO_DEFAULTED_FUNCTIONS at: " << __FILE__ << ":" << __LINE__ << std::endl; + ++error_count; + } + if(0 != boost_no_deleted_functions::test()) + { + std::cerr << "Failed test for BOOST_NO_DELETED_FUNCTIONS at: " << __FILE__ << ":" << __LINE__ << std::endl; + ++error_count; + } + if(0 != boost_no_dependent_nested_derivations::test()) + { + std::cerr << "Failed test for BOOST_NO_DEPENDENT_NESTED_DERIVATIONS at: " << __FILE__ << ":" << __LINE__ << std::endl; + ++error_count; + } + if(0 != boost_no_dependent_types_in_template_value_parameters::test()) + { + std::cerr << "Failed test for BOOST_NO_DEPENDENT_TYPES_IN_TEMPLATE_VALUE_PARAMETERS at: " << __FILE__ << ":" << __LINE__ << std::endl; + ++error_count; + } + if(0 != boost_no_exceptions::test()) + { + std::cerr << "Failed test for BOOST_NO_EXCEPTIONS at: " << __FILE__ << ":" << __LINE__ << std::endl; + ++error_count; + } + if(0 != boost_no_exception_std_namespace::test()) + { + std::cerr << "Failed test for BOOST_NO_EXCEPTION_STD_NAMESPACE at: " << __FILE__ << ":" << __LINE__ << std::endl; + ++error_count; + } + if(0 != boost_no_explicit_conversion_operators::test()) + { + std::cerr << "Failed test for BOOST_NO_EXPLICIT_CONVERSION_OPERATORS at: " << __FILE__ << ":" << __LINE__ << std::endl; + ++error_count; + } + if(0 != boost_no_explicit_function_template_arguments::test()) + { + std::cerr << "Failed test for BOOST_NO_EXPLICIT_FUNCTION_TEMPLATE_ARGUMENTS at: " << __FILE__ << ":" << __LINE__ << std::endl; + ++error_count; + } + if(0 != boost_no_extern_template::test()) + { + std::cerr << "Failed test for BOOST_NO_EXTERN_TEMPLATE at: " << __FILE__ << ":" << __LINE__ << std::endl; + ++error_count; + } + if(0 != boost_no_fenv_h::test()) + { + std::cerr << "Failed test for BOOST_NO_FENV_H at: " << __FILE__ << ":" << __LINE__ << std::endl; + ++error_count; + } + if(0 != boost_no_function_template_default_args::test()) + { + std::cerr << "Failed test for BOOST_NO_FUNCTION_TEMPLATE_DEFAULT_ARGS at: " << __FILE__ << ":" << __LINE__ << std::endl; + ++error_count; + } + if(0 != boost_no_function_type_specializations::test()) + { + std::cerr << "Failed test for BOOST_NO_FUNCTION_TYPE_SPECIALIZATIONS at: " << __FILE__ << ":" << __LINE__ << std::endl; + ++error_count; + } + if(0 != boost_no_function_template_ordering::test()) + { + std::cerr << "Failed test for BOOST_NO_FUNCTION_TEMPLATE_ORDERING at: " << __FILE__ << ":" << __LINE__ << std::endl; + ++error_count; + } + if(0 != boost_no_ms_int64_numeric_limits::test()) + { + std::cerr << "Failed test for BOOST_NO_MS_INT64_NUMERIC_LIMITS at: " << __FILE__ << ":" << __LINE__ << std::endl; + ++error_count; + } + if(0 != boost_no_initializer_lists::test()) + { + std::cerr << "Failed test for BOOST_NO_INITIALIZER_LISTS at: " << __FILE__ << ":" << __LINE__ << std::endl; + ++error_count; + } + if(0 != boost_no_inclass_member_initialization::test()) + { + std::cerr << "Failed test for BOOST_NO_INCLASS_MEMBER_INITIALIZATION at: " << __FILE__ << ":" << __LINE__ << std::endl; + ++error_count; + } + if(0 != boost_no_integral_int64_t::test()) + { + std::cerr << "Failed test for BOOST_NO_INTEGRAL_INT64_T at: " << __FILE__ << ":" << __LINE__ << std::endl; + ++error_count; + } + if(0 != boost_no_iosfwd::test()) + { + std::cerr << "Failed test for BOOST_NO_IOSFWD at: " << __FILE__ << ":" << __LINE__ << std::endl; + ++error_count; + } + if(0 != boost_no_iostream::test()) + { + std::cerr << "Failed test for BOOST_NO_IOSTREAM at: " << __FILE__ << ":" << __LINE__ << std::endl; + ++error_count; + } + if(0 != boost_no_is_abstract::test()) + { + std::cerr << "Failed test for BOOST_NO_IS_ABSTRACT at: " << __FILE__ << ":" << __LINE__ << std::endl; + ++error_count; + } + if(0 != boost_no_templated_iterator_constructors::test()) + { + std::cerr << "Failed test for BOOST_NO_TEMPLATED_ITERATOR_CONSTRUCTORS at: " << __FILE__ << ":" << __LINE__ << std::endl; + ++error_count; + } + if(0 != boost_no_lambdas::test()) + { + std::cerr << "Failed test for BOOST_NO_LAMBDAS at: " << __FILE__ << ":" << __LINE__ << std::endl; + ++error_count; + } + if(0 != boost_no_limits::test()) + { + std::cerr << "Failed test for BOOST_NO_LIMITS at: " << __FILE__ << ":" << __LINE__ << std::endl; + ++error_count; + } + if(0 != boost_no_limits_compile_time_constants::test()) + { + std::cerr << "Failed test for BOOST_NO_LIMITS_COMPILE_TIME_CONSTANTS at: " << __FILE__ << ":" << __LINE__ << std::endl; + ++error_count; + } + if(0 != boost_no_numeric_limits_lowest::test()) + { + std::cerr << "Failed test for BOOST_NO_NUMERIC_LIMITS_LOWEST at: " << __FILE__ << ":" << __LINE__ << std::endl; + ++error_count; + } + if(0 != boost_no_long_long_numeric_limits::test()) + { + std::cerr << "Failed test for BOOST_NO_LONG_LONG_NUMERIC_LIMITS at: " << __FILE__ << ":" << __LINE__ << std::endl; + ++error_count; + } + if(0 != boost_no_long_long::test()) + { + std::cerr << "Failed test for BOOST_NO_LONG_LONG at: " << __FILE__ << ":" << __LINE__ << std::endl; + ++error_count; + } + if(0 != boost_no_member_function_specializations::test()) + { + std::cerr << "Failed test for BOOST_NO_MEMBER_FUNCTION_SPECIALIZATIONS at: " << __FILE__ << ":" << __LINE__ << std::endl; + ++error_count; + } + if(0 != boost_no_member_templates::test()) + { + std::cerr << "Failed test for BOOST_NO_MEMBER_TEMPLATES at: " << __FILE__ << ":" << __LINE__ << std::endl; + ++error_count; + } + if(0 != boost_no_member_template_friends::test()) + { + std::cerr << "Failed test for BOOST_NO_MEMBER_TEMPLATE_FRIENDS at: " << __FILE__ << ":" << __LINE__ << std::endl; + ++error_count; + } + if(0 != boost_no_member_template_keyword::test()) + { + std::cerr << "Failed test for BOOST_NO_MEMBER_TEMPLATE_KEYWORD at: " << __FILE__ << ":" << __LINE__ << std::endl; + ++error_count; + } + if(0 != boost_no_pointer_to_member_template_parameters::test()) + { + std::cerr << "Failed test for BOOST_NO_POINTER_TO_MEMBER_TEMPLATE_PARAMETERS at: " << __FILE__ << ":" << __LINE__ << std::endl; + ++error_count; + } + if(0 != boost_no_nested_friendship::test()) + { + std::cerr << "Failed test for BOOST_NO_NESTED_FRIENDSHIP at: " << __FILE__ << ":" << __LINE__ << std::endl; + ++error_count; + } + if(0 != boost_no_noexcept::test()) + { + std::cerr << "Failed test for BOOST_NO_NOEXCEPT at: " << __FILE__ << ":" << __LINE__ << std::endl; + ++error_count; + } + if(0 != boost_no_nullptr::test()) + { + std::cerr << "Failed test for BOOST_NO_NULLPTR at: " << __FILE__ << ":" << __LINE__ << std::endl; + ++error_count; + } + if(0 != boost_no_operators_in_namespace::test()) + { + std::cerr << "Failed test for BOOST_NO_OPERATORS_IN_NAMESPACE at: " << __FILE__ << ":" << __LINE__ << std::endl; + ++error_count; + } + if(0 != boost_no_template_partial_specialization::test()) + { + std::cerr << "Failed test for BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION at: " << __FILE__ << ":" << __LINE__ << std::endl; + ++error_count; + } + if(0 != boost_no_partial_specialization_implicit_default_args::test()) + { + std::cerr << "Failed test for BOOST_NO_PARTIAL_SPECIALIZATION_IMPLICIT_DEFAULT_ARGS at: " << __FILE__ << ":" << __LINE__ << std::endl; + ++error_count; + } + if(0 != boost_no_private_in_aggregate::test()) + { + std::cerr << "Failed test for BOOST_NO_PRIVATE_IN_AGGREGATE at: " << __FILE__ << ":" << __LINE__ << std::endl; + ++error_count; + } + if(0 != boost_no_pointer_to_member_const::test()) + { + std::cerr << "Failed test for BOOST_NO_POINTER_TO_MEMBER_CONST at: " << __FILE__ << ":" << __LINE__ << std::endl; + ++error_count; + } + if(0 != boost_no_raw_literals::test()) + { + std::cerr << "Failed test for BOOST_NO_RAW_LITERALS at: " << __FILE__ << ":" << __LINE__ << std::endl; + ++error_count; + } + if(0 != boost_no_unreachable_return_detection::test()) + { + std::cerr << "Failed test for BOOST_NO_UNREACHABLE_RETURN_DETECTION at: " << __FILE__ << ":" << __LINE__ << std::endl; + ++error_count; + } + if(0 != boost_no_rtti::test()) + { + std::cerr << "Failed test for BOOST_NO_RTTI at: " << __FILE__ << ":" << __LINE__ << std::endl; + ++error_count; + } + if(0 != boost_no_rvalue_references::test()) + { + std::cerr << "Failed test for BOOST_NO_RVALUE_REFERENCES at: " << __FILE__ << ":" << __LINE__ << std::endl; + ++error_count; + } + if(0 != boost_no_scoped_enums::test()) + { + std::cerr << "Failed test for BOOST_NO_SCOPED_ENUMS at: " << __FILE__ << ":" << __LINE__ << std::endl; + ++error_count; + } + if(0 != boost_no_sfinae::test()) + { + std::cerr << "Failed test for BOOST_NO_SFINAE at: " << __FILE__ << ":" << __LINE__ << std::endl; + ++error_count; + } + if(0 != boost_no_sfinae_expr::test()) + { + std::cerr << "Failed test for BOOST_NO_SFINAE_EXPR at: " << __FILE__ << ":" << __LINE__ << std::endl; + ++error_count; + } + if(0 != boost_no_stringstream::test()) + { + std::cerr << "Failed test for BOOST_NO_STRINGSTREAM at: " << __FILE__ << ":" << __LINE__ << std::endl; + ++error_count; + } + if(0 != boost_no_static_assert::test()) + { + std::cerr << "Failed test for BOOST_NO_STATIC_ASSERT at: " << __FILE__ << ":" << __LINE__ << std::endl; + ++error_count; + } + if(0 != boost_no_stdc_namespace::test()) + { + std::cerr << "Failed test for BOOST_NO_STDC_NAMESPACE at: " << __FILE__ << ":" << __LINE__ << std::endl; + ++error_count; + } + if(0 != boost_no_std_allocator::test()) + { + std::cerr << "Failed test for BOOST_NO_STD_ALLOCATOR at: " << __FILE__ << ":" << __LINE__ << std::endl; + ++error_count; + } + if(0 != boost_no_std_distance::test()) + { + std::cerr << "Failed test for BOOST_NO_STD_DISTANCE at: " << __FILE__ << ":" << __LINE__ << std::endl; + ++error_count; + } + if(0 != boost_no_std_iterator::test()) + { + std::cerr << "Failed test for BOOST_NO_STD_ITERATOR at: " << __FILE__ << ":" << __LINE__ << std::endl; + ++error_count; + } + if(0 != boost_no_std_iterator_traits::test()) + { + std::cerr << "Failed test for BOOST_NO_STD_ITERATOR_TRAITS at: " << __FILE__ << ":" << __LINE__ << std::endl; + ++error_count; + } + if(0 != boost_no_std_locale::test()) + { + std::cerr << "Failed test for BOOST_NO_STD_LOCALE at: " << __FILE__ << ":" << __LINE__ << std::endl; + ++error_count; + } + if(0 != boost_no_std_messages::test()) + { + std::cerr << "Failed test for BOOST_NO_STD_MESSAGES at: " << __FILE__ << ":" << __LINE__ << std::endl; + ++error_count; + } + if(0 != boost_no_std_min_max::test()) + { + std::cerr << "Failed test for BOOST_NO_STD_MIN_MAX at: " << __FILE__ << ":" << __LINE__ << std::endl; + ++error_count; + } + if(0 != boost_no_std_output_iterator_assign::test()) + { + std::cerr << "Failed test for BOOST_NO_STD_OUTPUT_ITERATOR_ASSIGN at: " << __FILE__ << ":" << __LINE__ << std::endl; + ++error_count; + } + if(0 != boost_no_std_typeinfo::test()) + { + std::cerr << "Failed test for BOOST_NO_STD_TYPEINFO at: " << __FILE__ << ":" << __LINE__ << std::endl; + ++error_count; + } + if(0 != boost_no_std_unordered::test()) + { + std::cerr << "Failed test for BOOST_NO_STD_UNORDERED at: " << __FILE__ << ":" << __LINE__ << std::endl; + ++error_count; + } + if(0 != boost_no_std_use_facet::test()) + { + std::cerr << "Failed test for BOOST_NO_STD_USE_FACET at: " << __FILE__ << ":" << __LINE__ << std::endl; + ++error_count; + } + if(0 != boost_no_std_wstreambuf::test()) + { + std::cerr << "Failed test for BOOST_NO_STD_WSTREAMBUF at: " << __FILE__ << ":" << __LINE__ << std::endl; + ++error_count; + } + if(0 != boost_no_std_wstring::test()) + { + std::cerr << "Failed test for BOOST_NO_STD_WSTRING at: " << __FILE__ << ":" << __LINE__ << std::endl; + ++error_count; + } + if(0 != boost_no_swprintf::test()) + { + std::cerr << "Failed test for BOOST_NO_SWPRINTF at: " << __FILE__ << ":" << __LINE__ << std::endl; + ++error_count; + } + if(0 != boost_no_template_aliases::test()) + { + std::cerr << "Failed test for BOOST_NO_TEMPLATE_ALIASES at: " << __FILE__ << ":" << __LINE__ << std::endl; + ++error_count; + } + if(0 != boost_no_templated_iostreams::test()) + { + std::cerr << "Failed test for BOOST_NO_TEMPLATED_IOSTREAMS at: " << __FILE__ << ":" << __LINE__ << std::endl; + ++error_count; + } + if(0 != boost_no_template_templates::test()) + { + std::cerr << "Failed test for BOOST_NO_TEMPLATE_TEMPLATES at: " << __FILE__ << ":" << __LINE__ << std::endl; + ++error_count; + } + if(0 != boost_no_two_phase_name_lookup::test()) + { + std::cerr << "Failed test for BOOST_NO_TWO_PHASE_NAME_LOOKUP at: " << __FILE__ << ":" << __LINE__ << std::endl; + ++error_count; + } + if(0 != boost_no_typeid::test()) + { + std::cerr << "Failed test for BOOST_NO_TYPEID at: " << __FILE__ << ":" << __LINE__ << std::endl; + ++error_count; + } + if(0 != boost_no_typename_with_ctor::test()) + { + std::cerr << "Failed test for BOOST_NO_TYPENAME_WITH_CTOR at: " << __FILE__ << ":" << __LINE__ << std::endl; + ++error_count; + } + if(0 != boost_no_unicode_literals::test()) + { + std::cerr << "Failed test for BOOST_NO_UNICODE_LITERALS at: " << __FILE__ << ":" << __LINE__ << std::endl; + ++error_count; + } + if(0 != boost_no_unified_initialization_syntax::test()) + { + std::cerr << "Failed test for BOOST_NO_UNIFIED_INITIALIZATION_SYNTAX at: " << __FILE__ << ":" << __LINE__ << std::endl; + ++error_count; + } + if(0 != boost_function_scope_using_declaration_breaks_adl::test()) + { + std::cerr << "Failed test for BOOST_FUNCTION_SCOPE_USING_DECLARATION_BREAKS_ADL at: " << __FILE__ << ":" << __LINE__ << std::endl; + ++error_count; + } + if(0 != boost_no_using_declaration_overloads_from_typename_base::test()) + { + std::cerr << "Failed test for BOOST_NO_USING_DECLARATION_OVERLOADS_FROM_TYPENAME_BASE at: " << __FILE__ << ":" << __LINE__ << std::endl; + ++error_count; + } + if(0 != boost_no_using_template::test()) + { + std::cerr << "Failed test for BOOST_NO_USING_TEMPLATE at: " << __FILE__ << ":" << __LINE__ << std::endl; + ++error_count; + } + if(0 != boost_no_variadic_macros::test()) + { + std::cerr << "Failed test for BOOST_NO_VARIADIC_MACROS at: " << __FILE__ << ":" << __LINE__ << std::endl; + ++error_count; + } + if(0 != boost_no_variadic_templates::test()) + { + std::cerr << "Failed test for BOOST_NO_VARIADIC_TEMPLATES at: " << __FILE__ << ":" << __LINE__ << std::endl; + ++error_count; + } + if(0 != boost_no_void_returns::test()) + { + std::cerr << "Failed test for BOOST_NO_VOID_RETURNS at: " << __FILE__ << ":" << __LINE__ << std::endl; + ++error_count; + } + if(0 != boost_no_intrinsic_wchar_t::test()) + { + std::cerr << "Failed test for BOOST_NO_INTRINSIC_WCHAR_T at: " << __FILE__ << ":" << __LINE__ << std::endl; + ++error_count; + } + return error_count; +} + diff --git a/libs/config/test/config_test_c.c b/libs/config/test/config_test_c.c new file mode 100644 index 0000000000..9955dbe608 --- /dev/null +++ b/libs/config/test/config_test_c.c @@ -0,0 +1,9 @@ + + +#include <boost/config.hpp> + + +int main() +{ + return 0; +} diff --git a/libs/config/test/has_2arg_use_facet_fail.cpp b/libs/config/test/has_2arg_use_facet_fail.cpp new file mode 100644 index 0000000000..1d0999dcb1 --- /dev/null +++ b/libs/config/test/has_2arg_use_facet_fail.cpp @@ -0,0 +1,34 @@ +// This file was automatically generated on Fri Dec 03 18:03:59 2004 +// by libs/config/tools/generate.cpp +// Copyright John Maddock 2002-4. +// 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) + +// See http://www.boost.org/libs/config for the most recent version. + +// Test file for macro BOOST_HAS_TWO_ARG_USE_FACET +// This file should not compile, if it does then +// BOOST_HAS_TWO_ARG_USE_FACET should be defined. +// See file boost_has_2arg_use_facet.ipp for details + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include <boost/config.hpp> +#include "test.hpp" + +#ifndef BOOST_HAS_TWO_ARG_USE_FACET +#include "boost_has_2arg_use_facet.ipp" +#else +#error "this file should not compile" +#endif + +int main( int, char *[] ) +{ + return boost_has_two_arg_use_facet::test(); +} + diff --git a/libs/config/test/has_2arg_use_facet_pass.cpp b/libs/config/test/has_2arg_use_facet_pass.cpp new file mode 100644 index 0000000000..dbfda303ba --- /dev/null +++ b/libs/config/test/has_2arg_use_facet_pass.cpp @@ -0,0 +1,34 @@ +// This file was automatically generated on Fri Dec 03 18:03:59 2004 +// by libs/config/tools/generate.cpp +// Copyright John Maddock 2002-4. +// 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) + +// See http://www.boost.org/libs/config for the most recent version. + +// Test file for macro BOOST_HAS_TWO_ARG_USE_FACET +// This file should compile, if it does not then +// BOOST_HAS_TWO_ARG_USE_FACET should not be defined. +// See file boost_has_2arg_use_facet.ipp for details + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include <boost/config.hpp> +#include "test.hpp" + +#ifdef BOOST_HAS_TWO_ARG_USE_FACET +#include "boost_has_2arg_use_facet.ipp" +#else +namespace boost_has_two_arg_use_facet = empty_boost; +#endif + +int main( int, char *[] ) +{ + return boost_has_two_arg_use_facet::test(); +} + diff --git a/libs/config/test/has_bethreads_fail.cpp b/libs/config/test/has_bethreads_fail.cpp new file mode 100644 index 0000000000..8606f3dc11 --- /dev/null +++ b/libs/config/test/has_bethreads_fail.cpp @@ -0,0 +1,34 @@ +// This file was automatically generated on Fri Dec 03 18:03:59 2004 +// by libs/config/tools/generate.cpp +// Copyright John Maddock 2002-4. +// 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) + +// See http://www.boost.org/libs/config for the most recent version. + +// Test file for macro BOOST_HAS_BETHREADS +// This file should not compile, if it does then +// BOOST_HAS_BETHREADS should be defined. +// See file boost_has_bethreads.ipp for details + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include <boost/config.hpp> +#include "test.hpp" + +#ifndef BOOST_HAS_BETHREADS +#include "boost_has_bethreads.ipp" +#else +#error "this file should not compile" +#endif + +int main( int, char *[] ) +{ + return boost_has_bethreads::test(); +} + diff --git a/libs/config/test/has_bethreads_pass.cpp b/libs/config/test/has_bethreads_pass.cpp new file mode 100644 index 0000000000..5f4bbdbecc --- /dev/null +++ b/libs/config/test/has_bethreads_pass.cpp @@ -0,0 +1,34 @@ +// This file was automatically generated on Fri Dec 03 18:03:59 2004 +// by libs/config/tools/generate.cpp +// Copyright John Maddock 2002-4. +// 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) + +// See http://www.boost.org/libs/config for the most recent version. + +// Test file for macro BOOST_HAS_BETHREADS +// This file should compile, if it does not then +// BOOST_HAS_BETHREADS should not be defined. +// See file boost_has_bethreads.ipp for details + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include <boost/config.hpp> +#include "test.hpp" + +#ifdef BOOST_HAS_BETHREADS +#include "boost_has_bethreads.ipp" +#else +namespace boost_has_bethreads = empty_boost; +#endif + +int main( int, char *[] ) +{ + return boost_has_bethreads::test(); +} + diff --git a/libs/config/test/has_clock_gettime_fail.cpp b/libs/config/test/has_clock_gettime_fail.cpp new file mode 100644 index 0000000000..4cf5dfe011 --- /dev/null +++ b/libs/config/test/has_clock_gettime_fail.cpp @@ -0,0 +1,34 @@ +// This file was automatically generated on Fri Dec 03 18:03:59 2004 +// by libs/config/tools/generate.cpp +// Copyright John Maddock 2002-4. +// 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) + +// See http://www.boost.org/libs/config for the most recent version. + +// Test file for macro BOOST_HAS_CLOCK_GETTIME +// This file should not compile, if it does then +// BOOST_HAS_CLOCK_GETTIME should be defined. +// See file boost_has_clock_gettime.ipp for details + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include <boost/config.hpp> +#include "test.hpp" + +#ifndef BOOST_HAS_CLOCK_GETTIME +#include "boost_has_clock_gettime.ipp" +#else +#error "this file should not compile" +#endif + +int main( int, char *[] ) +{ + return boost_has_clock_gettime::test(); +} + diff --git a/libs/config/test/has_clock_gettime_pass.cpp b/libs/config/test/has_clock_gettime_pass.cpp new file mode 100644 index 0000000000..16e57b4ac1 --- /dev/null +++ b/libs/config/test/has_clock_gettime_pass.cpp @@ -0,0 +1,34 @@ +// This file was automatically generated on Fri Dec 03 18:03:59 2004 +// by libs/config/tools/generate.cpp +// Copyright John Maddock 2002-4. +// 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) + +// See http://www.boost.org/libs/config for the most recent version. + +// Test file for macro BOOST_HAS_CLOCK_GETTIME +// This file should compile, if it does not then +// BOOST_HAS_CLOCK_GETTIME should not be defined. +// See file boost_has_clock_gettime.ipp for details + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include <boost/config.hpp> +#include "test.hpp" + +#ifdef BOOST_HAS_CLOCK_GETTIME +#include "boost_has_clock_gettime.ipp" +#else +namespace boost_has_clock_gettime = empty_boost; +#endif + +int main( int, char *[] ) +{ + return boost_has_clock_gettime::test(); +} + diff --git a/libs/config/test/has_dirent_h_fail.cpp b/libs/config/test/has_dirent_h_fail.cpp new file mode 100644 index 0000000000..4304df30ff --- /dev/null +++ b/libs/config/test/has_dirent_h_fail.cpp @@ -0,0 +1,34 @@ +// This file was automatically generated on Fri Dec 03 18:03:59 2004 +// by libs/config/tools/generate.cpp +// Copyright John Maddock 2002-4. +// 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) + +// See http://www.boost.org/libs/config for the most recent version. + +// Test file for macro BOOST_HAS_DIRENT_H +// This file should not compile, if it does then +// BOOST_HAS_DIRENT_H should be defined. +// See file boost_has_dirent_h.ipp for details + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include <boost/config.hpp> +#include "test.hpp" + +#ifndef BOOST_HAS_DIRENT_H +#include "boost_has_dirent_h.ipp" +#else +#error "this file should not compile" +#endif + +int main( int, char *[] ) +{ + return boost_has_dirent_h::test(); +} + diff --git a/libs/config/test/has_dirent_h_pass.cpp b/libs/config/test/has_dirent_h_pass.cpp new file mode 100644 index 0000000000..184152b679 --- /dev/null +++ b/libs/config/test/has_dirent_h_pass.cpp @@ -0,0 +1,34 @@ +// This file was automatically generated on Fri Dec 03 18:03:59 2004 +// by libs/config/tools/generate.cpp +// Copyright John Maddock 2002-4. +// 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) + +// See http://www.boost.org/libs/config for the most recent version. + +// Test file for macro BOOST_HAS_DIRENT_H +// This file should compile, if it does not then +// BOOST_HAS_DIRENT_H should not be defined. +// See file boost_has_dirent_h.ipp for details + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include <boost/config.hpp> +#include "test.hpp" + +#ifdef BOOST_HAS_DIRENT_H +#include "boost_has_dirent_h.ipp" +#else +namespace boost_has_dirent_h = empty_boost; +#endif + +int main( int, char *[] ) +{ + return boost_has_dirent_h::test(); +} + diff --git a/libs/config/test/has_expm1_fail.cpp b/libs/config/test/has_expm1_fail.cpp new file mode 100644 index 0000000000..2ccd2868e4 --- /dev/null +++ b/libs/config/test/has_expm1_fail.cpp @@ -0,0 +1,34 @@ +// This file was automatically generated on Fri Oct 14 18:38:49 2005 +// by libs/config/tools/generate.cpp +// Copyright John Maddock 2002-4. +// 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) + +// See http://www.boost.org/libs/config for the most recent version. + +// Test file for macro BOOST_HAS_EXPM1 +// This file should not compile, if it does then +// BOOST_HAS_EXPM1 should be defined. +// See file boost_has_expm1.ipp for details + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include <boost/config.hpp> +#include "test.hpp" + +#ifndef BOOST_HAS_EXPM1 +#include "boost_has_expm1.ipp" +#else +#error "this file should not compile" +#endif + +int main( int, char *[] ) +{ + return boost_has_expm1::test(); +} + diff --git a/libs/config/test/has_expm1_pass.cpp b/libs/config/test/has_expm1_pass.cpp new file mode 100644 index 0000000000..9f9af2f851 --- /dev/null +++ b/libs/config/test/has_expm1_pass.cpp @@ -0,0 +1,34 @@ +// This file was automatically generated on Fri Oct 14 18:38:49 2005 +// by libs/config/tools/generate.cpp +// Copyright John Maddock 2002-4. +// 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) + +// See http://www.boost.org/libs/config for the most recent version. + +// Test file for macro BOOST_HAS_EXPM1 +// This file should compile, if it does not then +// BOOST_HAS_EXPM1 should not be defined. +// See file boost_has_expm1.ipp for details + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include <boost/config.hpp> +#include "test.hpp" + +#ifdef BOOST_HAS_EXPM1 +#include "boost_has_expm1.ipp" +#else +namespace boost_has_expm1 = empty_boost; +#endif + +int main( int, char *[] ) +{ + return boost_has_expm1::test(); +} + diff --git a/libs/config/test/has_ftime_fail.cpp b/libs/config/test/has_ftime_fail.cpp new file mode 100644 index 0000000000..ecbfde3611 --- /dev/null +++ b/libs/config/test/has_ftime_fail.cpp @@ -0,0 +1,34 @@ +// This file was automatically generated on Fri Dec 03 18:03:59 2004 +// by libs/config/tools/generate.cpp +// Copyright John Maddock 2002-4. +// 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) + +// See http://www.boost.org/libs/config for the most recent version. + +// Test file for macro BOOST_HAS_FTIME +// This file should not compile, if it does then +// BOOST_HAS_FTIME should be defined. +// See file boost_has_ftime.ipp for details + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include <boost/config.hpp> +#include "test.hpp" + +#ifndef BOOST_HAS_FTIME +#include "boost_has_ftime.ipp" +#else +#error "this file should not compile" +#endif + +int main( int, char *[] ) +{ + return boost_has_ftime::test(); +} + diff --git a/libs/config/test/has_ftime_pass.cpp b/libs/config/test/has_ftime_pass.cpp new file mode 100644 index 0000000000..6dc150f2b2 --- /dev/null +++ b/libs/config/test/has_ftime_pass.cpp @@ -0,0 +1,34 @@ +// This file was automatically generated on Fri Dec 03 18:03:59 2004 +// by libs/config/tools/generate.cpp +// Copyright John Maddock 2002-4. +// 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) + +// See http://www.boost.org/libs/config for the most recent version. + +// Test file for macro BOOST_HAS_FTIME +// This file should compile, if it does not then +// BOOST_HAS_FTIME should not be defined. +// See file boost_has_ftime.ipp for details + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include <boost/config.hpp> +#include "test.hpp" + +#ifdef BOOST_HAS_FTIME +#include "boost_has_ftime.ipp" +#else +namespace boost_has_ftime = empty_boost; +#endif + +int main( int, char *[] ) +{ + return boost_has_ftime::test(); +} + diff --git a/libs/config/test/has_getsystemtimeasfiletime_fail.cpp b/libs/config/test/has_getsystemtimeasfiletime_fail.cpp new file mode 100644 index 0000000000..1541493856 --- /dev/null +++ b/libs/config/test/has_getsystemtimeasfiletime_fail.cpp @@ -0,0 +1,37 @@ +// This file was automatically generated on Wed Jul 13 18:50:13 2011 +// by libs/config/tools/generate.cpp +// Copyright John Maddock 2002-4. +// 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) + +// See http://www.boost.org/libs/config for the most recent version.// +// Revision $Id: generate.cpp 72327 2011-06-01 14:51:03Z eric_niebler $ +// + + +// Test file for macro BOOST_HAS_GETSYSTEMTIMEASFILETIME +// This file should not compile, if it does then +// BOOST_HAS_GETSYSTEMTIMEASFILETIME should be defined. +// See file boost_has_getsystemtimeasfiletime.ipp for details + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include <boost/config.hpp> +#include "test.hpp" + +#ifndef BOOST_HAS_GETSYSTEMTIMEASFILETIME +#include "boost_has_getsystemtimeasfiletime.ipp" +#else +#error "this file should not compile" +#endif + +int main( int, char *[] ) +{ + return boost_has_getsystemtimeasfiletime::test(); +} + diff --git a/libs/config/test/has_getsystemtimeasfiletime_pass.cpp b/libs/config/test/has_getsystemtimeasfiletime_pass.cpp new file mode 100644 index 0000000000..e8ea83bbe8 --- /dev/null +++ b/libs/config/test/has_getsystemtimeasfiletime_pass.cpp @@ -0,0 +1,37 @@ +// This file was automatically generated on Wed Jul 13 18:50:13 2011 +// by libs/config/tools/generate.cpp +// Copyright John Maddock 2002-4. +// 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) + +// See http://www.boost.org/libs/config for the most recent version.// +// Revision $Id: generate.cpp 72327 2011-06-01 14:51:03Z eric_niebler $ +// + + +// Test file for macro BOOST_HAS_GETSYSTEMTIMEASFILETIME +// This file should compile, if it does not then +// BOOST_HAS_GETSYSTEMTIMEASFILETIME should not be defined. +// See file boost_has_getsystemtimeasfiletime.ipp for details + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include <boost/config.hpp> +#include "test.hpp" + +#ifdef BOOST_HAS_GETSYSTEMTIMEASFILETIME +#include "boost_has_getsystemtimeasfiletime.ipp" +#else +namespace boost_has_getsystemtimeasfiletime = empty_boost; +#endif + +int main( int, char *[] ) +{ + return boost_has_getsystemtimeasfiletime::test(); +} + diff --git a/libs/config/test/has_gettimeofday_fail.cpp b/libs/config/test/has_gettimeofday_fail.cpp new file mode 100644 index 0000000000..4f59b562c3 --- /dev/null +++ b/libs/config/test/has_gettimeofday_fail.cpp @@ -0,0 +1,34 @@ +// This file was automatically generated on Fri Dec 03 18:03:59 2004 +// by libs/config/tools/generate.cpp +// Copyright John Maddock 2002-4. +// 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) + +// See http://www.boost.org/libs/config for the most recent version. + +// Test file for macro BOOST_HAS_GETTIMEOFDAY +// This file should not compile, if it does then +// BOOST_HAS_GETTIMEOFDAY should be defined. +// See file boost_has_gettimeofday.ipp for details + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include <boost/config.hpp> +#include "test.hpp" + +#ifndef BOOST_HAS_GETTIMEOFDAY +#include "boost_has_gettimeofday.ipp" +#else +#error "this file should not compile" +#endif + +int main( int, char *[] ) +{ + return boost_has_gettimeofday::test(); +} + diff --git a/libs/config/test/has_gettimeofday_pass.cpp b/libs/config/test/has_gettimeofday_pass.cpp new file mode 100644 index 0000000000..033a88fe3a --- /dev/null +++ b/libs/config/test/has_gettimeofday_pass.cpp @@ -0,0 +1,34 @@ +// This file was automatically generated on Fri Dec 03 18:03:59 2004 +// by libs/config/tools/generate.cpp +// Copyright John Maddock 2002-4. +// 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) + +// See http://www.boost.org/libs/config for the most recent version. + +// Test file for macro BOOST_HAS_GETTIMEOFDAY +// This file should compile, if it does not then +// BOOST_HAS_GETTIMEOFDAY should not be defined. +// See file boost_has_gettimeofday.ipp for details + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include <boost/config.hpp> +#include "test.hpp" + +#ifdef BOOST_HAS_GETTIMEOFDAY +#include "boost_has_gettimeofday.ipp" +#else +namespace boost_has_gettimeofday = empty_boost; +#endif + +int main( int, char *[] ) +{ + return boost_has_gettimeofday::test(); +} + diff --git a/libs/config/test/has_hash_fail.cpp b/libs/config/test/has_hash_fail.cpp new file mode 100644 index 0000000000..6b3ac3a60b --- /dev/null +++ b/libs/config/test/has_hash_fail.cpp @@ -0,0 +1,34 @@ +// This file was automatically generated on Fri Dec 03 18:03:59 2004 +// by libs/config/tools/generate.cpp +// Copyright John Maddock 2002-4. +// 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) + +// See http://www.boost.org/libs/config for the most recent version. + +// Test file for macro BOOST_HAS_HASH +// This file should not compile, if it does then +// BOOST_HAS_HASH should be defined. +// See file boost_has_hash.ipp for details + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include <boost/config.hpp> +#include "test.hpp" + +#ifndef BOOST_HAS_HASH +#include "boost_has_hash.ipp" +#else +#error "this file should not compile" +#endif + +int main( int, char *[] ) +{ + return boost_has_hash::test(); +} + diff --git a/libs/config/test/has_hash_pass.cpp b/libs/config/test/has_hash_pass.cpp new file mode 100644 index 0000000000..3f3dd82f55 --- /dev/null +++ b/libs/config/test/has_hash_pass.cpp @@ -0,0 +1,34 @@ +// This file was automatically generated on Fri Dec 03 18:03:59 2004 +// by libs/config/tools/generate.cpp +// Copyright John Maddock 2002-4. +// 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) + +// See http://www.boost.org/libs/config for the most recent version. + +// Test file for macro BOOST_HAS_HASH +// This file should compile, if it does not then +// BOOST_HAS_HASH should not be defined. +// See file boost_has_hash.ipp for details + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include <boost/config.hpp> +#include "test.hpp" + +#ifdef BOOST_HAS_HASH +#include "boost_has_hash.ipp" +#else +namespace boost_has_hash = empty_boost; +#endif + +int main( int, char *[] ) +{ + return boost_has_hash::test(); +} + diff --git a/libs/config/test/has_log1p_fail.cpp b/libs/config/test/has_log1p_fail.cpp new file mode 100644 index 0000000000..a2de7cbe44 --- /dev/null +++ b/libs/config/test/has_log1p_fail.cpp @@ -0,0 +1,34 @@ +// This file was automatically generated on Sat Apr 02 11:49:11 2005 +// by libs/config/tools/generate.cpp +// Copyright John Maddock 2002-4. +// 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) + +// See http://www.boost.org/libs/config for the most recent version. + +// Test file for macro BOOST_HAS_LOG1P +// This file should not compile, if it does then +// BOOST_HAS_LOG1P should be defined. +// See file boost_has_log1p.ipp for details + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include <boost/config.hpp> +#include "test.hpp" + +#ifndef BOOST_HAS_LOG1P +#include "boost_has_log1p.ipp" +#else +#error "this file should not compile" +#endif + +int main( int, char *[] ) +{ + return boost_has_log1p::test(); +} + diff --git a/libs/config/test/has_log1p_pass.cpp b/libs/config/test/has_log1p_pass.cpp new file mode 100644 index 0000000000..bf44febfe6 --- /dev/null +++ b/libs/config/test/has_log1p_pass.cpp @@ -0,0 +1,34 @@ +// This file was automatically generated on Sat Apr 02 11:49:11 2005 +// by libs/config/tools/generate.cpp +// Copyright John Maddock 2002-4. +// 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) + +// See http://www.boost.org/libs/config for the most recent version. + +// Test file for macro BOOST_HAS_LOG1P +// This file should compile, if it does not then +// BOOST_HAS_LOG1P should not be defined. +// See file boost_has_log1p.ipp for details + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include <boost/config.hpp> +#include "test.hpp" + +#ifdef BOOST_HAS_LOG1P +#include "boost_has_log1p.ipp" +#else +namespace boost_has_log1p = empty_boost; +#endif + +int main( int, char *[] ) +{ + return boost_has_log1p::test(); +} + diff --git a/libs/config/test/has_long_long_fail.cpp b/libs/config/test/has_long_long_fail.cpp new file mode 100644 index 0000000000..84632676d8 --- /dev/null +++ b/libs/config/test/has_long_long_fail.cpp @@ -0,0 +1,34 @@ +// This file was automatically generated on Fri Dec 03 18:04:00 2004 +// by libs/config/tools/generate.cpp +// Copyright John Maddock 2002-4. +// 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) + +// See http://www.boost.org/libs/config for the most recent version. + +// Test file for macro BOOST_HAS_LONG_LONG +// This file should not compile, if it does then +// BOOST_HAS_LONG_LONG should be defined. +// See file boost_has_long_long.ipp for details + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include <boost/config.hpp> +#include "test.hpp" + +#ifndef BOOST_HAS_LONG_LONG +#include "boost_has_long_long.ipp" +#else +#error "this file should not compile" +#endif + +int main( int, char *[] ) +{ + return boost_has_long_long::test(); +} + diff --git a/libs/config/test/has_long_long_pass.cpp b/libs/config/test/has_long_long_pass.cpp new file mode 100644 index 0000000000..6042e66770 --- /dev/null +++ b/libs/config/test/has_long_long_pass.cpp @@ -0,0 +1,34 @@ +// This file was automatically generated on Fri Dec 03 18:04:00 2004 +// by libs/config/tools/generate.cpp +// Copyright John Maddock 2002-4. +// 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) + +// See http://www.boost.org/libs/config for the most recent version. + +// Test file for macro BOOST_HAS_LONG_LONG +// This file should compile, if it does not then +// BOOST_HAS_LONG_LONG should not be defined. +// See file boost_has_long_long.ipp for details + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include <boost/config.hpp> +#include "test.hpp" + +#ifdef BOOST_HAS_LONG_LONG +#include "boost_has_long_long.ipp" +#else +namespace boost_has_long_long = empty_boost; +#endif + +int main( int, char *[] ) +{ + return boost_has_long_long::test(); +} + diff --git a/libs/config/test/has_macro_use_facet_fail.cpp b/libs/config/test/has_macro_use_facet_fail.cpp new file mode 100644 index 0000000000..8da11830a6 --- /dev/null +++ b/libs/config/test/has_macro_use_facet_fail.cpp @@ -0,0 +1,34 @@ +// This file was automatically generated on Fri Dec 03 18:04:00 2004 +// by libs/config/tools/generate.cpp +// Copyright John Maddock 2002-4. +// 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) + +// See http://www.boost.org/libs/config for the most recent version. + +// Test file for macro BOOST_HAS_MACRO_USE_FACET +// This file should not compile, if it does then +// BOOST_HAS_MACRO_USE_FACET should be defined. +// See file boost_has_macro_use_facet.ipp for details + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include <boost/config.hpp> +#include "test.hpp" + +#ifndef BOOST_HAS_MACRO_USE_FACET +#include "boost_has_macro_use_facet.ipp" +#else +#error "this file should not compile" +#endif + +int main( int, char *[] ) +{ + return boost_has_macro_use_facet::test(); +} + diff --git a/libs/config/test/has_macro_use_facet_pass.cpp b/libs/config/test/has_macro_use_facet_pass.cpp new file mode 100644 index 0000000000..041d026ab6 --- /dev/null +++ b/libs/config/test/has_macro_use_facet_pass.cpp @@ -0,0 +1,34 @@ +// This file was automatically generated on Fri Dec 03 18:04:00 2004 +// by libs/config/tools/generate.cpp +// Copyright John Maddock 2002-4. +// 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) + +// See http://www.boost.org/libs/config for the most recent version. + +// Test file for macro BOOST_HAS_MACRO_USE_FACET +// This file should compile, if it does not then +// BOOST_HAS_MACRO_USE_FACET should not be defined. +// See file boost_has_macro_use_facet.ipp for details + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include <boost/config.hpp> +#include "test.hpp" + +#ifdef BOOST_HAS_MACRO_USE_FACET +#include "boost_has_macro_use_facet.ipp" +#else +namespace boost_has_macro_use_facet = empty_boost; +#endif + +int main( int, char *[] ) +{ + return boost_has_macro_use_facet::test(); +} + diff --git a/libs/config/test/has_ms_int64_fail.cpp b/libs/config/test/has_ms_int64_fail.cpp new file mode 100644 index 0000000000..6171feda5b --- /dev/null +++ b/libs/config/test/has_ms_int64_fail.cpp @@ -0,0 +1,34 @@ +// This file was automatically generated on Fri Dec 03 18:04:00 2004 +// by libs/config/tools/generate.cpp +// Copyright John Maddock 2002-4. +// 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) + +// See http://www.boost.org/libs/config for the most recent version. + +// Test file for macro BOOST_HAS_MS_INT64 +// This file should not compile, if it does then +// BOOST_HAS_MS_INT64 should be defined. +// See file boost_has_ms_int64.ipp for details + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include <boost/config.hpp> +#include "test.hpp" + +#ifndef BOOST_HAS_MS_INT64 +#include "boost_has_ms_int64.ipp" +#else +#error "this file should not compile" +#endif + +int main( int, char *[] ) +{ + return boost_has_ms_int64::test(); +} + diff --git a/libs/config/test/has_ms_int64_pass.cpp b/libs/config/test/has_ms_int64_pass.cpp new file mode 100644 index 0000000000..94038d994d --- /dev/null +++ b/libs/config/test/has_ms_int64_pass.cpp @@ -0,0 +1,34 @@ +// This file was automatically generated on Fri Dec 03 18:04:00 2004 +// by libs/config/tools/generate.cpp +// Copyright John Maddock 2002-4. +// 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) + +// See http://www.boost.org/libs/config for the most recent version. + +// Test file for macro BOOST_HAS_MS_INT64 +// This file should compile, if it does not then +// BOOST_HAS_MS_INT64 should not be defined. +// See file boost_has_ms_int64.ipp for details + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include <boost/config.hpp> +#include "test.hpp" + +#ifdef BOOST_HAS_MS_INT64 +#include "boost_has_ms_int64.ipp" +#else +namespace boost_has_ms_int64 = empty_boost; +#endif + +int main( int, char *[] ) +{ + return boost_has_ms_int64::test(); +} + diff --git a/libs/config/test/has_nanosleep_fail.cpp b/libs/config/test/has_nanosleep_fail.cpp new file mode 100644 index 0000000000..cb7eba90ab --- /dev/null +++ b/libs/config/test/has_nanosleep_fail.cpp @@ -0,0 +1,34 @@ +// This file was automatically generated on Fri Dec 03 18:04:00 2004 +// by libs/config/tools/generate.cpp +// Copyright John Maddock 2002-4. +// 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) + +// See http://www.boost.org/libs/config for the most recent version. + +// Test file for macro BOOST_HAS_NANOSLEEP +// This file should not compile, if it does then +// BOOST_HAS_NANOSLEEP should be defined. +// See file boost_has_nanosleep.ipp for details + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include <boost/config.hpp> +#include "test.hpp" + +#ifndef BOOST_HAS_NANOSLEEP +#include "boost_has_nanosleep.ipp" +#else +#error "this file should not compile" +#endif + +int main( int, char *[] ) +{ + return boost_has_nanosleep::test(); +} + diff --git a/libs/config/test/has_nanosleep_pass.cpp b/libs/config/test/has_nanosleep_pass.cpp new file mode 100644 index 0000000000..3aeac63cc7 --- /dev/null +++ b/libs/config/test/has_nanosleep_pass.cpp @@ -0,0 +1,34 @@ +// This file was automatically generated on Fri Dec 03 18:04:00 2004 +// by libs/config/tools/generate.cpp +// Copyright John Maddock 2002-4. +// 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) + +// See http://www.boost.org/libs/config for the most recent version. + +// Test file for macro BOOST_HAS_NANOSLEEP +// This file should compile, if it does not then +// BOOST_HAS_NANOSLEEP should not be defined. +// See file boost_has_nanosleep.ipp for details + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include <boost/config.hpp> +#include "test.hpp" + +#ifdef BOOST_HAS_NANOSLEEP +#include "boost_has_nanosleep.ipp" +#else +namespace boost_has_nanosleep = empty_boost; +#endif + +int main( int, char *[] ) +{ + return boost_has_nanosleep::test(); +} + diff --git a/libs/config/test/has_nl_types_h_fail.cpp b/libs/config/test/has_nl_types_h_fail.cpp new file mode 100644 index 0000000000..ffd76cf32c --- /dev/null +++ b/libs/config/test/has_nl_types_h_fail.cpp @@ -0,0 +1,34 @@ +// This file was automatically generated on Fri Dec 03 18:04:00 2004 +// by libs/config/tools/generate.cpp +// Copyright John Maddock 2002-4. +// 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) + +// See http://www.boost.org/libs/config for the most recent version. + +// Test file for macro BOOST_HAS_NL_TYPES_H +// This file should not compile, if it does then +// BOOST_HAS_NL_TYPES_H should be defined. +// See file boost_has_nl_types_h.ipp for details + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include <boost/config.hpp> +#include "test.hpp" + +#ifndef BOOST_HAS_NL_TYPES_H +#include "boost_has_nl_types_h.ipp" +#else +#error "this file should not compile" +#endif + +int main( int, char *[] ) +{ + return boost_has_nl_types_h::test(); +} + diff --git a/libs/config/test/has_nl_types_h_pass.cpp b/libs/config/test/has_nl_types_h_pass.cpp new file mode 100644 index 0000000000..631031491c --- /dev/null +++ b/libs/config/test/has_nl_types_h_pass.cpp @@ -0,0 +1,34 @@ +// This file was automatically generated on Fri Dec 03 18:04:00 2004 +// by libs/config/tools/generate.cpp +// Copyright John Maddock 2002-4. +// 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) + +// See http://www.boost.org/libs/config for the most recent version. + +// Test file for macro BOOST_HAS_NL_TYPES_H +// This file should compile, if it does not then +// BOOST_HAS_NL_TYPES_H should not be defined. +// See file boost_has_nl_types_h.ipp for details + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include <boost/config.hpp> +#include "test.hpp" + +#ifdef BOOST_HAS_NL_TYPES_H +#include "boost_has_nl_types_h.ipp" +#else +namespace boost_has_nl_types_h = empty_boost; +#endif + +int main( int, char *[] ) +{ + return boost_has_nl_types_h::test(); +} + diff --git a/libs/config/test/has_nrvo_fail.cpp b/libs/config/test/has_nrvo_fail.cpp new file mode 100644 index 0000000000..c05f17ceec --- /dev/null +++ b/libs/config/test/has_nrvo_fail.cpp @@ -0,0 +1,34 @@ +// This file was automatically generated on Fri Dec 03 18:04:00 2004 +// by libs/config/tools/generate.cpp +// Copyright John Maddock 2002-4. +// 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) + +// See http://www.boost.org/libs/config for the most recent version. + +// Test file for macro BOOST_HAS_NRVO +// This file should not compile, if it does then +// BOOST_HAS_NRVO should be defined. +// See file boost_has_nrvo.ipp for details + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include <boost/config.hpp> +#include "test.hpp" + +#ifndef BOOST_HAS_NRVO +#include "boost_has_nrvo.ipp" +#else +#error "this file should not compile" +#endif + +int main( int, char *[] ) +{ + return boost_has_nrvo::test(); +} + diff --git a/libs/config/test/has_nrvo_pass.cpp b/libs/config/test/has_nrvo_pass.cpp new file mode 100644 index 0000000000..e216186a76 --- /dev/null +++ b/libs/config/test/has_nrvo_pass.cpp @@ -0,0 +1,34 @@ +// This file was automatically generated on Fri Dec 03 18:04:00 2004 +// by libs/config/tools/generate.cpp +// Copyright John Maddock 2002-4. +// 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) + +// See http://www.boost.org/libs/config for the most recent version. + +// Test file for macro BOOST_HAS_NRVO +// This file should compile, if it does not then +// BOOST_HAS_NRVO should not be defined. +// See file boost_has_nrvo.ipp for details + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include <boost/config.hpp> +#include "test.hpp" + +#ifdef BOOST_HAS_NRVO +#include "boost_has_nrvo.ipp" +#else +namespace boost_has_nrvo = empty_boost; +#endif + +int main( int, char *[] ) +{ + return boost_has_nrvo::test(); +} + diff --git a/libs/config/test/has_part_alloc_fail.cpp b/libs/config/test/has_part_alloc_fail.cpp new file mode 100644 index 0000000000..33c54247ea --- /dev/null +++ b/libs/config/test/has_part_alloc_fail.cpp @@ -0,0 +1,34 @@ +// This file was automatically generated on Fri Dec 03 18:04:00 2004 +// by libs/config/tools/generate.cpp +// Copyright John Maddock 2002-4. +// 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) + +// See http://www.boost.org/libs/config for the most recent version. + +// Test file for macro BOOST_HAS_PARTIAL_STD_ALLOCATOR +// This file should not compile, if it does then +// BOOST_HAS_PARTIAL_STD_ALLOCATOR should be defined. +// See file boost_has_part_alloc.ipp for details + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include <boost/config.hpp> +#include "test.hpp" + +#ifndef BOOST_HAS_PARTIAL_STD_ALLOCATOR +#include "boost_has_part_alloc.ipp" +#else +#error "this file should not compile" +#endif + +int main( int, char *[] ) +{ + return boost_has_partial_std_allocator::test(); +} + diff --git a/libs/config/test/has_part_alloc_pass.cpp b/libs/config/test/has_part_alloc_pass.cpp new file mode 100644 index 0000000000..c885e20b70 --- /dev/null +++ b/libs/config/test/has_part_alloc_pass.cpp @@ -0,0 +1,34 @@ +// This file was automatically generated on Fri Dec 03 18:04:00 2004 +// by libs/config/tools/generate.cpp +// Copyright John Maddock 2002-4. +// 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) + +// See http://www.boost.org/libs/config for the most recent version. + +// Test file for macro BOOST_HAS_PARTIAL_STD_ALLOCATOR +// This file should compile, if it does not then +// BOOST_HAS_PARTIAL_STD_ALLOCATOR should not be defined. +// See file boost_has_part_alloc.ipp for details + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include <boost/config.hpp> +#include "test.hpp" + +#ifdef BOOST_HAS_PARTIAL_STD_ALLOCATOR +#include "boost_has_part_alloc.ipp" +#else +namespace boost_has_partial_std_allocator = empty_boost; +#endif + +int main( int, char *[] ) +{ + return boost_has_partial_std_allocator::test(); +} + diff --git a/libs/config/test/has_pthread_delay_np_fail.cpp b/libs/config/test/has_pthread_delay_np_fail.cpp new file mode 100644 index 0000000000..9f21869ace --- /dev/null +++ b/libs/config/test/has_pthread_delay_np_fail.cpp @@ -0,0 +1,34 @@ +// This file was automatically generated on Fri Dec 03 18:04:00 2004 +// by libs/config/tools/generate.cpp +// Copyright John Maddock 2002-4. +// 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) + +// See http://www.boost.org/libs/config for the most recent version. + +// Test file for macro BOOST_HAS_PTHREAD_DELAY_NP +// This file should not compile, if it does then +// BOOST_HAS_PTHREAD_DELAY_NP should be defined. +// See file boost_has_pthread_delay_np.ipp for details + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include <boost/config.hpp> +#include "test.hpp" + +#ifndef BOOST_HAS_PTHREAD_DELAY_NP +#include "boost_has_pthread_delay_np.ipp" +#else +#error "this file should not compile" +#endif + +int main( int, char *[] ) +{ + return boost_has_pthread_delay_np::test(); +} + diff --git a/libs/config/test/has_pthread_delay_np_pass.cpp b/libs/config/test/has_pthread_delay_np_pass.cpp new file mode 100644 index 0000000000..6f78617a46 --- /dev/null +++ b/libs/config/test/has_pthread_delay_np_pass.cpp @@ -0,0 +1,34 @@ +// This file was automatically generated on Fri Dec 03 18:04:00 2004 +// by libs/config/tools/generate.cpp +// Copyright John Maddock 2002-4. +// 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) + +// See http://www.boost.org/libs/config for the most recent version. + +// Test file for macro BOOST_HAS_PTHREAD_DELAY_NP +// This file should compile, if it does not then +// BOOST_HAS_PTHREAD_DELAY_NP should not be defined. +// See file boost_has_pthread_delay_np.ipp for details + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include <boost/config.hpp> +#include "test.hpp" + +#ifdef BOOST_HAS_PTHREAD_DELAY_NP +#include "boost_has_pthread_delay_np.ipp" +#else +namespace boost_has_pthread_delay_np = empty_boost; +#endif + +int main( int, char *[] ) +{ + return boost_has_pthread_delay_np::test(); +} + diff --git a/libs/config/test/has_pthread_ma_st_fail.cpp b/libs/config/test/has_pthread_ma_st_fail.cpp new file mode 100644 index 0000000000..a3bbab8e0b --- /dev/null +++ b/libs/config/test/has_pthread_ma_st_fail.cpp @@ -0,0 +1,34 @@ +// This file was automatically generated on Fri Dec 03 18:04:00 2004 +// by libs/config/tools/generate.cpp +// Copyright John Maddock 2002-4. +// 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) + +// See http://www.boost.org/libs/config for the most recent version. + +// Test file for macro BOOST_HAS_PTHREAD_MUTEXATTR_SETTYPE +// This file should not compile, if it does then +// BOOST_HAS_PTHREAD_MUTEXATTR_SETTYPE should be defined. +// See file boost_has_pthread_ma_st.ipp for details + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include <boost/config.hpp> +#include "test.hpp" + +#ifndef BOOST_HAS_PTHREAD_MUTEXATTR_SETTYPE +#include "boost_has_pthread_ma_st.ipp" +#else +#error "this file should not compile" +#endif + +int main( int, char *[] ) +{ + return boost_has_pthread_mutexattr_settype::test(); +} + diff --git a/libs/config/test/has_pthread_ma_st_pass.cpp b/libs/config/test/has_pthread_ma_st_pass.cpp new file mode 100644 index 0000000000..a0cb1a091d --- /dev/null +++ b/libs/config/test/has_pthread_ma_st_pass.cpp @@ -0,0 +1,34 @@ +// This file was automatically generated on Fri Dec 03 18:04:00 2004 +// by libs/config/tools/generate.cpp +// Copyright John Maddock 2002-4. +// 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) + +// See http://www.boost.org/libs/config for the most recent version. + +// Test file for macro BOOST_HAS_PTHREAD_MUTEXATTR_SETTYPE +// This file should compile, if it does not then +// BOOST_HAS_PTHREAD_MUTEXATTR_SETTYPE should not be defined. +// See file boost_has_pthread_ma_st.ipp for details + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include <boost/config.hpp> +#include "test.hpp" + +#ifdef BOOST_HAS_PTHREAD_MUTEXATTR_SETTYPE +#include "boost_has_pthread_ma_st.ipp" +#else +namespace boost_has_pthread_mutexattr_settype = empty_boost; +#endif + +int main( int, char *[] ) +{ + return boost_has_pthread_mutexattr_settype::test(); +} + diff --git a/libs/config/test/has_pthread_yield_fail.cpp b/libs/config/test/has_pthread_yield_fail.cpp new file mode 100644 index 0000000000..eb4228b256 --- /dev/null +++ b/libs/config/test/has_pthread_yield_fail.cpp @@ -0,0 +1,34 @@ +// This file was automatically generated on Fri Dec 03 18:04:00 2004 +// by libs/config/tools/generate.cpp +// Copyright John Maddock 2002-4. +// 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) + +// See http://www.boost.org/libs/config for the most recent version. + +// Test file for macro BOOST_HAS_PTHREAD_YIELD +// This file should not compile, if it does then +// BOOST_HAS_PTHREAD_YIELD should be defined. +// See file boost_has_pthread_yield.ipp for details + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include <boost/config.hpp> +#include "test.hpp" + +#ifndef BOOST_HAS_PTHREAD_YIELD +#include "boost_has_pthread_yield.ipp" +#else +#error "this file should not compile" +#endif + +int main( int, char *[] ) +{ + return boost_has_pthread_yield::test(); +} + diff --git a/libs/config/test/has_pthread_yield_pass.cpp b/libs/config/test/has_pthread_yield_pass.cpp new file mode 100644 index 0000000000..4af209a099 --- /dev/null +++ b/libs/config/test/has_pthread_yield_pass.cpp @@ -0,0 +1,34 @@ +// This file was automatically generated on Fri Dec 03 18:04:00 2004 +// by libs/config/tools/generate.cpp +// Copyright John Maddock 2002-4. +// 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) + +// See http://www.boost.org/libs/config for the most recent version. + +// Test file for macro BOOST_HAS_PTHREAD_YIELD +// This file should compile, if it does not then +// BOOST_HAS_PTHREAD_YIELD should not be defined. +// See file boost_has_pthread_yield.ipp for details + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include <boost/config.hpp> +#include "test.hpp" + +#ifdef BOOST_HAS_PTHREAD_YIELD +#include "boost_has_pthread_yield.ipp" +#else +namespace boost_has_pthread_yield = empty_boost; +#endif + +int main( int, char *[] ) +{ + return boost_has_pthread_yield::test(); +} + diff --git a/libs/config/test/has_pthreads_fail.cpp b/libs/config/test/has_pthreads_fail.cpp new file mode 100644 index 0000000000..14156648ab --- /dev/null +++ b/libs/config/test/has_pthreads_fail.cpp @@ -0,0 +1,34 @@ +// This file was automatically generated on Fri Dec 03 18:04:00 2004 +// by libs/config/tools/generate.cpp +// Copyright John Maddock 2002-4. +// 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) + +// See http://www.boost.org/libs/config for the most recent version. + +// Test file for macro BOOST_HAS_PTHREADS +// This file should not compile, if it does then +// BOOST_HAS_PTHREADS should be defined. +// See file boost_has_pthreads.ipp for details + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include <boost/config.hpp> +#include "test.hpp" + +#ifndef BOOST_HAS_PTHREADS +#include "boost_has_pthreads.ipp" +#else +#error "this file should not compile" +#endif + +int main( int, char *[] ) +{ + return boost_has_pthreads::test(); +} + diff --git a/libs/config/test/has_pthreads_pass.cpp b/libs/config/test/has_pthreads_pass.cpp new file mode 100644 index 0000000000..0737392f76 --- /dev/null +++ b/libs/config/test/has_pthreads_pass.cpp @@ -0,0 +1,34 @@ +// This file was automatically generated on Fri Dec 03 18:04:00 2004 +// by libs/config/tools/generate.cpp +// Copyright John Maddock 2002-4. +// 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) + +// See http://www.boost.org/libs/config for the most recent version. + +// Test file for macro BOOST_HAS_PTHREADS +// This file should compile, if it does not then +// BOOST_HAS_PTHREADS should not be defined. +// See file boost_has_pthreads.ipp for details + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include <boost/config.hpp> +#include "test.hpp" + +#ifdef BOOST_HAS_PTHREADS +#include "boost_has_pthreads.ipp" +#else +namespace boost_has_pthreads = empty_boost; +#endif + +int main( int, char *[] ) +{ + return boost_has_pthreads::test(); +} + diff --git a/libs/config/test/has_rvalue_refs_fail.cpp b/libs/config/test/has_rvalue_refs_fail.cpp new file mode 100644 index 0000000000..cf880e9654 --- /dev/null +++ b/libs/config/test/has_rvalue_refs_fail.cpp @@ -0,0 +1,34 @@ +// This file was automatically generated on Sat Aug 25 12:32:21 2007 +// by libs/config/tools/generate.cpp +// Copyright John Maddock 2002-4. +// 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) + +// See http://www.boost.org/libs/config for the most recent version. + +// Test file for macro BOOST_HAS_RVALUE_REFS +// This file should not compile, if it does then +// BOOST_HAS_RVALUE_REFS should be defined. +// See file boost_has_rvalue_refs.ipp for details + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include <boost/config.hpp> +#include "test.hpp" + +#ifndef BOOST_HAS_RVALUE_REFS +#include "boost_has_rvalue_refs.ipp" +#else +#error "this file should not compile" +#endif + +int main( int, char *[] ) +{ + return boost_has_rvalue_refs::test(); +} + diff --git a/libs/config/test/has_rvalue_refs_pass.cpp b/libs/config/test/has_rvalue_refs_pass.cpp new file mode 100644 index 0000000000..6169249497 --- /dev/null +++ b/libs/config/test/has_rvalue_refs_pass.cpp @@ -0,0 +1,34 @@ +// This file was automatically generated on Sat Aug 25 12:32:21 2007 +// by libs/config/tools/generate.cpp +// Copyright John Maddock 2002-4. +// 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) + +// See http://www.boost.org/libs/config for the most recent version. + +// Test file for macro BOOST_HAS_RVALUE_REFS +// This file should compile, if it does not then +// BOOST_HAS_RVALUE_REFS should not be defined. +// See file boost_has_rvalue_refs.ipp for details + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include <boost/config.hpp> +#include "test.hpp" + +#ifdef BOOST_HAS_RVALUE_REFS +#include "boost_has_rvalue_refs.ipp" +#else +namespace boost_has_rvalue_refs = empty_boost; +#endif + +int main( int, char *[] ) +{ + return boost_has_rvalue_refs::test(); +} + diff --git a/libs/config/test/has_sched_yield_fail.cpp b/libs/config/test/has_sched_yield_fail.cpp new file mode 100644 index 0000000000..b494ed10e7 --- /dev/null +++ b/libs/config/test/has_sched_yield_fail.cpp @@ -0,0 +1,34 @@ +// This file was automatically generated on Fri Dec 03 18:04:00 2004 +// by libs/config/tools/generate.cpp +// Copyright John Maddock 2002-4. +// 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) + +// See http://www.boost.org/libs/config for the most recent version. + +// Test file for macro BOOST_HAS_SCHED_YIELD +// This file should not compile, if it does then +// BOOST_HAS_SCHED_YIELD should be defined. +// See file boost_has_sched_yield.ipp for details + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include <boost/config.hpp> +#include "test.hpp" + +#ifndef BOOST_HAS_SCHED_YIELD +#include "boost_has_sched_yield.ipp" +#else +#error "this file should not compile" +#endif + +int main( int, char *[] ) +{ + return boost_has_sched_yield::test(); +} + diff --git a/libs/config/test/has_sched_yield_pass.cpp b/libs/config/test/has_sched_yield_pass.cpp new file mode 100644 index 0000000000..56741d1f7e --- /dev/null +++ b/libs/config/test/has_sched_yield_pass.cpp @@ -0,0 +1,34 @@ +// This file was automatically generated on Fri Dec 03 18:04:00 2004 +// by libs/config/tools/generate.cpp +// Copyright John Maddock 2002-4. +// 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) + +// See http://www.boost.org/libs/config for the most recent version. + +// Test file for macro BOOST_HAS_SCHED_YIELD +// This file should compile, if it does not then +// BOOST_HAS_SCHED_YIELD should not be defined. +// See file boost_has_sched_yield.ipp for details + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include <boost/config.hpp> +#include "test.hpp" + +#ifdef BOOST_HAS_SCHED_YIELD +#include "boost_has_sched_yield.ipp" +#else +namespace boost_has_sched_yield = empty_boost; +#endif + +int main( int, char *[] ) +{ + return boost_has_sched_yield::test(); +} + diff --git a/libs/config/test/has_sgi_type_traits_fail.cpp b/libs/config/test/has_sgi_type_traits_fail.cpp new file mode 100644 index 0000000000..1be7182994 --- /dev/null +++ b/libs/config/test/has_sgi_type_traits_fail.cpp @@ -0,0 +1,34 @@ +// This file was automatically generated on Fri Dec 03 18:04:00 2004 +// by libs/config/tools/generate.cpp +// Copyright John Maddock 2002-4. +// 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) + +// See http://www.boost.org/libs/config for the most recent version. + +// Test file for macro BOOST_HAS_SGI_TYPE_TRAITS +// This file should not compile, if it does then +// BOOST_HAS_SGI_TYPE_TRAITS should be defined. +// See file boost_has_sgi_type_traits.ipp for details + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include <boost/config.hpp> +#include "test.hpp" + +#ifndef BOOST_HAS_SGI_TYPE_TRAITS +#include "boost_has_sgi_type_traits.ipp" +#else +#error "this file should not compile" +#endif + +int main( int, char *[] ) +{ + return boost_has_sgi_type_traits::test(); +} + diff --git a/libs/config/test/has_sgi_type_traits_pass.cpp b/libs/config/test/has_sgi_type_traits_pass.cpp new file mode 100644 index 0000000000..81f0592050 --- /dev/null +++ b/libs/config/test/has_sgi_type_traits_pass.cpp @@ -0,0 +1,34 @@ +// This file was automatically generated on Fri Dec 03 18:04:00 2004 +// by libs/config/tools/generate.cpp +// Copyright John Maddock 2002-4. +// 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) + +// See http://www.boost.org/libs/config for the most recent version. + +// Test file for macro BOOST_HAS_SGI_TYPE_TRAITS +// This file should compile, if it does not then +// BOOST_HAS_SGI_TYPE_TRAITS should not be defined. +// See file boost_has_sgi_type_traits.ipp for details + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include <boost/config.hpp> +#include "test.hpp" + +#ifdef BOOST_HAS_SGI_TYPE_TRAITS +#include "boost_has_sgi_type_traits.ipp" +#else +namespace boost_has_sgi_type_traits = empty_boost; +#endif + +int main( int, char *[] ) +{ + return boost_has_sgi_type_traits::test(); +} + diff --git a/libs/config/test/has_sigaction_fail.cpp b/libs/config/test/has_sigaction_fail.cpp new file mode 100644 index 0000000000..b9ea9891f1 --- /dev/null +++ b/libs/config/test/has_sigaction_fail.cpp @@ -0,0 +1,34 @@ +// This file was automatically generated on Fri Dec 03 18:04:00 2004 +// by libs/config/tools/generate.cpp +// Copyright John Maddock 2002-4. +// 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) + +// See http://www.boost.org/libs/config for the most recent version. + +// Test file for macro BOOST_HAS_SIGACTION +// This file should not compile, if it does then +// BOOST_HAS_SIGACTION should be defined. +// See file boost_has_sigaction.ipp for details + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include <boost/config.hpp> +#include "test.hpp" + +#ifndef BOOST_HAS_SIGACTION +#include "boost_has_sigaction.ipp" +#else +#error "this file should not compile" +#endif + +int main( int, char *[] ) +{ + return boost_has_sigaction::test(); +} + diff --git a/libs/config/test/has_sigaction_pass.cpp b/libs/config/test/has_sigaction_pass.cpp new file mode 100644 index 0000000000..5fa104091f --- /dev/null +++ b/libs/config/test/has_sigaction_pass.cpp @@ -0,0 +1,34 @@ +// This file was automatically generated on Fri Dec 03 18:04:00 2004 +// by libs/config/tools/generate.cpp +// Copyright John Maddock 2002-4. +// 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) + +// See http://www.boost.org/libs/config for the most recent version. + +// Test file for macro BOOST_HAS_SIGACTION +// This file should compile, if it does not then +// BOOST_HAS_SIGACTION should not be defined. +// See file boost_has_sigaction.ipp for details + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include <boost/config.hpp> +#include "test.hpp" + +#ifdef BOOST_HAS_SIGACTION +#include "boost_has_sigaction.ipp" +#else +namespace boost_has_sigaction = empty_boost; +#endif + +int main( int, char *[] ) +{ + return boost_has_sigaction::test(); +} + diff --git a/libs/config/test/has_slist_fail.cpp b/libs/config/test/has_slist_fail.cpp new file mode 100644 index 0000000000..0d656fda25 --- /dev/null +++ b/libs/config/test/has_slist_fail.cpp @@ -0,0 +1,34 @@ +// This file was automatically generated on Fri Dec 03 18:04:00 2004 +// by libs/config/tools/generate.cpp +// Copyright John Maddock 2002-4. +// 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) + +// See http://www.boost.org/libs/config for the most recent version. + +// Test file for macro BOOST_HAS_SLIST +// This file should not compile, if it does then +// BOOST_HAS_SLIST should be defined. +// See file boost_has_slist.ipp for details + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include <boost/config.hpp> +#include "test.hpp" + +#ifndef BOOST_HAS_SLIST +#include "boost_has_slist.ipp" +#else +#error "this file should not compile" +#endif + +int main( int, char *[] ) +{ + return boost_has_slist::test(); +} + diff --git a/libs/config/test/has_slist_pass.cpp b/libs/config/test/has_slist_pass.cpp new file mode 100644 index 0000000000..79af70055b --- /dev/null +++ b/libs/config/test/has_slist_pass.cpp @@ -0,0 +1,34 @@ +// This file was automatically generated on Fri Dec 03 18:04:00 2004 +// by libs/config/tools/generate.cpp +// Copyright John Maddock 2002-4. +// 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) + +// See http://www.boost.org/libs/config for the most recent version. + +// Test file for macro BOOST_HAS_SLIST +// This file should compile, if it does not then +// BOOST_HAS_SLIST should not be defined. +// See file boost_has_slist.ipp for details + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include <boost/config.hpp> +#include "test.hpp" + +#ifdef BOOST_HAS_SLIST +#include "boost_has_slist.ipp" +#else +namespace boost_has_slist = empty_boost; +#endif + +int main( int, char *[] ) +{ + return boost_has_slist::test(); +} + diff --git a/libs/config/test/has_static_assert_fail.cpp b/libs/config/test/has_static_assert_fail.cpp new file mode 100644 index 0000000000..a6456edb28 --- /dev/null +++ b/libs/config/test/has_static_assert_fail.cpp @@ -0,0 +1,34 @@ +// This file was automatically generated on Sat Aug 25 12:32:21 2007 +// by libs/config/tools/generate.cpp +// Copyright John Maddock 2002-4. +// 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) + +// See http://www.boost.org/libs/config for the most recent version. + +// Test file for macro BOOST_HAS_STATIC_ASSERT +// This file should not compile, if it does then +// BOOST_HAS_STATIC_ASSERT should be defined. +// See file boost_has_static_assert.ipp for details + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include <boost/config.hpp> +#include "test.hpp" + +#ifndef BOOST_HAS_STATIC_ASSERT +#include "boost_has_static_assert.ipp" +#else +#error "this file should not compile" +#endif + +int main( int, char *[] ) +{ + return boost_has_static_assert::test(); +} + diff --git a/libs/config/test/has_static_assert_pass.cpp b/libs/config/test/has_static_assert_pass.cpp new file mode 100644 index 0000000000..00f0389759 --- /dev/null +++ b/libs/config/test/has_static_assert_pass.cpp @@ -0,0 +1,34 @@ +// This file was automatically generated on Sat Aug 25 12:32:21 2007 +// by libs/config/tools/generate.cpp +// Copyright John Maddock 2002-4. +// 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) + +// See http://www.boost.org/libs/config for the most recent version. + +// Test file for macro BOOST_HAS_STATIC_ASSERT +// This file should compile, if it does not then +// BOOST_HAS_STATIC_ASSERT should not be defined. +// See file boost_has_static_assert.ipp for details + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include <boost/config.hpp> +#include "test.hpp" + +#ifdef BOOST_HAS_STATIC_ASSERT +#include "boost_has_static_assert.ipp" +#else +namespace boost_has_static_assert = empty_boost; +#endif + +int main( int, char *[] ) +{ + return boost_has_static_assert::test(); +} + diff --git a/libs/config/test/has_stdint_h_fail.cpp b/libs/config/test/has_stdint_h_fail.cpp new file mode 100644 index 0000000000..66a1017bfe --- /dev/null +++ b/libs/config/test/has_stdint_h_fail.cpp @@ -0,0 +1,34 @@ +// This file was automatically generated on Fri Dec 03 18:04:00 2004 +// by libs/config/tools/generate.cpp +// Copyright John Maddock 2002-4. +// 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) + +// See http://www.boost.org/libs/config for the most recent version. + +// Test file for macro BOOST_HAS_STDINT_H +// This file should not compile, if it does then +// BOOST_HAS_STDINT_H should be defined. +// See file boost_has_stdint_h.ipp for details + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include <boost/config.hpp> +#include "test.hpp" + +#ifndef BOOST_HAS_STDINT_H +#include "boost_has_stdint_h.ipp" +#else +#error "this file should not compile" +#endif + +int main( int, char *[] ) +{ + return boost_has_stdint_h::test(); +} + diff --git a/libs/config/test/has_stdint_h_pass.cpp b/libs/config/test/has_stdint_h_pass.cpp new file mode 100644 index 0000000000..4b8eca9b25 --- /dev/null +++ b/libs/config/test/has_stdint_h_pass.cpp @@ -0,0 +1,34 @@ +// This file was automatically generated on Fri Dec 03 18:04:00 2004 +// by libs/config/tools/generate.cpp +// Copyright John Maddock 2002-4. +// 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) + +// See http://www.boost.org/libs/config for the most recent version. + +// Test file for macro BOOST_HAS_STDINT_H +// This file should compile, if it does not then +// BOOST_HAS_STDINT_H should not be defined. +// See file boost_has_stdint_h.ipp for details + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include <boost/config.hpp> +#include "test.hpp" + +#ifdef BOOST_HAS_STDINT_H +#include "boost_has_stdint_h.ipp" +#else +namespace boost_has_stdint_h = empty_boost; +#endif + +int main( int, char *[] ) +{ + return boost_has_stdint_h::test(); +} + diff --git a/libs/config/test/has_stlp_use_facet_fail.cpp b/libs/config/test/has_stlp_use_facet_fail.cpp new file mode 100644 index 0000000000..115f03b3f4 --- /dev/null +++ b/libs/config/test/has_stlp_use_facet_fail.cpp @@ -0,0 +1,34 @@ +// This file was automatically generated on Fri Dec 03 18:04:00 2004 +// by libs/config/tools/generate.cpp +// Copyright John Maddock 2002-4. +// 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) + +// See http://www.boost.org/libs/config for the most recent version. + +// Test file for macro BOOST_HAS_STLP_USE_FACET +// This file should not compile, if it does then +// BOOST_HAS_STLP_USE_FACET should be defined. +// See file boost_has_stlp_use_facet.ipp for details + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include <boost/config.hpp> +#include "test.hpp" + +#ifndef BOOST_HAS_STLP_USE_FACET +#include "boost_has_stlp_use_facet.ipp" +#else +#error "this file should not compile" +#endif + +int main( int, char *[] ) +{ + return boost_has_stlp_use_facet::test(); +} + diff --git a/libs/config/test/has_stlp_use_facet_pass.cpp b/libs/config/test/has_stlp_use_facet_pass.cpp new file mode 100644 index 0000000000..9c50c63368 --- /dev/null +++ b/libs/config/test/has_stlp_use_facet_pass.cpp @@ -0,0 +1,34 @@ +// This file was automatically generated on Fri Dec 03 18:04:00 2004 +// by libs/config/tools/generate.cpp +// Copyright John Maddock 2002-4. +// 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) + +// See http://www.boost.org/libs/config for the most recent version. + +// Test file for macro BOOST_HAS_STLP_USE_FACET +// This file should compile, if it does not then +// BOOST_HAS_STLP_USE_FACET should not be defined. +// See file boost_has_stlp_use_facet.ipp for details + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include <boost/config.hpp> +#include "test.hpp" + +#ifdef BOOST_HAS_STLP_USE_FACET +#include "boost_has_stlp_use_facet.ipp" +#else +namespace boost_has_stlp_use_facet = empty_boost; +#endif + +int main( int, char *[] ) +{ + return boost_has_stlp_use_facet::test(); +} + diff --git a/libs/config/test/has_tr1_array_fail.cpp b/libs/config/test/has_tr1_array_fail.cpp new file mode 100644 index 0000000000..e20bf374ef --- /dev/null +++ b/libs/config/test/has_tr1_array_fail.cpp @@ -0,0 +1,38 @@ +// This file was automatically generated on Sat Jul 12 12:39:31 2008 +// by libs/config/tools/generate.cpp +// Copyright John Maddock 2002-4. +// 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) + +// See http://www.boost.org/libs/config for the most recent version.// +// Revision $Id: has_tr1_array_fail.cpp 47435 2008-07-15 10:41:52Z johnmaddock $ +// + + +// Test file for macro BOOST_HAS_TR1_ARRAY +// This file should not compile, if it does then +// BOOST_HAS_TR1_ARRAY should be defined. +// See file boost_has_tr1_array.ipp for details + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include <boost/config.hpp> +#include <boost/tr1/detail/config.hpp> +#include "test.hpp" + +#ifndef BOOST_HAS_TR1_ARRAY +#include "boost_has_tr1_array.ipp" +#else +#error "this file should not compile" +#endif + +int main( int, char *[] ) +{ + return boost_has_tr1_array::test(); +} + diff --git a/libs/config/test/has_tr1_array_pass.cpp b/libs/config/test/has_tr1_array_pass.cpp new file mode 100644 index 0000000000..ec012ad4b4 --- /dev/null +++ b/libs/config/test/has_tr1_array_pass.cpp @@ -0,0 +1,38 @@ +// This file was automatically generated on Sat Jul 12 12:39:31 2008 +// by libs/config/tools/generate.cpp +// Copyright John Maddock 2002-4. +// 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) + +// See http://www.boost.org/libs/config for the most recent version.// +// Revision $Id: has_tr1_array_pass.cpp 47435 2008-07-15 10:41:52Z johnmaddock $ +// + + +// Test file for macro BOOST_HAS_TR1_ARRAY +// This file should compile, if it does not then +// BOOST_HAS_TR1_ARRAY should not be defined. +// See file boost_has_tr1_array.ipp for details + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include <boost/config.hpp> +#include <boost/tr1/detail/config.hpp> +#include "test.hpp" + +#ifdef BOOST_HAS_TR1_ARRAY +#include "boost_has_tr1_array.ipp" +#else +namespace boost_has_tr1_array = empty_boost; +#endif + +int main( int, char *[] ) +{ + return boost_has_tr1_array::test(); +} + diff --git a/libs/config/test/has_tr1_bind_fail.cpp b/libs/config/test/has_tr1_bind_fail.cpp new file mode 100644 index 0000000000..df5473b7d9 --- /dev/null +++ b/libs/config/test/has_tr1_bind_fail.cpp @@ -0,0 +1,38 @@ +// This file was automatically generated on Sat Jul 12 12:39:31 2008 +// by libs/config/tools/generate.cpp +// Copyright John Maddock 2002-4. +// 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) + +// See http://www.boost.org/libs/config for the most recent version.// +// Revision $Id: has_tr1_bind_fail.cpp 47435 2008-07-15 10:41:52Z johnmaddock $ +// + + +// Test file for macro BOOST_HAS_TR1_BIND +// This file should not compile, if it does then +// BOOST_HAS_TR1_BIND should be defined. +// See file boost_has_tr1_bind.ipp for details + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include <boost/config.hpp> +#include <boost/tr1/detail/config.hpp> +#include "test.hpp" + +#ifndef BOOST_HAS_TR1_BIND +#include "boost_has_tr1_bind.ipp" +#else +#error "this file should not compile" +#endif + +int main( int, char *[] ) +{ + return boost_has_tr1_bind::test(); +} + diff --git a/libs/config/test/has_tr1_bind_pass.cpp b/libs/config/test/has_tr1_bind_pass.cpp new file mode 100644 index 0000000000..5b701b77bb --- /dev/null +++ b/libs/config/test/has_tr1_bind_pass.cpp @@ -0,0 +1,38 @@ +// This file was automatically generated on Sat Jul 12 12:39:31 2008 +// by libs/config/tools/generate.cpp +// Copyright John Maddock 2002-4. +// 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) + +// See http://www.boost.org/libs/config for the most recent version.// +// Revision $Id: has_tr1_bind_pass.cpp 47435 2008-07-15 10:41:52Z johnmaddock $ +// + + +// Test file for macro BOOST_HAS_TR1_BIND +// This file should compile, if it does not then +// BOOST_HAS_TR1_BIND should not be defined. +// See file boost_has_tr1_bind.ipp for details + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include <boost/config.hpp> +#include <boost/tr1/detail/config.hpp> +#include "test.hpp" + +#ifdef BOOST_HAS_TR1_BIND +#include "boost_has_tr1_bind.ipp" +#else +namespace boost_has_tr1_bind = empty_boost; +#endif + +int main( int, char *[] ) +{ + return boost_has_tr1_bind::test(); +} + diff --git a/libs/config/test/has_tr1_complex_over_fail.cpp b/libs/config/test/has_tr1_complex_over_fail.cpp new file mode 100644 index 0000000000..a5ba4ce516 --- /dev/null +++ b/libs/config/test/has_tr1_complex_over_fail.cpp @@ -0,0 +1,38 @@ +// This file was automatically generated on Sat Jul 12 12:39:32 2008 +// by libs/config/tools/generate.cpp +// Copyright John Maddock 2002-4. +// 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) + +// See http://www.boost.org/libs/config for the most recent version.// +// Revision $Id: has_tr1_complex_over_fail.cpp 47435 2008-07-15 10:41:52Z johnmaddock $ +// + + +// Test file for macro BOOST_HAS_TR1_COMPLEX_OVERLOADS +// This file should not compile, if it does then +// BOOST_HAS_TR1_COMPLEX_OVERLOADS should be defined. +// See file boost_has_tr1_complex_over.ipp for details + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include <boost/config.hpp> +#include <boost/tr1/detail/config.hpp> +#include "test.hpp" + +#ifndef BOOST_HAS_TR1_COMPLEX_OVERLOADS +#include "boost_has_tr1_complex_over.ipp" +#else +#error "this file should not compile" +#endif + +int main( int, char *[] ) +{ + return boost_has_tr1_complex_overloads::test(); +} + diff --git a/libs/config/test/has_tr1_complex_over_pass.cpp b/libs/config/test/has_tr1_complex_over_pass.cpp new file mode 100644 index 0000000000..d3f4250791 --- /dev/null +++ b/libs/config/test/has_tr1_complex_over_pass.cpp @@ -0,0 +1,38 @@ +// This file was automatically generated on Sat Jul 12 12:39:32 2008 +// by libs/config/tools/generate.cpp +// Copyright John Maddock 2002-4. +// 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) + +// See http://www.boost.org/libs/config for the most recent version.// +// Revision $Id: has_tr1_complex_over_pass.cpp 47435 2008-07-15 10:41:52Z johnmaddock $ +// + + +// Test file for macro BOOST_HAS_TR1_COMPLEX_OVERLOADS +// This file should compile, if it does not then +// BOOST_HAS_TR1_COMPLEX_OVERLOADS should not be defined. +// See file boost_has_tr1_complex_over.ipp for details + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include <boost/config.hpp> +#include <boost/tr1/detail/config.hpp> +#include "test.hpp" + +#ifdef BOOST_HAS_TR1_COMPLEX_OVERLOADS +#include "boost_has_tr1_complex_over.ipp" +#else +namespace boost_has_tr1_complex_overloads = empty_boost; +#endif + +int main( int, char *[] ) +{ + return boost_has_tr1_complex_overloads::test(); +} + diff --git a/libs/config/test/has_tr1_complex_trig_fail.cpp b/libs/config/test/has_tr1_complex_trig_fail.cpp new file mode 100644 index 0000000000..0a7eaa8e79 --- /dev/null +++ b/libs/config/test/has_tr1_complex_trig_fail.cpp @@ -0,0 +1,38 @@ +// This file was automatically generated on Sat Jul 12 12:39:32 2008 +// by libs/config/tools/generate.cpp +// Copyright John Maddock 2002-4. +// 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) + +// See http://www.boost.org/libs/config for the most recent version.// +// Revision $Id: has_tr1_complex_trig_fail.cpp 47435 2008-07-15 10:41:52Z johnmaddock $ +// + + +// Test file for macro BOOST_HAS_TR1_COMPLEX_INVERSE_TRIG +// This file should not compile, if it does then +// BOOST_HAS_TR1_COMPLEX_INVERSE_TRIG should be defined. +// See file boost_has_tr1_complex_trig.ipp for details + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include <boost/config.hpp> +#include <boost/tr1/detail/config.hpp> +#include "test.hpp" + +#ifndef BOOST_HAS_TR1_COMPLEX_INVERSE_TRIG +#include "boost_has_tr1_complex_trig.ipp" +#else +#error "this file should not compile" +#endif + +int main( int, char *[] ) +{ + return boost_has_tr1_complex_inverse_trig::test(); +} + diff --git a/libs/config/test/has_tr1_complex_trig_pass.cpp b/libs/config/test/has_tr1_complex_trig_pass.cpp new file mode 100644 index 0000000000..71748fc559 --- /dev/null +++ b/libs/config/test/has_tr1_complex_trig_pass.cpp @@ -0,0 +1,38 @@ +// This file was automatically generated on Sat Jul 12 12:39:32 2008 +// by libs/config/tools/generate.cpp +// Copyright John Maddock 2002-4. +// 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) + +// See http://www.boost.org/libs/config for the most recent version.// +// Revision $Id: has_tr1_complex_trig_pass.cpp 47435 2008-07-15 10:41:52Z johnmaddock $ +// + + +// Test file for macro BOOST_HAS_TR1_COMPLEX_INVERSE_TRIG +// This file should compile, if it does not then +// BOOST_HAS_TR1_COMPLEX_INVERSE_TRIG should not be defined. +// See file boost_has_tr1_complex_trig.ipp for details + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include <boost/config.hpp> +#include <boost/tr1/detail/config.hpp> +#include "test.hpp" + +#ifdef BOOST_HAS_TR1_COMPLEX_INVERSE_TRIG +#include "boost_has_tr1_complex_trig.ipp" +#else +namespace boost_has_tr1_complex_inverse_trig = empty_boost; +#endif + +int main( int, char *[] ) +{ + return boost_has_tr1_complex_inverse_trig::test(); +} + diff --git a/libs/config/test/has_tr1_function_fail.cpp b/libs/config/test/has_tr1_function_fail.cpp new file mode 100644 index 0000000000..d65ad14cdb --- /dev/null +++ b/libs/config/test/has_tr1_function_fail.cpp @@ -0,0 +1,38 @@ +// This file was automatically generated on Sat Jul 12 12:39:32 2008 +// by libs/config/tools/generate.cpp +// Copyright John Maddock 2002-4. +// 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) + +// See http://www.boost.org/libs/config for the most recent version.// +// Revision $Id: has_tr1_function_fail.cpp 47435 2008-07-15 10:41:52Z johnmaddock $ +// + + +// Test file for macro BOOST_HAS_TR1_FUNCTION +// This file should not compile, if it does then +// BOOST_HAS_TR1_FUNCTION should be defined. +// See file boost_has_tr1_function.ipp for details + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include <boost/config.hpp> +#include <boost/tr1/detail/config.hpp> +#include "test.hpp" + +#ifndef BOOST_HAS_TR1_FUNCTION +#include "boost_has_tr1_function.ipp" +#else +#error "this file should not compile" +#endif + +int main( int, char *[] ) +{ + return boost_has_tr1_function::test(); +} + diff --git a/libs/config/test/has_tr1_function_pass.cpp b/libs/config/test/has_tr1_function_pass.cpp new file mode 100644 index 0000000000..ae3e25f0c8 --- /dev/null +++ b/libs/config/test/has_tr1_function_pass.cpp @@ -0,0 +1,38 @@ +// This file was automatically generated on Sat Jul 12 12:39:32 2008 +// by libs/config/tools/generate.cpp +// Copyright John Maddock 2002-4. +// 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) + +// See http://www.boost.org/libs/config for the most recent version.// +// Revision $Id: has_tr1_function_pass.cpp 47435 2008-07-15 10:41:52Z johnmaddock $ +// + + +// Test file for macro BOOST_HAS_TR1_FUNCTION +// This file should compile, if it does not then +// BOOST_HAS_TR1_FUNCTION should not be defined. +// See file boost_has_tr1_function.ipp for details + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include <boost/config.hpp> +#include <boost/tr1/detail/config.hpp> +#include "test.hpp" + +#ifdef BOOST_HAS_TR1_FUNCTION +#include "boost_has_tr1_function.ipp" +#else +namespace boost_has_tr1_function = empty_boost; +#endif + +int main( int, char *[] ) +{ + return boost_has_tr1_function::test(); +} + diff --git a/libs/config/test/has_tr1_hash_fail.cpp b/libs/config/test/has_tr1_hash_fail.cpp new file mode 100644 index 0000000000..e453374b28 --- /dev/null +++ b/libs/config/test/has_tr1_hash_fail.cpp @@ -0,0 +1,38 @@ +// This file was automatically generated on Sat Jul 12 12:39:32 2008 +// by libs/config/tools/generate.cpp +// Copyright John Maddock 2002-4. +// 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) + +// See http://www.boost.org/libs/config for the most recent version.// +// Revision $Id: has_tr1_hash_fail.cpp 47435 2008-07-15 10:41:52Z johnmaddock $ +// + + +// Test file for macro BOOST_HAS_TR1_HASH +// This file should not compile, if it does then +// BOOST_HAS_TR1_HASH should be defined. +// See file boost_has_tr1_hash.ipp for details + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include <boost/config.hpp> +#include <boost/tr1/detail/config.hpp> +#include "test.hpp" + +#ifndef BOOST_HAS_TR1_HASH +#include "boost_has_tr1_hash.ipp" +#else +#error "this file should not compile" +#endif + +int main( int, char *[] ) +{ + return boost_has_tr1_hash::test(); +} + diff --git a/libs/config/test/has_tr1_hash_pass.cpp b/libs/config/test/has_tr1_hash_pass.cpp new file mode 100644 index 0000000000..d38005a959 --- /dev/null +++ b/libs/config/test/has_tr1_hash_pass.cpp @@ -0,0 +1,38 @@ +// This file was automatically generated on Sat Jul 12 12:39:32 2008 +// by libs/config/tools/generate.cpp +// Copyright John Maddock 2002-4. +// 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) + +// See http://www.boost.org/libs/config for the most recent version.// +// Revision $Id: has_tr1_hash_pass.cpp 47435 2008-07-15 10:41:52Z johnmaddock $ +// + + +// Test file for macro BOOST_HAS_TR1_HASH +// This file should compile, if it does not then +// BOOST_HAS_TR1_HASH should not be defined. +// See file boost_has_tr1_hash.ipp for details + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include <boost/config.hpp> +#include <boost/tr1/detail/config.hpp> +#include "test.hpp" + +#ifdef BOOST_HAS_TR1_HASH +#include "boost_has_tr1_hash.ipp" +#else +namespace boost_has_tr1_hash = empty_boost; +#endif + +int main( int, char *[] ) +{ + return boost_has_tr1_hash::test(); +} + diff --git a/libs/config/test/has_tr1_mem_fn_fail.cpp b/libs/config/test/has_tr1_mem_fn_fail.cpp new file mode 100644 index 0000000000..46b72d7b78 --- /dev/null +++ b/libs/config/test/has_tr1_mem_fn_fail.cpp @@ -0,0 +1,38 @@ +// This file was automatically generated on Sat Jul 12 12:39:32 2008 +// by libs/config/tools/generate.cpp +// Copyright John Maddock 2002-4. +// 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) + +// See http://www.boost.org/libs/config for the most recent version.// +// Revision $Id: has_tr1_mem_fn_fail.cpp 47435 2008-07-15 10:41:52Z johnmaddock $ +// + + +// Test file for macro BOOST_HAS_TR1_MEM_FN +// This file should not compile, if it does then +// BOOST_HAS_TR1_MEM_FN should be defined. +// See file boost_has_tr1_mem_fn.ipp for details + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include <boost/config.hpp> +#include <boost/tr1/detail/config.hpp> +#include "test.hpp" + +#ifndef BOOST_HAS_TR1_MEM_FN +#include "boost_has_tr1_mem_fn.ipp" +#else +#error "this file should not compile" +#endif + +int main( int, char *[] ) +{ + return boost_has_tr1_mem_fn::test(); +} + diff --git a/libs/config/test/has_tr1_mem_fn_pass.cpp b/libs/config/test/has_tr1_mem_fn_pass.cpp new file mode 100644 index 0000000000..da34f539d1 --- /dev/null +++ b/libs/config/test/has_tr1_mem_fn_pass.cpp @@ -0,0 +1,38 @@ +// This file was automatically generated on Sat Jul 12 12:39:32 2008 +// by libs/config/tools/generate.cpp +// Copyright John Maddock 2002-4. +// 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) + +// See http://www.boost.org/libs/config for the most recent version.// +// Revision $Id: has_tr1_mem_fn_pass.cpp 47435 2008-07-15 10:41:52Z johnmaddock $ +// + + +// Test file for macro BOOST_HAS_TR1_MEM_FN +// This file should compile, if it does not then +// BOOST_HAS_TR1_MEM_FN should not be defined. +// See file boost_has_tr1_mem_fn.ipp for details + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include <boost/config.hpp> +#include <boost/tr1/detail/config.hpp> +#include "test.hpp" + +#ifdef BOOST_HAS_TR1_MEM_FN +#include "boost_has_tr1_mem_fn.ipp" +#else +namespace boost_has_tr1_mem_fn = empty_boost; +#endif + +int main( int, char *[] ) +{ + return boost_has_tr1_mem_fn::test(); +} + diff --git a/libs/config/test/has_tr1_random_fail.cpp b/libs/config/test/has_tr1_random_fail.cpp new file mode 100644 index 0000000000..0c835b7002 --- /dev/null +++ b/libs/config/test/has_tr1_random_fail.cpp @@ -0,0 +1,38 @@ +// This file was automatically generated on Sat Jul 12 12:39:32 2008 +// by libs/config/tools/generate.cpp +// Copyright John Maddock 2002-4. +// 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) + +// See http://www.boost.org/libs/config for the most recent version.// +// Revision $Id: has_tr1_random_fail.cpp 47435 2008-07-15 10:41:52Z johnmaddock $ +// + + +// Test file for macro BOOST_HAS_TR1_RANDOM +// This file should not compile, if it does then +// BOOST_HAS_TR1_RANDOM should be defined. +// See file boost_has_tr1_random.ipp for details + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include <boost/config.hpp> +#include <boost/tr1/detail/config.hpp> +#include "test.hpp" + +#ifndef BOOST_HAS_TR1_RANDOM +#include "boost_has_tr1_random.ipp" +#else +#error "this file should not compile" +#endif + +int main( int, char *[] ) +{ + return boost_has_tr1_random::test(); +} + diff --git a/libs/config/test/has_tr1_random_pass.cpp b/libs/config/test/has_tr1_random_pass.cpp new file mode 100644 index 0000000000..be4362cd92 --- /dev/null +++ b/libs/config/test/has_tr1_random_pass.cpp @@ -0,0 +1,38 @@ +// This file was automatically generated on Sat Jul 12 12:39:32 2008 +// by libs/config/tools/generate.cpp +// Copyright John Maddock 2002-4. +// 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) + +// See http://www.boost.org/libs/config for the most recent version.// +// Revision $Id: has_tr1_random_pass.cpp 47435 2008-07-15 10:41:52Z johnmaddock $ +// + + +// Test file for macro BOOST_HAS_TR1_RANDOM +// This file should compile, if it does not then +// BOOST_HAS_TR1_RANDOM should not be defined. +// See file boost_has_tr1_random.ipp for details + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include <boost/config.hpp> +#include <boost/tr1/detail/config.hpp> +#include "test.hpp" + +#ifdef BOOST_HAS_TR1_RANDOM +#include "boost_has_tr1_random.ipp" +#else +namespace boost_has_tr1_random = empty_boost; +#endif + +int main( int, char *[] ) +{ + return boost_has_tr1_random::test(); +} + diff --git a/libs/config/test/has_tr1_ref_wrap_fail.cpp b/libs/config/test/has_tr1_ref_wrap_fail.cpp new file mode 100644 index 0000000000..3708b8b9cf --- /dev/null +++ b/libs/config/test/has_tr1_ref_wrap_fail.cpp @@ -0,0 +1,38 @@ +// This file was automatically generated on Sat Jul 12 12:39:32 2008 +// by libs/config/tools/generate.cpp +// Copyright John Maddock 2002-4. +// 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) + +// See http://www.boost.org/libs/config for the most recent version.// +// Revision $Id: has_tr1_ref_wrap_fail.cpp 47435 2008-07-15 10:41:52Z johnmaddock $ +// + + +// Test file for macro BOOST_HAS_TR1_REFERENCE_WRAPPER +// This file should not compile, if it does then +// BOOST_HAS_TR1_REFERENCE_WRAPPER should be defined. +// See file boost_has_tr1_ref_wrap.ipp for details + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include <boost/config.hpp> +#include <boost/tr1/detail/config.hpp> +#include "test.hpp" + +#ifndef BOOST_HAS_TR1_REFERENCE_WRAPPER +#include "boost_has_tr1_ref_wrap.ipp" +#else +#error "this file should not compile" +#endif + +int main( int, char *[] ) +{ + return boost_has_tr1_reference_wrapper::test(); +} + diff --git a/libs/config/test/has_tr1_ref_wrap_pass.cpp b/libs/config/test/has_tr1_ref_wrap_pass.cpp new file mode 100644 index 0000000000..d43985cb7f --- /dev/null +++ b/libs/config/test/has_tr1_ref_wrap_pass.cpp @@ -0,0 +1,38 @@ +// This file was automatically generated on Sat Jul 12 12:39:32 2008 +// by libs/config/tools/generate.cpp +// Copyright John Maddock 2002-4. +// 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) + +// See http://www.boost.org/libs/config for the most recent version.// +// Revision $Id: has_tr1_ref_wrap_pass.cpp 47435 2008-07-15 10:41:52Z johnmaddock $ +// + + +// Test file for macro BOOST_HAS_TR1_REFERENCE_WRAPPER +// This file should compile, if it does not then +// BOOST_HAS_TR1_REFERENCE_WRAPPER should not be defined. +// See file boost_has_tr1_ref_wrap.ipp for details + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include <boost/config.hpp> +#include <boost/tr1/detail/config.hpp> +#include "test.hpp" + +#ifdef BOOST_HAS_TR1_REFERENCE_WRAPPER +#include "boost_has_tr1_ref_wrap.ipp" +#else +namespace boost_has_tr1_reference_wrapper = empty_boost; +#endif + +int main( int, char *[] ) +{ + return boost_has_tr1_reference_wrapper::test(); +} + diff --git a/libs/config/test/has_tr1_regex_fail.cpp b/libs/config/test/has_tr1_regex_fail.cpp new file mode 100644 index 0000000000..f5bdd74fd5 --- /dev/null +++ b/libs/config/test/has_tr1_regex_fail.cpp @@ -0,0 +1,38 @@ +// This file was automatically generated on Sat Jul 12 12:39:32 2008 +// by libs/config/tools/generate.cpp +// Copyright John Maddock 2002-4. +// 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) + +// See http://www.boost.org/libs/config for the most recent version.// +// Revision $Id: has_tr1_regex_fail.cpp 47435 2008-07-15 10:41:52Z johnmaddock $ +// + + +// Test file for macro BOOST_HAS_TR1_REGEX +// This file should not compile, if it does then +// BOOST_HAS_TR1_REGEX should be defined. +// See file boost_has_tr1_regex.ipp for details + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include <boost/config.hpp> +#include <boost/tr1/detail/config.hpp> +#include "test.hpp" + +#ifndef BOOST_HAS_TR1_REGEX +#include "boost_has_tr1_regex.ipp" +#else +#error "this file should not compile" +#endif + +int main( int, char *[] ) +{ + return boost_has_tr1_regex::test(); +} + diff --git a/libs/config/test/has_tr1_regex_pass.cpp b/libs/config/test/has_tr1_regex_pass.cpp new file mode 100644 index 0000000000..223da16628 --- /dev/null +++ b/libs/config/test/has_tr1_regex_pass.cpp @@ -0,0 +1,38 @@ +// This file was automatically generated on Sat Jul 12 12:39:32 2008 +// by libs/config/tools/generate.cpp +// Copyright John Maddock 2002-4. +// 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) + +// See http://www.boost.org/libs/config for the most recent version.// +// Revision $Id: has_tr1_regex_pass.cpp 47435 2008-07-15 10:41:52Z johnmaddock $ +// + + +// Test file for macro BOOST_HAS_TR1_REGEX +// This file should compile, if it does not then +// BOOST_HAS_TR1_REGEX should not be defined. +// See file boost_has_tr1_regex.ipp for details + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include <boost/config.hpp> +#include <boost/tr1/detail/config.hpp> +#include "test.hpp" + +#ifdef BOOST_HAS_TR1_REGEX +#include "boost_has_tr1_regex.ipp" +#else +namespace boost_has_tr1_regex = empty_boost; +#endif + +int main( int, char *[] ) +{ + return boost_has_tr1_regex::test(); +} + diff --git a/libs/config/test/has_tr1_result_of_fail.cpp b/libs/config/test/has_tr1_result_of_fail.cpp new file mode 100644 index 0000000000..fa5640aa99 --- /dev/null +++ b/libs/config/test/has_tr1_result_of_fail.cpp @@ -0,0 +1,38 @@ +// This file was automatically generated on Sat Jul 12 12:39:32 2008 +// by libs/config/tools/generate.cpp +// Copyright John Maddock 2002-4. +// 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) + +// See http://www.boost.org/libs/config for the most recent version.// +// Revision $Id: has_tr1_result_of_fail.cpp 47435 2008-07-15 10:41:52Z johnmaddock $ +// + + +// Test file for macro BOOST_HAS_TR1_RESULT_OF +// This file should not compile, if it does then +// BOOST_HAS_TR1_RESULT_OF should be defined. +// See file boost_has_tr1_result_of.ipp for details + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include <boost/config.hpp> +#include <boost/tr1/detail/config.hpp> +#include "test.hpp" + +#ifndef BOOST_HAS_TR1_RESULT_OF +#include "boost_has_tr1_result_of.ipp" +#else +#error "this file should not compile" +#endif + +int main( int, char *[] ) +{ + return boost_has_tr1_result_of::test(); +} + diff --git a/libs/config/test/has_tr1_result_of_pass.cpp b/libs/config/test/has_tr1_result_of_pass.cpp new file mode 100644 index 0000000000..c2080a8636 --- /dev/null +++ b/libs/config/test/has_tr1_result_of_pass.cpp @@ -0,0 +1,38 @@ +// This file was automatically generated on Sat Jul 12 12:39:32 2008 +// by libs/config/tools/generate.cpp +// Copyright John Maddock 2002-4. +// 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) + +// See http://www.boost.org/libs/config for the most recent version.// +// Revision $Id: has_tr1_result_of_pass.cpp 47435 2008-07-15 10:41:52Z johnmaddock $ +// + + +// Test file for macro BOOST_HAS_TR1_RESULT_OF +// This file should compile, if it does not then +// BOOST_HAS_TR1_RESULT_OF should not be defined. +// See file boost_has_tr1_result_of.ipp for details + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include <boost/config.hpp> +#include <boost/tr1/detail/config.hpp> +#include "test.hpp" + +#ifdef BOOST_HAS_TR1_RESULT_OF +#include "boost_has_tr1_result_of.ipp" +#else +namespace boost_has_tr1_result_of = empty_boost; +#endif + +int main( int, char *[] ) +{ + return boost_has_tr1_result_of::test(); +} + diff --git a/libs/config/test/has_tr1_shared_ptr_fail.cpp b/libs/config/test/has_tr1_shared_ptr_fail.cpp new file mode 100644 index 0000000000..a032199896 --- /dev/null +++ b/libs/config/test/has_tr1_shared_ptr_fail.cpp @@ -0,0 +1,38 @@ +// This file was automatically generated on Sat Jul 12 12:39:32 2008 +// by libs/config/tools/generate.cpp +// Copyright John Maddock 2002-4. +// 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) + +// See http://www.boost.org/libs/config for the most recent version.// +// Revision $Id: has_tr1_shared_ptr_fail.cpp 47435 2008-07-15 10:41:52Z johnmaddock $ +// + + +// Test file for macro BOOST_HAS_TR1_SHARED_PTR +// This file should not compile, if it does then +// BOOST_HAS_TR1_SHARED_PTR should be defined. +// See file boost_has_tr1_shared_ptr.ipp for details + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include <boost/config.hpp> +#include <boost/tr1/detail/config.hpp> +#include "test.hpp" + +#ifndef BOOST_HAS_TR1_SHARED_PTR +#include "boost_has_tr1_shared_ptr.ipp" +#else +#error "this file should not compile" +#endif + +int main( int, char *[] ) +{ + return boost_has_tr1_shared_ptr::test(); +} + diff --git a/libs/config/test/has_tr1_shared_ptr_pass.cpp b/libs/config/test/has_tr1_shared_ptr_pass.cpp new file mode 100644 index 0000000000..aa3b65e24c --- /dev/null +++ b/libs/config/test/has_tr1_shared_ptr_pass.cpp @@ -0,0 +1,38 @@ +// This file was automatically generated on Sat Jul 12 12:39:32 2008 +// by libs/config/tools/generate.cpp +// Copyright John Maddock 2002-4. +// 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) + +// See http://www.boost.org/libs/config for the most recent version.// +// Revision $Id: has_tr1_shared_ptr_pass.cpp 47435 2008-07-15 10:41:52Z johnmaddock $ +// + + +// Test file for macro BOOST_HAS_TR1_SHARED_PTR +// This file should compile, if it does not then +// BOOST_HAS_TR1_SHARED_PTR should not be defined. +// See file boost_has_tr1_shared_ptr.ipp for details + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include <boost/config.hpp> +#include <boost/tr1/detail/config.hpp> +#include "test.hpp" + +#ifdef BOOST_HAS_TR1_SHARED_PTR +#include "boost_has_tr1_shared_ptr.ipp" +#else +namespace boost_has_tr1_shared_ptr = empty_boost; +#endif + +int main( int, char *[] ) +{ + return boost_has_tr1_shared_ptr::test(); +} + diff --git a/libs/config/test/has_tr1_tuple_fail.cpp b/libs/config/test/has_tr1_tuple_fail.cpp new file mode 100644 index 0000000000..d14e797fe4 --- /dev/null +++ b/libs/config/test/has_tr1_tuple_fail.cpp @@ -0,0 +1,38 @@ +// This file was automatically generated on Sat Jul 12 12:39:32 2008 +// by libs/config/tools/generate.cpp +// Copyright John Maddock 2002-4. +// 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) + +// See http://www.boost.org/libs/config for the most recent version.// +// Revision $Id: has_tr1_tuple_fail.cpp 47435 2008-07-15 10:41:52Z johnmaddock $ +// + + +// Test file for macro BOOST_HAS_TR1_TUPLE +// This file should not compile, if it does then +// BOOST_HAS_TR1_TUPLE should be defined. +// See file boost_has_tr1_tuple.ipp for details + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include <boost/config.hpp> +#include <boost/tr1/detail/config.hpp> +#include "test.hpp" + +#ifndef BOOST_HAS_TR1_TUPLE +#include "boost_has_tr1_tuple.ipp" +#else +#error "this file should not compile" +#endif + +int main( int, char *[] ) +{ + return boost_has_tr1_tuple::test(); +} + diff --git a/libs/config/test/has_tr1_tuple_pass.cpp b/libs/config/test/has_tr1_tuple_pass.cpp new file mode 100644 index 0000000000..f85e2cfdd4 --- /dev/null +++ b/libs/config/test/has_tr1_tuple_pass.cpp @@ -0,0 +1,38 @@ +// This file was automatically generated on Sat Jul 12 12:39:32 2008 +// by libs/config/tools/generate.cpp +// Copyright John Maddock 2002-4. +// 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) + +// See http://www.boost.org/libs/config for the most recent version.// +// Revision $Id: has_tr1_tuple_pass.cpp 47435 2008-07-15 10:41:52Z johnmaddock $ +// + + +// Test file for macro BOOST_HAS_TR1_TUPLE +// This file should compile, if it does not then +// BOOST_HAS_TR1_TUPLE should not be defined. +// See file boost_has_tr1_tuple.ipp for details + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include <boost/config.hpp> +#include <boost/tr1/detail/config.hpp> +#include "test.hpp" + +#ifdef BOOST_HAS_TR1_TUPLE +#include "boost_has_tr1_tuple.ipp" +#else +namespace boost_has_tr1_tuple = empty_boost; +#endif + +int main( int, char *[] ) +{ + return boost_has_tr1_tuple::test(); +} + diff --git a/libs/config/test/has_tr1_type_traits_fail.cpp b/libs/config/test/has_tr1_type_traits_fail.cpp new file mode 100644 index 0000000000..5cfdf41bf3 --- /dev/null +++ b/libs/config/test/has_tr1_type_traits_fail.cpp @@ -0,0 +1,38 @@ +// This file was automatically generated on Sat Jul 12 12:39:32 2008 +// by libs/config/tools/generate.cpp +// Copyright John Maddock 2002-4. +// 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) + +// See http://www.boost.org/libs/config for the most recent version.// +// Revision $Id: has_tr1_type_traits_fail.cpp 47435 2008-07-15 10:41:52Z johnmaddock $ +// + + +// Test file for macro BOOST_HAS_TR1_TYPE_TRAITS +// This file should not compile, if it does then +// BOOST_HAS_TR1_TYPE_TRAITS should be defined. +// See file boost_has_tr1_type_traits.ipp for details + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include <boost/config.hpp> +#include <boost/tr1/detail/config.hpp> +#include "test.hpp" + +#ifndef BOOST_HAS_TR1_TYPE_TRAITS +#include "boost_has_tr1_type_traits.ipp" +#else +#error "this file should not compile" +#endif + +int main( int, char *[] ) +{ + return boost_has_tr1_type_traits::test(); +} + diff --git a/libs/config/test/has_tr1_type_traits_pass.cpp b/libs/config/test/has_tr1_type_traits_pass.cpp new file mode 100644 index 0000000000..572fe39163 --- /dev/null +++ b/libs/config/test/has_tr1_type_traits_pass.cpp @@ -0,0 +1,38 @@ +// This file was automatically generated on Sat Jul 12 12:39:32 2008 +// by libs/config/tools/generate.cpp +// Copyright John Maddock 2002-4. +// 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) + +// See http://www.boost.org/libs/config for the most recent version.// +// Revision $Id: has_tr1_type_traits_pass.cpp 47435 2008-07-15 10:41:52Z johnmaddock $ +// + + +// Test file for macro BOOST_HAS_TR1_TYPE_TRAITS +// This file should compile, if it does not then +// BOOST_HAS_TR1_TYPE_TRAITS should not be defined. +// See file boost_has_tr1_type_traits.ipp for details + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include <boost/config.hpp> +#include <boost/tr1/detail/config.hpp> +#include "test.hpp" + +#ifdef BOOST_HAS_TR1_TYPE_TRAITS +#include "boost_has_tr1_type_traits.ipp" +#else +namespace boost_has_tr1_type_traits = empty_boost; +#endif + +int main( int, char *[] ) +{ + return boost_has_tr1_type_traits::test(); +} + diff --git a/libs/config/test/has_tr1_unordered_map_fail.cpp b/libs/config/test/has_tr1_unordered_map_fail.cpp new file mode 100644 index 0000000000..0a4c49df0d --- /dev/null +++ b/libs/config/test/has_tr1_unordered_map_fail.cpp @@ -0,0 +1,38 @@ +// This file was automatically generated on Sat Jul 12 12:39:32 2008 +// by libs/config/tools/generate.cpp +// Copyright John Maddock 2002-4. +// 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) + +// See http://www.boost.org/libs/config for the most recent version.// +// Revision $Id: has_tr1_unordered_map_fail.cpp 47435 2008-07-15 10:41:52Z johnmaddock $ +// + + +// Test file for macro BOOST_HAS_TR1_UNORDERED_MAP +// This file should not compile, if it does then +// BOOST_HAS_TR1_UNORDERED_MAP should be defined. +// See file boost_has_tr1_unordered_map.ipp for details + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include <boost/config.hpp> +#include <boost/tr1/detail/config.hpp> +#include "test.hpp" + +#ifndef BOOST_HAS_TR1_UNORDERED_MAP +#include "boost_has_tr1_unordered_map.ipp" +#else +#error "this file should not compile" +#endif + +int main( int, char *[] ) +{ + return boost_has_tr1_unordered_map::test(); +} + diff --git a/libs/config/test/has_tr1_unordered_map_pass.cpp b/libs/config/test/has_tr1_unordered_map_pass.cpp new file mode 100644 index 0000000000..e92ed109e0 --- /dev/null +++ b/libs/config/test/has_tr1_unordered_map_pass.cpp @@ -0,0 +1,38 @@ +// This file was automatically generated on Sat Jul 12 12:39:32 2008 +// by libs/config/tools/generate.cpp +// Copyright John Maddock 2002-4. +// 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) + +// See http://www.boost.org/libs/config for the most recent version.// +// Revision $Id: has_tr1_unordered_map_pass.cpp 47435 2008-07-15 10:41:52Z johnmaddock $ +// + + +// Test file for macro BOOST_HAS_TR1_UNORDERED_MAP +// This file should compile, if it does not then +// BOOST_HAS_TR1_UNORDERED_MAP should not be defined. +// See file boost_has_tr1_unordered_map.ipp for details + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include <boost/config.hpp> +#include <boost/tr1/detail/config.hpp> +#include "test.hpp" + +#ifdef BOOST_HAS_TR1_UNORDERED_MAP +#include "boost_has_tr1_unordered_map.ipp" +#else +namespace boost_has_tr1_unordered_map = empty_boost; +#endif + +int main( int, char *[] ) +{ + return boost_has_tr1_unordered_map::test(); +} + diff --git a/libs/config/test/has_tr1_unordered_set_fail.cpp b/libs/config/test/has_tr1_unordered_set_fail.cpp new file mode 100644 index 0000000000..1f24029077 --- /dev/null +++ b/libs/config/test/has_tr1_unordered_set_fail.cpp @@ -0,0 +1,38 @@ +// This file was automatically generated on Sat Jul 12 12:39:32 2008 +// by libs/config/tools/generate.cpp +// Copyright John Maddock 2002-4. +// 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) + +// See http://www.boost.org/libs/config for the most recent version.// +// Revision $Id: has_tr1_unordered_set_fail.cpp 47435 2008-07-15 10:41:52Z johnmaddock $ +// + + +// Test file for macro BOOST_HAS_TR1_UNORDERED_SET +// This file should not compile, if it does then +// BOOST_HAS_TR1_UNORDERED_SET should be defined. +// See file boost_has_tr1_unordered_set.ipp for details + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include <boost/config.hpp> +#include <boost/tr1/detail/config.hpp> +#include "test.hpp" + +#ifndef BOOST_HAS_TR1_UNORDERED_SET +#include "boost_has_tr1_unordered_set.ipp" +#else +#error "this file should not compile" +#endif + +int main( int, char *[] ) +{ + return boost_has_tr1_unordered_set::test(); +} + diff --git a/libs/config/test/has_tr1_unordered_set_pass.cpp b/libs/config/test/has_tr1_unordered_set_pass.cpp new file mode 100644 index 0000000000..86ccee7c54 --- /dev/null +++ b/libs/config/test/has_tr1_unordered_set_pass.cpp @@ -0,0 +1,38 @@ +// This file was automatically generated on Sat Jul 12 12:39:32 2008 +// by libs/config/tools/generate.cpp +// Copyright John Maddock 2002-4. +// 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) + +// See http://www.boost.org/libs/config for the most recent version.// +// Revision $Id: has_tr1_unordered_set_pass.cpp 47435 2008-07-15 10:41:52Z johnmaddock $ +// + + +// Test file for macro BOOST_HAS_TR1_UNORDERED_SET +// This file should compile, if it does not then +// BOOST_HAS_TR1_UNORDERED_SET should not be defined. +// See file boost_has_tr1_unordered_set.ipp for details + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include <boost/config.hpp> +#include <boost/tr1/detail/config.hpp> +#include "test.hpp" + +#ifdef BOOST_HAS_TR1_UNORDERED_SET +#include "boost_has_tr1_unordered_set.ipp" +#else +namespace boost_has_tr1_unordered_set = empty_boost; +#endif + +int main( int, char *[] ) +{ + return boost_has_tr1_unordered_set::test(); +} + diff --git a/libs/config/test/has_tr1_utility_fail.cpp b/libs/config/test/has_tr1_utility_fail.cpp new file mode 100644 index 0000000000..7246c53ec1 --- /dev/null +++ b/libs/config/test/has_tr1_utility_fail.cpp @@ -0,0 +1,38 @@ +// This file was automatically generated on Sat Jul 12 12:39:33 2008 +// by libs/config/tools/generate.cpp +// Copyright John Maddock 2002-4. +// 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) + +// See http://www.boost.org/libs/config for the most recent version.// +// Revision $Id: has_tr1_utility_fail.cpp 47435 2008-07-15 10:41:52Z johnmaddock $ +// + + +// Test file for macro BOOST_HAS_TR1_UTILITY +// This file should not compile, if it does then +// BOOST_HAS_TR1_UTILITY should be defined. +// See file boost_has_tr1_utility.ipp for details + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include <boost/config.hpp> +#include <boost/tr1/detail/config.hpp> +#include "test.hpp" + +#ifndef BOOST_HAS_TR1_UTILITY +#include "boost_has_tr1_utility.ipp" +#else +#error "this file should not compile" +#endif + +int main( int, char *[] ) +{ + return boost_has_tr1_utility::test(); +} + diff --git a/libs/config/test/has_tr1_utility_pass.cpp b/libs/config/test/has_tr1_utility_pass.cpp new file mode 100644 index 0000000000..538ca9615f --- /dev/null +++ b/libs/config/test/has_tr1_utility_pass.cpp @@ -0,0 +1,38 @@ +// This file was automatically generated on Sat Jul 12 12:39:33 2008 +// by libs/config/tools/generate.cpp +// Copyright John Maddock 2002-4. +// 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) + +// See http://www.boost.org/libs/config for the most recent version.// +// Revision $Id: has_tr1_utility_pass.cpp 47435 2008-07-15 10:41:52Z johnmaddock $ +// + + +// Test file for macro BOOST_HAS_TR1_UTILITY +// This file should compile, if it does not then +// BOOST_HAS_TR1_UTILITY should not be defined. +// See file boost_has_tr1_utility.ipp for details + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include <boost/config.hpp> +#include <boost/tr1/detail/config.hpp> +#include "test.hpp" + +#ifdef BOOST_HAS_TR1_UTILITY +#include "boost_has_tr1_utility.ipp" +#else +namespace boost_has_tr1_utility = empty_boost; +#endif + +int main( int, char *[] ) +{ + return boost_has_tr1_utility::test(); +} + diff --git a/libs/config/test/has_unistd_h_fail.cpp b/libs/config/test/has_unistd_h_fail.cpp new file mode 100644 index 0000000000..363aea2202 --- /dev/null +++ b/libs/config/test/has_unistd_h_fail.cpp @@ -0,0 +1,34 @@ +// This file was automatically generated on Fri Dec 03 18:04:00 2004 +// by libs/config/tools/generate.cpp +// Copyright John Maddock 2002-4. +// 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) + +// See http://www.boost.org/libs/config for the most recent version. + +// Test file for macro BOOST_HAS_UNISTD_H +// This file should not compile, if it does then +// BOOST_HAS_UNISTD_H should be defined. +// See file boost_has_unistd_h.ipp for details + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include <boost/config.hpp> +#include "test.hpp" + +#ifndef BOOST_HAS_UNISTD_H +#include "boost_has_unistd_h.ipp" +#else +#error "this file should not compile" +#endif + +int main( int, char *[] ) +{ + return boost_has_unistd_h::test(); +} + diff --git a/libs/config/test/has_unistd_h_pass.cpp b/libs/config/test/has_unistd_h_pass.cpp new file mode 100644 index 0000000000..70f8137554 --- /dev/null +++ b/libs/config/test/has_unistd_h_pass.cpp @@ -0,0 +1,34 @@ +// This file was automatically generated on Fri Dec 03 18:04:00 2004 +// by libs/config/tools/generate.cpp +// Copyright John Maddock 2002-4. +// 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) + +// See http://www.boost.org/libs/config for the most recent version. + +// Test file for macro BOOST_HAS_UNISTD_H +// This file should compile, if it does not then +// BOOST_HAS_UNISTD_H should not be defined. +// See file boost_has_unistd_h.ipp for details + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include <boost/config.hpp> +#include "test.hpp" + +#ifdef BOOST_HAS_UNISTD_H +#include "boost_has_unistd_h.ipp" +#else +namespace boost_has_unistd_h = empty_boost; +#endif + +int main( int, char *[] ) +{ + return boost_has_unistd_h::test(); +} + diff --git a/libs/config/test/has_variadic_tmpl_fail.cpp b/libs/config/test/has_variadic_tmpl_fail.cpp new file mode 100644 index 0000000000..17baab7800 --- /dev/null +++ b/libs/config/test/has_variadic_tmpl_fail.cpp @@ -0,0 +1,34 @@ +// This file was automatically generated on Sat Aug 25 12:32:21 2007 +// by libs/config/tools/generate.cpp +// Copyright John Maddock 2002-4. +// 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) + +// See http://www.boost.org/libs/config for the most recent version. + +// Test file for macro BOOST_HAS_VARIADIC_TMPL +// This file should not compile, if it does then +// BOOST_HAS_VARIADIC_TMPL should be defined. +// See file boost_has_variadic_tmpl.ipp for details + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include <boost/config.hpp> +#include "test.hpp" + +#ifndef BOOST_HAS_VARIADIC_TMPL +#include "boost_has_variadic_tmpl.ipp" +#else +#error "this file should not compile" +#endif + +int main( int, char *[] ) +{ + return boost_has_variadic_tmpl::test(); +} + diff --git a/libs/config/test/has_variadic_tmpl_pass.cpp b/libs/config/test/has_variadic_tmpl_pass.cpp new file mode 100644 index 0000000000..8b65b8d22d --- /dev/null +++ b/libs/config/test/has_variadic_tmpl_pass.cpp @@ -0,0 +1,34 @@ +// This file was automatically generated on Sat Aug 25 12:32:21 2007 +// by libs/config/tools/generate.cpp +// Copyright John Maddock 2002-4. +// 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) + +// See http://www.boost.org/libs/config for the most recent version. + +// Test file for macro BOOST_HAS_VARIADIC_TMPL +// This file should compile, if it does not then +// BOOST_HAS_VARIADIC_TMPL should not be defined. +// See file boost_has_variadic_tmpl.ipp for details + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include <boost/config.hpp> +#include "test.hpp" + +#ifdef BOOST_HAS_VARIADIC_TMPL +#include "boost_has_variadic_tmpl.ipp" +#else +namespace boost_has_variadic_tmpl = empty_boost; +#endif + +int main( int, char *[] ) +{ + return boost_has_variadic_tmpl::test(); +} + diff --git a/libs/config/test/has_vc6_mem_templ_fail.cpp b/libs/config/test/has_vc6_mem_templ_fail.cpp new file mode 100644 index 0000000000..6fa512abeb --- /dev/null +++ b/libs/config/test/has_vc6_mem_templ_fail.cpp @@ -0,0 +1,34 @@ +// This file was automatically generated on Fri Dec 03 18:04:00 2004 +// by libs/config/tools/generate.cpp +// Copyright John Maddock 2002-4. +// 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) + +// See http://www.boost.org/libs/config for the most recent version. + +// Test file for macro BOOST_MSVC6_MEMBER_TEMPLATES +// This file should not compile, if it does then +// BOOST_MSVC6_MEMBER_TEMPLATES should be defined. +// See file boost_has_vc6_mem_templ.ipp for details + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include <boost/config.hpp> +#include "test.hpp" + +#ifndef BOOST_MSVC6_MEMBER_TEMPLATES +#include "boost_has_vc6_mem_templ.ipp" +#else +#error "this file should not compile" +#endif + +int main( int, char *[] ) +{ + return boost_msvc6_member_templates::test(); +} + diff --git a/libs/config/test/has_vc6_mem_templ_pass.cpp b/libs/config/test/has_vc6_mem_templ_pass.cpp new file mode 100644 index 0000000000..85325a9def --- /dev/null +++ b/libs/config/test/has_vc6_mem_templ_pass.cpp @@ -0,0 +1,34 @@ +// This file was automatically generated on Fri Dec 03 18:04:00 2004 +// by libs/config/tools/generate.cpp +// Copyright John Maddock 2002-4. +// 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) + +// See http://www.boost.org/libs/config for the most recent version. + +// Test file for macro BOOST_MSVC6_MEMBER_TEMPLATES +// This file should compile, if it does not then +// BOOST_MSVC6_MEMBER_TEMPLATES should not be defined. +// See file boost_has_vc6_mem_templ.ipp for details + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include <boost/config.hpp> +#include "test.hpp" + +#ifdef BOOST_MSVC6_MEMBER_TEMPLATES +#include "boost_has_vc6_mem_templ.ipp" +#else +namespace boost_msvc6_member_templates = empty_boost; +#endif + +int main( int, char *[] ) +{ + return boost_msvc6_member_templates::test(); +} + diff --git a/libs/config/test/has_vc_iterator_fail.cpp b/libs/config/test/has_vc_iterator_fail.cpp new file mode 100644 index 0000000000..e453e56ac7 --- /dev/null +++ b/libs/config/test/has_vc_iterator_fail.cpp @@ -0,0 +1,34 @@ +// This file was automatically generated on Fri Dec 03 18:04:00 2004 +// by libs/config/tools/generate.cpp +// Copyright John Maddock 2002-4. +// 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) + +// See http://www.boost.org/libs/config for the most recent version. + +// Test file for macro BOOST_MSVC_STD_ITERATOR +// This file should not compile, if it does then +// BOOST_MSVC_STD_ITERATOR should be defined. +// See file boost_has_vc_iterator.ipp for details + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include <boost/config.hpp> +#include "test.hpp" + +#ifndef BOOST_MSVC_STD_ITERATOR +#include "boost_has_vc_iterator.ipp" +#else +#error "this file should not compile" +#endif + +int main( int, char *[] ) +{ + return boost_msvc_std_iterator::test(); +} + diff --git a/libs/config/test/has_vc_iterator_pass.cpp b/libs/config/test/has_vc_iterator_pass.cpp new file mode 100644 index 0000000000..102cab7362 --- /dev/null +++ b/libs/config/test/has_vc_iterator_pass.cpp @@ -0,0 +1,34 @@ +// This file was automatically generated on Fri Dec 03 18:04:00 2004 +// by libs/config/tools/generate.cpp +// Copyright John Maddock 2002-4. +// 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) + +// See http://www.boost.org/libs/config for the most recent version. + +// Test file for macro BOOST_MSVC_STD_ITERATOR +// This file should compile, if it does not then +// BOOST_MSVC_STD_ITERATOR should not be defined. +// See file boost_has_vc_iterator.ipp for details + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include <boost/config.hpp> +#include "test.hpp" + +#ifdef BOOST_MSVC_STD_ITERATOR +#include "boost_has_vc_iterator.ipp" +#else +namespace boost_msvc_std_iterator = empty_boost; +#endif + +int main( int, char *[] ) +{ + return boost_msvc_std_iterator::test(); +} + diff --git a/libs/config/test/has_winthreads_fail.cpp b/libs/config/test/has_winthreads_fail.cpp new file mode 100644 index 0000000000..e9f6c71421 --- /dev/null +++ b/libs/config/test/has_winthreads_fail.cpp @@ -0,0 +1,34 @@ +// This file was automatically generated on Fri Dec 03 18:04:00 2004 +// by libs/config/tools/generate.cpp +// Copyright John Maddock 2002-4. +// 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) + +// See http://www.boost.org/libs/config for the most recent version. + +// Test file for macro BOOST_HAS_WINTHREADS +// This file should not compile, if it does then +// BOOST_HAS_WINTHREADS should be defined. +// See file boost_has_winthreads.ipp for details + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include <boost/config.hpp> +#include "test.hpp" + +#ifndef BOOST_HAS_WINTHREADS +#include "boost_has_winthreads.ipp" +#else +#error "this file should not compile" +#endif + +int main( int, char *[] ) +{ + return boost_has_winthreads::test(); +} + diff --git a/libs/config/test/has_winthreads_pass.cpp b/libs/config/test/has_winthreads_pass.cpp new file mode 100644 index 0000000000..49d020fc95 --- /dev/null +++ b/libs/config/test/has_winthreads_pass.cpp @@ -0,0 +1,34 @@ +// This file was automatically generated on Fri Dec 03 18:04:00 2004 +// by libs/config/tools/generate.cpp +// Copyright John Maddock 2002-4. +// 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) + +// See http://www.boost.org/libs/config for the most recent version. + +// Test file for macro BOOST_HAS_WINTHREADS +// This file should compile, if it does not then +// BOOST_HAS_WINTHREADS should not be defined. +// See file boost_has_winthreads.ipp for details + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include <boost/config.hpp> +#include "test.hpp" + +#ifdef BOOST_HAS_WINTHREADS +#include "boost_has_winthreads.ipp" +#else +namespace boost_has_winthreads = empty_boost; +#endif + +int main( int, char *[] ) +{ + return boost_has_winthreads::test(); +} + diff --git a/libs/config/test/limits_test.cpp b/libs/config/test/limits_test.cpp new file mode 100644 index 0000000000..89627fe646 --- /dev/null +++ b/libs/config/test/limits_test.cpp @@ -0,0 +1,210 @@ +/* boost limits_test.cpp test your <limits> file for important + * + * Copyright Jens Maurer 2000 + * Distributed under 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) + * + * $Id: limits_test.cpp 30181 2005-07-19 17:14:00Z johnmaddock $ + */ + +#include <boost/limits.hpp> +#define BOOST_INCLUDE_MAIN +#include <boost/test/test_tools.hpp> +#include <iostream> + +/* + * General portability note: + * MSVC mis-compiles explicit function template instantiations. + * For example, f<A>() and f<B>() are both compiled to call f<A>(). + * BCC is unable to implicitly convert a "const char *" to a std::string + * when using explicit function template instantiations. + * + * Therefore, avoid explicit function template instantiations. + */ +#if defined(BOOST_MSVC) && (BOOST_MSVC <= 1300) +template<typename T> inline T make_char_numeric_for_streaming(T x) { return x; } +namespace fix{ +inline int make_char_numeric_for_streaming(char c) { return c; } +inline int make_char_numeric_for_streaming(signed char c) { return c; } +inline int make_char_numeric_for_streaming(unsigned char c) { return c; } +} +using namespace fix; +# if defined(_YVALS) && !defined(_CPPLIB_VER) && !defined(__SGI_STL_PORT) && !defined(_STLPORT_VERSION) +// fix for missing operator<< in original Dinkumware lib: +std::ostream& operator<<(std::ostream& os, __int64 i ) +{ + char buf[80]; + sprintf(buf,"%I64d", i ); + os << buf; + return os; +} +std::ostream& operator<<(std::ostream& os, unsigned __int64 i ) +{ + char buf[80]; + sprintf(buf,"%I64u", i ); + os << buf; + return os; +} +# endif +#else +template<typename T> inline T make_char_numeric_for_streaming(T x) { return x; } +inline int make_char_numeric_for_streaming(char c) { return c; } +inline int make_char_numeric_for_streaming(signed char c) { return c; } +inline int make_char_numeric_for_streaming(unsigned char c) { return c; } +#endif + +#if (defined(_GLIBCPP_VERSION) || defined(_GLIBCXX_VERSION)) \ + && defined(BOOST_HAS_LONG_LONG) \ + && !defined(_GLIBCPP_USE_LONG_LONG) \ + && !defined(_GLIBCXX_USE_LONG_LONG) +// +// Some libstdc++ versions have numeric_limits<long long> but no +// iostream support for long long. TODO, find a better fix!! +// +std::ostream& operator<<(std::ostream& os, long long i ) +{ + return os << static_cast<long double>(i); +} +std::ostream& operator<<(std::ostream& os, unsigned long long i ) +{ + return os << static_cast<long double>(i); +} +#endif + +template<class T> +void test_integral_limits(const T &, const char * msg) +{ + typedef std::numeric_limits<T> lim; + std::cout << "Testing " << msg + << " (size " << sizeof(T) << ")" + << " min: " << make_char_numeric_for_streaming((lim::min)()) + << ", max: " << make_char_numeric_for_streaming((lim::max)()) + << std::endl; + + BOOST_CHECK(static_cast<bool>(lim::is_specialized)); + BOOST_CHECK(static_cast<bool>(lim::is_integer)); + // BOOST_CHECK(lim::is_modulo); + BOOST_CHECK(static_cast<bool>((lim::min)() < (lim::max)())); +} + +template <class T> +void print_hex_val(T t, const char* name) +{ + const unsigned char* p = (const unsigned char*)&t; + std::cout << "hex value of " << name << " is: "; + for (unsigned int i = 0; i < sizeof(T); ++i) { + if(p[i] <= 0xF) + std::cout << "0"; + std::cout << std::hex << (int)p[i]; + } + std::cout << std::dec << std::endl; +} + +template<class T> +void test_float_limits(const T &, const char * msg) +{ + std::cout << "\nTesting " << msg << std::endl; + typedef std::numeric_limits<T> lim; + + BOOST_CHECK(static_cast<bool>(lim::is_specialized)); + BOOST_CHECK(static_cast<bool>(!lim::is_modulo)); + BOOST_CHECK(static_cast<bool>(!lim::is_integer)); + BOOST_CHECK(static_cast<bool>(lim::is_signed)); + + const T infinity = lim::infinity(); + const T qnan = lim::quiet_NaN(); + const T snan = lim::signaling_NaN(); + + std::cout << "IEEE-compatible: " << lim::is_iec559 + << ", traps: " << lim::traps + << ", bounded: " << lim::is_bounded + << ", exact: " << lim::is_exact << '\n' + << "min: " << (lim::min)() << ", max: " << (lim::max)() << '\n' + << "infinity: " << infinity << ", QNaN: " << qnan << '\n'; + print_hex_val((lim::max)(), "max"); + print_hex_val(infinity, "infinity"); + print_hex_val(qnan, "qnan"); + print_hex_val(snan, "snan"); + + BOOST_CHECK((lim::max)() > 1000); + BOOST_CHECK((lim::min)() > 0); + BOOST_CHECK((lim::min)() < 0.001); + BOOST_CHECK(lim::epsilon() > 0); + + if(lim::is_iec559) { + BOOST_CHECK(static_cast<bool>(lim::has_infinity)); + BOOST_CHECK(static_cast<bool>(lim::has_quiet_NaN)); + BOOST_CHECK(static_cast<bool>(lim::has_signaling_NaN)); + } else { + std::cout << "Does not claim IEEE conformance" << std::endl; + } + + if(lim::has_infinity) { + // Make sure those values are not 0 or similar nonsense. + // Infinity must compare as if larger than the maximum representable value. + BOOST_CHECK(infinity > (lim::max)()); + BOOST_CHECK(-infinity < -(lim::max)()); + } else { + std::cout << "Does not have infinity" << std::endl; + } + + if(lim::has_quiet_NaN) { + // NaNs shall always compare "false" when compared for equality + // If one of these fail, your compiler may be optimizing incorrectly, + // or the standard library is incorrectly configured. + BOOST_CHECK(! (qnan == 42)); + BOOST_CHECK(! (qnan == qnan)); + BOOST_CHECK(qnan != 42); + BOOST_CHECK(qnan != qnan); + + // The following tests may cause arithmetic traps. + // BOOST_CHECK(! (qnan < 42)); + // BOOST_CHECK(! (qnan > 42)); + // BOOST_CHECK(! (qnan <= 42)); + // BOOST_CHECK(! (qnan >= 42)); + } else { + std::cout << "Does not have QNaN" << std::endl; + } +} + + +int test_main(int, char*[]) +{ + test_integral_limits(bool(), "bool"); + test_integral_limits(char(), "char"); + typedef signed char signed_char; + test_integral_limits(signed_char(), "signed char"); + typedef unsigned char unsigned_char; + test_integral_limits(unsigned_char(), "unsigned char"); + test_integral_limits(wchar_t(), "wchar_t"); + test_integral_limits(short(), "short"); + typedef unsigned short unsigned_short; + test_integral_limits(unsigned_short(), "unsigned short"); + test_integral_limits(int(), "int"); + typedef unsigned int unsigned_int; + test_integral_limits(unsigned_int(), "unsigned int"); + test_integral_limits(long(), "long"); + typedef unsigned long unsigned_long; + test_integral_limits(unsigned_long(), "unsigned long"); +#if defined(BOOST_HAS_LONG_LONG) + test_integral_limits(::boost::long_long_type(), "long long"); + test_integral_limits(::boost::ulong_long_type(), "unsigned long long"); +#endif +#ifdef BOOST_HAS_MS_INT64 + typedef __int64 long_long2; + test_integral_limits(long_long2(), "__int64"); + typedef unsigned __int64 unsigned_long_long2; + test_integral_limits(unsigned_long_long2(), "unsigned __int64"); +#endif + + test_float_limits(float(), "float"); + test_float_limits(double(), "double"); + typedef long double long_double; + test_float_limits(long_double(), "long double"); + // Some compilers don't pay attention to std:3.6.1/5 and issue a + // warning here if "return 0;" is omitted. + return 0; +} + + diff --git a/libs/config/test/link/Jamfile.v2 b/libs/config/test/link/Jamfile.v2 new file mode 100644 index 0000000000..c5da6c29e8 --- /dev/null +++ b/libs/config/test/link/Jamfile.v2 @@ -0,0 +1,19 @@ +# 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) + +lib link_test : link_test.cpp + : <link>shared <runtime-link>shared + # This is needed to make the test work, I'm unsure if this + # should be set globally. + <define>BOOST_DYN_LINK=1 + # Override <threading>multi inherited from parent. + <threading>single + : + debug release + ; + +run main.cpp link_test : : : <define>BOOST_DYN_LINK=1 <define>BOOST_CONFIG_NO_LIB <link>shared <runtime-link>shared <threading>single : link_test_test ; + + diff --git a/libs/config/test/link/bc_gen.sh b/libs/config/test/link/bc_gen.sh new file mode 100644 index 0000000000..6e48dda8b1 --- /dev/null +++ b/libs/config/test/link/bc_gen.sh @@ -0,0 +1,286 @@ +#! /bin/bash + +# copyright John Maddock 2005 +# 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) + +libname="" +src="" +header="" +all_dep="" + +# current makefile: +out="" +# temporary file: +tout="" +# install target temp file: +iout="" +# debug flag: +debug="no" +# compile options: +opts="" +# main output sub-directory: +subdir="" + +####################################################################### +# +# section for C++ Builder +# +####################################################################### + +function bcb_gen_lib() +{ + all_dep="$all_dep $subdir\\$libname $subdir\\$libname.lib $subdir\\$libname.exe" + echo " copy $subdir\\$libname.lib \$(BCROOT)\\lib" >> $iout +# +# set up section comments: + cat >> $tout << EOF +######################################################## +# +# section for $libname.lib +# +######################################################## +EOF +# +# process source files: + all_obj="" + all_lib_obj="" + for file in $src + do + obj=`echo "$file" | sed 's/\(.*\)cpp/\1obj/g'` + obj="$subdir\\$libname\\$obj" + all_obj="$all_obj $obj" + all_lib_obj="$all_lib_obj \"$obj\"" + echo "$obj: $file \$(ALL_HEADER)" >> $tout + echo " bcc32 @&&|" >> $tout + echo "-c \$(INCLUDES) $opts \$(CXXFLAGS) -o$obj $file" >> $tout + echo "|" >> $tout + echo "" >> $tout + done +# +# now for the directories for this library: + echo "$subdir\\$libname : " >> $tout + echo " -@mkdir $subdir\\$libname" >> $tout + echo "" >> $tout +# +# now for the clean options for this library: + all_clean="$all_clean $libname""_clean" + echo "$libname"_clean : >> $tout + echo " del $subdir\\$libname\\"'*.obj' >> $tout + echo " del $subdir\\$libname\\"'*.il?' >> $tout + echo " del $subdir\\$libname\\"'*.csm' >> $tout + echo " del $subdir\\$libname\\"'*.tds' >> $tout + echo "" >> $tout +# +# now for the main target for this library: + echo $subdir\\$libname.lib : $all_obj >> $tout + echo " tlib @&&|" >> $tout + echo "/P128 /C /u /a \$(XSFLAGS) \"$subdir\\$libname.lib\" $all_lib_obj" >> $tout + echo "|" >> $tout + echo "" >> $tout +# now the test program: + echo "$subdir\\$libname.exe : main.cpp $subdir\\$libname.lib" >> $tout + echo " bcc32 \$(INCLUDES) $opts /DBOOST_LIB_DIAGNOSTIC=1 \$(CXXFLAGS) -L./$subdir -e./$subdir/$libname.exe main.cpp" >> $tout + echo " echo running test progam $subdir"'\'"$libname.exe" >> $tout + echo " $subdir"'\'"$libname.exe" >> $tout + echo "" >> $tout +} + +function bcb_gen_dll() +{ + all_dep="$all_dep $subdir\\$libname $subdir\\$libname.lib $subdir\\$libname.exe" + echo " copy $subdir\\$libname.lib \$(BCROOT)\\lib" >> $iout + echo " copy $subdir\\$libname.dll \$(BCROOT)\\bin" >> $iout + echo " copy $subdir\\$libname.tds \$(BCROOT)\\bin" >> $iout +# +# set up section comments: + cat >> $tout << EOF +######################################################## +# +# section for $libname.lib +# +######################################################## +EOF +# +# process source files: + all_obj="" + for file in $src + do + obj=`echo "$file" | sed 's/\(.*\)cpp/\1obj/g'` + obj="$subdir\\$libname\\$obj" + all_obj="$all_obj $obj" + echo "$obj: $file \$(ALL_HEADER)" >> $tout + echo " bcc32 @&&|" >> $tout + echo "-c \$(INCLUDES) $opts \$(CXXFLAGS) -DBOOST_DYN_LINK -o$obj $file" >> $tout + echo "|" >> $tout + echo "" >> $tout + done +# +# now for the directories for this library: + echo "$subdir\\$libname :" >> $tout + echo " -@mkdir $subdir\\$libname" >> $tout + echo "" >> $tout +# +# now for the clean options for this library: + all_clean="$all_clean $libname""_clean" + echo "$libname"_clean : >> $tout + echo " del $subdir\\$libname\\"'*.obj' >> $tout + echo " del $subdir\\$libname\\"'*.il?' >> $tout + echo " del $subdir\\$libname\\"'*.csm' >> $tout + echo " del $subdir\\$libname\\"'*.tds' >> $tout + echo " del $subdir\\"'*.tds' >> $tout + echo "" >> $tout +# +# now for the main target for this library: + echo $subdir\\$libname.lib : $all_obj >> $tout + echo " bcc32 @&&|" >> $tout + echo "-lw-dup -lw-dpl $opts -e$subdir\\$libname.dll \$(XLFLAGS) $all_obj \$(LIBS)" >> $tout + echo "|" >> $tout + echo " implib -w $subdir\\$libname.lib $subdir\\$libname.dll" >> $tout + echo "" >> $tout +# now the test program: + echo "$subdir\\$libname.exe : main.cpp $subdir\\$libname.lib" >> $tout + echo " bcc32 \$(INCLUDES) $opts /DBOOST_LIB_DIAGNOSTIC=1 \$(CXXFLAGS) -DBOOST_DYN_LINK -L./$subdir -e./$subdir/$libname.exe main.cpp" >> $tout + echo " echo running test program $subdir"'\'"$libname.exe" >> $tout + echo " $subdir"'\'"$libname.exe" >> $tout + echo "" >> $tout +} + + + +function bcb_gen() +{ + tout="temp" + iout="temp_install" + all_dep="$subdir" + all_clean="" + echo > $out + echo > $tout + rm -f $iout + + libname="liblink_test-${subdir}-s-${boost_version}" + opts="-tWM- -D_NO_VCL -O2 -Ve -Vx -w-inl -w-aus -w-rch -w-8012 -w-8037 -w-8057 -DSTRICT; -I\$(BCROOT)\include;../../../../" + bcb_gen_lib + + libname="liblink_test-${subdir}-mt-s-${boost_version}" + opts="-tWM -D_NO_VCL -O2 -Ve -Vx -w-inl -w-aus -w-rch -w-8012 -w-8057 -w-8037 -DSTRICT; -I\$(BCROOT)\include;../../../../" + bcb_gen_lib + + libname="link_test-${subdir}-mt-${boost_version}" + opts="-tWD -tWM -tWR -D_NO_VCL -D_RTLDLL -O2 -Ve -Vx -w-inl -w-aus -w-rch -w-8012 -w-8057 -w-8037 -DSTRICT; -I\$(BCROOT)\include;../../../../ -L\$(BCROOT)\lib;\$(BCROOT)\lib\release;" + bcb_gen_dll + + libname="link_test-${subdir}-${boost_version}" + opts="-tWD -tWR -tWM- -D_NO_VCL -D_RTLDLL -O2 -Ve -Vx -w-inl -w-aus -w-rch -w-8012 -w-8057 -w-8037 -DSTRICT; -I\$(BCROOT)\include;../../../../ -L\$(BCROOT)\lib;\$(BCROOT)\lib\release;" + bcb_gen_dll + + libname="liblink_test-${subdir}-mt-${boost_version}" + opts="-tWD -tWM -tWR -DBOOST_REGEX_STATIC_LINK -D_NO_VCL -D_RTLDLL -O2 -Ve -Vx -w-inl -w-aus -w-rch -w-8012 -w-8057 -w-8037 -DSTRICT; -I\$(BCROOT)\include;../../../../ -L\$(BCROOT)\lib;\$(BCROOT)\lib\release;" + bcb_gen_lib + + libname="liblink_test-${subdir}-${boost_version}" + opts="-tWD -tWR -tWM- -DBOOST_REGEX_STATIC_LINK -D_NO_VCL -D_RTLDLL -O2 -Ve -Vx -w-inl -w-aus -w-rch -w-8012 -w-8057 -w-8037 -DSTRICT; -I\$(BCROOT)\include;../../../../ -L\$(BCROOT)\lib;\$(BCROOT)\lib\release;" + bcb_gen_lib + # + # debug versions: + libname="liblink_test-${subdir}-sd-${boost_version}" + opts="-tWM- -D_NO_VCL -v -Ve -Vx -w-inl -w-aus -w-rch -w-8012 -w-8037 -w-8057 -DSTRICT; -I\$(BCROOT)\include;../../../../" + bcb_gen_lib + + libname="liblink_test-${subdir}-mt-sd-${boost_version}" + opts="-tWM -D_NO_VCL -v -Ve -Vx -w-inl -w-aus -w-rch -w-8012 -w-8057 -w-8037 -DSTRICT; -I\$(BCROOT)\include;../../../../" + bcb_gen_lib + + libname="link_test-${subdir}-mt-d-${boost_version}" + opts="-tWD -tWM -tWR -D_NO_VCL -D_RTLDLL -v -Ve -Vx -w-inl -w-aus -w-rch -w-8012 -w-8057 -w-8037 -DSTRICT; -I\$(BCROOT)\include;../../../../ -L\$(BCROOT)\lib;\$(BCROOT)\lib\release;" + bcb_gen_dll + + libname="link_test-${subdir}-d-${boost_version}" + opts="-tWD -tWR -tWM- -D_NO_VCL -D_RTLDLL -v -Ve -Vx -w-inl -w-aus -w-rch -w-8012 -w-8057 -w-8037 -DSTRICT; -I\$(BCROOT)\include;../../../../ -L\$(BCROOT)\lib;\$(BCROOT)\lib\release;" + bcb_gen_dll + + libname="liblink_test-${subdir}-mt-d-${boost_version}" + opts="-tWD -tWM -tWR -DBOOST_REGEX_STATIC_LINK -D_NO_VCL -D_RTLDLL -v -Ve -Vx -w-inl -w-aus -w-rch -w-8012 -w-8057 -w-8037 -DSTRICT; -I\$(BCROOT)\include;../../../../ -L\$(BCROOT)\lib;\$(BCROOT)\lib\release;" + bcb_gen_lib + + libname="liblink_test-${subdir}-d-${boost_version}" + opts="-tWD -tWR -tWM- -DBOOST_REGEX_STATIC_LINK -D_NO_VCL -D_RTLDLL -v -Ve -Vx -w-inl -w-aus -w-rch -w-8012 -w-8057 -w-8037 -DSTRICT; -I\$(BCROOT)\include;../../../../ -L\$(BCROOT)\lib;\$(BCROOT)\lib\release;" + bcb_gen_lib + + + cat > $out << EOF +# copyright John Maddock 2005 +# 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) +# +# auto generated makefile for C++ Builder +# +# usage: +# make +# brings libraries up to date +# make install +# brings libraries up to date and copies binaries to your C++ Builder /lib and /bin directories (recomended) +# make clean +# removes all temporary files. + +# +# Add additional compiler options here: +# +CXXFLAGS= +# +# Add additional include directories here: +# +INCLUDES= +# +# add additional linker flags here: +# +XLFLAGS= +# +# add additional libraries to link to here: +# +LIBS= +# +# add additional static-library creation flags here: +# +XSFLAGS= + +!ifndef BCROOT +BCROOT=\$(MAKEDIR)\\.. +!endif + +EOF + echo "" >> $out + echo "ALL_HEADER=$header" >> $out + echo "" >> $out + echo "all : $all_dep" >> $out + echo >> $out + echo "clean : $all_clean" >> $out + echo >> $out + echo "install : all" >> $out + cat $iout >> $out + echo >> $out + echo $subdir : >> $out + echo " -@mkdir $subdir" >> $out + echo "" >> $out + + cat $tout >> $out +} + +. common.sh + +# +# generate C++ Builder 6 files: +out="borland.mak" +subdir="borland" +has_stlport="yes" +bcb_gen + + + + + + + + diff --git a/libs/config/test/link/borland.mak b/libs/config/test/link/borland.mak new file mode 100644 index 0000000000..624759c776 --- /dev/null +++ b/libs/config/test/link/borland.mak @@ -0,0 +1,429 @@ +# copyright John Maddock 2005 +# 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) +# +# auto generated makefile for C++ Builder +# +# usage: +# make +# brings libraries up to date +# make install +# brings libraries up to date and copies binaries to your C++ Builder /lib and /bin directories (recomended) +# make clean +# removes all temporary files. + +# +# Add additional compiler options here: +# +CXXFLAGS= +# +# Add additional include directories here: +# +INCLUDES= +# +# add additional linker flags here: +# +XLFLAGS= +# +# add additional libraries to link to here: +# +LIBS= +# +# add additional static-library creation flags here: +# +XSFLAGS= + +!ifndef BCROOT +BCROOT=$(MAKEDIR)\.. +!endif + + +ALL_HEADER= + +all : borland borland\liblink_test-borland-s-1_35 borland\liblink_test-borland-s-1_35.lib borland\liblink_test-borland-s-1_35.exe borland\liblink_test-borland-mt-s-1_35 borland\liblink_test-borland-mt-s-1_35.lib borland\liblink_test-borland-mt-s-1_35.exe borland\link_test-borland-mt-1_35 borland\link_test-borland-mt-1_35.lib borland\link_test-borland-mt-1_35.exe borland\link_test-borland-1_35 borland\link_test-borland-1_35.lib borland\link_test-borland-1_35.exe borland\liblink_test-borland-mt-1_35 borland\liblink_test-borland-mt-1_35.lib borland\liblink_test-borland-mt-1_35.exe borland\liblink_test-borland-1_35 borland\liblink_test-borland-1_35.lib borland\liblink_test-borland-1_35.exe borland\liblink_test-borland-sd-1_35 borland\liblink_test-borland-sd-1_35.lib borland\liblink_test-borland-sd-1_35.exe borland\liblink_test-borland-mt-sd-1_35 borland\liblink_test-borland-mt-sd-1_35.lib borland\liblink_test-borland-mt-sd-1_35.exe borland\link_test-borland-mt-d-1_35 borland\link_test-borland-mt-d-1_35.lib borland\link_test-borland-mt-d-1_35.exe borland\link_test-borland-d-1_35 borland\link_test-borland-d-1_35.lib borland\link_test-borland-d-1_35.exe borland\liblink_test-borland-mt-d-1_35 borland\liblink_test-borland-mt-d-1_35.lib borland\liblink_test-borland-mt-d-1_35.exe borland\liblink_test-borland-d-1_35 borland\liblink_test-borland-d-1_35.lib borland\liblink_test-borland-d-1_35.exe + +clean : liblink_test-borland-s-1_35_clean liblink_test-borland-mt-s-1_35_clean link_test-borland-mt-1_35_clean link_test-borland-1_35_clean liblink_test-borland-mt-1_35_clean liblink_test-borland-1_35_clean liblink_test-borland-sd-1_35_clean liblink_test-borland-mt-sd-1_35_clean link_test-borland-mt-d-1_35_clean link_test-borland-d-1_35_clean liblink_test-borland-mt-d-1_35_clean liblink_test-borland-d-1_35_clean + +install : all + copy borland\liblink_test-borland-s-1_35.lib $(BCROOT)\lib + copy borland\liblink_test-borland-mt-s-1_35.lib $(BCROOT)\lib + copy borland\link_test-borland-mt-1_35.lib $(BCROOT)\lib + copy borland\link_test-borland-mt-1_35.dll $(BCROOT)\bin + copy borland\link_test-borland-mt-1_35.tds $(BCROOT)\bin + copy borland\link_test-borland-1_35.lib $(BCROOT)\lib + copy borland\link_test-borland-1_35.dll $(BCROOT)\bin + copy borland\link_test-borland-1_35.tds $(BCROOT)\bin + copy borland\liblink_test-borland-mt-1_35.lib $(BCROOT)\lib + copy borland\liblink_test-borland-1_35.lib $(BCROOT)\lib + copy borland\liblink_test-borland-sd-1_35.lib $(BCROOT)\lib + copy borland\liblink_test-borland-mt-sd-1_35.lib $(BCROOT)\lib + copy borland\link_test-borland-mt-d-1_35.lib $(BCROOT)\lib + copy borland\link_test-borland-mt-d-1_35.dll $(BCROOT)\bin + copy borland\link_test-borland-mt-d-1_35.tds $(BCROOT)\bin + copy borland\link_test-borland-d-1_35.lib $(BCROOT)\lib + copy borland\link_test-borland-d-1_35.dll $(BCROOT)\bin + copy borland\link_test-borland-d-1_35.tds $(BCROOT)\bin + copy borland\liblink_test-borland-mt-d-1_35.lib $(BCROOT)\lib + copy borland\liblink_test-borland-d-1_35.lib $(BCROOT)\lib + +borland : + -@mkdir borland + + +######################################################## +# +# section for liblink_test-borland-s-1_35.lib +# +######################################################## +borland\liblink_test-borland-s-1_35\link_test.obj: link_test.cpp $(ALL_HEADER) + bcc32 @&&| +-c $(INCLUDES) -tWM- -D_NO_VCL -O2 -Ve -Vx -w-inl -w-aus -w-rch -w-8012 -w-8037 -w-8057 -DSTRICT; -I$(BCROOT)\include;../../../../ $(CXXFLAGS) -oborland\liblink_test-borland-s-1_35\link_test.obj link_test.cpp +| + +borland\liblink_test-borland-s-1_35 : + -@mkdir borland\liblink_test-borland-s-1_35 + +liblink_test-borland-s-1_35_clean : + del borland\liblink_test-borland-s-1_35\*.obj + del borland\liblink_test-borland-s-1_35\*.il? + del borland\liblink_test-borland-s-1_35\*.csm + del borland\liblink_test-borland-s-1_35\*.tds + +borland\liblink_test-borland-s-1_35.lib : borland\liblink_test-borland-s-1_35\link_test.obj + tlib @&&| +/P128 /C /u /a $(XSFLAGS) "borland\liblink_test-borland-s-1_35.lib" "borland\liblink_test-borland-s-1_35\link_test.obj" +| + +borland\liblink_test-borland-s-1_35.exe : main.cpp borland\liblink_test-borland-s-1_35.lib + bcc32 $(INCLUDES) -tWM- -D_NO_VCL -O2 -Ve -Vx -w-inl -w-aus -w-rch -w-8012 -w-8037 -w-8057 -DSTRICT; -I$(BCROOT)\include;../../../../ /DBOOST_LIB_DIAGNOSTIC=1 $(CXXFLAGS) -L./borland -e./borland/liblink_test-borland-s-1_35.exe main.cpp + echo running test progam borland\liblink_test-borland-s-1_35.exe + borland\liblink_test-borland-s-1_35.exe + +######################################################## +# +# section for liblink_test-borland-mt-s-1_35.lib +# +######################################################## +borland\liblink_test-borland-mt-s-1_35\link_test.obj: link_test.cpp $(ALL_HEADER) + bcc32 @&&| +-c $(INCLUDES) -tWM -D_NO_VCL -O2 -Ve -Vx -w-inl -w-aus -w-rch -w-8012 -w-8057 -w-8037 -DSTRICT; -I$(BCROOT)\include;../../../../ $(CXXFLAGS) -oborland\liblink_test-borland-mt-s-1_35\link_test.obj link_test.cpp +| + +borland\liblink_test-borland-mt-s-1_35 : + -@mkdir borland\liblink_test-borland-mt-s-1_35 + +liblink_test-borland-mt-s-1_35_clean : + del borland\liblink_test-borland-mt-s-1_35\*.obj + del borland\liblink_test-borland-mt-s-1_35\*.il? + del borland\liblink_test-borland-mt-s-1_35\*.csm + del borland\liblink_test-borland-mt-s-1_35\*.tds + +borland\liblink_test-borland-mt-s-1_35.lib : borland\liblink_test-borland-mt-s-1_35\link_test.obj + tlib @&&| +/P128 /C /u /a $(XSFLAGS) "borland\liblink_test-borland-mt-s-1_35.lib" "borland\liblink_test-borland-mt-s-1_35\link_test.obj" +| + +borland\liblink_test-borland-mt-s-1_35.exe : main.cpp borland\liblink_test-borland-mt-s-1_35.lib + bcc32 $(INCLUDES) -tWM -D_NO_VCL -O2 -Ve -Vx -w-inl -w-aus -w-rch -w-8012 -w-8057 -w-8037 -DSTRICT; -I$(BCROOT)\include;../../../../ /DBOOST_LIB_DIAGNOSTIC=1 $(CXXFLAGS) -L./borland -e./borland/liblink_test-borland-mt-s-1_35.exe main.cpp + echo running test progam borland\liblink_test-borland-mt-s-1_35.exe + borland\liblink_test-borland-mt-s-1_35.exe + +######################################################## +# +# section for link_test-borland-mt-1_35.lib +# +######################################################## +borland\link_test-borland-mt-1_35\link_test.obj: link_test.cpp $(ALL_HEADER) + bcc32 @&&| +-c $(INCLUDES) -tWD -tWM -tWR -D_NO_VCL -D_RTLDLL -O2 -Ve -Vx -w-inl -w-aus -w-rch -w-8012 -w-8057 -w-8037 -DSTRICT; -I$(BCROOT)\include;../../../../ -L$(BCROOT)\lib;$(BCROOT)\lib\release; $(CXXFLAGS) -DBOOST_DYN_LINK -oborland\link_test-borland-mt-1_35\link_test.obj link_test.cpp +| + +borland\link_test-borland-mt-1_35 : + -@mkdir borland\link_test-borland-mt-1_35 + +link_test-borland-mt-1_35_clean : + del borland\link_test-borland-mt-1_35\*.obj + del borland\link_test-borland-mt-1_35\*.il? + del borland\link_test-borland-mt-1_35\*.csm + del borland\link_test-borland-mt-1_35\*.tds + del borland\*.tds + +borland\link_test-borland-mt-1_35.lib : borland\link_test-borland-mt-1_35\link_test.obj + bcc32 @&&| +-lw-dup -lw-dpl -tWD -tWM -tWR -D_NO_VCL -D_RTLDLL -O2 -Ve -Vx -w-inl -w-aus -w-rch -w-8012 -w-8057 -w-8037 -DSTRICT; -I$(BCROOT)\include;../../../../ -L$(BCROOT)\lib;$(BCROOT)\lib\release; -eborland\link_test-borland-mt-1_35.dll $(XLFLAGS) borland\link_test-borland-mt-1_35\link_test.obj $(LIBS) +| + implib -w borland\link_test-borland-mt-1_35.lib borland\link_test-borland-mt-1_35.dll + +borland\link_test-borland-mt-1_35.exe : main.cpp borland\link_test-borland-mt-1_35.lib + bcc32 $(INCLUDES) -tWD -tWM -tWR -D_NO_VCL -D_RTLDLL -O2 -Ve -Vx -w-inl -w-aus -w-rch -w-8012 -w-8057 -w-8037 -DSTRICT; -I$(BCROOT)\include;../../../../ -L$(BCROOT)\lib;$(BCROOT)\lib\release; /DBOOST_LIB_DIAGNOSTIC=1 $(CXXFLAGS) -DBOOST_DYN_LINK -L./borland -e./borland/link_test-borland-mt-1_35.exe main.cpp + echo running test program borland\link_test-borland-mt-1_35.exe + borland\link_test-borland-mt-1_35.exe + +######################################################## +# +# section for link_test-borland-1_35.lib +# +######################################################## +borland\link_test-borland-1_35\link_test.obj: link_test.cpp $(ALL_HEADER) + bcc32 @&&| +-c $(INCLUDES) -tWD -tWR -tWM- -D_NO_VCL -D_RTLDLL -O2 -Ve -Vx -w-inl -w-aus -w-rch -w-8012 -w-8057 -w-8037 -DSTRICT; -I$(BCROOT)\include;../../../../ -L$(BCROOT)\lib;$(BCROOT)\lib\release; $(CXXFLAGS) -DBOOST_DYN_LINK -oborland\link_test-borland-1_35\link_test.obj link_test.cpp +| + +borland\link_test-borland-1_35 : + -@mkdir borland\link_test-borland-1_35 + +link_test-borland-1_35_clean : + del borland\link_test-borland-1_35\*.obj + del borland\link_test-borland-1_35\*.il? + del borland\link_test-borland-1_35\*.csm + del borland\link_test-borland-1_35\*.tds + del borland\*.tds + +borland\link_test-borland-1_35.lib : borland\link_test-borland-1_35\link_test.obj + bcc32 @&&| +-lw-dup -lw-dpl -tWD -tWR -tWM- -D_NO_VCL -D_RTLDLL -O2 -Ve -Vx -w-inl -w-aus -w-rch -w-8012 -w-8057 -w-8037 -DSTRICT; -I$(BCROOT)\include;../../../../ -L$(BCROOT)\lib;$(BCROOT)\lib\release; -eborland\link_test-borland-1_35.dll $(XLFLAGS) borland\link_test-borland-1_35\link_test.obj $(LIBS) +| + implib -w borland\link_test-borland-1_35.lib borland\link_test-borland-1_35.dll + +borland\link_test-borland-1_35.exe : main.cpp borland\link_test-borland-1_35.lib + bcc32 $(INCLUDES) -tWD -tWR -tWM- -D_NO_VCL -D_RTLDLL -O2 -Ve -Vx -w-inl -w-aus -w-rch -w-8012 -w-8057 -w-8037 -DSTRICT; -I$(BCROOT)\include;../../../../ -L$(BCROOT)\lib;$(BCROOT)\lib\release; /DBOOST_LIB_DIAGNOSTIC=1 $(CXXFLAGS) -DBOOST_DYN_LINK -L./borland -e./borland/link_test-borland-1_35.exe main.cpp + echo running test program borland\link_test-borland-1_35.exe + borland\link_test-borland-1_35.exe + +######################################################## +# +# section for liblink_test-borland-mt-1_35.lib +# +######################################################## +borland\liblink_test-borland-mt-1_35\link_test.obj: link_test.cpp $(ALL_HEADER) + bcc32 @&&| +-c $(INCLUDES) -tWD -tWM -tWR -DBOOST_REGEX_STATIC_LINK -D_NO_VCL -D_RTLDLL -O2 -Ve -Vx -w-inl -w-aus -w-rch -w-8012 -w-8057 -w-8037 -DSTRICT; -I$(BCROOT)\include;../../../../ -L$(BCROOT)\lib;$(BCROOT)\lib\release; $(CXXFLAGS) -oborland\liblink_test-borland-mt-1_35\link_test.obj link_test.cpp +| + +borland\liblink_test-borland-mt-1_35 : + -@mkdir borland\liblink_test-borland-mt-1_35 + +liblink_test-borland-mt-1_35_clean : + del borland\liblink_test-borland-mt-1_35\*.obj + del borland\liblink_test-borland-mt-1_35\*.il? + del borland\liblink_test-borland-mt-1_35\*.csm + del borland\liblink_test-borland-mt-1_35\*.tds + +borland\liblink_test-borland-mt-1_35.lib : borland\liblink_test-borland-mt-1_35\link_test.obj + tlib @&&| +/P128 /C /u /a $(XSFLAGS) "borland\liblink_test-borland-mt-1_35.lib" "borland\liblink_test-borland-mt-1_35\link_test.obj" +| + +borland\liblink_test-borland-mt-1_35.exe : main.cpp borland\liblink_test-borland-mt-1_35.lib + bcc32 $(INCLUDES) -tWD -tWM -tWR -DBOOST_REGEX_STATIC_LINK -D_NO_VCL -D_RTLDLL -O2 -Ve -Vx -w-inl -w-aus -w-rch -w-8012 -w-8057 -w-8037 -DSTRICT; -I$(BCROOT)\include;../../../../ -L$(BCROOT)\lib;$(BCROOT)\lib\release; /DBOOST_LIB_DIAGNOSTIC=1 $(CXXFLAGS) -L./borland -e./borland/liblink_test-borland-mt-1_35.exe main.cpp + echo running test progam borland\liblink_test-borland-mt-1_35.exe + borland\liblink_test-borland-mt-1_35.exe + +######################################################## +# +# section for liblink_test-borland-1_35.lib +# +######################################################## +borland\liblink_test-borland-1_35\link_test.obj: link_test.cpp $(ALL_HEADER) + bcc32 @&&| +-c $(INCLUDES) -tWD -tWR -tWM- -DBOOST_REGEX_STATIC_LINK -D_NO_VCL -D_RTLDLL -O2 -Ve -Vx -w-inl -w-aus -w-rch -w-8012 -w-8057 -w-8037 -DSTRICT; -I$(BCROOT)\include;../../../../ -L$(BCROOT)\lib;$(BCROOT)\lib\release; $(CXXFLAGS) -oborland\liblink_test-borland-1_35\link_test.obj link_test.cpp +| + +borland\liblink_test-borland-1_35 : + -@mkdir borland\liblink_test-borland-1_35 + +liblink_test-borland-1_35_clean : + del borland\liblink_test-borland-1_35\*.obj + del borland\liblink_test-borland-1_35\*.il? + del borland\liblink_test-borland-1_35\*.csm + del borland\liblink_test-borland-1_35\*.tds + +borland\liblink_test-borland-1_35.lib : borland\liblink_test-borland-1_35\link_test.obj + tlib @&&| +/P128 /C /u /a $(XSFLAGS) "borland\liblink_test-borland-1_35.lib" "borland\liblink_test-borland-1_35\link_test.obj" +| + +borland\liblink_test-borland-1_35.exe : main.cpp borland\liblink_test-borland-1_35.lib + bcc32 $(INCLUDES) -tWD -tWR -tWM- -DBOOST_REGEX_STATIC_LINK -D_NO_VCL -D_RTLDLL -O2 -Ve -Vx -w-inl -w-aus -w-rch -w-8012 -w-8057 -w-8037 -DSTRICT; -I$(BCROOT)\include;../../../../ -L$(BCROOT)\lib;$(BCROOT)\lib\release; /DBOOST_LIB_DIAGNOSTIC=1 $(CXXFLAGS) -L./borland -e./borland/liblink_test-borland-1_35.exe main.cpp + echo running test progam borland\liblink_test-borland-1_35.exe + borland\liblink_test-borland-1_35.exe + +######################################################## +# +# section for liblink_test-borland-sd-1_35.lib +# +######################################################## +borland\liblink_test-borland-sd-1_35\link_test.obj: link_test.cpp $(ALL_HEADER) + bcc32 @&&| +-c $(INCLUDES) -tWM- -D_NO_VCL -v -Ve -Vx -w-inl -w-aus -w-rch -w-8012 -w-8037 -w-8057 -DSTRICT; -I$(BCROOT)\include;../../../../ $(CXXFLAGS) -oborland\liblink_test-borland-sd-1_35\link_test.obj link_test.cpp +| + +borland\liblink_test-borland-sd-1_35 : + -@mkdir borland\liblink_test-borland-sd-1_35 + +liblink_test-borland-sd-1_35_clean : + del borland\liblink_test-borland-sd-1_35\*.obj + del borland\liblink_test-borland-sd-1_35\*.il? + del borland\liblink_test-borland-sd-1_35\*.csm + del borland\liblink_test-borland-sd-1_35\*.tds + +borland\liblink_test-borland-sd-1_35.lib : borland\liblink_test-borland-sd-1_35\link_test.obj + tlib @&&| +/P128 /C /u /a $(XSFLAGS) "borland\liblink_test-borland-sd-1_35.lib" "borland\liblink_test-borland-sd-1_35\link_test.obj" +| + +borland\liblink_test-borland-sd-1_35.exe : main.cpp borland\liblink_test-borland-sd-1_35.lib + bcc32 $(INCLUDES) -tWM- -D_NO_VCL -v -Ve -Vx -w-inl -w-aus -w-rch -w-8012 -w-8037 -w-8057 -DSTRICT; -I$(BCROOT)\include;../../../../ /DBOOST_LIB_DIAGNOSTIC=1 $(CXXFLAGS) -L./borland -e./borland/liblink_test-borland-sd-1_35.exe main.cpp + echo running test progam borland\liblink_test-borland-sd-1_35.exe + borland\liblink_test-borland-sd-1_35.exe + +######################################################## +# +# section for liblink_test-borland-mt-sd-1_35.lib +# +######################################################## +borland\liblink_test-borland-mt-sd-1_35\link_test.obj: link_test.cpp $(ALL_HEADER) + bcc32 @&&| +-c $(INCLUDES) -tWM -D_NO_VCL -v -Ve -Vx -w-inl -w-aus -w-rch -w-8012 -w-8057 -w-8037 -DSTRICT; -I$(BCROOT)\include;../../../../ $(CXXFLAGS) -oborland\liblink_test-borland-mt-sd-1_35\link_test.obj link_test.cpp +| + +borland\liblink_test-borland-mt-sd-1_35 : + -@mkdir borland\liblink_test-borland-mt-sd-1_35 + +liblink_test-borland-mt-sd-1_35_clean : + del borland\liblink_test-borland-mt-sd-1_35\*.obj + del borland\liblink_test-borland-mt-sd-1_35\*.il? + del borland\liblink_test-borland-mt-sd-1_35\*.csm + del borland\liblink_test-borland-mt-sd-1_35\*.tds + +borland\liblink_test-borland-mt-sd-1_35.lib : borland\liblink_test-borland-mt-sd-1_35\link_test.obj + tlib @&&| +/P128 /C /u /a $(XSFLAGS) "borland\liblink_test-borland-mt-sd-1_35.lib" "borland\liblink_test-borland-mt-sd-1_35\link_test.obj" +| + +borland\liblink_test-borland-mt-sd-1_35.exe : main.cpp borland\liblink_test-borland-mt-sd-1_35.lib + bcc32 $(INCLUDES) -tWM -D_NO_VCL -v -Ve -Vx -w-inl -w-aus -w-rch -w-8012 -w-8057 -w-8037 -DSTRICT; -I$(BCROOT)\include;../../../../ /DBOOST_LIB_DIAGNOSTIC=1 $(CXXFLAGS) -L./borland -e./borland/liblink_test-borland-mt-sd-1_35.exe main.cpp + echo running test progam borland\liblink_test-borland-mt-sd-1_35.exe + borland\liblink_test-borland-mt-sd-1_35.exe + +######################################################## +# +# section for link_test-borland-mt-d-1_35.lib +# +######################################################## +borland\link_test-borland-mt-d-1_35\link_test.obj: link_test.cpp $(ALL_HEADER) + bcc32 @&&| +-c $(INCLUDES) -tWD -tWM -tWR -D_NO_VCL -D_RTLDLL -v -Ve -Vx -w-inl -w-aus -w-rch -w-8012 -w-8057 -w-8037 -DSTRICT; -I$(BCROOT)\include;../../../../ -L$(BCROOT)\lib;$(BCROOT)\lib\release; $(CXXFLAGS) -DBOOST_DYN_LINK -oborland\link_test-borland-mt-d-1_35\link_test.obj link_test.cpp +| + +borland\link_test-borland-mt-d-1_35 : + -@mkdir borland\link_test-borland-mt-d-1_35 + +link_test-borland-mt-d-1_35_clean : + del borland\link_test-borland-mt-d-1_35\*.obj + del borland\link_test-borland-mt-d-1_35\*.il? + del borland\link_test-borland-mt-d-1_35\*.csm + del borland\link_test-borland-mt-d-1_35\*.tds + del borland\*.tds + +borland\link_test-borland-mt-d-1_35.lib : borland\link_test-borland-mt-d-1_35\link_test.obj + bcc32 @&&| +-lw-dup -lw-dpl -tWD -tWM -tWR -D_NO_VCL -D_RTLDLL -v -Ve -Vx -w-inl -w-aus -w-rch -w-8012 -w-8057 -w-8037 -DSTRICT; -I$(BCROOT)\include;../../../../ -L$(BCROOT)\lib;$(BCROOT)\lib\release; -eborland\link_test-borland-mt-d-1_35.dll $(XLFLAGS) borland\link_test-borland-mt-d-1_35\link_test.obj $(LIBS) +| + implib -w borland\link_test-borland-mt-d-1_35.lib borland\link_test-borland-mt-d-1_35.dll + +borland\link_test-borland-mt-d-1_35.exe : main.cpp borland\link_test-borland-mt-d-1_35.lib + bcc32 $(INCLUDES) -tWD -tWM -tWR -D_NO_VCL -D_RTLDLL -v -Ve -Vx -w-inl -w-aus -w-rch -w-8012 -w-8057 -w-8037 -DSTRICT; -I$(BCROOT)\include;../../../../ -L$(BCROOT)\lib;$(BCROOT)\lib\release; /DBOOST_LIB_DIAGNOSTIC=1 $(CXXFLAGS) -DBOOST_DYN_LINK -L./borland -e./borland/link_test-borland-mt-d-1_35.exe main.cpp + echo running test program borland\link_test-borland-mt-d-1_35.exe + borland\link_test-borland-mt-d-1_35.exe + +######################################################## +# +# section for link_test-borland-d-1_35.lib +# +######################################################## +borland\link_test-borland-d-1_35\link_test.obj: link_test.cpp $(ALL_HEADER) + bcc32 @&&| +-c $(INCLUDES) -tWD -tWR -tWM- -D_NO_VCL -D_RTLDLL -v -Ve -Vx -w-inl -w-aus -w-rch -w-8012 -w-8057 -w-8037 -DSTRICT; -I$(BCROOT)\include;../../../../ -L$(BCROOT)\lib;$(BCROOT)\lib\release; $(CXXFLAGS) -DBOOST_DYN_LINK -oborland\link_test-borland-d-1_35\link_test.obj link_test.cpp +| + +borland\link_test-borland-d-1_35 : + -@mkdir borland\link_test-borland-d-1_35 + +link_test-borland-d-1_35_clean : + del borland\link_test-borland-d-1_35\*.obj + del borland\link_test-borland-d-1_35\*.il? + del borland\link_test-borland-d-1_35\*.csm + del borland\link_test-borland-d-1_35\*.tds + del borland\*.tds + +borland\link_test-borland-d-1_35.lib : borland\link_test-borland-d-1_35\link_test.obj + bcc32 @&&| +-lw-dup -lw-dpl -tWD -tWR -tWM- -D_NO_VCL -D_RTLDLL -v -Ve -Vx -w-inl -w-aus -w-rch -w-8012 -w-8057 -w-8037 -DSTRICT; -I$(BCROOT)\include;../../../../ -L$(BCROOT)\lib;$(BCROOT)\lib\release; -eborland\link_test-borland-d-1_35.dll $(XLFLAGS) borland\link_test-borland-d-1_35\link_test.obj $(LIBS) +| + implib -w borland\link_test-borland-d-1_35.lib borland\link_test-borland-d-1_35.dll + +borland\link_test-borland-d-1_35.exe : main.cpp borland\link_test-borland-d-1_35.lib + bcc32 $(INCLUDES) -tWD -tWR -tWM- -D_NO_VCL -D_RTLDLL -v -Ve -Vx -w-inl -w-aus -w-rch -w-8012 -w-8057 -w-8037 -DSTRICT; -I$(BCROOT)\include;../../../../ -L$(BCROOT)\lib;$(BCROOT)\lib\release; /DBOOST_LIB_DIAGNOSTIC=1 $(CXXFLAGS) -DBOOST_DYN_LINK -L./borland -e./borland/link_test-borland-d-1_35.exe main.cpp + echo running test program borland\link_test-borland-d-1_35.exe + borland\link_test-borland-d-1_35.exe + +######################################################## +# +# section for liblink_test-borland-mt-d-1_35.lib +# +######################################################## +borland\liblink_test-borland-mt-d-1_35\link_test.obj: link_test.cpp $(ALL_HEADER) + bcc32 @&&| +-c $(INCLUDES) -tWD -tWM -tWR -DBOOST_REGEX_STATIC_LINK -D_NO_VCL -D_RTLDLL -v -Ve -Vx -w-inl -w-aus -w-rch -w-8012 -w-8057 -w-8037 -DSTRICT; -I$(BCROOT)\include;../../../../ -L$(BCROOT)\lib;$(BCROOT)\lib\release; $(CXXFLAGS) -oborland\liblink_test-borland-mt-d-1_35\link_test.obj link_test.cpp +| + +borland\liblink_test-borland-mt-d-1_35 : + -@mkdir borland\liblink_test-borland-mt-d-1_35 + +liblink_test-borland-mt-d-1_35_clean : + del borland\liblink_test-borland-mt-d-1_35\*.obj + del borland\liblink_test-borland-mt-d-1_35\*.il? + del borland\liblink_test-borland-mt-d-1_35\*.csm + del borland\liblink_test-borland-mt-d-1_35\*.tds + +borland\liblink_test-borland-mt-d-1_35.lib : borland\liblink_test-borland-mt-d-1_35\link_test.obj + tlib @&&| +/P128 /C /u /a $(XSFLAGS) "borland\liblink_test-borland-mt-d-1_35.lib" "borland\liblink_test-borland-mt-d-1_35\link_test.obj" +| + +borland\liblink_test-borland-mt-d-1_35.exe : main.cpp borland\liblink_test-borland-mt-d-1_35.lib + bcc32 $(INCLUDES) -tWD -tWM -tWR -DBOOST_REGEX_STATIC_LINK -D_NO_VCL -D_RTLDLL -v -Ve -Vx -w-inl -w-aus -w-rch -w-8012 -w-8057 -w-8037 -DSTRICT; -I$(BCROOT)\include;../../../../ -L$(BCROOT)\lib;$(BCROOT)\lib\release; /DBOOST_LIB_DIAGNOSTIC=1 $(CXXFLAGS) -L./borland -e./borland/liblink_test-borland-mt-d-1_35.exe main.cpp + echo running test progam borland\liblink_test-borland-mt-d-1_35.exe + borland\liblink_test-borland-mt-d-1_35.exe + +######################################################## +# +# section for liblink_test-borland-d-1_35.lib +# +######################################################## +borland\liblink_test-borland-d-1_35\link_test.obj: link_test.cpp $(ALL_HEADER) + bcc32 @&&| +-c $(INCLUDES) -tWD -tWR -tWM- -DBOOST_REGEX_STATIC_LINK -D_NO_VCL -D_RTLDLL -v -Ve -Vx -w-inl -w-aus -w-rch -w-8012 -w-8057 -w-8037 -DSTRICT; -I$(BCROOT)\include;../../../../ -L$(BCROOT)\lib;$(BCROOT)\lib\release; $(CXXFLAGS) -oborland\liblink_test-borland-d-1_35\link_test.obj link_test.cpp +| + +borland\liblink_test-borland-d-1_35 : + -@mkdir borland\liblink_test-borland-d-1_35 + +liblink_test-borland-d-1_35_clean : + del borland\liblink_test-borland-d-1_35\*.obj + del borland\liblink_test-borland-d-1_35\*.il? + del borland\liblink_test-borland-d-1_35\*.csm + del borland\liblink_test-borland-d-1_35\*.tds + +borland\liblink_test-borland-d-1_35.lib : borland\liblink_test-borland-d-1_35\link_test.obj + tlib @&&| +/P128 /C /u /a $(XSFLAGS) "borland\liblink_test-borland-d-1_35.lib" "borland\liblink_test-borland-d-1_35\link_test.obj" +| + +borland\liblink_test-borland-d-1_35.exe : main.cpp borland\liblink_test-borland-d-1_35.lib + bcc32 $(INCLUDES) -tWD -tWR -tWM- -DBOOST_REGEX_STATIC_LINK -D_NO_VCL -D_RTLDLL -v -Ve -Vx -w-inl -w-aus -w-rch -w-8012 -w-8057 -w-8037 -DSTRICT; -I$(BCROOT)\include;../../../../ -L$(BCROOT)\lib;$(BCROOT)\lib\release; /DBOOST_LIB_DIAGNOSTIC=1 $(CXXFLAGS) -L./borland -e./borland/liblink_test-borland-d-1_35.exe main.cpp + echo running test progam borland\liblink_test-borland-d-1_35.exe + borland\liblink_test-borland-d-1_35.exe + diff --git a/libs/config/test/link/common.sh b/libs/config/test/link/common.sh new file mode 100644 index 0000000000..9725a5c362 --- /dev/null +++ b/libs/config/test/link/common.sh @@ -0,0 +1,19 @@ +# copyright John Maddock 2005 +# 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) +# +# locate all the header dependencies: +header="" +# +# locate all the source files: +src=link_test.cpp + +boost_version=$(grep 'define.*BOOST_LIB_VERSION' ../../../../boost/version.hpp | sed 's/.*"\([^"]*\)".*/\1/') + + + + + + + diff --git a/libs/config/test/link/link_test.cpp b/libs/config/test/link/link_test.cpp new file mode 100644 index 0000000000..be80bfcdcf --- /dev/null +++ b/libs/config/test/link/link_test.cpp @@ -0,0 +1,54 @@ +// (C) 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) + +// See http://www.boost.org/libs/config for the most recent version. + + +#define BOOST_CONFIG_SOURCE + +#include "link_test.hpp" +#include <iostream> +#include <iomanip> + +bool BOOST_CONFIG_DECL check_options( + bool m_dyn_link, + bool m_dyn_rtl, + bool m_has_threads, + bool m_debug, + bool m_stlp_debug) +{ + if(m_dyn_link != dyn_link) + { + std::cout << "Dynamic link options do not match" << std::endl; + std::cout << "Application setting = " << m_dyn_link << " Library setting = " << dyn_link << std::endl; + return false; + } + if(m_dyn_rtl != dyn_rtl) + { + std::cout << "Runtime library options do not match" << std::endl; + std::cout << "Application setting = " << m_dyn_rtl << " Library setting = " << dyn_rtl << std::endl; + return false; + } + if(m_has_threads != has_threads) + { + std::cout << "Threading options do not match" << std::endl; + std::cout << "Application setting = " << m_has_threads << " Library setting = " << has_threads << std::endl; + return false; + } + if(m_debug != debug) + { + std::cout << "Debug options do not match" << std::endl; + std::cout << "Application setting = " << m_debug << " Library setting = " << debug << std::endl; + return false; + } + if(m_stlp_debug != stl_debug) + { + std::cout << "STLPort debug options do not match" << std::endl; + std::cout << "Application setting = " << m_stlp_debug << " Library setting = " << stl_debug << std::endl; + return false; + } + return true; +} + diff --git a/libs/config/test/link/link_test.hpp b/libs/config/test/link/link_test.hpp new file mode 100644 index 0000000000..8d6333bba6 --- /dev/null +++ b/libs/config/test/link/link_test.hpp @@ -0,0 +1,108 @@ +// (C) 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) + +// See http://www.boost.org/libs/config for the most recent version. + +#ifndef BOOST_LINK_TEST_HPP +#define BOOST_LINK_TEST_HPP + +#include <boost/config.hpp> + +// +// set up code to determine our compilers options, +// we will check that these are the same in the +// .exe and the .dll: +// +#ifdef BOOST_DYN_LINK +static const bool dyn_link = true; +#else +static const bool dyn_link = false; +#endif +#if defined(_DLL) || defined(_RTLDLL) +static const bool dyn_rtl = true; +#else +static const bool dyn_rtl = false; +#endif +#if defined(BOOST_HAS_THREADS) +static const bool has_threads = true; +#else +static const bool has_threads = false; +#endif +#if defined(_DEBUG) +static const bool debug = true; +#else +static const bool debug = false; +#endif +#if defined(__STL_DEBUG) || defined(_STLP_DEBUG) +static const bool stl_debug = true; +#else +static const bool stl_debug = false; +#endif + +// +// set up import and export options: +// +#if defined(BOOST_DYN_LINK) +# ifdef BOOST_CONFIG_SOURCE +# define BOOST_CONFIG_DECL BOOST_SYMBOL_EXPORT +# else +# define BOOST_CONFIG_DECL BOOST_SYMBOL_IMPORT +# endif +#endif +#ifndef BOOST_CONFIG_DECL +# define BOOST_CONFIG_DECL +#endif + +// +// define our entry point: +// +bool BOOST_CONFIG_DECL check_options( + bool m_dyn_link, + bool m_dyn_rtl, + bool m_has_threads, + bool m_debug, + bool m_stlp_debug); + +// +// set up automatic linking: +// +#if !defined(BOOST_CONFIG_SOURCE) && !defined(BOOST_CONFIG_NO_LIB) +# define BOOST_LIB_NAME link_test +# include <boost/config/auto_link.hpp> +#endif + +#ifndef BOOST_NO_EXTERN_TEMPLATE + +template <class T> +T test_free_proc(T v) +{ + return v; +} + +template <class T> +struct tester +{ + static int test(); +}; + +template <class T> +int tester<T>::test() +{ + return 0; +} + +#ifdef BOOST_CONFIG_SOURCE +template BOOST_SYMBOL_EXPORT int test_free_proc<int>(int); +template BOOST_SYMBOL_EXPORT int tester<int>::test(); +#else +extern template BOOST_SYMBOL_IMPORT int test_free_proc<int>(int); +extern template BOOST_SYMBOL_IMPORT int tester<int>::test(); +#endif + +#endif // BOOST_NO_EXTERN_TEMPLATE + +#endif // BOOST_LINK_TEST_HPP + + diff --git a/libs/config/test/link/main.cpp b/libs/config/test/link/main.cpp new file mode 100644 index 0000000000..3926684ac4 --- /dev/null +++ b/libs/config/test/link/main.cpp @@ -0,0 +1,19 @@ +// (C) 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) + +// See http://www.boost.org/libs/config for the most recent version. + +#include "link_test.hpp" + +int main() +{ +#ifndef BOOST_NO_EXTERN_TEMPLATE + test_free_proc<int>(0); + tester<int>::test(); +#endif + return check_options(dyn_link, dyn_rtl, has_threads, debug, stl_debug) ? 0 : -1; +} + + diff --git a/libs/config/test/link/test/Jamfile.v2 b/libs/config/test/link/test/Jamfile.v2 new file mode 100644 index 0000000000..22668af24a --- /dev/null +++ b/libs/config/test/link/test/Jamfile.v2 @@ -0,0 +1,117 @@ +# copyright John Maddock 2006 +# 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) + +import type ; + +type.register AUTOLINK_LIB ; + +import generators ; +import "class" : new ; + +# This generator creates library using standard generators, +# and then add <library-path> usage requirements with the +# path of the created library. +class autolink-generator : generator +{ + import generators ; + import "class" ; + import property-set ; + import path ; + + rule run ( project name ? : property-set : sources + ) + { + local result = [ generators.construct $(project) $(name) + : LIB : $(property-set) : $(sources) ] ; + + local targets ; + local usage-requirements ; + + if [ class.is-a $(result[1]) : property-set ] + { + usage-requirements = $(result[1]) ; + targets = $(result[2-]) ; + } + else + { + usage-requirements = [ property-set.empty ] ; + targets = $(result) ; + } + + local extra ; + local paths ; + local pwd = [ path.pwd ] ; + for local t in $(targets) + { + if [ type.is-derived [ $(t).type ] LIB ] + { + paths += [ path.root [ path.make [ $(t).path ] ] $(pwd) ] ; + } + } + extra += $(paths:G=<library-path>) ; + if $(extra) + { + extra = [ sequence.unique $(extra) ] ; + usage-requirements = [ $(usage-requirements).add-raw $(extra) ] ; + } + return $(usage-requirements) $(targets) ; + } +} + +generators.register [ + new autolink-generator $(__name__).autolink : : AUTOLINK_LIB ] ; + +project : requirements -<threading>multi <hardcode-dll-paths>false ; + +autolink-lib link_test : ../link_test.cpp + : <link>shared:<define>BOOST_DYN_LINK=1 + : + ; + + +explicit link_test ; + +run ../main.cpp link_test + : : : <toolset>msvc-8.0:<build>no <toolset>msvc-9.0:<build>no <toolset>msvc-10.0:<build>no <link>static <runtime-link>static <threading>single debug : link_test_ssd ; + +run ../main.cpp link_test + : : : <toolset>msvc-8.0:<build>no <toolset>msvc-9.0:<build>no <toolset>msvc-10.0:<build>no <link>static <runtime-link>static <threading>single release : link_test_ssr ; + +run ../main.cpp link_test + : : : <link>static <runtime-link>static <threading>multi debug : link_test_smd ; + +run ../main.cpp link_test + : : : <link>static <runtime-link>static <threading>multi release : link_test_smr ; + +run ../main.cpp link_test + : : : <link>static <runtime-link>shared <threading>multi debug : link_test_dmd ; + +run ../main.cpp link_test + : : : <link>static <runtime-link>shared <threading>multi release : link_test_dmr ; + +run ../main.cpp link_test + : : : <link>static <runtime-link>shared <threading>single debug : link_test_dsd ; + +run ../main.cpp link_test + : : : <link>static <runtime-link>shared <threading>single release : link_test_dsr ; + +run ../main.cpp link_test + : : : <define>BOOST_DYN_LINK=1 <link>shared <runtime-link>shared <threading>multi debug : link_test_dll_dmd ; + +run ../main.cpp link_test + : : : <define>BOOST_DYN_LINK=1 <link>shared <runtime-link>shared <threading>multi release : link_test_dll_dmr ; + +run ../main.cpp link_test + : : : <define>BOOST_DYN_LINK=1 <link>shared <runtime-link>shared <threading>single debug : link_test_dll_dsd ; + +run ../main.cpp link_test + : : : <define>BOOST_DYN_LINK=1 <link>shared <runtime-link>shared <threading>single release : link_test_dll_dsr ; + + + + + + + + diff --git a/libs/config/test/link/vc6-stlport.mak b/libs/config/test/link/vc6-stlport.mak new file mode 100644 index 0000000000..3eb3dc56dc --- /dev/null +++ b/libs/config/test/link/vc6-stlport.mak @@ -0,0 +1,292 @@ +# copyright John Maddock 2005 +# 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) +# +# auto generated makefile for VC6+STLPort +# +# usage: +# make +# brings libraries up to date +# make install +# brings libraries up to date and copies binaries to your VC6 /lib and /bin directories (recomended) +# + +# +# Add additional compiler options here: +# +CXXFLAGS= +# +# Add additional include directories here: +# +INCLUDES= +# +# add additional linker flags here: +# +XLFLAGS= +# +# add additional static-library creation flags here: +# +XSFLAGS= + +!IF "$(OS)" == "Windows_NT" +NULL= +!ELSE +NULL=nul +!ENDIF + +!IF "$(MSVCDIR)" == "" +!ERROR Variable MSVCDIR not set. +!ENDIF + +!IF "$(STLPORT_PATH)" == "" +!ERROR Variable STLPORT_PATH not set. +!ENDIF + + +ALL_HEADER= + +all : main_dir liblink_test-vc6-stlport-mt-s-1_35_dir ./vc6-stlport/liblink_test-vc6-stlport-mt-s-1_35.lib ./vc6-stlport/liblink_test-vc6-stlport-mt-s-1_35.exe liblink_test-vc6-stlport-mt-sgd-1_35_dir ./vc6-stlport/liblink_test-vc6-stlport-mt-sgd-1_35.lib ./vc6-stlport/liblink_test-vc6-stlport-mt-sgd-1_35.exe link_test-vc6-stlport-mt-gd-1_35_dir ./vc6-stlport/link_test-vc6-stlport-mt-gd-1_35.lib ./vc6-stlport/link_test-vc6-stlport-mt-gd-1_35.exe link_test-vc6-stlport-mt-1_35_dir ./vc6-stlport/link_test-vc6-stlport-mt-1_35.lib ./vc6-stlport/link_test-vc6-stlport-mt-1_35.exe liblink_test-vc6-stlport-mt-1_35_dir ./vc6-stlport/liblink_test-vc6-stlport-mt-1_35.lib ./vc6-stlport/liblink_test-vc6-stlport-mt-1_35.exe liblink_test-vc6-stlport-mt-gd-1_35_dir ./vc6-stlport/liblink_test-vc6-stlport-mt-gd-1_35.lib ./vc6-stlport/liblink_test-vc6-stlport-mt-gd-1_35.exe link_test-vc6-stlport-mt-pgd-1_35_dir ./vc6-stlport/link_test-vc6-stlport-mt-pgd-1_35.lib ./vc6-stlport/link_test-vc6-stlport-mt-pgd-1_35.exe liblink_test-vc6-stlport-mt-spgd-1_35_dir ./vc6-stlport/liblink_test-vc6-stlport-mt-spgd-1_35.lib ./vc6-stlport/liblink_test-vc6-stlport-mt-spgd-1_35.exe liblink_test-vc6-stlport-mt-pgd-1_35_dir ./vc6-stlport/liblink_test-vc6-stlport-mt-pgd-1_35.lib ./vc6-stlport/liblink_test-vc6-stlport-mt-pgd-1_35.exe + +clean : liblink_test-vc6-stlport-mt-s-1_35_clean liblink_test-vc6-stlport-mt-sgd-1_35_clean link_test-vc6-stlport-mt-gd-1_35_clean link_test-vc6-stlport-mt-1_35_clean liblink_test-vc6-stlport-mt-1_35_clean liblink_test-vc6-stlport-mt-gd-1_35_clean link_test-vc6-stlport-mt-pgd-1_35_clean liblink_test-vc6-stlport-mt-spgd-1_35_clean liblink_test-vc6-stlport-mt-pgd-1_35_clean + +install : stlport_check all + copy vc6-stlport\liblink_test-vc6-stlport-mt-s-1_35.lib "$(MSVCDIR)\lib" + copy vc6-stlport\liblink_test-vc6-stlport-mt-sgd-1_35.lib "$(MSVCDIR)\lib" + copy vc6-stlport\link_test-vc6-stlport-mt-gd-1_35.lib "$(MSVCDIR)\lib" + copy vc6-stlport\link_test-vc6-stlport-mt-gd-1_35.dll "$(MSVCDIR)\bin" + copy vc6-stlport\link_test-vc6-stlport-mt-1_35.lib "$(MSVCDIR)\lib" + copy vc6-stlport\link_test-vc6-stlport-mt-1_35.dll "$(MSVCDIR)\bin" + copy vc6-stlport\liblink_test-vc6-stlport-mt-1_35.lib "$(MSVCDIR)\lib" + copy vc6-stlport\liblink_test-vc6-stlport-mt-gd-1_35.lib "$(MSVCDIR)\lib" + copy vc6-stlport\link_test-vc6-stlport-mt-pgd-1_35.lib "$(MSVCDIR)\lib" + copy vc6-stlport\link_test-vc6-stlport-mt-pgd-1_35.dll "$(MSVCDIR)\bin" + copy vc6-stlport\link_test-vc6-stlport-mt-pgd-1_35.pdb "$(MSVCDIR)\lib" + copy vc6-stlport\liblink_test-vc6-stlport-mt-spgd-1_35.lib "$(MSVCDIR)\lib" + copy vc6-stlport\liblink_test-vc6-stlport-mt-spgd-1_35.pdb "$(MSVCDIR)\lib" + copy vc6-stlport\liblink_test-vc6-stlport-mt-pgd-1_35.lib "$(MSVCDIR)\lib" + copy vc6-stlport\liblink_test-vc6-stlport-mt-pgd-1_35.pdb "$(MSVCDIR)\lib" + +main_dir : + @if not exist "vc6-stlport\$(NULL)" mkdir vc6-stlport + +stlport_check : $(STLPORT_PATH)\stlport\string + echo + + +######################################################## +# +# section for liblink_test-vc6-stlport-mt-s-1_35.lib +# +######################################################## +vc6-stlport/liblink_test-vc6-stlport-mt-s-1_35/link_test.obj: link_test.cpp $(ALL_HEADER) + cl /c $(INCLUDES) /nologo /MT /W3 /GX /O2 /GB /GF /Gy /I$(STLPORT_PATH)\stlport /I..\..\..\..\ /D_MT /DWIN32 /DNDEBUG /D_MBCS /D_LIB $(CXXFLAGS) -Y- -Fo./vc6-stlport/liblink_test-vc6-stlport-mt-s-1_35/ -Fdvc6-stlport/liblink_test-vc6-stlport-mt-s-1_35.pdb link_test.cpp + +liblink_test-vc6-stlport-mt-s-1_35_dir : + @if not exist "vc6-stlport\liblink_test-vc6-stlport-mt-s-1_35\$(NULL)" mkdir vc6-stlport\liblink_test-vc6-stlport-mt-s-1_35 + +liblink_test-vc6-stlport-mt-s-1_35_clean : + del vc6-stlport\liblink_test-vc6-stlport-mt-s-1_35\*.obj + del vc6-stlport\liblink_test-vc6-stlport-mt-s-1_35\*.idb + del vc6-stlport\liblink_test-vc6-stlport-mt-s-1_35\*.exp + del vc6-stlport\liblink_test-vc6-stlport-mt-s-1_35\*.pch + +./vc6-stlport/liblink_test-vc6-stlport-mt-s-1_35.lib : vc6-stlport/liblink_test-vc6-stlport-mt-s-1_35/link_test.obj + link -lib /nologo /out:vc6-stlport/liblink_test-vc6-stlport-mt-s-1_35.lib $(XSFLAGS) vc6-stlport/liblink_test-vc6-stlport-mt-s-1_35/link_test.obj + +./vc6-stlport/liblink_test-vc6-stlport-mt-s-1_35.exe : main.cpp ./vc6-stlport/liblink_test-vc6-stlport-mt-s-1_35.lib + cl $(INCLUDES) /nologo /MT /W3 /GX /O2 /GB /GF /Gy /I$(STLPORT_PATH)\stlport /I..\..\..\..\ /D_MT /DWIN32 /DNDEBUG /D_MBCS /D_LIB /DBOOST_LIB_DIAGNOSTIC=1 $(CXXFLAGS) -o ./vc6-stlport/liblink_test-vc6-stlport-mt-s-1_35.exe main.cpp /link /LIBPATH:./vc6-stlport + vc6-stlport\liblink_test-vc6-stlport-mt-s-1_35.exe + +######################################################## +# +# section for liblink_test-vc6-stlport-mt-sgd-1_35.lib +# +######################################################## +vc6-stlport/liblink_test-vc6-stlport-mt-sgd-1_35/link_test.obj: link_test.cpp $(ALL_HEADER) + cl /c $(INCLUDES) /nologo /MTd /W3 /Gm /GX /Zi /Od /I$(STLPORT_PATH)\stlport /I..\..\..\..\ /DWIN32 /D_MT /D_DEBUG /D_MBCS /D_LIB /GX $(CXXFLAGS) -Y- -Fo./vc6-stlport/liblink_test-vc6-stlport-mt-sgd-1_35/ -Fdvc6-stlport/liblink_test-vc6-stlport-mt-sgd-1_35.pdb link_test.cpp + +liblink_test-vc6-stlport-mt-sgd-1_35_dir : + @if not exist "vc6-stlport\liblink_test-vc6-stlport-mt-sgd-1_35\$(NULL)" mkdir vc6-stlport\liblink_test-vc6-stlport-mt-sgd-1_35 + +liblink_test-vc6-stlport-mt-sgd-1_35_clean : + del vc6-stlport\liblink_test-vc6-stlport-mt-sgd-1_35\*.obj + del vc6-stlport\liblink_test-vc6-stlport-mt-sgd-1_35\*.idb + del vc6-stlport\liblink_test-vc6-stlport-mt-sgd-1_35\*.exp + del vc6-stlport\liblink_test-vc6-stlport-mt-sgd-1_35\*.pch + +./vc6-stlport/liblink_test-vc6-stlport-mt-sgd-1_35.lib : vc6-stlport/liblink_test-vc6-stlport-mt-sgd-1_35/link_test.obj + link -lib /nologo /out:vc6-stlport/liblink_test-vc6-stlport-mt-sgd-1_35.lib $(XSFLAGS) vc6-stlport/liblink_test-vc6-stlport-mt-sgd-1_35/link_test.obj + +./vc6-stlport/liblink_test-vc6-stlport-mt-sgd-1_35.exe : main.cpp ./vc6-stlport/liblink_test-vc6-stlport-mt-sgd-1_35.lib + cl $(INCLUDES) /nologo /MTd /W3 /Gm /GX /Zi /Od /I$(STLPORT_PATH)\stlport /I..\..\..\..\ /DWIN32 /D_MT /D_DEBUG /D_MBCS /D_LIB /GX /DBOOST_LIB_DIAGNOSTIC=1 $(CXXFLAGS) -o ./vc6-stlport/liblink_test-vc6-stlport-mt-sgd-1_35.exe main.cpp /link /LIBPATH:./vc6-stlport + vc6-stlport\liblink_test-vc6-stlport-mt-sgd-1_35.exe + +######################################################## +# +# section for link_test-vc6-stlport-mt-gd-1_35.lib +# +######################################################## +vc6-stlport/link_test-vc6-stlport-mt-gd-1_35/link_test.obj: link_test.cpp $(ALL_HEADER) + cl /c $(INCLUDES) /nologo /MDd /W3 /Gm /GX /Zi /Od /I$(STLPORT_PATH)\stlport /I..\..\..\..\ /DBOOST_DYN_LINK /D_DEBUG /DWIN32 /D_WINDOWS /D_MBCS /DUSRDLL /GX $(CXXFLAGS) -Y- -Fo./vc6-stlport/link_test-vc6-stlport-mt-gd-1_35/ -Fdvc6-stlport/link_test-vc6-stlport-mt-gd-1_35.pdb link_test.cpp + +link_test-vc6-stlport-mt-gd-1_35_dir : + @if not exist "vc6-stlport\link_test-vc6-stlport-mt-gd-1_35\$(NULL)" mkdir vc6-stlport\link_test-vc6-stlport-mt-gd-1_35 + +link_test-vc6-stlport-mt-gd-1_35_clean : + del vc6-stlport\link_test-vc6-stlport-mt-gd-1_35\*.obj + del vc6-stlport\link_test-vc6-stlport-mt-gd-1_35\*.idb + del vc6-stlport\link_test-vc6-stlport-mt-gd-1_35\*.exp + del vc6-stlport\link_test-vc6-stlport-mt-gd-1_35\*.pch + +./vc6-stlport/link_test-vc6-stlport-mt-gd-1_35.lib : vc6-stlport/link_test-vc6-stlport-mt-gd-1_35/link_test.obj + link kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /incremental:yes /pdb:"vc6-stlport/link_test-vc6-stlport-mt-gd-1_35.pdb" /debug /machine:I386 /out:"vc6-stlport/link_test-vc6-stlport-mt-gd-1_35.dll" /implib:"vc6-stlport/link_test-vc6-stlport-mt-gd-1_35.lib" /LIBPATH:$(STLPORT_PATH)\lib $(XLFLAGS) vc6-stlport/link_test-vc6-stlport-mt-gd-1_35/link_test.obj + +./vc6-stlport/link_test-vc6-stlport-mt-gd-1_35.exe : main.cpp ./vc6-stlport/link_test-vc6-stlport-mt-gd-1_35.lib + cl $(INCLUDES) /nologo /MDd /W3 /Gm /GX /Zi /Od /I$(STLPORT_PATH)\stlport /I..\..\..\..\ /DBOOST_DYN_LINK /D_DEBUG /DWIN32 /D_WINDOWS /D_MBCS /DUSRDLL /GX /DBOOST_LIB_DIAGNOSTIC=1 $(CXXFLAGS) -o ./vc6-stlport/link_test-vc6-stlport-mt-gd-1_35.exe main.cpp /link /LIBPATH:./vc6-stlport + vc6-stlport\link_test-vc6-stlport-mt-gd-1_35.exe + +######################################################## +# +# section for link_test-vc6-stlport-mt-1_35.lib +# +######################################################## +vc6-stlport/link_test-vc6-stlport-mt-1_35/link_test.obj: link_test.cpp $(ALL_HEADER) + cl /c $(INCLUDES) /nologo /MD /W3 /GX /O2 /GB /GF /I$(STLPORT_PATH)\stlport /Gy /I..\..\..\..\ /DBOOST_DYN_LINK /DNDEBUG /DWIN32 /D_WINDOWS /D_MBCS /D_USRDLL $(CXXFLAGS) -Y- -Fo./vc6-stlport/link_test-vc6-stlport-mt-1_35/ -Fdvc6-stlport/link_test-vc6-stlport-mt-1_35.pdb link_test.cpp + +link_test-vc6-stlport-mt-1_35_dir : + @if not exist "vc6-stlport\link_test-vc6-stlport-mt-1_35\$(NULL)" mkdir vc6-stlport\link_test-vc6-stlport-mt-1_35 + +link_test-vc6-stlport-mt-1_35_clean : + del vc6-stlport\link_test-vc6-stlport-mt-1_35\*.obj + del vc6-stlport\link_test-vc6-stlport-mt-1_35\*.idb + del vc6-stlport\link_test-vc6-stlport-mt-1_35\*.exp + del vc6-stlport\link_test-vc6-stlport-mt-1_35\*.pch + +./vc6-stlport/link_test-vc6-stlport-mt-1_35.lib : vc6-stlport/link_test-vc6-stlport-mt-1_35/link_test.obj + link kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /incremental:yes /pdb:"vc6-stlport/link_test-vc6-stlport-mt-1_35.pdb" /debug /machine:I386 /out:"vc6-stlport/link_test-vc6-stlport-mt-1_35.dll" /implib:"vc6-stlport/link_test-vc6-stlport-mt-1_35.lib" /LIBPATH:$(STLPORT_PATH)\lib $(XLFLAGS) vc6-stlport/link_test-vc6-stlport-mt-1_35/link_test.obj + +./vc6-stlport/link_test-vc6-stlport-mt-1_35.exe : main.cpp ./vc6-stlport/link_test-vc6-stlport-mt-1_35.lib + cl $(INCLUDES) /nologo /MD /W3 /GX /O2 /GB /GF /I$(STLPORT_PATH)\stlport /Gy /I..\..\..\..\ /DBOOST_DYN_LINK /DNDEBUG /DWIN32 /D_WINDOWS /D_MBCS /D_USRDLL /DBOOST_LIB_DIAGNOSTIC=1 $(CXXFLAGS) -o ./vc6-stlport/link_test-vc6-stlport-mt-1_35.exe main.cpp /link /LIBPATH:./vc6-stlport + vc6-stlport\link_test-vc6-stlport-mt-1_35.exe + +######################################################## +# +# section for liblink_test-vc6-stlport-mt-1_35.lib +# +######################################################## +vc6-stlport/liblink_test-vc6-stlport-mt-1_35/link_test.obj: link_test.cpp $(ALL_HEADER) + cl /c $(INCLUDES) /nologo /MD /W3 /GX /O2 /GB /GF /Gy /I$(STLPORT_PATH)\stlport /I..\..\..\..\ /DBOOST_REGEX_STATIC_LINK /DNDEBUG /DWIN32 /D_WINDOWS /D_MBCS /D_USRDLL $(CXXFLAGS) -Y- -Fo./vc6-stlport/liblink_test-vc6-stlport-mt-1_35/ -Fdvc6-stlport/liblink_test-vc6-stlport-mt-1_35.pdb link_test.cpp + +liblink_test-vc6-stlport-mt-1_35_dir : + @if not exist "vc6-stlport\liblink_test-vc6-stlport-mt-1_35\$(NULL)" mkdir vc6-stlport\liblink_test-vc6-stlport-mt-1_35 + +liblink_test-vc6-stlport-mt-1_35_clean : + del vc6-stlport\liblink_test-vc6-stlport-mt-1_35\*.obj + del vc6-stlport\liblink_test-vc6-stlport-mt-1_35\*.idb + del vc6-stlport\liblink_test-vc6-stlport-mt-1_35\*.exp + del vc6-stlport\liblink_test-vc6-stlport-mt-1_35\*.pch + +./vc6-stlport/liblink_test-vc6-stlport-mt-1_35.lib : vc6-stlport/liblink_test-vc6-stlport-mt-1_35/link_test.obj + link -lib /nologo /out:vc6-stlport/liblink_test-vc6-stlport-mt-1_35.lib $(XSFLAGS) vc6-stlport/liblink_test-vc6-stlport-mt-1_35/link_test.obj + +./vc6-stlport/liblink_test-vc6-stlport-mt-1_35.exe : main.cpp ./vc6-stlport/liblink_test-vc6-stlport-mt-1_35.lib + cl $(INCLUDES) /nologo /MD /W3 /GX /O2 /GB /GF /Gy /I$(STLPORT_PATH)\stlport /I..\..\..\..\ /DBOOST_REGEX_STATIC_LINK /DNDEBUG /DWIN32 /D_WINDOWS /D_MBCS /D_USRDLL /DBOOST_LIB_DIAGNOSTIC=1 $(CXXFLAGS) -o ./vc6-stlport/liblink_test-vc6-stlport-mt-1_35.exe main.cpp /link /LIBPATH:./vc6-stlport + vc6-stlport\liblink_test-vc6-stlport-mt-1_35.exe + +######################################################## +# +# section for liblink_test-vc6-stlport-mt-gd-1_35.lib +# +######################################################## +vc6-stlport/liblink_test-vc6-stlport-mt-gd-1_35/link_test.obj: link_test.cpp $(ALL_HEADER) + cl /c $(INCLUDES) /nologo /MDd /W3 /Gm /GX /Zi /Od /I$(STLPORT_PATH)\stlport /I..\..\..\..\ /DBOOST_REGEX_STATIC_LINK /D_DEBUG /DWIN32 /D_WINDOWS /D_MBCS /DUSRDLL /GX $(CXXFLAGS) -Y- -Fo./vc6-stlport/liblink_test-vc6-stlport-mt-gd-1_35/ -Fdvc6-stlport/liblink_test-vc6-stlport-mt-gd-1_35.pdb link_test.cpp + +liblink_test-vc6-stlport-mt-gd-1_35_dir : + @if not exist "vc6-stlport\liblink_test-vc6-stlport-mt-gd-1_35\$(NULL)" mkdir vc6-stlport\liblink_test-vc6-stlport-mt-gd-1_35 + +liblink_test-vc6-stlport-mt-gd-1_35_clean : + del vc6-stlport\liblink_test-vc6-stlport-mt-gd-1_35\*.obj + del vc6-stlport\liblink_test-vc6-stlport-mt-gd-1_35\*.idb + del vc6-stlport\liblink_test-vc6-stlport-mt-gd-1_35\*.exp + del vc6-stlport\liblink_test-vc6-stlport-mt-gd-1_35\*.pch + +./vc6-stlport/liblink_test-vc6-stlport-mt-gd-1_35.lib : vc6-stlport/liblink_test-vc6-stlport-mt-gd-1_35/link_test.obj + link -lib /nologo /out:vc6-stlport/liblink_test-vc6-stlport-mt-gd-1_35.lib $(XSFLAGS) vc6-stlport/liblink_test-vc6-stlport-mt-gd-1_35/link_test.obj + +./vc6-stlport/liblink_test-vc6-stlport-mt-gd-1_35.exe : main.cpp ./vc6-stlport/liblink_test-vc6-stlport-mt-gd-1_35.lib + cl $(INCLUDES) /nologo /MDd /W3 /Gm /GX /Zi /Od /I$(STLPORT_PATH)\stlport /I..\..\..\..\ /DBOOST_REGEX_STATIC_LINK /D_DEBUG /DWIN32 /D_WINDOWS /D_MBCS /DUSRDLL /GX /DBOOST_LIB_DIAGNOSTIC=1 $(CXXFLAGS) -o ./vc6-stlport/liblink_test-vc6-stlport-mt-gd-1_35.exe main.cpp /link /LIBPATH:./vc6-stlport + vc6-stlport\liblink_test-vc6-stlport-mt-gd-1_35.exe + +######################################################## +# +# section for link_test-vc6-stlport-mt-pgd-1_35.lib +# +######################################################## +vc6-stlport/link_test-vc6-stlport-mt-pgd-1_35/link_test.obj: link_test.cpp $(ALL_HEADER) + cl /c $(INCLUDES) /nologo /MDd /W3 /Gm /GX /Zi /Od /I$(STLPORT_PATH)\stlport /I..\..\..\..\ /DBOOST_DYN_LINK /D__STL_DEBUG /D_STLP_DEBUG /D_DEBUG /DWIN32 /D_WINDOWS /D_MBCS /DUSRDLL /GX $(CXXFLAGS) -Y- -Fo./vc6-stlport/link_test-vc6-stlport-mt-pgd-1_35/ -Fdvc6-stlport/link_test-vc6-stlport-mt-pgd-1_35.pdb link_test.cpp + +link_test-vc6-stlport-mt-pgd-1_35_dir : + @if not exist "vc6-stlport\link_test-vc6-stlport-mt-pgd-1_35\$(NULL)" mkdir vc6-stlport\link_test-vc6-stlport-mt-pgd-1_35 + +link_test-vc6-stlport-mt-pgd-1_35_clean : + del vc6-stlport\link_test-vc6-stlport-mt-pgd-1_35\*.obj + del vc6-stlport\link_test-vc6-stlport-mt-pgd-1_35\*.idb + del vc6-stlport\link_test-vc6-stlport-mt-pgd-1_35\*.exp + del vc6-stlport\link_test-vc6-stlport-mt-pgd-1_35\*.pch + +./vc6-stlport/link_test-vc6-stlport-mt-pgd-1_35.lib : vc6-stlport/link_test-vc6-stlport-mt-pgd-1_35/link_test.obj + link kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /incremental:yes /pdb:"vc6-stlport/link_test-vc6-stlport-mt-pgd-1_35.pdb" /debug /machine:I386 /out:"vc6-stlport/link_test-vc6-stlport-mt-pgd-1_35.dll" /implib:"vc6-stlport/link_test-vc6-stlport-mt-pgd-1_35.lib" /LIBPATH:$(STLPORT_PATH)\lib $(XLFLAGS) vc6-stlport/link_test-vc6-stlport-mt-pgd-1_35/link_test.obj + +./vc6-stlport/link_test-vc6-stlport-mt-pgd-1_35.exe : main.cpp ./vc6-stlport/link_test-vc6-stlport-mt-pgd-1_35.lib + cl $(INCLUDES) /nologo /MDd /W3 /Gm /GX /Zi /Od /I$(STLPORT_PATH)\stlport /I..\..\..\..\ /DBOOST_DYN_LINK /D__STL_DEBUG /D_STLP_DEBUG /D_DEBUG /DWIN32 /D_WINDOWS /D_MBCS /DUSRDLL /GX /DBOOST_LIB_DIAGNOSTIC=1 $(CXXFLAGS) -o ./vc6-stlport/link_test-vc6-stlport-mt-pgd-1_35.exe main.cpp /link /LIBPATH:./vc6-stlport + vc6-stlport\link_test-vc6-stlport-mt-pgd-1_35.exe + +######################################################## +# +# section for liblink_test-vc6-stlport-mt-spgd-1_35.lib +# +######################################################## +vc6-stlport/liblink_test-vc6-stlport-mt-spgd-1_35/link_test.obj: link_test.cpp $(ALL_HEADER) + cl /c $(INCLUDES) /nologo /MTd /W3 /Gm /GX /Zi /Od /I$(STLPORT_PATH)\stlport /I..\..\..\..\ /D__STL_DEBUG /D_STLP_DEBUG /DWIN32 /D_MT /D_DEBUG /D_MBCS /D_LIB /GX $(CXXFLAGS) -Y- -Fo./vc6-stlport/liblink_test-vc6-stlport-mt-spgd-1_35/ -Fdvc6-stlport/liblink_test-vc6-stlport-mt-spgd-1_35.pdb link_test.cpp + +liblink_test-vc6-stlport-mt-spgd-1_35_dir : + @if not exist "vc6-stlport\liblink_test-vc6-stlport-mt-spgd-1_35\$(NULL)" mkdir vc6-stlport\liblink_test-vc6-stlport-mt-spgd-1_35 + +liblink_test-vc6-stlport-mt-spgd-1_35_clean : + del vc6-stlport\liblink_test-vc6-stlport-mt-spgd-1_35\*.obj + del vc6-stlport\liblink_test-vc6-stlport-mt-spgd-1_35\*.idb + del vc6-stlport\liblink_test-vc6-stlport-mt-spgd-1_35\*.exp + del vc6-stlport\liblink_test-vc6-stlport-mt-spgd-1_35\*.pch + +./vc6-stlport/liblink_test-vc6-stlport-mt-spgd-1_35.lib : vc6-stlport/liblink_test-vc6-stlport-mt-spgd-1_35/link_test.obj + link -lib /nologo /out:vc6-stlport/liblink_test-vc6-stlport-mt-spgd-1_35.lib $(XSFLAGS) vc6-stlport/liblink_test-vc6-stlport-mt-spgd-1_35/link_test.obj + +./vc6-stlport/liblink_test-vc6-stlport-mt-spgd-1_35.exe : main.cpp ./vc6-stlport/liblink_test-vc6-stlport-mt-spgd-1_35.lib + cl $(INCLUDES) /nologo /MTd /W3 /Gm /GX /Zi /Od /I$(STLPORT_PATH)\stlport /I..\..\..\..\ /D__STL_DEBUG /D_STLP_DEBUG /DWIN32 /D_MT /D_DEBUG /D_MBCS /D_LIB /GX /DBOOST_LIB_DIAGNOSTIC=1 $(CXXFLAGS) -o ./vc6-stlport/liblink_test-vc6-stlport-mt-spgd-1_35.exe main.cpp /link /LIBPATH:./vc6-stlport + vc6-stlport\liblink_test-vc6-stlport-mt-spgd-1_35.exe + +######################################################## +# +# section for liblink_test-vc6-stlport-mt-pgd-1_35.lib +# +######################################################## +vc6-stlport/liblink_test-vc6-stlport-mt-pgd-1_35/link_test.obj: link_test.cpp $(ALL_HEADER) + cl /c $(INCLUDES) /nologo /MDd /W3 /Gm /GX /Zi /Od /I$(STLPORT_PATH)\stlport /I..\..\..\..\ /DBOOST_REGEX_STATIC_LINK /D__STL_DEBUG /D_STLP_DEBUG /D_DEBUG /DWIN32 /D_WINDOWS /D_MBCS /DUSRDLL /GX $(CXXFLAGS) -Y- -Fo./vc6-stlport/liblink_test-vc6-stlport-mt-pgd-1_35/ -Fdvc6-stlport/liblink_test-vc6-stlport-mt-pgd-1_35.pdb link_test.cpp + +liblink_test-vc6-stlport-mt-pgd-1_35_dir : + @if not exist "vc6-stlport\liblink_test-vc6-stlport-mt-pgd-1_35\$(NULL)" mkdir vc6-stlport\liblink_test-vc6-stlport-mt-pgd-1_35 + +liblink_test-vc6-stlport-mt-pgd-1_35_clean : + del vc6-stlport\liblink_test-vc6-stlport-mt-pgd-1_35\*.obj + del vc6-stlport\liblink_test-vc6-stlport-mt-pgd-1_35\*.idb + del vc6-stlport\liblink_test-vc6-stlport-mt-pgd-1_35\*.exp + del vc6-stlport\liblink_test-vc6-stlport-mt-pgd-1_35\*.pch + +./vc6-stlport/liblink_test-vc6-stlport-mt-pgd-1_35.lib : vc6-stlport/liblink_test-vc6-stlport-mt-pgd-1_35/link_test.obj + link -lib /nologo /out:vc6-stlport/liblink_test-vc6-stlport-mt-pgd-1_35.lib $(XSFLAGS) vc6-stlport/liblink_test-vc6-stlport-mt-pgd-1_35/link_test.obj + +./vc6-stlport/liblink_test-vc6-stlport-mt-pgd-1_35.exe : main.cpp ./vc6-stlport/liblink_test-vc6-stlport-mt-pgd-1_35.lib + cl $(INCLUDES) /nologo /MDd /W3 /Gm /GX /Zi /Od /I$(STLPORT_PATH)\stlport /I..\..\..\..\ /DBOOST_REGEX_STATIC_LINK /D__STL_DEBUG /D_STLP_DEBUG /D_DEBUG /DWIN32 /D_WINDOWS /D_MBCS /DUSRDLL /GX /DBOOST_LIB_DIAGNOSTIC=1 $(CXXFLAGS) -o ./vc6-stlport/liblink_test-vc6-stlport-mt-pgd-1_35.exe main.cpp /link /LIBPATH:./vc6-stlport + vc6-stlport\liblink_test-vc6-stlport-mt-pgd-1_35.exe + diff --git a/libs/config/test/link/vc6.mak b/libs/config/test/link/vc6.mak new file mode 100644 index 0000000000..b5a7798f20 --- /dev/null +++ b/libs/config/test/link/vc6.mak @@ -0,0 +1,260 @@ +# copyright John Maddock 2005 +# 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) +# +# auto generated makefile for VC6 compiler +# +# usage: +# make +# brings libraries up to date +# make install +# brings libraries up to date and copies binaries to your VC6 /lib and /bin directories (recomended) +# + +# +# Add additional compiler options here: +# +CXXFLAGS= +# +# Add additional include directories here: +# +INCLUDES= +# +# add additional linker flags here: +# +XLFLAGS= +# +# add additional static-library creation flags here: +# +XSFLAGS= + +!IF "$(OS)" == "Windows_NT" +NULL= +!ELSE +NULL=nul +!ENDIF + +!IF "$(MSVCDIR)" == "" +!ERROR Variable MSVCDIR not set. +!ENDIF + + +ALL_HEADER= + +all : main_dir liblink_test-vc6-s-1_35_dir ./vc6/liblink_test-vc6-s-1_35.lib ./vc6/liblink_test-vc6-s-1_35.exe liblink_test-vc6-mt-s-1_35_dir ./vc6/liblink_test-vc6-mt-s-1_35.lib ./vc6/liblink_test-vc6-mt-s-1_35.exe liblink_test-vc6-sgd-1_35_dir ./vc6/liblink_test-vc6-sgd-1_35.lib ./vc6/liblink_test-vc6-sgd-1_35.exe liblink_test-vc6-mt-sgd-1_35_dir ./vc6/liblink_test-vc6-mt-sgd-1_35.lib ./vc6/liblink_test-vc6-mt-sgd-1_35.exe link_test-vc6-mt-gd-1_35_dir ./vc6/link_test-vc6-mt-gd-1_35.lib ./vc6/link_test-vc6-mt-gd-1_35.exe link_test-vc6-mt-1_35_dir ./vc6/link_test-vc6-mt-1_35.lib ./vc6/link_test-vc6-mt-1_35.exe liblink_test-vc6-mt-1_35_dir ./vc6/liblink_test-vc6-mt-1_35.lib ./vc6/liblink_test-vc6-mt-1_35.exe liblink_test-vc6-mt-gd-1_35_dir ./vc6/liblink_test-vc6-mt-gd-1_35.lib ./vc6/liblink_test-vc6-mt-gd-1_35.exe + +clean : liblink_test-vc6-s-1_35_clean liblink_test-vc6-mt-s-1_35_clean liblink_test-vc6-sgd-1_35_clean liblink_test-vc6-mt-sgd-1_35_clean link_test-vc6-mt-gd-1_35_clean link_test-vc6-mt-1_35_clean liblink_test-vc6-mt-1_35_clean liblink_test-vc6-mt-gd-1_35_clean + +install : all + copy vc6\liblink_test-vc6-s-1_35.lib "$(MSVCDIR)\lib" + copy vc6\liblink_test-vc6-mt-s-1_35.lib "$(MSVCDIR)\lib" + copy vc6\liblink_test-vc6-sgd-1_35.lib "$(MSVCDIR)\lib" + copy vc6\liblink_test-vc6-sgd-1_35.pdb "$(MSVCDIR)\lib" + copy vc6\liblink_test-vc6-mt-sgd-1_35.lib "$(MSVCDIR)\lib" + copy vc6\liblink_test-vc6-mt-sgd-1_35.pdb "$(MSVCDIR)\lib" + copy vc6\link_test-vc6-mt-gd-1_35.lib "$(MSVCDIR)\lib" + copy vc6\link_test-vc6-mt-gd-1_35.dll "$(MSVCDIR)\bin" + copy vc6\link_test-vc6-mt-gd-1_35.pdb "$(MSVCDIR)\lib" + copy vc6\link_test-vc6-mt-1_35.lib "$(MSVCDIR)\lib" + copy vc6\link_test-vc6-mt-1_35.dll "$(MSVCDIR)\bin" + copy vc6\liblink_test-vc6-mt-1_35.lib "$(MSVCDIR)\lib" + copy vc6\liblink_test-vc6-mt-gd-1_35.lib "$(MSVCDIR)\lib" + copy vc6\liblink_test-vc6-mt-gd-1_35.pdb "$(MSVCDIR)\lib" + +main_dir : + @if not exist "vc6\$(NULL)" mkdir vc6 + + +######################################################## +# +# section for liblink_test-vc6-s-1_35.lib +# +######################################################## +vc6/liblink_test-vc6-s-1_35/link_test.obj: link_test.cpp $(ALL_HEADER) + cl /c $(INCLUDES) /nologo /ML /W3 /GX /O2 /GB /GF /Gy /I..\..\..\..\ /DWIN32 /DNDEBUG /D_MBCS /D_LIB /FD $(CXXFLAGS) -Y- -Fo./vc6/liblink_test-vc6-s-1_35/ -Fdvc6/liblink_test-vc6-s-1_35.pdb link_test.cpp + +liblink_test-vc6-s-1_35_dir : + @if not exist "vc6\liblink_test-vc6-s-1_35\$(NULL)" mkdir vc6\liblink_test-vc6-s-1_35 + +liblink_test-vc6-s-1_35_clean : + del vc6\liblink_test-vc6-s-1_35\*.obj + del vc6\liblink_test-vc6-s-1_35\*.idb + del vc6\liblink_test-vc6-s-1_35\*.exp + del vc6\liblink_test-vc6-s-1_35\*.pch + +./vc6/liblink_test-vc6-s-1_35.lib : vc6/liblink_test-vc6-s-1_35/link_test.obj + link -lib /nologo /out:vc6/liblink_test-vc6-s-1_35.lib $(XSFLAGS) vc6/liblink_test-vc6-s-1_35/link_test.obj + +./vc6/liblink_test-vc6-s-1_35.exe : main.cpp ./vc6/liblink_test-vc6-s-1_35.lib + cl $(INCLUDES) /nologo /ML /W3 /GX /O2 /GB /GF /Gy /I..\..\..\..\ /DWIN32 /DNDEBUG /D_MBCS /D_LIB /FD /DBOOST_LIB_DIAGNOSTIC=1 $(CXXFLAGS) -o ./vc6/liblink_test-vc6-s-1_35.exe main.cpp /link /LIBPATH:./vc6 + vc6\liblink_test-vc6-s-1_35.exe + +######################################################## +# +# section for liblink_test-vc6-mt-s-1_35.lib +# +######################################################## +vc6/liblink_test-vc6-mt-s-1_35/link_test.obj: link_test.cpp $(ALL_HEADER) + cl /c $(INCLUDES) /nologo /MT /W3 /GX /O2 /GB /GF /Gy /I..\..\..\..\ /D_MT /DWIN32 /DNDEBUG /D_MBCS /D_LIB /FD $(CXXFLAGS) -Y- -Fo./vc6/liblink_test-vc6-mt-s-1_35/ -Fdvc6/liblink_test-vc6-mt-s-1_35.pdb link_test.cpp + +liblink_test-vc6-mt-s-1_35_dir : + @if not exist "vc6\liblink_test-vc6-mt-s-1_35\$(NULL)" mkdir vc6\liblink_test-vc6-mt-s-1_35 + +liblink_test-vc6-mt-s-1_35_clean : + del vc6\liblink_test-vc6-mt-s-1_35\*.obj + del vc6\liblink_test-vc6-mt-s-1_35\*.idb + del vc6\liblink_test-vc6-mt-s-1_35\*.exp + del vc6\liblink_test-vc6-mt-s-1_35\*.pch + +./vc6/liblink_test-vc6-mt-s-1_35.lib : vc6/liblink_test-vc6-mt-s-1_35/link_test.obj + link -lib /nologo /out:vc6/liblink_test-vc6-mt-s-1_35.lib $(XSFLAGS) vc6/liblink_test-vc6-mt-s-1_35/link_test.obj + +./vc6/liblink_test-vc6-mt-s-1_35.exe : main.cpp ./vc6/liblink_test-vc6-mt-s-1_35.lib + cl $(INCLUDES) /nologo /MT /W3 /GX /O2 /GB /GF /Gy /I..\..\..\..\ /D_MT /DWIN32 /DNDEBUG /D_MBCS /D_LIB /FD /DBOOST_LIB_DIAGNOSTIC=1 $(CXXFLAGS) -o ./vc6/liblink_test-vc6-mt-s-1_35.exe main.cpp /link /LIBPATH:./vc6 + vc6\liblink_test-vc6-mt-s-1_35.exe + +######################################################## +# +# section for liblink_test-vc6-sgd-1_35.lib +# +######################################################## +vc6/liblink_test-vc6-sgd-1_35/link_test.obj: link_test.cpp $(ALL_HEADER) + cl /c $(INCLUDES) /nologo /MLd /W3 /Gm /GX /Zi /Od /I..\..\..\..\ /DWIN32 /D_DEBUG /D_MBCS /D_LIB /FD /GX $(CXXFLAGS) -Y- -Fo./vc6/liblink_test-vc6-sgd-1_35/ -Fdvc6/liblink_test-vc6-sgd-1_35.pdb link_test.cpp + +liblink_test-vc6-sgd-1_35_dir : + @if not exist "vc6\liblink_test-vc6-sgd-1_35\$(NULL)" mkdir vc6\liblink_test-vc6-sgd-1_35 + +liblink_test-vc6-sgd-1_35_clean : + del vc6\liblink_test-vc6-sgd-1_35\*.obj + del vc6\liblink_test-vc6-sgd-1_35\*.idb + del vc6\liblink_test-vc6-sgd-1_35\*.exp + del vc6\liblink_test-vc6-sgd-1_35\*.pch + +./vc6/liblink_test-vc6-sgd-1_35.lib : vc6/liblink_test-vc6-sgd-1_35/link_test.obj + link -lib /nologo /out:vc6/liblink_test-vc6-sgd-1_35.lib $(XSFLAGS) vc6/liblink_test-vc6-sgd-1_35/link_test.obj + +./vc6/liblink_test-vc6-sgd-1_35.exe : main.cpp ./vc6/liblink_test-vc6-sgd-1_35.lib + cl $(INCLUDES) /nologo /MLd /W3 /Gm /GX /Zi /Od /I..\..\..\..\ /DWIN32 /D_DEBUG /D_MBCS /D_LIB /FD /GX /DBOOST_LIB_DIAGNOSTIC=1 $(CXXFLAGS) -o ./vc6/liblink_test-vc6-sgd-1_35.exe main.cpp /link /LIBPATH:./vc6 + vc6\liblink_test-vc6-sgd-1_35.exe + +######################################################## +# +# section for liblink_test-vc6-mt-sgd-1_35.lib +# +######################################################## +vc6/liblink_test-vc6-mt-sgd-1_35/link_test.obj: link_test.cpp $(ALL_HEADER) + cl /c $(INCLUDES) /nologo /MTd /W3 /Gm /GX /Zi /Od /I..\..\..\..\ /DWIN32 /D_MT /D_DEBUG /D_MBCS /D_LIB /FD /GX $(CXXFLAGS) -Y- -Fo./vc6/liblink_test-vc6-mt-sgd-1_35/ -Fdvc6/liblink_test-vc6-mt-sgd-1_35.pdb link_test.cpp + +liblink_test-vc6-mt-sgd-1_35_dir : + @if not exist "vc6\liblink_test-vc6-mt-sgd-1_35\$(NULL)" mkdir vc6\liblink_test-vc6-mt-sgd-1_35 + +liblink_test-vc6-mt-sgd-1_35_clean : + del vc6\liblink_test-vc6-mt-sgd-1_35\*.obj + del vc6\liblink_test-vc6-mt-sgd-1_35\*.idb + del vc6\liblink_test-vc6-mt-sgd-1_35\*.exp + del vc6\liblink_test-vc6-mt-sgd-1_35\*.pch + +./vc6/liblink_test-vc6-mt-sgd-1_35.lib : vc6/liblink_test-vc6-mt-sgd-1_35/link_test.obj + link -lib /nologo /out:vc6/liblink_test-vc6-mt-sgd-1_35.lib $(XSFLAGS) vc6/liblink_test-vc6-mt-sgd-1_35/link_test.obj + +./vc6/liblink_test-vc6-mt-sgd-1_35.exe : main.cpp ./vc6/liblink_test-vc6-mt-sgd-1_35.lib + cl $(INCLUDES) /nologo /MTd /W3 /Gm /GX /Zi /Od /I..\..\..\..\ /DWIN32 /D_MT /D_DEBUG /D_MBCS /D_LIB /FD /GX /DBOOST_LIB_DIAGNOSTIC=1 $(CXXFLAGS) -o ./vc6/liblink_test-vc6-mt-sgd-1_35.exe main.cpp /link /LIBPATH:./vc6 + vc6\liblink_test-vc6-mt-sgd-1_35.exe + +######################################################## +# +# section for link_test-vc6-mt-gd-1_35.lib +# +######################################################## +vc6/link_test-vc6-mt-gd-1_35/link_test.obj: link_test.cpp $(ALL_HEADER) + cl /c $(INCLUDES) /nologo /MDd /W3 /Gm /GX /Zi /Od /I..\..\..\..\ /D_DEBUG /DBOOST_DYN_LINK /DWIN32 /D_WINDOWS /D_MBCS /DUSRDLL /FD /GX $(CXXFLAGS) -Y- -Fo./vc6/link_test-vc6-mt-gd-1_35/ -Fdvc6/link_test-vc6-mt-gd-1_35.pdb link_test.cpp + +link_test-vc6-mt-gd-1_35_dir : + @if not exist "vc6\link_test-vc6-mt-gd-1_35\$(NULL)" mkdir vc6\link_test-vc6-mt-gd-1_35 + +link_test-vc6-mt-gd-1_35_clean : + del vc6\link_test-vc6-mt-gd-1_35\*.obj + del vc6\link_test-vc6-mt-gd-1_35\*.idb + del vc6\link_test-vc6-mt-gd-1_35\*.exp + del vc6\link_test-vc6-mt-gd-1_35\*.pch + +./vc6/link_test-vc6-mt-gd-1_35.lib : vc6/link_test-vc6-mt-gd-1_35/link_test.obj + link kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /incremental:yes /pdb:"vc6/link_test-vc6-mt-gd-1_35.pdb" /debug /machine:I386 /out:"vc6/link_test-vc6-mt-gd-1_35.dll" /implib:"vc6/link_test-vc6-mt-gd-1_35.lib" /LIBPATH:$(STLPORT_PATH)\lib $(XLFLAGS) vc6/link_test-vc6-mt-gd-1_35/link_test.obj + +./vc6/link_test-vc6-mt-gd-1_35.exe : main.cpp ./vc6/link_test-vc6-mt-gd-1_35.lib + cl $(INCLUDES) /nologo /MDd /W3 /Gm /GX /Zi /Od /I..\..\..\..\ /D_DEBUG /DBOOST_DYN_LINK /DWIN32 /D_WINDOWS /D_MBCS /DUSRDLL /FD /GX /DBOOST_LIB_DIAGNOSTIC=1 $(CXXFLAGS) -o ./vc6/link_test-vc6-mt-gd-1_35.exe main.cpp /link /LIBPATH:./vc6 + vc6\link_test-vc6-mt-gd-1_35.exe + +######################################################## +# +# section for link_test-vc6-mt-1_35.lib +# +######################################################## +vc6/link_test-vc6-mt-1_35/link_test.obj: link_test.cpp $(ALL_HEADER) + cl /c $(INCLUDES) /nologo /MD /W3 /GX /O2 /GB /GF /Gy /I..\..\..\..\ /DBOOST_DYN_LINK /DNDEBUG /DWIN32 /D_WINDOWS /D_MBCS /D_USRDLL /FD $(CXXFLAGS) -Y- -Fo./vc6/link_test-vc6-mt-1_35/ -Fdvc6/link_test-vc6-mt-1_35.pdb link_test.cpp + +link_test-vc6-mt-1_35_dir : + @if not exist "vc6\link_test-vc6-mt-1_35\$(NULL)" mkdir vc6\link_test-vc6-mt-1_35 + +link_test-vc6-mt-1_35_clean : + del vc6\link_test-vc6-mt-1_35\*.obj + del vc6\link_test-vc6-mt-1_35\*.idb + del vc6\link_test-vc6-mt-1_35\*.exp + del vc6\link_test-vc6-mt-1_35\*.pch + +./vc6/link_test-vc6-mt-1_35.lib : vc6/link_test-vc6-mt-1_35/link_test.obj + link kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /incremental:yes /pdb:"vc6/link_test-vc6-mt-1_35.pdb" /debug /machine:I386 /out:"vc6/link_test-vc6-mt-1_35.dll" /implib:"vc6/link_test-vc6-mt-1_35.lib" /LIBPATH:$(STLPORT_PATH)\lib $(XLFLAGS) vc6/link_test-vc6-mt-1_35/link_test.obj + +./vc6/link_test-vc6-mt-1_35.exe : main.cpp ./vc6/link_test-vc6-mt-1_35.lib + cl $(INCLUDES) /nologo /MD /W3 /GX /O2 /GB /GF /Gy /I..\..\..\..\ /DBOOST_DYN_LINK /DNDEBUG /DWIN32 /D_WINDOWS /D_MBCS /D_USRDLL /FD /DBOOST_LIB_DIAGNOSTIC=1 $(CXXFLAGS) -o ./vc6/link_test-vc6-mt-1_35.exe main.cpp /link /LIBPATH:./vc6 + vc6\link_test-vc6-mt-1_35.exe + +######################################################## +# +# section for liblink_test-vc6-mt-1_35.lib +# +######################################################## +vc6/liblink_test-vc6-mt-1_35/link_test.obj: link_test.cpp $(ALL_HEADER) + cl /c $(INCLUDES) /nologo /MD /W3 /GX /O2 /GB /GF /Gy /I..\..\..\..\ /DBOOST_REGEX_STATIC_LINK /DNDEBUG /DWIN32 /D_WINDOWS /D_MBCS /D_USRDLL /FD $(CXXFLAGS) -Y- -Fo./vc6/liblink_test-vc6-mt-1_35/ -Fdvc6/liblink_test-vc6-mt-1_35.pdb link_test.cpp + +liblink_test-vc6-mt-1_35_dir : + @if not exist "vc6\liblink_test-vc6-mt-1_35\$(NULL)" mkdir vc6\liblink_test-vc6-mt-1_35 + +liblink_test-vc6-mt-1_35_clean : + del vc6\liblink_test-vc6-mt-1_35\*.obj + del vc6\liblink_test-vc6-mt-1_35\*.idb + del vc6\liblink_test-vc6-mt-1_35\*.exp + del vc6\liblink_test-vc6-mt-1_35\*.pch + +./vc6/liblink_test-vc6-mt-1_35.lib : vc6/liblink_test-vc6-mt-1_35/link_test.obj + link -lib /nologo /out:vc6/liblink_test-vc6-mt-1_35.lib $(XSFLAGS) vc6/liblink_test-vc6-mt-1_35/link_test.obj + +./vc6/liblink_test-vc6-mt-1_35.exe : main.cpp ./vc6/liblink_test-vc6-mt-1_35.lib + cl $(INCLUDES) /nologo /MD /W3 /GX /O2 /GB /GF /Gy /I..\..\..\..\ /DBOOST_REGEX_STATIC_LINK /DNDEBUG /DWIN32 /D_WINDOWS /D_MBCS /D_USRDLL /FD /DBOOST_LIB_DIAGNOSTIC=1 $(CXXFLAGS) -o ./vc6/liblink_test-vc6-mt-1_35.exe main.cpp /link /LIBPATH:./vc6 + vc6\liblink_test-vc6-mt-1_35.exe + +######################################################## +# +# section for liblink_test-vc6-mt-gd-1_35.lib +# +######################################################## +vc6/liblink_test-vc6-mt-gd-1_35/link_test.obj: link_test.cpp $(ALL_HEADER) + cl /c $(INCLUDES) /nologo /MDd /W3 /Gm /GX /Zi /Od /I..\..\..\..\ /DBOOST_REGEX_STATIC_LINK /D_DEBUG /DWIN32 /D_WINDOWS /D_MBCS /DUSRDLL /FD /GX $(CXXFLAGS) -Y- -Fo./vc6/liblink_test-vc6-mt-gd-1_35/ -Fdvc6/liblink_test-vc6-mt-gd-1_35.pdb link_test.cpp + +liblink_test-vc6-mt-gd-1_35_dir : + @if not exist "vc6\liblink_test-vc6-mt-gd-1_35\$(NULL)" mkdir vc6\liblink_test-vc6-mt-gd-1_35 + +liblink_test-vc6-mt-gd-1_35_clean : + del vc6\liblink_test-vc6-mt-gd-1_35\*.obj + del vc6\liblink_test-vc6-mt-gd-1_35\*.idb + del vc6\liblink_test-vc6-mt-gd-1_35\*.exp + del vc6\liblink_test-vc6-mt-gd-1_35\*.pch + +./vc6/liblink_test-vc6-mt-gd-1_35.lib : vc6/liblink_test-vc6-mt-gd-1_35/link_test.obj + link -lib /nologo /out:vc6/liblink_test-vc6-mt-gd-1_35.lib $(XSFLAGS) vc6/liblink_test-vc6-mt-gd-1_35/link_test.obj + +./vc6/liblink_test-vc6-mt-gd-1_35.exe : main.cpp ./vc6/liblink_test-vc6-mt-gd-1_35.lib + cl $(INCLUDES) /nologo /MDd /W3 /Gm /GX /Zi /Od /I..\..\..\..\ /DBOOST_REGEX_STATIC_LINK /D_DEBUG /DWIN32 /D_WINDOWS /D_MBCS /DUSRDLL /FD /GX /DBOOST_LIB_DIAGNOSTIC=1 $(CXXFLAGS) -o ./vc6/liblink_test-vc6-mt-gd-1_35.exe main.cpp /link /LIBPATH:./vc6 + vc6\liblink_test-vc6-mt-gd-1_35.exe + diff --git a/libs/config/test/link/vc7-stlport.mak b/libs/config/test/link/vc7-stlport.mak new file mode 100644 index 0000000000..5e500f1972 --- /dev/null +++ b/libs/config/test/link/vc7-stlport.mak @@ -0,0 +1,292 @@ +# copyright John Maddock 2005 +# 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) +# +# auto generated makefile for VC6+STLPort +# +# usage: +# make +# brings libraries up to date +# make install +# brings libraries up to date and copies binaries to your VC6 /lib and /bin directories (recomended) +# + +# +# Add additional compiler options here: +# +CXXFLAGS= +# +# Add additional include directories here: +# +INCLUDES= +# +# add additional linker flags here: +# +XLFLAGS= +# +# add additional static-library creation flags here: +# +XSFLAGS= + +!IF "$(OS)" == "Windows_NT" +NULL= +!ELSE +NULL=nul +!ENDIF + +!IF "$(MSVCDIR)" == "" +!ERROR Variable MSVCDIR not set. +!ENDIF + +!IF "$(STLPORT_PATH)" == "" +!ERROR Variable STLPORT_PATH not set. +!ENDIF + + +ALL_HEADER= + +all : main_dir liblink_test-vc7-stlport-mt-s-1_35_dir ./vc7-stlport/liblink_test-vc7-stlport-mt-s-1_35.lib ./vc7-stlport/liblink_test-vc7-stlport-mt-s-1_35.exe liblink_test-vc7-stlport-mt-sgd-1_35_dir ./vc7-stlport/liblink_test-vc7-stlport-mt-sgd-1_35.lib ./vc7-stlport/liblink_test-vc7-stlport-mt-sgd-1_35.exe link_test-vc7-stlport-mt-gd-1_35_dir ./vc7-stlport/link_test-vc7-stlport-mt-gd-1_35.lib ./vc7-stlport/link_test-vc7-stlport-mt-gd-1_35.exe link_test-vc7-stlport-mt-1_35_dir ./vc7-stlport/link_test-vc7-stlport-mt-1_35.lib ./vc7-stlport/link_test-vc7-stlport-mt-1_35.exe liblink_test-vc7-stlport-mt-1_35_dir ./vc7-stlport/liblink_test-vc7-stlport-mt-1_35.lib ./vc7-stlport/liblink_test-vc7-stlport-mt-1_35.exe liblink_test-vc7-stlport-mt-gd-1_35_dir ./vc7-stlport/liblink_test-vc7-stlport-mt-gd-1_35.lib ./vc7-stlport/liblink_test-vc7-stlport-mt-gd-1_35.exe link_test-vc7-stlport-mt-pgd-1_35_dir ./vc7-stlport/link_test-vc7-stlport-mt-pgd-1_35.lib ./vc7-stlport/link_test-vc7-stlport-mt-pgd-1_35.exe liblink_test-vc7-stlport-mt-spgd-1_35_dir ./vc7-stlport/liblink_test-vc7-stlport-mt-spgd-1_35.lib ./vc7-stlport/liblink_test-vc7-stlport-mt-spgd-1_35.exe liblink_test-vc7-stlport-mt-pgd-1_35_dir ./vc7-stlport/liblink_test-vc7-stlport-mt-pgd-1_35.lib ./vc7-stlport/liblink_test-vc7-stlport-mt-pgd-1_35.exe + +clean : liblink_test-vc7-stlport-mt-s-1_35_clean liblink_test-vc7-stlport-mt-sgd-1_35_clean link_test-vc7-stlport-mt-gd-1_35_clean link_test-vc7-stlport-mt-1_35_clean liblink_test-vc7-stlport-mt-1_35_clean liblink_test-vc7-stlport-mt-gd-1_35_clean link_test-vc7-stlport-mt-pgd-1_35_clean liblink_test-vc7-stlport-mt-spgd-1_35_clean liblink_test-vc7-stlport-mt-pgd-1_35_clean + +install : stlport_check all + copy vc7-stlport\liblink_test-vc7-stlport-mt-s-1_35.lib "$(MSVCDIR)\lib" + copy vc7-stlport\liblink_test-vc7-stlport-mt-sgd-1_35.lib "$(MSVCDIR)\lib" + copy vc7-stlport\link_test-vc7-stlport-mt-gd-1_35.lib "$(MSVCDIR)\lib" + copy vc7-stlport\link_test-vc7-stlport-mt-gd-1_35.dll "$(MSVCDIR)\bin" + copy vc7-stlport\link_test-vc7-stlport-mt-1_35.lib "$(MSVCDIR)\lib" + copy vc7-stlport\link_test-vc7-stlport-mt-1_35.dll "$(MSVCDIR)\bin" + copy vc7-stlport\liblink_test-vc7-stlport-mt-1_35.lib "$(MSVCDIR)\lib" + copy vc7-stlport\liblink_test-vc7-stlport-mt-gd-1_35.lib "$(MSVCDIR)\lib" + copy vc7-stlport\link_test-vc7-stlport-mt-pgd-1_35.lib "$(MSVCDIR)\lib" + copy vc7-stlport\link_test-vc7-stlport-mt-pgd-1_35.dll "$(MSVCDIR)\bin" + copy vc7-stlport\link_test-vc7-stlport-mt-pgd-1_35.pdb "$(MSVCDIR)\lib" + copy vc7-stlport\liblink_test-vc7-stlport-mt-spgd-1_35.lib "$(MSVCDIR)\lib" + copy vc7-stlport\liblink_test-vc7-stlport-mt-spgd-1_35.pdb "$(MSVCDIR)\lib" + copy vc7-stlport\liblink_test-vc7-stlport-mt-pgd-1_35.lib "$(MSVCDIR)\lib" + copy vc7-stlport\liblink_test-vc7-stlport-mt-pgd-1_35.pdb "$(MSVCDIR)\lib" + +main_dir : + @if not exist "vc7-stlport\$(NULL)" mkdir vc7-stlport + +stlport_check : $(STLPORT_PATH)\stlport\string + echo + + +######################################################## +# +# section for liblink_test-vc7-stlport-mt-s-1_35.lib +# +######################################################## +vc7-stlport/liblink_test-vc7-stlport-mt-s-1_35/link_test.obj: link_test.cpp $(ALL_HEADER) + cl /c $(INCLUDES) /nologo /MT /W3 /GX /O2 /GB /GF /Gy /I$(STLPORT_PATH)\stlport /I..\..\..\..\ /D_MT /DWIN32 /DNDEBUG /D_MBCS /D_LIB $(CXXFLAGS) -Y- -Fo./vc7-stlport/liblink_test-vc7-stlport-mt-s-1_35/ -Fdvc7-stlport/liblink_test-vc7-stlport-mt-s-1_35.pdb link_test.cpp + +liblink_test-vc7-stlport-mt-s-1_35_dir : + @if not exist "vc7-stlport\liblink_test-vc7-stlport-mt-s-1_35\$(NULL)" mkdir vc7-stlport\liblink_test-vc7-stlport-mt-s-1_35 + +liblink_test-vc7-stlport-mt-s-1_35_clean : + del vc7-stlport\liblink_test-vc7-stlport-mt-s-1_35\*.obj + del vc7-stlport\liblink_test-vc7-stlport-mt-s-1_35\*.idb + del vc7-stlport\liblink_test-vc7-stlport-mt-s-1_35\*.exp + del vc7-stlport\liblink_test-vc7-stlport-mt-s-1_35\*.pch + +./vc7-stlport/liblink_test-vc7-stlport-mt-s-1_35.lib : vc7-stlport/liblink_test-vc7-stlport-mt-s-1_35/link_test.obj + link -lib /nologo /out:vc7-stlport/liblink_test-vc7-stlport-mt-s-1_35.lib $(XSFLAGS) vc7-stlport/liblink_test-vc7-stlport-mt-s-1_35/link_test.obj + +./vc7-stlport/liblink_test-vc7-stlport-mt-s-1_35.exe : main.cpp ./vc7-stlport/liblink_test-vc7-stlport-mt-s-1_35.lib + cl $(INCLUDES) /nologo /MT /W3 /GX /O2 /GB /GF /Gy /I$(STLPORT_PATH)\stlport /I..\..\..\..\ /D_MT /DWIN32 /DNDEBUG /D_MBCS /D_LIB /DBOOST_LIB_DIAGNOSTIC=1 $(CXXFLAGS) -o ./vc7-stlport/liblink_test-vc7-stlport-mt-s-1_35.exe main.cpp /link /LIBPATH:./vc7-stlport + vc7-stlport\liblink_test-vc7-stlport-mt-s-1_35.exe + +######################################################## +# +# section for liblink_test-vc7-stlport-mt-sgd-1_35.lib +# +######################################################## +vc7-stlport/liblink_test-vc7-stlport-mt-sgd-1_35/link_test.obj: link_test.cpp $(ALL_HEADER) + cl /c $(INCLUDES) /nologo /MTd /W3 /Gm /GX /Zi /Od /I$(STLPORT_PATH)\stlport /I..\..\..\..\ /DWIN32 /D_MT /D_DEBUG /D_MBCS /D_LIB /GX /RTC1 $(CXXFLAGS) -Y- -Fo./vc7-stlport/liblink_test-vc7-stlport-mt-sgd-1_35/ -Fdvc7-stlport/liblink_test-vc7-stlport-mt-sgd-1_35.pdb link_test.cpp + +liblink_test-vc7-stlport-mt-sgd-1_35_dir : + @if not exist "vc7-stlport\liblink_test-vc7-stlport-mt-sgd-1_35\$(NULL)" mkdir vc7-stlport\liblink_test-vc7-stlport-mt-sgd-1_35 + +liblink_test-vc7-stlport-mt-sgd-1_35_clean : + del vc7-stlport\liblink_test-vc7-stlport-mt-sgd-1_35\*.obj + del vc7-stlport\liblink_test-vc7-stlport-mt-sgd-1_35\*.idb + del vc7-stlport\liblink_test-vc7-stlport-mt-sgd-1_35\*.exp + del vc7-stlport\liblink_test-vc7-stlport-mt-sgd-1_35\*.pch + +./vc7-stlport/liblink_test-vc7-stlport-mt-sgd-1_35.lib : vc7-stlport/liblink_test-vc7-stlport-mt-sgd-1_35/link_test.obj + link -lib /nologo /out:vc7-stlport/liblink_test-vc7-stlport-mt-sgd-1_35.lib $(XSFLAGS) vc7-stlport/liblink_test-vc7-stlport-mt-sgd-1_35/link_test.obj + +./vc7-stlport/liblink_test-vc7-stlport-mt-sgd-1_35.exe : main.cpp ./vc7-stlport/liblink_test-vc7-stlport-mt-sgd-1_35.lib + cl $(INCLUDES) /nologo /MTd /W3 /Gm /GX /Zi /Od /I$(STLPORT_PATH)\stlport /I..\..\..\..\ /DWIN32 /D_MT /D_DEBUG /D_MBCS /D_LIB /GX /RTC1 /DBOOST_LIB_DIAGNOSTIC=1 $(CXXFLAGS) -o ./vc7-stlport/liblink_test-vc7-stlport-mt-sgd-1_35.exe main.cpp /link /LIBPATH:./vc7-stlport + vc7-stlport\liblink_test-vc7-stlport-mt-sgd-1_35.exe + +######################################################## +# +# section for link_test-vc7-stlport-mt-gd-1_35.lib +# +######################################################## +vc7-stlport/link_test-vc7-stlport-mt-gd-1_35/link_test.obj: link_test.cpp $(ALL_HEADER) + cl /c $(INCLUDES) /nologo /MDd /W3 /Gm /GX /Zi /Od /I$(STLPORT_PATH)\stlport /I..\..\..\..\ /DBOOST_DYN_LINK /D_DEBUG /DWIN32 /D_WINDOWS /D_MBCS /DUSRDLL /GX /RTC1 $(CXXFLAGS) -Y- -Fo./vc7-stlport/link_test-vc7-stlport-mt-gd-1_35/ -Fdvc7-stlport/link_test-vc7-stlport-mt-gd-1_35.pdb link_test.cpp + +link_test-vc7-stlport-mt-gd-1_35_dir : + @if not exist "vc7-stlport\link_test-vc7-stlport-mt-gd-1_35\$(NULL)" mkdir vc7-stlport\link_test-vc7-stlport-mt-gd-1_35 + +link_test-vc7-stlport-mt-gd-1_35_clean : + del vc7-stlport\link_test-vc7-stlport-mt-gd-1_35\*.obj + del vc7-stlport\link_test-vc7-stlport-mt-gd-1_35\*.idb + del vc7-stlport\link_test-vc7-stlport-mt-gd-1_35\*.exp + del vc7-stlport\link_test-vc7-stlport-mt-gd-1_35\*.pch + +./vc7-stlport/link_test-vc7-stlport-mt-gd-1_35.lib : vc7-stlport/link_test-vc7-stlport-mt-gd-1_35/link_test.obj + link kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /incremental:yes /pdb:"vc7-stlport/link_test-vc7-stlport-mt-gd-1_35.pdb" /debug /machine:I386 /out:"vc7-stlport/link_test-vc7-stlport-mt-gd-1_35.dll" /implib:"vc7-stlport/link_test-vc7-stlport-mt-gd-1_35.lib" /LIBPATH:$(STLPORT_PATH)\lib $(XLFLAGS) vc7-stlport/link_test-vc7-stlport-mt-gd-1_35/link_test.obj + +./vc7-stlport/link_test-vc7-stlport-mt-gd-1_35.exe : main.cpp ./vc7-stlport/link_test-vc7-stlport-mt-gd-1_35.lib + cl $(INCLUDES) /nologo /MDd /W3 /Gm /GX /Zi /Od /I$(STLPORT_PATH)\stlport /I..\..\..\..\ /DBOOST_DYN_LINK /D_DEBUG /DWIN32 /D_WINDOWS /D_MBCS /DUSRDLL /GX /RTC1 /DBOOST_LIB_DIAGNOSTIC=1 $(CXXFLAGS) -o ./vc7-stlport/link_test-vc7-stlport-mt-gd-1_35.exe main.cpp /link /LIBPATH:./vc7-stlport + vc7-stlport\link_test-vc7-stlport-mt-gd-1_35.exe + +######################################################## +# +# section for link_test-vc7-stlport-mt-1_35.lib +# +######################################################## +vc7-stlport/link_test-vc7-stlport-mt-1_35/link_test.obj: link_test.cpp $(ALL_HEADER) + cl /c $(INCLUDES) /nologo /MD /W3 /GX /O2 /GB /GF /I$(STLPORT_PATH)\stlport /Gy /I..\..\..\..\ /DBOOST_DYN_LINK /DNDEBUG /DWIN32 /D_WINDOWS /D_MBCS /D_USRDLL $(CXXFLAGS) -Y- -Fo./vc7-stlport/link_test-vc7-stlport-mt-1_35/ -Fdvc7-stlport/link_test-vc7-stlport-mt-1_35.pdb link_test.cpp + +link_test-vc7-stlport-mt-1_35_dir : + @if not exist "vc7-stlport\link_test-vc7-stlport-mt-1_35\$(NULL)" mkdir vc7-stlport\link_test-vc7-stlport-mt-1_35 + +link_test-vc7-stlport-mt-1_35_clean : + del vc7-stlport\link_test-vc7-stlport-mt-1_35\*.obj + del vc7-stlport\link_test-vc7-stlport-mt-1_35\*.idb + del vc7-stlport\link_test-vc7-stlport-mt-1_35\*.exp + del vc7-stlport\link_test-vc7-stlport-mt-1_35\*.pch + +./vc7-stlport/link_test-vc7-stlport-mt-1_35.lib : vc7-stlport/link_test-vc7-stlport-mt-1_35/link_test.obj + link kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /incremental:yes /pdb:"vc7-stlport/link_test-vc7-stlport-mt-1_35.pdb" /debug /machine:I386 /out:"vc7-stlport/link_test-vc7-stlport-mt-1_35.dll" /implib:"vc7-stlport/link_test-vc7-stlport-mt-1_35.lib" /LIBPATH:$(STLPORT_PATH)\lib $(XLFLAGS) vc7-stlport/link_test-vc7-stlport-mt-1_35/link_test.obj + +./vc7-stlport/link_test-vc7-stlport-mt-1_35.exe : main.cpp ./vc7-stlport/link_test-vc7-stlport-mt-1_35.lib + cl $(INCLUDES) /nologo /MD /W3 /GX /O2 /GB /GF /I$(STLPORT_PATH)\stlport /Gy /I..\..\..\..\ /DBOOST_DYN_LINK /DNDEBUG /DWIN32 /D_WINDOWS /D_MBCS /D_USRDLL /DBOOST_LIB_DIAGNOSTIC=1 $(CXXFLAGS) -o ./vc7-stlport/link_test-vc7-stlport-mt-1_35.exe main.cpp /link /LIBPATH:./vc7-stlport + vc7-stlport\link_test-vc7-stlport-mt-1_35.exe + +######################################################## +# +# section for liblink_test-vc7-stlport-mt-1_35.lib +# +######################################################## +vc7-stlport/liblink_test-vc7-stlport-mt-1_35/link_test.obj: link_test.cpp $(ALL_HEADER) + cl /c $(INCLUDES) /nologo /MD /W3 /GX /O2 /GB /GF /Gy /I$(STLPORT_PATH)\stlport /I..\..\..\..\ /DBOOST_REGEX_STATIC_LINK /DNDEBUG /DWIN32 /D_WINDOWS /D_MBCS /D_USRDLL $(CXXFLAGS) -Y- -Fo./vc7-stlport/liblink_test-vc7-stlport-mt-1_35/ -Fdvc7-stlport/liblink_test-vc7-stlport-mt-1_35.pdb link_test.cpp + +liblink_test-vc7-stlport-mt-1_35_dir : + @if not exist "vc7-stlport\liblink_test-vc7-stlport-mt-1_35\$(NULL)" mkdir vc7-stlport\liblink_test-vc7-stlport-mt-1_35 + +liblink_test-vc7-stlport-mt-1_35_clean : + del vc7-stlport\liblink_test-vc7-stlport-mt-1_35\*.obj + del vc7-stlport\liblink_test-vc7-stlport-mt-1_35\*.idb + del vc7-stlport\liblink_test-vc7-stlport-mt-1_35\*.exp + del vc7-stlport\liblink_test-vc7-stlport-mt-1_35\*.pch + +./vc7-stlport/liblink_test-vc7-stlport-mt-1_35.lib : vc7-stlport/liblink_test-vc7-stlport-mt-1_35/link_test.obj + link -lib /nologo /out:vc7-stlport/liblink_test-vc7-stlport-mt-1_35.lib $(XSFLAGS) vc7-stlport/liblink_test-vc7-stlport-mt-1_35/link_test.obj + +./vc7-stlport/liblink_test-vc7-stlport-mt-1_35.exe : main.cpp ./vc7-stlport/liblink_test-vc7-stlport-mt-1_35.lib + cl $(INCLUDES) /nologo /MD /W3 /GX /O2 /GB /GF /Gy /I$(STLPORT_PATH)\stlport /I..\..\..\..\ /DBOOST_REGEX_STATIC_LINK /DNDEBUG /DWIN32 /D_WINDOWS /D_MBCS /D_USRDLL /DBOOST_LIB_DIAGNOSTIC=1 $(CXXFLAGS) -o ./vc7-stlport/liblink_test-vc7-stlport-mt-1_35.exe main.cpp /link /LIBPATH:./vc7-stlport + vc7-stlport\liblink_test-vc7-stlport-mt-1_35.exe + +######################################################## +# +# section for liblink_test-vc7-stlport-mt-gd-1_35.lib +# +######################################################## +vc7-stlport/liblink_test-vc7-stlport-mt-gd-1_35/link_test.obj: link_test.cpp $(ALL_HEADER) + cl /c $(INCLUDES) /nologo /MDd /W3 /Gm /GX /Zi /Od /I$(STLPORT_PATH)\stlport /I..\..\..\..\ /DBOOST_REGEX_STATIC_LINK /D_DEBUG /DWIN32 /D_WINDOWS /D_MBCS /DUSRDLL /GX /RTC1 $(CXXFLAGS) -Y- -Fo./vc7-stlport/liblink_test-vc7-stlport-mt-gd-1_35/ -Fdvc7-stlport/liblink_test-vc7-stlport-mt-gd-1_35.pdb link_test.cpp + +liblink_test-vc7-stlport-mt-gd-1_35_dir : + @if not exist "vc7-stlport\liblink_test-vc7-stlport-mt-gd-1_35\$(NULL)" mkdir vc7-stlport\liblink_test-vc7-stlport-mt-gd-1_35 + +liblink_test-vc7-stlport-mt-gd-1_35_clean : + del vc7-stlport\liblink_test-vc7-stlport-mt-gd-1_35\*.obj + del vc7-stlport\liblink_test-vc7-stlport-mt-gd-1_35\*.idb + del vc7-stlport\liblink_test-vc7-stlport-mt-gd-1_35\*.exp + del vc7-stlport\liblink_test-vc7-stlport-mt-gd-1_35\*.pch + +./vc7-stlport/liblink_test-vc7-stlport-mt-gd-1_35.lib : vc7-stlport/liblink_test-vc7-stlport-mt-gd-1_35/link_test.obj + link -lib /nologo /out:vc7-stlport/liblink_test-vc7-stlport-mt-gd-1_35.lib $(XSFLAGS) vc7-stlport/liblink_test-vc7-stlport-mt-gd-1_35/link_test.obj + +./vc7-stlport/liblink_test-vc7-stlport-mt-gd-1_35.exe : main.cpp ./vc7-stlport/liblink_test-vc7-stlport-mt-gd-1_35.lib + cl $(INCLUDES) /nologo /MDd /W3 /Gm /GX /Zi /Od /I$(STLPORT_PATH)\stlport /I..\..\..\..\ /DBOOST_REGEX_STATIC_LINK /D_DEBUG /DWIN32 /D_WINDOWS /D_MBCS /DUSRDLL /GX /RTC1 /DBOOST_LIB_DIAGNOSTIC=1 $(CXXFLAGS) -o ./vc7-stlport/liblink_test-vc7-stlport-mt-gd-1_35.exe main.cpp /link /LIBPATH:./vc7-stlport + vc7-stlport\liblink_test-vc7-stlport-mt-gd-1_35.exe + +######################################################## +# +# section for link_test-vc7-stlport-mt-pgd-1_35.lib +# +######################################################## +vc7-stlport/link_test-vc7-stlport-mt-pgd-1_35/link_test.obj: link_test.cpp $(ALL_HEADER) + cl /c $(INCLUDES) /nologo /MDd /W3 /Gm /GX /Zi /Od /I$(STLPORT_PATH)\stlport /I..\..\..\..\ /DBOOST_DYN_LINK /D__STL_DEBUG /D_STLP_DEBUG /D_DEBUG /DWIN32 /D_WINDOWS /D_MBCS /DUSRDLL /GX /RTC1 $(CXXFLAGS) -Y- -Fo./vc7-stlport/link_test-vc7-stlport-mt-pgd-1_35/ -Fdvc7-stlport/link_test-vc7-stlport-mt-pgd-1_35.pdb link_test.cpp + +link_test-vc7-stlport-mt-pgd-1_35_dir : + @if not exist "vc7-stlport\link_test-vc7-stlport-mt-pgd-1_35\$(NULL)" mkdir vc7-stlport\link_test-vc7-stlport-mt-pgd-1_35 + +link_test-vc7-stlport-mt-pgd-1_35_clean : + del vc7-stlport\link_test-vc7-stlport-mt-pgd-1_35\*.obj + del vc7-stlport\link_test-vc7-stlport-mt-pgd-1_35\*.idb + del vc7-stlport\link_test-vc7-stlport-mt-pgd-1_35\*.exp + del vc7-stlport\link_test-vc7-stlport-mt-pgd-1_35\*.pch + +./vc7-stlport/link_test-vc7-stlport-mt-pgd-1_35.lib : vc7-stlport/link_test-vc7-stlport-mt-pgd-1_35/link_test.obj + link kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /incremental:yes /pdb:"vc7-stlport/link_test-vc7-stlport-mt-pgd-1_35.pdb" /debug /machine:I386 /out:"vc7-stlport/link_test-vc7-stlport-mt-pgd-1_35.dll" /implib:"vc7-stlport/link_test-vc7-stlport-mt-pgd-1_35.lib" /LIBPATH:$(STLPORT_PATH)\lib $(XLFLAGS) vc7-stlport/link_test-vc7-stlport-mt-pgd-1_35/link_test.obj + +./vc7-stlport/link_test-vc7-stlport-mt-pgd-1_35.exe : main.cpp ./vc7-stlport/link_test-vc7-stlport-mt-pgd-1_35.lib + cl $(INCLUDES) /nologo /MDd /W3 /Gm /GX /Zi /Od /I$(STLPORT_PATH)\stlport /I..\..\..\..\ /DBOOST_DYN_LINK /D__STL_DEBUG /D_STLP_DEBUG /D_DEBUG /DWIN32 /D_WINDOWS /D_MBCS /DUSRDLL /GX /RTC1 /DBOOST_LIB_DIAGNOSTIC=1 $(CXXFLAGS) -o ./vc7-stlport/link_test-vc7-stlport-mt-pgd-1_35.exe main.cpp /link /LIBPATH:./vc7-stlport + vc7-stlport\link_test-vc7-stlport-mt-pgd-1_35.exe + +######################################################## +# +# section for liblink_test-vc7-stlport-mt-spgd-1_35.lib +# +######################################################## +vc7-stlport/liblink_test-vc7-stlport-mt-spgd-1_35/link_test.obj: link_test.cpp $(ALL_HEADER) + cl /c $(INCLUDES) /nologo /MTd /W3 /Gm /GX /Zi /Od /I$(STLPORT_PATH)\stlport /I..\..\..\..\ /D__STL_DEBUG /D_STLP_DEBUG /DWIN32 /D_MT /D_DEBUG /D_MBCS /D_LIB /GX /RTC1 $(CXXFLAGS) -Y- -Fo./vc7-stlport/liblink_test-vc7-stlport-mt-spgd-1_35/ -Fdvc7-stlport/liblink_test-vc7-stlport-mt-spgd-1_35.pdb link_test.cpp + +liblink_test-vc7-stlport-mt-spgd-1_35_dir : + @if not exist "vc7-stlport\liblink_test-vc7-stlport-mt-spgd-1_35\$(NULL)" mkdir vc7-stlport\liblink_test-vc7-stlport-mt-spgd-1_35 + +liblink_test-vc7-stlport-mt-spgd-1_35_clean : + del vc7-stlport\liblink_test-vc7-stlport-mt-spgd-1_35\*.obj + del vc7-stlport\liblink_test-vc7-stlport-mt-spgd-1_35\*.idb + del vc7-stlport\liblink_test-vc7-stlport-mt-spgd-1_35\*.exp + del vc7-stlport\liblink_test-vc7-stlport-mt-spgd-1_35\*.pch + +./vc7-stlport/liblink_test-vc7-stlport-mt-spgd-1_35.lib : vc7-stlport/liblink_test-vc7-stlport-mt-spgd-1_35/link_test.obj + link -lib /nologo /out:vc7-stlport/liblink_test-vc7-stlport-mt-spgd-1_35.lib $(XSFLAGS) vc7-stlport/liblink_test-vc7-stlport-mt-spgd-1_35/link_test.obj + +./vc7-stlport/liblink_test-vc7-stlport-mt-spgd-1_35.exe : main.cpp ./vc7-stlport/liblink_test-vc7-stlport-mt-spgd-1_35.lib + cl $(INCLUDES) /nologo /MTd /W3 /Gm /GX /Zi /Od /I$(STLPORT_PATH)\stlport /I..\..\..\..\ /D__STL_DEBUG /D_STLP_DEBUG /DWIN32 /D_MT /D_DEBUG /D_MBCS /D_LIB /GX /RTC1 /DBOOST_LIB_DIAGNOSTIC=1 $(CXXFLAGS) -o ./vc7-stlport/liblink_test-vc7-stlport-mt-spgd-1_35.exe main.cpp /link /LIBPATH:./vc7-stlport + vc7-stlport\liblink_test-vc7-stlport-mt-spgd-1_35.exe + +######################################################## +# +# section for liblink_test-vc7-stlport-mt-pgd-1_35.lib +# +######################################################## +vc7-stlport/liblink_test-vc7-stlport-mt-pgd-1_35/link_test.obj: link_test.cpp $(ALL_HEADER) + cl /c $(INCLUDES) /nologo /MDd /W3 /Gm /GX /Zi /Od /I$(STLPORT_PATH)\stlport /I..\..\..\..\ /DBOOST_REGEX_STATIC_LINK /D__STL_DEBUG /D_STLP_DEBUG /D_DEBUG /DWIN32 /D_WINDOWS /D_MBCS /DUSRDLL /GX /RTC1 $(CXXFLAGS) -Y- -Fo./vc7-stlport/liblink_test-vc7-stlport-mt-pgd-1_35/ -Fdvc7-stlport/liblink_test-vc7-stlport-mt-pgd-1_35.pdb link_test.cpp + +liblink_test-vc7-stlport-mt-pgd-1_35_dir : + @if not exist "vc7-stlport\liblink_test-vc7-stlport-mt-pgd-1_35\$(NULL)" mkdir vc7-stlport\liblink_test-vc7-stlport-mt-pgd-1_35 + +liblink_test-vc7-stlport-mt-pgd-1_35_clean : + del vc7-stlport\liblink_test-vc7-stlport-mt-pgd-1_35\*.obj + del vc7-stlport\liblink_test-vc7-stlport-mt-pgd-1_35\*.idb + del vc7-stlport\liblink_test-vc7-stlport-mt-pgd-1_35\*.exp + del vc7-stlport\liblink_test-vc7-stlport-mt-pgd-1_35\*.pch + +./vc7-stlport/liblink_test-vc7-stlport-mt-pgd-1_35.lib : vc7-stlport/liblink_test-vc7-stlport-mt-pgd-1_35/link_test.obj + link -lib /nologo /out:vc7-stlport/liblink_test-vc7-stlport-mt-pgd-1_35.lib $(XSFLAGS) vc7-stlport/liblink_test-vc7-stlport-mt-pgd-1_35/link_test.obj + +./vc7-stlport/liblink_test-vc7-stlport-mt-pgd-1_35.exe : main.cpp ./vc7-stlport/liblink_test-vc7-stlport-mt-pgd-1_35.lib + cl $(INCLUDES) /nologo /MDd /W3 /Gm /GX /Zi /Od /I$(STLPORT_PATH)\stlport /I..\..\..\..\ /DBOOST_REGEX_STATIC_LINK /D__STL_DEBUG /D_STLP_DEBUG /D_DEBUG /DWIN32 /D_WINDOWS /D_MBCS /DUSRDLL /GX /RTC1 /DBOOST_LIB_DIAGNOSTIC=1 $(CXXFLAGS) -o ./vc7-stlport/liblink_test-vc7-stlport-mt-pgd-1_35.exe main.cpp /link /LIBPATH:./vc7-stlport + vc7-stlport\liblink_test-vc7-stlport-mt-pgd-1_35.exe + diff --git a/libs/config/test/link/vc7.mak b/libs/config/test/link/vc7.mak new file mode 100644 index 0000000000..afae0c5715 --- /dev/null +++ b/libs/config/test/link/vc7.mak @@ -0,0 +1,260 @@ +# copyright John Maddock 2005 +# 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) +# +# auto generated makefile for VC6 compiler +# +# usage: +# make +# brings libraries up to date +# make install +# brings libraries up to date and copies binaries to your VC6 /lib and /bin directories (recomended) +# + +# +# Add additional compiler options here: +# +CXXFLAGS= +# +# Add additional include directories here: +# +INCLUDES= +# +# add additional linker flags here: +# +XLFLAGS= +# +# add additional static-library creation flags here: +# +XSFLAGS= + +!IF "$(OS)" == "Windows_NT" +NULL= +!ELSE +NULL=nul +!ENDIF + +!IF "$(MSVCDIR)" == "" +!ERROR Variable MSVCDIR not set. +!ENDIF + + +ALL_HEADER= + +all : main_dir liblink_test-vc7-s-1_35_dir ./vc7/liblink_test-vc7-s-1_35.lib ./vc7/liblink_test-vc7-s-1_35.exe liblink_test-vc7-mt-s-1_35_dir ./vc7/liblink_test-vc7-mt-s-1_35.lib ./vc7/liblink_test-vc7-mt-s-1_35.exe liblink_test-vc7-sgd-1_35_dir ./vc7/liblink_test-vc7-sgd-1_35.lib ./vc7/liblink_test-vc7-sgd-1_35.exe liblink_test-vc7-mt-sgd-1_35_dir ./vc7/liblink_test-vc7-mt-sgd-1_35.lib ./vc7/liblink_test-vc7-mt-sgd-1_35.exe link_test-vc7-mt-gd-1_35_dir ./vc7/link_test-vc7-mt-gd-1_35.lib ./vc7/link_test-vc7-mt-gd-1_35.exe link_test-vc7-mt-1_35_dir ./vc7/link_test-vc7-mt-1_35.lib ./vc7/link_test-vc7-mt-1_35.exe liblink_test-vc7-mt-1_35_dir ./vc7/liblink_test-vc7-mt-1_35.lib ./vc7/liblink_test-vc7-mt-1_35.exe liblink_test-vc7-mt-gd-1_35_dir ./vc7/liblink_test-vc7-mt-gd-1_35.lib ./vc7/liblink_test-vc7-mt-gd-1_35.exe + +clean : liblink_test-vc7-s-1_35_clean liblink_test-vc7-mt-s-1_35_clean liblink_test-vc7-sgd-1_35_clean liblink_test-vc7-mt-sgd-1_35_clean link_test-vc7-mt-gd-1_35_clean link_test-vc7-mt-1_35_clean liblink_test-vc7-mt-1_35_clean liblink_test-vc7-mt-gd-1_35_clean + +install : all + copy vc7\liblink_test-vc7-s-1_35.lib "$(MSVCDIR)\lib" + copy vc7\liblink_test-vc7-mt-s-1_35.lib "$(MSVCDIR)\lib" + copy vc7\liblink_test-vc7-sgd-1_35.lib "$(MSVCDIR)\lib" + copy vc7\liblink_test-vc7-sgd-1_35.pdb "$(MSVCDIR)\lib" + copy vc7\liblink_test-vc7-mt-sgd-1_35.lib "$(MSVCDIR)\lib" + copy vc7\liblink_test-vc7-mt-sgd-1_35.pdb "$(MSVCDIR)\lib" + copy vc7\link_test-vc7-mt-gd-1_35.lib "$(MSVCDIR)\lib" + copy vc7\link_test-vc7-mt-gd-1_35.dll "$(MSVCDIR)\bin" + copy vc7\link_test-vc7-mt-gd-1_35.pdb "$(MSVCDIR)\lib" + copy vc7\link_test-vc7-mt-1_35.lib "$(MSVCDIR)\lib" + copy vc7\link_test-vc7-mt-1_35.dll "$(MSVCDIR)\bin" + copy vc7\liblink_test-vc7-mt-1_35.lib "$(MSVCDIR)\lib" + copy vc7\liblink_test-vc7-mt-gd-1_35.lib "$(MSVCDIR)\lib" + copy vc7\liblink_test-vc7-mt-gd-1_35.pdb "$(MSVCDIR)\lib" + +main_dir : + @if not exist "vc7\$(NULL)" mkdir vc7 + + +######################################################## +# +# section for liblink_test-vc7-s-1_35.lib +# +######################################################## +vc7/liblink_test-vc7-s-1_35/link_test.obj: link_test.cpp $(ALL_HEADER) + cl /c $(INCLUDES) /nologo /ML /W3 /GX /O2 /GB /GF /Gy /I..\..\..\..\ /DWIN32 /DNDEBUG /D_MBCS /D_LIB /FD $(CXXFLAGS) -Y- -Fo./vc7/liblink_test-vc7-s-1_35/ -Fdvc7/liblink_test-vc7-s-1_35.pdb link_test.cpp + +liblink_test-vc7-s-1_35_dir : + @if not exist "vc7\liblink_test-vc7-s-1_35\$(NULL)" mkdir vc7\liblink_test-vc7-s-1_35 + +liblink_test-vc7-s-1_35_clean : + del vc7\liblink_test-vc7-s-1_35\*.obj + del vc7\liblink_test-vc7-s-1_35\*.idb + del vc7\liblink_test-vc7-s-1_35\*.exp + del vc7\liblink_test-vc7-s-1_35\*.pch + +./vc7/liblink_test-vc7-s-1_35.lib : vc7/liblink_test-vc7-s-1_35/link_test.obj + link -lib /nologo /out:vc7/liblink_test-vc7-s-1_35.lib $(XSFLAGS) vc7/liblink_test-vc7-s-1_35/link_test.obj + +./vc7/liblink_test-vc7-s-1_35.exe : main.cpp ./vc7/liblink_test-vc7-s-1_35.lib + cl $(INCLUDES) /nologo /ML /W3 /GX /O2 /GB /GF /Gy /I..\..\..\..\ /DWIN32 /DNDEBUG /D_MBCS /D_LIB /FD /DBOOST_LIB_DIAGNOSTIC=1 $(CXXFLAGS) -o ./vc7/liblink_test-vc7-s-1_35.exe main.cpp /link /LIBPATH:./vc7 + vc7\liblink_test-vc7-s-1_35.exe + +######################################################## +# +# section for liblink_test-vc7-mt-s-1_35.lib +# +######################################################## +vc7/liblink_test-vc7-mt-s-1_35/link_test.obj: link_test.cpp $(ALL_HEADER) + cl /c $(INCLUDES) /nologo /MT /W3 /GX /O2 /GB /GF /Gy /I..\..\..\..\ /D_MT /DWIN32 /DNDEBUG /D_MBCS /D_LIB /FD $(CXXFLAGS) -Y- -Fo./vc7/liblink_test-vc7-mt-s-1_35/ -Fdvc7/liblink_test-vc7-mt-s-1_35.pdb link_test.cpp + +liblink_test-vc7-mt-s-1_35_dir : + @if not exist "vc7\liblink_test-vc7-mt-s-1_35\$(NULL)" mkdir vc7\liblink_test-vc7-mt-s-1_35 + +liblink_test-vc7-mt-s-1_35_clean : + del vc7\liblink_test-vc7-mt-s-1_35\*.obj + del vc7\liblink_test-vc7-mt-s-1_35\*.idb + del vc7\liblink_test-vc7-mt-s-1_35\*.exp + del vc7\liblink_test-vc7-mt-s-1_35\*.pch + +./vc7/liblink_test-vc7-mt-s-1_35.lib : vc7/liblink_test-vc7-mt-s-1_35/link_test.obj + link -lib /nologo /out:vc7/liblink_test-vc7-mt-s-1_35.lib $(XSFLAGS) vc7/liblink_test-vc7-mt-s-1_35/link_test.obj + +./vc7/liblink_test-vc7-mt-s-1_35.exe : main.cpp ./vc7/liblink_test-vc7-mt-s-1_35.lib + cl $(INCLUDES) /nologo /MT /W3 /GX /O2 /GB /GF /Gy /I..\..\..\..\ /D_MT /DWIN32 /DNDEBUG /D_MBCS /D_LIB /FD /DBOOST_LIB_DIAGNOSTIC=1 $(CXXFLAGS) -o ./vc7/liblink_test-vc7-mt-s-1_35.exe main.cpp /link /LIBPATH:./vc7 + vc7\liblink_test-vc7-mt-s-1_35.exe + +######################################################## +# +# section for liblink_test-vc7-sgd-1_35.lib +# +######################################################## +vc7/liblink_test-vc7-sgd-1_35/link_test.obj: link_test.cpp $(ALL_HEADER) + cl /c $(INCLUDES) /nologo /MLd /W3 /Gm /GX /Zi /Od /I..\..\..\..\ /DWIN32 /D_DEBUG /D_MBCS /D_LIB /FD /GX /RTC1 $(CXXFLAGS) -Y- -Fo./vc7/liblink_test-vc7-sgd-1_35/ -Fdvc7/liblink_test-vc7-sgd-1_35.pdb link_test.cpp + +liblink_test-vc7-sgd-1_35_dir : + @if not exist "vc7\liblink_test-vc7-sgd-1_35\$(NULL)" mkdir vc7\liblink_test-vc7-sgd-1_35 + +liblink_test-vc7-sgd-1_35_clean : + del vc7\liblink_test-vc7-sgd-1_35\*.obj + del vc7\liblink_test-vc7-sgd-1_35\*.idb + del vc7\liblink_test-vc7-sgd-1_35\*.exp + del vc7\liblink_test-vc7-sgd-1_35\*.pch + +./vc7/liblink_test-vc7-sgd-1_35.lib : vc7/liblink_test-vc7-sgd-1_35/link_test.obj + link -lib /nologo /out:vc7/liblink_test-vc7-sgd-1_35.lib $(XSFLAGS) vc7/liblink_test-vc7-sgd-1_35/link_test.obj + +./vc7/liblink_test-vc7-sgd-1_35.exe : main.cpp ./vc7/liblink_test-vc7-sgd-1_35.lib + cl $(INCLUDES) /nologo /MLd /W3 /Gm /GX /Zi /Od /I..\..\..\..\ /DWIN32 /D_DEBUG /D_MBCS /D_LIB /FD /GX /RTC1 /DBOOST_LIB_DIAGNOSTIC=1 $(CXXFLAGS) -o ./vc7/liblink_test-vc7-sgd-1_35.exe main.cpp /link /LIBPATH:./vc7 + vc7\liblink_test-vc7-sgd-1_35.exe + +######################################################## +# +# section for liblink_test-vc7-mt-sgd-1_35.lib +# +######################################################## +vc7/liblink_test-vc7-mt-sgd-1_35/link_test.obj: link_test.cpp $(ALL_HEADER) + cl /c $(INCLUDES) /nologo /MTd /W3 /Gm /GX /Zi /Od /I..\..\..\..\ /DWIN32 /D_MT /D_DEBUG /D_MBCS /D_LIB /FD /GX /RTC1 $(CXXFLAGS) -Y- -Fo./vc7/liblink_test-vc7-mt-sgd-1_35/ -Fdvc7/liblink_test-vc7-mt-sgd-1_35.pdb link_test.cpp + +liblink_test-vc7-mt-sgd-1_35_dir : + @if not exist "vc7\liblink_test-vc7-mt-sgd-1_35\$(NULL)" mkdir vc7\liblink_test-vc7-mt-sgd-1_35 + +liblink_test-vc7-mt-sgd-1_35_clean : + del vc7\liblink_test-vc7-mt-sgd-1_35\*.obj + del vc7\liblink_test-vc7-mt-sgd-1_35\*.idb + del vc7\liblink_test-vc7-mt-sgd-1_35\*.exp + del vc7\liblink_test-vc7-mt-sgd-1_35\*.pch + +./vc7/liblink_test-vc7-mt-sgd-1_35.lib : vc7/liblink_test-vc7-mt-sgd-1_35/link_test.obj + link -lib /nologo /out:vc7/liblink_test-vc7-mt-sgd-1_35.lib $(XSFLAGS) vc7/liblink_test-vc7-mt-sgd-1_35/link_test.obj + +./vc7/liblink_test-vc7-mt-sgd-1_35.exe : main.cpp ./vc7/liblink_test-vc7-mt-sgd-1_35.lib + cl $(INCLUDES) /nologo /MTd /W3 /Gm /GX /Zi /Od /I..\..\..\..\ /DWIN32 /D_MT /D_DEBUG /D_MBCS /D_LIB /FD /GX /RTC1 /DBOOST_LIB_DIAGNOSTIC=1 $(CXXFLAGS) -o ./vc7/liblink_test-vc7-mt-sgd-1_35.exe main.cpp /link /LIBPATH:./vc7 + vc7\liblink_test-vc7-mt-sgd-1_35.exe + +######################################################## +# +# section for link_test-vc7-mt-gd-1_35.lib +# +######################################################## +vc7/link_test-vc7-mt-gd-1_35/link_test.obj: link_test.cpp $(ALL_HEADER) + cl /c $(INCLUDES) /nologo /MDd /W3 /Gm /GX /Zi /Od /I..\..\..\..\ /D_DEBUG /DBOOST_DYN_LINK /DWIN32 /D_WINDOWS /D_MBCS /DUSRDLL /FD /GX /RTC1 $(CXXFLAGS) -Y- -Fo./vc7/link_test-vc7-mt-gd-1_35/ -Fdvc7/link_test-vc7-mt-gd-1_35.pdb link_test.cpp + +link_test-vc7-mt-gd-1_35_dir : + @if not exist "vc7\link_test-vc7-mt-gd-1_35\$(NULL)" mkdir vc7\link_test-vc7-mt-gd-1_35 + +link_test-vc7-mt-gd-1_35_clean : + del vc7\link_test-vc7-mt-gd-1_35\*.obj + del vc7\link_test-vc7-mt-gd-1_35\*.idb + del vc7\link_test-vc7-mt-gd-1_35\*.exp + del vc7\link_test-vc7-mt-gd-1_35\*.pch + +./vc7/link_test-vc7-mt-gd-1_35.lib : vc7/link_test-vc7-mt-gd-1_35/link_test.obj + link kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /incremental:yes /pdb:"vc7/link_test-vc7-mt-gd-1_35.pdb" /debug /machine:I386 /out:"vc7/link_test-vc7-mt-gd-1_35.dll" /implib:"vc7/link_test-vc7-mt-gd-1_35.lib" /LIBPATH:$(STLPORT_PATH)\lib $(XLFLAGS) vc7/link_test-vc7-mt-gd-1_35/link_test.obj + +./vc7/link_test-vc7-mt-gd-1_35.exe : main.cpp ./vc7/link_test-vc7-mt-gd-1_35.lib + cl $(INCLUDES) /nologo /MDd /W3 /Gm /GX /Zi /Od /I..\..\..\..\ /D_DEBUG /DBOOST_DYN_LINK /DWIN32 /D_WINDOWS /D_MBCS /DUSRDLL /FD /GX /RTC1 /DBOOST_LIB_DIAGNOSTIC=1 $(CXXFLAGS) -o ./vc7/link_test-vc7-mt-gd-1_35.exe main.cpp /link /LIBPATH:./vc7 + vc7\link_test-vc7-mt-gd-1_35.exe + +######################################################## +# +# section for link_test-vc7-mt-1_35.lib +# +######################################################## +vc7/link_test-vc7-mt-1_35/link_test.obj: link_test.cpp $(ALL_HEADER) + cl /c $(INCLUDES) /nologo /MD /W3 /GX /O2 /GB /GF /Gy /I..\..\..\..\ /DBOOST_DYN_LINK /DNDEBUG /DWIN32 /D_WINDOWS /D_MBCS /D_USRDLL /FD $(CXXFLAGS) -Y- -Fo./vc7/link_test-vc7-mt-1_35/ -Fdvc7/link_test-vc7-mt-1_35.pdb link_test.cpp + +link_test-vc7-mt-1_35_dir : + @if not exist "vc7\link_test-vc7-mt-1_35\$(NULL)" mkdir vc7\link_test-vc7-mt-1_35 + +link_test-vc7-mt-1_35_clean : + del vc7\link_test-vc7-mt-1_35\*.obj + del vc7\link_test-vc7-mt-1_35\*.idb + del vc7\link_test-vc7-mt-1_35\*.exp + del vc7\link_test-vc7-mt-1_35\*.pch + +./vc7/link_test-vc7-mt-1_35.lib : vc7/link_test-vc7-mt-1_35/link_test.obj + link kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /incremental:yes /pdb:"vc7/link_test-vc7-mt-1_35.pdb" /debug /machine:I386 /out:"vc7/link_test-vc7-mt-1_35.dll" /implib:"vc7/link_test-vc7-mt-1_35.lib" /LIBPATH:$(STLPORT_PATH)\lib $(XLFLAGS) vc7/link_test-vc7-mt-1_35/link_test.obj + +./vc7/link_test-vc7-mt-1_35.exe : main.cpp ./vc7/link_test-vc7-mt-1_35.lib + cl $(INCLUDES) /nologo /MD /W3 /GX /O2 /GB /GF /Gy /I..\..\..\..\ /DBOOST_DYN_LINK /DNDEBUG /DWIN32 /D_WINDOWS /D_MBCS /D_USRDLL /FD /DBOOST_LIB_DIAGNOSTIC=1 $(CXXFLAGS) -o ./vc7/link_test-vc7-mt-1_35.exe main.cpp /link /LIBPATH:./vc7 + vc7\link_test-vc7-mt-1_35.exe + +######################################################## +# +# section for liblink_test-vc7-mt-1_35.lib +# +######################################################## +vc7/liblink_test-vc7-mt-1_35/link_test.obj: link_test.cpp $(ALL_HEADER) + cl /c $(INCLUDES) /nologo /MD /W3 /GX /O2 /GB /GF /Gy /I..\..\..\..\ /DBOOST_REGEX_STATIC_LINK /DNDEBUG /DWIN32 /D_WINDOWS /D_MBCS /D_USRDLL /FD $(CXXFLAGS) -Y- -Fo./vc7/liblink_test-vc7-mt-1_35/ -Fdvc7/liblink_test-vc7-mt-1_35.pdb link_test.cpp + +liblink_test-vc7-mt-1_35_dir : + @if not exist "vc7\liblink_test-vc7-mt-1_35\$(NULL)" mkdir vc7\liblink_test-vc7-mt-1_35 + +liblink_test-vc7-mt-1_35_clean : + del vc7\liblink_test-vc7-mt-1_35\*.obj + del vc7\liblink_test-vc7-mt-1_35\*.idb + del vc7\liblink_test-vc7-mt-1_35\*.exp + del vc7\liblink_test-vc7-mt-1_35\*.pch + +./vc7/liblink_test-vc7-mt-1_35.lib : vc7/liblink_test-vc7-mt-1_35/link_test.obj + link -lib /nologo /out:vc7/liblink_test-vc7-mt-1_35.lib $(XSFLAGS) vc7/liblink_test-vc7-mt-1_35/link_test.obj + +./vc7/liblink_test-vc7-mt-1_35.exe : main.cpp ./vc7/liblink_test-vc7-mt-1_35.lib + cl $(INCLUDES) /nologo /MD /W3 /GX /O2 /GB /GF /Gy /I..\..\..\..\ /DBOOST_REGEX_STATIC_LINK /DNDEBUG /DWIN32 /D_WINDOWS /D_MBCS /D_USRDLL /FD /DBOOST_LIB_DIAGNOSTIC=1 $(CXXFLAGS) -o ./vc7/liblink_test-vc7-mt-1_35.exe main.cpp /link /LIBPATH:./vc7 + vc7\liblink_test-vc7-mt-1_35.exe + +######################################################## +# +# section for liblink_test-vc7-mt-gd-1_35.lib +# +######################################################## +vc7/liblink_test-vc7-mt-gd-1_35/link_test.obj: link_test.cpp $(ALL_HEADER) + cl /c $(INCLUDES) /nologo /MDd /W3 /Gm /GX /Zi /Od /I..\..\..\..\ /DBOOST_REGEX_STATIC_LINK /D_DEBUG /DWIN32 /D_WINDOWS /D_MBCS /DUSRDLL /FD /GX /RTC1 $(CXXFLAGS) -Y- -Fo./vc7/liblink_test-vc7-mt-gd-1_35/ -Fdvc7/liblink_test-vc7-mt-gd-1_35.pdb link_test.cpp + +liblink_test-vc7-mt-gd-1_35_dir : + @if not exist "vc7\liblink_test-vc7-mt-gd-1_35\$(NULL)" mkdir vc7\liblink_test-vc7-mt-gd-1_35 + +liblink_test-vc7-mt-gd-1_35_clean : + del vc7\liblink_test-vc7-mt-gd-1_35\*.obj + del vc7\liblink_test-vc7-mt-gd-1_35\*.idb + del vc7\liblink_test-vc7-mt-gd-1_35\*.exp + del vc7\liblink_test-vc7-mt-gd-1_35\*.pch + +./vc7/liblink_test-vc7-mt-gd-1_35.lib : vc7/liblink_test-vc7-mt-gd-1_35/link_test.obj + link -lib /nologo /out:vc7/liblink_test-vc7-mt-gd-1_35.lib $(XSFLAGS) vc7/liblink_test-vc7-mt-gd-1_35/link_test.obj + +./vc7/liblink_test-vc7-mt-gd-1_35.exe : main.cpp ./vc7/liblink_test-vc7-mt-gd-1_35.lib + cl $(INCLUDES) /nologo /MDd /W3 /Gm /GX /Zi /Od /I..\..\..\..\ /DBOOST_REGEX_STATIC_LINK /D_DEBUG /DWIN32 /D_WINDOWS /D_MBCS /DUSRDLL /FD /GX /RTC1 /DBOOST_LIB_DIAGNOSTIC=1 $(CXXFLAGS) -o ./vc7/liblink_test-vc7-mt-gd-1_35.exe main.cpp /link /LIBPATH:./vc7 + vc7\liblink_test-vc7-mt-gd-1_35.exe + diff --git a/libs/config/test/link/vc71-stlport.mak b/libs/config/test/link/vc71-stlport.mak new file mode 100644 index 0000000000..5725e4cd68 --- /dev/null +++ b/libs/config/test/link/vc71-stlport.mak @@ -0,0 +1,292 @@ +# copyright John Maddock 2005 +# 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) +# +# auto generated makefile for VC6+STLPort +# +# usage: +# make +# brings libraries up to date +# make install +# brings libraries up to date and copies binaries to your VC6 /lib and /bin directories (recomended) +# + +# +# Add additional compiler options here: +# +CXXFLAGS= +# +# Add additional include directories here: +# +INCLUDES= +# +# add additional linker flags here: +# +XLFLAGS= +# +# add additional static-library creation flags here: +# +XSFLAGS= + +!IF "$(OS)" == "Windows_NT" +NULL= +!ELSE +NULL=nul +!ENDIF + +!IF "$(MSVCDIR)" == "" +!ERROR Variable MSVCDIR not set. +!ENDIF + +!IF "$(STLPORT_PATH)" == "" +!ERROR Variable STLPORT_PATH not set. +!ENDIF + + +ALL_HEADER= + +all : main_dir liblink_test-vc71-stlport-mt-s-1_35_dir ./vc71-stlport/liblink_test-vc71-stlport-mt-s-1_35.lib ./vc71-stlport/liblink_test-vc71-stlport-mt-s-1_35.exe liblink_test-vc71-stlport-mt-sgd-1_35_dir ./vc71-stlport/liblink_test-vc71-stlport-mt-sgd-1_35.lib ./vc71-stlport/liblink_test-vc71-stlport-mt-sgd-1_35.exe link_test-vc71-stlport-mt-gd-1_35_dir ./vc71-stlport/link_test-vc71-stlport-mt-gd-1_35.lib ./vc71-stlport/link_test-vc71-stlport-mt-gd-1_35.exe link_test-vc71-stlport-mt-1_35_dir ./vc71-stlport/link_test-vc71-stlport-mt-1_35.lib ./vc71-stlport/link_test-vc71-stlport-mt-1_35.exe liblink_test-vc71-stlport-mt-1_35_dir ./vc71-stlport/liblink_test-vc71-stlport-mt-1_35.lib ./vc71-stlport/liblink_test-vc71-stlport-mt-1_35.exe liblink_test-vc71-stlport-mt-gd-1_35_dir ./vc71-stlport/liblink_test-vc71-stlport-mt-gd-1_35.lib ./vc71-stlport/liblink_test-vc71-stlport-mt-gd-1_35.exe link_test-vc71-stlport-mt-pgd-1_35_dir ./vc71-stlport/link_test-vc71-stlport-mt-pgd-1_35.lib ./vc71-stlport/link_test-vc71-stlport-mt-pgd-1_35.exe liblink_test-vc71-stlport-mt-spgd-1_35_dir ./vc71-stlport/liblink_test-vc71-stlport-mt-spgd-1_35.lib ./vc71-stlport/liblink_test-vc71-stlport-mt-spgd-1_35.exe liblink_test-vc71-stlport-mt-pgd-1_35_dir ./vc71-stlport/liblink_test-vc71-stlport-mt-pgd-1_35.lib ./vc71-stlport/liblink_test-vc71-stlport-mt-pgd-1_35.exe + +clean : liblink_test-vc71-stlport-mt-s-1_35_clean liblink_test-vc71-stlport-mt-sgd-1_35_clean link_test-vc71-stlport-mt-gd-1_35_clean link_test-vc71-stlport-mt-1_35_clean liblink_test-vc71-stlport-mt-1_35_clean liblink_test-vc71-stlport-mt-gd-1_35_clean link_test-vc71-stlport-mt-pgd-1_35_clean liblink_test-vc71-stlport-mt-spgd-1_35_clean liblink_test-vc71-stlport-mt-pgd-1_35_clean + +install : stlport_check all + copy vc71-stlport\liblink_test-vc71-stlport-mt-s-1_35.lib "$(MSVCDIR)\lib" + copy vc71-stlport\liblink_test-vc71-stlport-mt-sgd-1_35.lib "$(MSVCDIR)\lib" + copy vc71-stlport\link_test-vc71-stlport-mt-gd-1_35.lib "$(MSVCDIR)\lib" + copy vc71-stlport\link_test-vc71-stlport-mt-gd-1_35.dll "$(MSVCDIR)\bin" + copy vc71-stlport\link_test-vc71-stlport-mt-1_35.lib "$(MSVCDIR)\lib" + copy vc71-stlport\link_test-vc71-stlport-mt-1_35.dll "$(MSVCDIR)\bin" + copy vc71-stlport\liblink_test-vc71-stlport-mt-1_35.lib "$(MSVCDIR)\lib" + copy vc71-stlport\liblink_test-vc71-stlport-mt-gd-1_35.lib "$(MSVCDIR)\lib" + copy vc71-stlport\link_test-vc71-stlport-mt-pgd-1_35.lib "$(MSVCDIR)\lib" + copy vc71-stlport\link_test-vc71-stlport-mt-pgd-1_35.dll "$(MSVCDIR)\bin" + copy vc71-stlport\link_test-vc71-stlport-mt-pgd-1_35.pdb "$(MSVCDIR)\lib" + copy vc71-stlport\liblink_test-vc71-stlport-mt-spgd-1_35.lib "$(MSVCDIR)\lib" + copy vc71-stlport\liblink_test-vc71-stlport-mt-spgd-1_35.pdb "$(MSVCDIR)\lib" + copy vc71-stlport\liblink_test-vc71-stlport-mt-pgd-1_35.lib "$(MSVCDIR)\lib" + copy vc71-stlport\liblink_test-vc71-stlport-mt-pgd-1_35.pdb "$(MSVCDIR)\lib" + +main_dir : + @if not exist "vc71-stlport\$(NULL)" mkdir vc71-stlport + +stlport_check : $(STLPORT_PATH)\stlport\string + echo + + +######################################################## +# +# section for liblink_test-vc71-stlport-mt-s-1_35.lib +# +######################################################## +vc71-stlport/liblink_test-vc71-stlport-mt-s-1_35/link_test.obj: link_test.cpp $(ALL_HEADER) + cl /c $(INCLUDES) /nologo /MT /W3 /GX /O2 /GB /GF /Gy /I$(STLPORT_PATH)\stlport /I..\..\..\..\ /D_MT /DWIN32 /DNDEBUG /D_MBCS /D_LIB $(CXXFLAGS) -Y- -Fo./vc71-stlport/liblink_test-vc71-stlport-mt-s-1_35/ -Fdvc71-stlport/liblink_test-vc71-stlport-mt-s-1_35.pdb link_test.cpp + +liblink_test-vc71-stlport-mt-s-1_35_dir : + @if not exist "vc71-stlport\liblink_test-vc71-stlport-mt-s-1_35\$(NULL)" mkdir vc71-stlport\liblink_test-vc71-stlport-mt-s-1_35 + +liblink_test-vc71-stlport-mt-s-1_35_clean : + del vc71-stlport\liblink_test-vc71-stlport-mt-s-1_35\*.obj + del vc71-stlport\liblink_test-vc71-stlport-mt-s-1_35\*.idb + del vc71-stlport\liblink_test-vc71-stlport-mt-s-1_35\*.exp + del vc71-stlport\liblink_test-vc71-stlport-mt-s-1_35\*.pch + +./vc71-stlport/liblink_test-vc71-stlport-mt-s-1_35.lib : vc71-stlport/liblink_test-vc71-stlport-mt-s-1_35/link_test.obj + link -lib /nologo /out:vc71-stlport/liblink_test-vc71-stlport-mt-s-1_35.lib $(XSFLAGS) vc71-stlport/liblink_test-vc71-stlport-mt-s-1_35/link_test.obj + +./vc71-stlport/liblink_test-vc71-stlport-mt-s-1_35.exe : main.cpp ./vc71-stlport/liblink_test-vc71-stlport-mt-s-1_35.lib + cl $(INCLUDES) /nologo /MT /W3 /GX /O2 /GB /GF /Gy /I$(STLPORT_PATH)\stlport /I..\..\..\..\ /D_MT /DWIN32 /DNDEBUG /D_MBCS /D_LIB /DBOOST_LIB_DIAGNOSTIC=1 $(CXXFLAGS) -o ./vc71-stlport/liblink_test-vc71-stlport-mt-s-1_35.exe main.cpp /link /LIBPATH:./vc71-stlport + vc71-stlport\liblink_test-vc71-stlport-mt-s-1_35.exe + +######################################################## +# +# section for liblink_test-vc71-stlport-mt-sgd-1_35.lib +# +######################################################## +vc71-stlport/liblink_test-vc71-stlport-mt-sgd-1_35/link_test.obj: link_test.cpp $(ALL_HEADER) + cl /c $(INCLUDES) /nologo /MTd /W3 /Gm /GX /Zi /Od /I$(STLPORT_PATH)\stlport /I..\..\..\..\ /DWIN32 /D_MT /D_DEBUG /D_MBCS /D_LIB /GX /RTC1 $(CXXFLAGS) -Y- -Fo./vc71-stlport/liblink_test-vc71-stlport-mt-sgd-1_35/ -Fdvc71-stlport/liblink_test-vc71-stlport-mt-sgd-1_35.pdb link_test.cpp + +liblink_test-vc71-stlport-mt-sgd-1_35_dir : + @if not exist "vc71-stlport\liblink_test-vc71-stlport-mt-sgd-1_35\$(NULL)" mkdir vc71-stlport\liblink_test-vc71-stlport-mt-sgd-1_35 + +liblink_test-vc71-stlport-mt-sgd-1_35_clean : + del vc71-stlport\liblink_test-vc71-stlport-mt-sgd-1_35\*.obj + del vc71-stlport\liblink_test-vc71-stlport-mt-sgd-1_35\*.idb + del vc71-stlport\liblink_test-vc71-stlport-mt-sgd-1_35\*.exp + del vc71-stlport\liblink_test-vc71-stlport-mt-sgd-1_35\*.pch + +./vc71-stlport/liblink_test-vc71-stlport-mt-sgd-1_35.lib : vc71-stlport/liblink_test-vc71-stlport-mt-sgd-1_35/link_test.obj + link -lib /nologo /out:vc71-stlport/liblink_test-vc71-stlport-mt-sgd-1_35.lib $(XSFLAGS) vc71-stlport/liblink_test-vc71-stlport-mt-sgd-1_35/link_test.obj + +./vc71-stlport/liblink_test-vc71-stlport-mt-sgd-1_35.exe : main.cpp ./vc71-stlport/liblink_test-vc71-stlport-mt-sgd-1_35.lib + cl $(INCLUDES) /nologo /MTd /W3 /Gm /GX /Zi /Od /I$(STLPORT_PATH)\stlport /I..\..\..\..\ /DWIN32 /D_MT /D_DEBUG /D_MBCS /D_LIB /GX /RTC1 /DBOOST_LIB_DIAGNOSTIC=1 $(CXXFLAGS) -o ./vc71-stlport/liblink_test-vc71-stlport-mt-sgd-1_35.exe main.cpp /link /LIBPATH:./vc71-stlport + vc71-stlport\liblink_test-vc71-stlport-mt-sgd-1_35.exe + +######################################################## +# +# section for link_test-vc71-stlport-mt-gd-1_35.lib +# +######################################################## +vc71-stlport/link_test-vc71-stlport-mt-gd-1_35/link_test.obj: link_test.cpp $(ALL_HEADER) + cl /c $(INCLUDES) /nologo /MDd /W3 /Gm /GX /Zi /Od /I$(STLPORT_PATH)\stlport /I..\..\..\..\ /DBOOST_DYN_LINK /D_DEBUG /DWIN32 /D_WINDOWS /D_MBCS /DUSRDLL /GX /RTC1 $(CXXFLAGS) -Y- -Fo./vc71-stlport/link_test-vc71-stlport-mt-gd-1_35/ -Fdvc71-stlport/link_test-vc71-stlport-mt-gd-1_35.pdb link_test.cpp + +link_test-vc71-stlport-mt-gd-1_35_dir : + @if not exist "vc71-stlport\link_test-vc71-stlport-mt-gd-1_35\$(NULL)" mkdir vc71-stlport\link_test-vc71-stlport-mt-gd-1_35 + +link_test-vc71-stlport-mt-gd-1_35_clean : + del vc71-stlport\link_test-vc71-stlport-mt-gd-1_35\*.obj + del vc71-stlport\link_test-vc71-stlport-mt-gd-1_35\*.idb + del vc71-stlport\link_test-vc71-stlport-mt-gd-1_35\*.exp + del vc71-stlport\link_test-vc71-stlport-mt-gd-1_35\*.pch + +./vc71-stlport/link_test-vc71-stlport-mt-gd-1_35.lib : vc71-stlport/link_test-vc71-stlport-mt-gd-1_35/link_test.obj + link kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /incremental:yes /pdb:"vc71-stlport/link_test-vc71-stlport-mt-gd-1_35.pdb" /debug /machine:I386 /out:"vc71-stlport/link_test-vc71-stlport-mt-gd-1_35.dll" /implib:"vc71-stlport/link_test-vc71-stlport-mt-gd-1_35.lib" /LIBPATH:$(STLPORT_PATH)\lib $(XLFLAGS) vc71-stlport/link_test-vc71-stlport-mt-gd-1_35/link_test.obj + +./vc71-stlport/link_test-vc71-stlport-mt-gd-1_35.exe : main.cpp ./vc71-stlport/link_test-vc71-stlport-mt-gd-1_35.lib + cl $(INCLUDES) /nologo /MDd /W3 /Gm /GX /Zi /Od /I$(STLPORT_PATH)\stlport /I..\..\..\..\ /DBOOST_DYN_LINK /D_DEBUG /DWIN32 /D_WINDOWS /D_MBCS /DUSRDLL /GX /RTC1 /DBOOST_LIB_DIAGNOSTIC=1 $(CXXFLAGS) -o ./vc71-stlport/link_test-vc71-stlport-mt-gd-1_35.exe main.cpp /link /LIBPATH:./vc71-stlport + vc71-stlport\link_test-vc71-stlport-mt-gd-1_35.exe + +######################################################## +# +# section for link_test-vc71-stlport-mt-1_35.lib +# +######################################################## +vc71-stlport/link_test-vc71-stlport-mt-1_35/link_test.obj: link_test.cpp $(ALL_HEADER) + cl /c $(INCLUDES) /nologo /MD /W3 /GX /O2 /GB /GF /I$(STLPORT_PATH)\stlport /Gy /I..\..\..\..\ /DBOOST_DYN_LINK /DNDEBUG /DWIN32 /D_WINDOWS /D_MBCS /D_USRDLL $(CXXFLAGS) -Y- -Fo./vc71-stlport/link_test-vc71-stlport-mt-1_35/ -Fdvc71-stlport/link_test-vc71-stlport-mt-1_35.pdb link_test.cpp + +link_test-vc71-stlport-mt-1_35_dir : + @if not exist "vc71-stlport\link_test-vc71-stlport-mt-1_35\$(NULL)" mkdir vc71-stlport\link_test-vc71-stlport-mt-1_35 + +link_test-vc71-stlport-mt-1_35_clean : + del vc71-stlport\link_test-vc71-stlport-mt-1_35\*.obj + del vc71-stlport\link_test-vc71-stlport-mt-1_35\*.idb + del vc71-stlport\link_test-vc71-stlport-mt-1_35\*.exp + del vc71-stlport\link_test-vc71-stlport-mt-1_35\*.pch + +./vc71-stlport/link_test-vc71-stlport-mt-1_35.lib : vc71-stlport/link_test-vc71-stlport-mt-1_35/link_test.obj + link kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /incremental:yes /pdb:"vc71-stlport/link_test-vc71-stlport-mt-1_35.pdb" /debug /machine:I386 /out:"vc71-stlport/link_test-vc71-stlport-mt-1_35.dll" /implib:"vc71-stlport/link_test-vc71-stlport-mt-1_35.lib" /LIBPATH:$(STLPORT_PATH)\lib $(XLFLAGS) vc71-stlport/link_test-vc71-stlport-mt-1_35/link_test.obj + +./vc71-stlport/link_test-vc71-stlport-mt-1_35.exe : main.cpp ./vc71-stlport/link_test-vc71-stlport-mt-1_35.lib + cl $(INCLUDES) /nologo /MD /W3 /GX /O2 /GB /GF /I$(STLPORT_PATH)\stlport /Gy /I..\..\..\..\ /DBOOST_DYN_LINK /DNDEBUG /DWIN32 /D_WINDOWS /D_MBCS /D_USRDLL /DBOOST_LIB_DIAGNOSTIC=1 $(CXXFLAGS) -o ./vc71-stlport/link_test-vc71-stlport-mt-1_35.exe main.cpp /link /LIBPATH:./vc71-stlport + vc71-stlport\link_test-vc71-stlport-mt-1_35.exe + +######################################################## +# +# section for liblink_test-vc71-stlport-mt-1_35.lib +# +######################################################## +vc71-stlport/liblink_test-vc71-stlport-mt-1_35/link_test.obj: link_test.cpp $(ALL_HEADER) + cl /c $(INCLUDES) /nologo /MD /W3 /GX /O2 /GB /GF /Gy /I$(STLPORT_PATH)\stlport /I..\..\..\..\ /DBOOST_REGEX_STATIC_LINK /DNDEBUG /DWIN32 /D_WINDOWS /D_MBCS /D_USRDLL $(CXXFLAGS) -Y- -Fo./vc71-stlport/liblink_test-vc71-stlport-mt-1_35/ -Fdvc71-stlport/liblink_test-vc71-stlport-mt-1_35.pdb link_test.cpp + +liblink_test-vc71-stlport-mt-1_35_dir : + @if not exist "vc71-stlport\liblink_test-vc71-stlport-mt-1_35\$(NULL)" mkdir vc71-stlport\liblink_test-vc71-stlport-mt-1_35 + +liblink_test-vc71-stlport-mt-1_35_clean : + del vc71-stlport\liblink_test-vc71-stlport-mt-1_35\*.obj + del vc71-stlport\liblink_test-vc71-stlport-mt-1_35\*.idb + del vc71-stlport\liblink_test-vc71-stlport-mt-1_35\*.exp + del vc71-stlport\liblink_test-vc71-stlport-mt-1_35\*.pch + +./vc71-stlport/liblink_test-vc71-stlport-mt-1_35.lib : vc71-stlport/liblink_test-vc71-stlport-mt-1_35/link_test.obj + link -lib /nologo /out:vc71-stlport/liblink_test-vc71-stlport-mt-1_35.lib $(XSFLAGS) vc71-stlport/liblink_test-vc71-stlport-mt-1_35/link_test.obj + +./vc71-stlport/liblink_test-vc71-stlport-mt-1_35.exe : main.cpp ./vc71-stlport/liblink_test-vc71-stlport-mt-1_35.lib + cl $(INCLUDES) /nologo /MD /W3 /GX /O2 /GB /GF /Gy /I$(STLPORT_PATH)\stlport /I..\..\..\..\ /DBOOST_REGEX_STATIC_LINK /DNDEBUG /DWIN32 /D_WINDOWS /D_MBCS /D_USRDLL /DBOOST_LIB_DIAGNOSTIC=1 $(CXXFLAGS) -o ./vc71-stlport/liblink_test-vc71-stlport-mt-1_35.exe main.cpp /link /LIBPATH:./vc71-stlport + vc71-stlport\liblink_test-vc71-stlport-mt-1_35.exe + +######################################################## +# +# section for liblink_test-vc71-stlport-mt-gd-1_35.lib +# +######################################################## +vc71-stlport/liblink_test-vc71-stlport-mt-gd-1_35/link_test.obj: link_test.cpp $(ALL_HEADER) + cl /c $(INCLUDES) /nologo /MDd /W3 /Gm /GX /Zi /Od /I$(STLPORT_PATH)\stlport /I..\..\..\..\ /DBOOST_REGEX_STATIC_LINK /D_DEBUG /DWIN32 /D_WINDOWS /D_MBCS /DUSRDLL /GX /RTC1 $(CXXFLAGS) -Y- -Fo./vc71-stlport/liblink_test-vc71-stlport-mt-gd-1_35/ -Fdvc71-stlport/liblink_test-vc71-stlport-mt-gd-1_35.pdb link_test.cpp + +liblink_test-vc71-stlport-mt-gd-1_35_dir : + @if not exist "vc71-stlport\liblink_test-vc71-stlport-mt-gd-1_35\$(NULL)" mkdir vc71-stlport\liblink_test-vc71-stlport-mt-gd-1_35 + +liblink_test-vc71-stlport-mt-gd-1_35_clean : + del vc71-stlport\liblink_test-vc71-stlport-mt-gd-1_35\*.obj + del vc71-stlport\liblink_test-vc71-stlport-mt-gd-1_35\*.idb + del vc71-stlport\liblink_test-vc71-stlport-mt-gd-1_35\*.exp + del vc71-stlport\liblink_test-vc71-stlport-mt-gd-1_35\*.pch + +./vc71-stlport/liblink_test-vc71-stlport-mt-gd-1_35.lib : vc71-stlport/liblink_test-vc71-stlport-mt-gd-1_35/link_test.obj + link -lib /nologo /out:vc71-stlport/liblink_test-vc71-stlport-mt-gd-1_35.lib $(XSFLAGS) vc71-stlport/liblink_test-vc71-stlport-mt-gd-1_35/link_test.obj + +./vc71-stlport/liblink_test-vc71-stlport-mt-gd-1_35.exe : main.cpp ./vc71-stlport/liblink_test-vc71-stlport-mt-gd-1_35.lib + cl $(INCLUDES) /nologo /MDd /W3 /Gm /GX /Zi /Od /I$(STLPORT_PATH)\stlport /I..\..\..\..\ /DBOOST_REGEX_STATIC_LINK /D_DEBUG /DWIN32 /D_WINDOWS /D_MBCS /DUSRDLL /GX /RTC1 /DBOOST_LIB_DIAGNOSTIC=1 $(CXXFLAGS) -o ./vc71-stlport/liblink_test-vc71-stlport-mt-gd-1_35.exe main.cpp /link /LIBPATH:./vc71-stlport + vc71-stlport\liblink_test-vc71-stlport-mt-gd-1_35.exe + +######################################################## +# +# section for link_test-vc71-stlport-mt-pgd-1_35.lib +# +######################################################## +vc71-stlport/link_test-vc71-stlport-mt-pgd-1_35/link_test.obj: link_test.cpp $(ALL_HEADER) + cl /c $(INCLUDES) /nologo /MDd /W3 /Gm /GX /Zi /Od /I$(STLPORT_PATH)\stlport /I..\..\..\..\ /DBOOST_DYN_LINK /D__STL_DEBUG /D_STLP_DEBUG /D_DEBUG /DWIN32 /D_WINDOWS /D_MBCS /DUSRDLL /GX /RTC1 $(CXXFLAGS) -Y- -Fo./vc71-stlport/link_test-vc71-stlport-mt-pgd-1_35/ -Fdvc71-stlport/link_test-vc71-stlport-mt-pgd-1_35.pdb link_test.cpp + +link_test-vc71-stlport-mt-pgd-1_35_dir : + @if not exist "vc71-stlport\link_test-vc71-stlport-mt-pgd-1_35\$(NULL)" mkdir vc71-stlport\link_test-vc71-stlport-mt-pgd-1_35 + +link_test-vc71-stlport-mt-pgd-1_35_clean : + del vc71-stlport\link_test-vc71-stlport-mt-pgd-1_35\*.obj + del vc71-stlport\link_test-vc71-stlport-mt-pgd-1_35\*.idb + del vc71-stlport\link_test-vc71-stlport-mt-pgd-1_35\*.exp + del vc71-stlport\link_test-vc71-stlport-mt-pgd-1_35\*.pch + +./vc71-stlport/link_test-vc71-stlport-mt-pgd-1_35.lib : vc71-stlport/link_test-vc71-stlport-mt-pgd-1_35/link_test.obj + link kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /incremental:yes /pdb:"vc71-stlport/link_test-vc71-stlport-mt-pgd-1_35.pdb" /debug /machine:I386 /out:"vc71-stlport/link_test-vc71-stlport-mt-pgd-1_35.dll" /implib:"vc71-stlport/link_test-vc71-stlport-mt-pgd-1_35.lib" /LIBPATH:$(STLPORT_PATH)\lib $(XLFLAGS) vc71-stlport/link_test-vc71-stlport-mt-pgd-1_35/link_test.obj + +./vc71-stlport/link_test-vc71-stlport-mt-pgd-1_35.exe : main.cpp ./vc71-stlport/link_test-vc71-stlport-mt-pgd-1_35.lib + cl $(INCLUDES) /nologo /MDd /W3 /Gm /GX /Zi /Od /I$(STLPORT_PATH)\stlport /I..\..\..\..\ /DBOOST_DYN_LINK /D__STL_DEBUG /D_STLP_DEBUG /D_DEBUG /DWIN32 /D_WINDOWS /D_MBCS /DUSRDLL /GX /RTC1 /DBOOST_LIB_DIAGNOSTIC=1 $(CXXFLAGS) -o ./vc71-stlport/link_test-vc71-stlport-mt-pgd-1_35.exe main.cpp /link /LIBPATH:./vc71-stlport + vc71-stlport\link_test-vc71-stlport-mt-pgd-1_35.exe + +######################################################## +# +# section for liblink_test-vc71-stlport-mt-spgd-1_35.lib +# +######################################################## +vc71-stlport/liblink_test-vc71-stlport-mt-spgd-1_35/link_test.obj: link_test.cpp $(ALL_HEADER) + cl /c $(INCLUDES) /nologo /MTd /W3 /Gm /GX /Zi /Od /I$(STLPORT_PATH)\stlport /I..\..\..\..\ /D__STL_DEBUG /D_STLP_DEBUG /DWIN32 /D_MT /D_DEBUG /D_MBCS /D_LIB /GX /RTC1 $(CXXFLAGS) -Y- -Fo./vc71-stlport/liblink_test-vc71-stlport-mt-spgd-1_35/ -Fdvc71-stlport/liblink_test-vc71-stlport-mt-spgd-1_35.pdb link_test.cpp + +liblink_test-vc71-stlport-mt-spgd-1_35_dir : + @if not exist "vc71-stlport\liblink_test-vc71-stlport-mt-spgd-1_35\$(NULL)" mkdir vc71-stlport\liblink_test-vc71-stlport-mt-spgd-1_35 + +liblink_test-vc71-stlport-mt-spgd-1_35_clean : + del vc71-stlport\liblink_test-vc71-stlport-mt-spgd-1_35\*.obj + del vc71-stlport\liblink_test-vc71-stlport-mt-spgd-1_35\*.idb + del vc71-stlport\liblink_test-vc71-stlport-mt-spgd-1_35\*.exp + del vc71-stlport\liblink_test-vc71-stlport-mt-spgd-1_35\*.pch + +./vc71-stlport/liblink_test-vc71-stlport-mt-spgd-1_35.lib : vc71-stlport/liblink_test-vc71-stlport-mt-spgd-1_35/link_test.obj + link -lib /nologo /out:vc71-stlport/liblink_test-vc71-stlport-mt-spgd-1_35.lib $(XSFLAGS) vc71-stlport/liblink_test-vc71-stlport-mt-spgd-1_35/link_test.obj + +./vc71-stlport/liblink_test-vc71-stlport-mt-spgd-1_35.exe : main.cpp ./vc71-stlport/liblink_test-vc71-stlport-mt-spgd-1_35.lib + cl $(INCLUDES) /nologo /MTd /W3 /Gm /GX /Zi /Od /I$(STLPORT_PATH)\stlport /I..\..\..\..\ /D__STL_DEBUG /D_STLP_DEBUG /DWIN32 /D_MT /D_DEBUG /D_MBCS /D_LIB /GX /RTC1 /DBOOST_LIB_DIAGNOSTIC=1 $(CXXFLAGS) -o ./vc71-stlport/liblink_test-vc71-stlport-mt-spgd-1_35.exe main.cpp /link /LIBPATH:./vc71-stlport + vc71-stlport\liblink_test-vc71-stlport-mt-spgd-1_35.exe + +######################################################## +# +# section for liblink_test-vc71-stlport-mt-pgd-1_35.lib +# +######################################################## +vc71-stlport/liblink_test-vc71-stlport-mt-pgd-1_35/link_test.obj: link_test.cpp $(ALL_HEADER) + cl /c $(INCLUDES) /nologo /MDd /W3 /Gm /GX /Zi /Od /I$(STLPORT_PATH)\stlport /I..\..\..\..\ /DBOOST_REGEX_STATIC_LINK /D__STL_DEBUG /D_STLP_DEBUG /D_DEBUG /DWIN32 /D_WINDOWS /D_MBCS /DUSRDLL /GX /RTC1 $(CXXFLAGS) -Y- -Fo./vc71-stlport/liblink_test-vc71-stlport-mt-pgd-1_35/ -Fdvc71-stlport/liblink_test-vc71-stlport-mt-pgd-1_35.pdb link_test.cpp + +liblink_test-vc71-stlport-mt-pgd-1_35_dir : + @if not exist "vc71-stlport\liblink_test-vc71-stlport-mt-pgd-1_35\$(NULL)" mkdir vc71-stlport\liblink_test-vc71-stlport-mt-pgd-1_35 + +liblink_test-vc71-stlport-mt-pgd-1_35_clean : + del vc71-stlport\liblink_test-vc71-stlport-mt-pgd-1_35\*.obj + del vc71-stlport\liblink_test-vc71-stlport-mt-pgd-1_35\*.idb + del vc71-stlport\liblink_test-vc71-stlport-mt-pgd-1_35\*.exp + del vc71-stlport\liblink_test-vc71-stlport-mt-pgd-1_35\*.pch + +./vc71-stlport/liblink_test-vc71-stlport-mt-pgd-1_35.lib : vc71-stlport/liblink_test-vc71-stlport-mt-pgd-1_35/link_test.obj + link -lib /nologo /out:vc71-stlport/liblink_test-vc71-stlport-mt-pgd-1_35.lib $(XSFLAGS) vc71-stlport/liblink_test-vc71-stlport-mt-pgd-1_35/link_test.obj + +./vc71-stlport/liblink_test-vc71-stlport-mt-pgd-1_35.exe : main.cpp ./vc71-stlport/liblink_test-vc71-stlport-mt-pgd-1_35.lib + cl $(INCLUDES) /nologo /MDd /W3 /Gm /GX /Zi /Od /I$(STLPORT_PATH)\stlport /I..\..\..\..\ /DBOOST_REGEX_STATIC_LINK /D__STL_DEBUG /D_STLP_DEBUG /D_DEBUG /DWIN32 /D_WINDOWS /D_MBCS /DUSRDLL /GX /RTC1 /DBOOST_LIB_DIAGNOSTIC=1 $(CXXFLAGS) -o ./vc71-stlport/liblink_test-vc71-stlport-mt-pgd-1_35.exe main.cpp /link /LIBPATH:./vc71-stlport + vc71-stlport\liblink_test-vc71-stlport-mt-pgd-1_35.exe + diff --git a/libs/config/test/link/vc71.mak b/libs/config/test/link/vc71.mak new file mode 100644 index 0000000000..8873946319 --- /dev/null +++ b/libs/config/test/link/vc71.mak @@ -0,0 +1,260 @@ +# copyright John Maddock 2005 +# 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) +# +# auto generated makefile for VC6 compiler +# +# usage: +# make +# brings libraries up to date +# make install +# brings libraries up to date and copies binaries to your VC6 /lib and /bin directories (recomended) +# + +# +# Add additional compiler options here: +# +CXXFLAGS= +# +# Add additional include directories here: +# +INCLUDES= +# +# add additional linker flags here: +# +XLFLAGS= +# +# add additional static-library creation flags here: +# +XSFLAGS= + +!IF "$(OS)" == "Windows_NT" +NULL= +!ELSE +NULL=nul +!ENDIF + +!IF "$(MSVCDIR)" == "" +!ERROR Variable MSVCDIR not set. +!ENDIF + + +ALL_HEADER= + +all : main_dir liblink_test-vc71-s-1_35_dir ./vc71/liblink_test-vc71-s-1_35.lib ./vc71/liblink_test-vc71-s-1_35.exe liblink_test-vc71-mt-s-1_35_dir ./vc71/liblink_test-vc71-mt-s-1_35.lib ./vc71/liblink_test-vc71-mt-s-1_35.exe liblink_test-vc71-sgd-1_35_dir ./vc71/liblink_test-vc71-sgd-1_35.lib ./vc71/liblink_test-vc71-sgd-1_35.exe liblink_test-vc71-mt-sgd-1_35_dir ./vc71/liblink_test-vc71-mt-sgd-1_35.lib ./vc71/liblink_test-vc71-mt-sgd-1_35.exe link_test-vc71-mt-gd-1_35_dir ./vc71/link_test-vc71-mt-gd-1_35.lib ./vc71/link_test-vc71-mt-gd-1_35.exe link_test-vc71-mt-1_35_dir ./vc71/link_test-vc71-mt-1_35.lib ./vc71/link_test-vc71-mt-1_35.exe liblink_test-vc71-mt-1_35_dir ./vc71/liblink_test-vc71-mt-1_35.lib ./vc71/liblink_test-vc71-mt-1_35.exe liblink_test-vc71-mt-gd-1_35_dir ./vc71/liblink_test-vc71-mt-gd-1_35.lib ./vc71/liblink_test-vc71-mt-gd-1_35.exe + +clean : liblink_test-vc71-s-1_35_clean liblink_test-vc71-mt-s-1_35_clean liblink_test-vc71-sgd-1_35_clean liblink_test-vc71-mt-sgd-1_35_clean link_test-vc71-mt-gd-1_35_clean link_test-vc71-mt-1_35_clean liblink_test-vc71-mt-1_35_clean liblink_test-vc71-mt-gd-1_35_clean + +install : all + copy vc71\liblink_test-vc71-s-1_35.lib "$(MSVCDIR)\lib" + copy vc71\liblink_test-vc71-mt-s-1_35.lib "$(MSVCDIR)\lib" + copy vc71\liblink_test-vc71-sgd-1_35.lib "$(MSVCDIR)\lib" + copy vc71\liblink_test-vc71-sgd-1_35.pdb "$(MSVCDIR)\lib" + copy vc71\liblink_test-vc71-mt-sgd-1_35.lib "$(MSVCDIR)\lib" + copy vc71\liblink_test-vc71-mt-sgd-1_35.pdb "$(MSVCDIR)\lib" + copy vc71\link_test-vc71-mt-gd-1_35.lib "$(MSVCDIR)\lib" + copy vc71\link_test-vc71-mt-gd-1_35.dll "$(MSVCDIR)\bin" + copy vc71\link_test-vc71-mt-gd-1_35.pdb "$(MSVCDIR)\lib" + copy vc71\link_test-vc71-mt-1_35.lib "$(MSVCDIR)\lib" + copy vc71\link_test-vc71-mt-1_35.dll "$(MSVCDIR)\bin" + copy vc71\liblink_test-vc71-mt-1_35.lib "$(MSVCDIR)\lib" + copy vc71\liblink_test-vc71-mt-gd-1_35.lib "$(MSVCDIR)\lib" + copy vc71\liblink_test-vc71-mt-gd-1_35.pdb "$(MSVCDIR)\lib" + +main_dir : + @if not exist "vc71\$(NULL)" mkdir vc71 + + +######################################################## +# +# section for liblink_test-vc71-s-1_35.lib +# +######################################################## +vc71/liblink_test-vc71-s-1_35/link_test.obj: link_test.cpp $(ALL_HEADER) + cl /c $(INCLUDES) /nologo /ML /W3 /GX /O2 /GB /GF /Gy /I..\..\..\..\ /DWIN32 /DNDEBUG /D_MBCS /D_LIB /FD $(CXXFLAGS) -Y- -Fo./vc71/liblink_test-vc71-s-1_35/ -Fdvc71/liblink_test-vc71-s-1_35.pdb link_test.cpp + +liblink_test-vc71-s-1_35_dir : + @if not exist "vc71\liblink_test-vc71-s-1_35\$(NULL)" mkdir vc71\liblink_test-vc71-s-1_35 + +liblink_test-vc71-s-1_35_clean : + del vc71\liblink_test-vc71-s-1_35\*.obj + del vc71\liblink_test-vc71-s-1_35\*.idb + del vc71\liblink_test-vc71-s-1_35\*.exp + del vc71\liblink_test-vc71-s-1_35\*.pch + +./vc71/liblink_test-vc71-s-1_35.lib : vc71/liblink_test-vc71-s-1_35/link_test.obj + link -lib /nologo /out:vc71/liblink_test-vc71-s-1_35.lib $(XSFLAGS) vc71/liblink_test-vc71-s-1_35/link_test.obj + +./vc71/liblink_test-vc71-s-1_35.exe : main.cpp ./vc71/liblink_test-vc71-s-1_35.lib + cl $(INCLUDES) /nologo /ML /W3 /GX /O2 /GB /GF /Gy /I..\..\..\..\ /DWIN32 /DNDEBUG /D_MBCS /D_LIB /FD /DBOOST_LIB_DIAGNOSTIC=1 $(CXXFLAGS) -o ./vc71/liblink_test-vc71-s-1_35.exe main.cpp /link /LIBPATH:./vc71 + vc71\liblink_test-vc71-s-1_35.exe + +######################################################## +# +# section for liblink_test-vc71-mt-s-1_35.lib +# +######################################################## +vc71/liblink_test-vc71-mt-s-1_35/link_test.obj: link_test.cpp $(ALL_HEADER) + cl /c $(INCLUDES) /nologo /MT /W3 /GX /O2 /GB /GF /Gy /I..\..\..\..\ /D_MT /DWIN32 /DNDEBUG /D_MBCS /D_LIB /FD $(CXXFLAGS) -Y- -Fo./vc71/liblink_test-vc71-mt-s-1_35/ -Fdvc71/liblink_test-vc71-mt-s-1_35.pdb link_test.cpp + +liblink_test-vc71-mt-s-1_35_dir : + @if not exist "vc71\liblink_test-vc71-mt-s-1_35\$(NULL)" mkdir vc71\liblink_test-vc71-mt-s-1_35 + +liblink_test-vc71-mt-s-1_35_clean : + del vc71\liblink_test-vc71-mt-s-1_35\*.obj + del vc71\liblink_test-vc71-mt-s-1_35\*.idb + del vc71\liblink_test-vc71-mt-s-1_35\*.exp + del vc71\liblink_test-vc71-mt-s-1_35\*.pch + +./vc71/liblink_test-vc71-mt-s-1_35.lib : vc71/liblink_test-vc71-mt-s-1_35/link_test.obj + link -lib /nologo /out:vc71/liblink_test-vc71-mt-s-1_35.lib $(XSFLAGS) vc71/liblink_test-vc71-mt-s-1_35/link_test.obj + +./vc71/liblink_test-vc71-mt-s-1_35.exe : main.cpp ./vc71/liblink_test-vc71-mt-s-1_35.lib + cl $(INCLUDES) /nologo /MT /W3 /GX /O2 /GB /GF /Gy /I..\..\..\..\ /D_MT /DWIN32 /DNDEBUG /D_MBCS /D_LIB /FD /DBOOST_LIB_DIAGNOSTIC=1 $(CXXFLAGS) -o ./vc71/liblink_test-vc71-mt-s-1_35.exe main.cpp /link /LIBPATH:./vc71 + vc71\liblink_test-vc71-mt-s-1_35.exe + +######################################################## +# +# section for liblink_test-vc71-sgd-1_35.lib +# +######################################################## +vc71/liblink_test-vc71-sgd-1_35/link_test.obj: link_test.cpp $(ALL_HEADER) + cl /c $(INCLUDES) /nologo /MLd /W3 /Gm /GX /Zi /Od /I..\..\..\..\ /DWIN32 /D_DEBUG /D_MBCS /D_LIB /FD /GX /RTC1 $(CXXFLAGS) -Y- -Fo./vc71/liblink_test-vc71-sgd-1_35/ -Fdvc71/liblink_test-vc71-sgd-1_35.pdb link_test.cpp + +liblink_test-vc71-sgd-1_35_dir : + @if not exist "vc71\liblink_test-vc71-sgd-1_35\$(NULL)" mkdir vc71\liblink_test-vc71-sgd-1_35 + +liblink_test-vc71-sgd-1_35_clean : + del vc71\liblink_test-vc71-sgd-1_35\*.obj + del vc71\liblink_test-vc71-sgd-1_35\*.idb + del vc71\liblink_test-vc71-sgd-1_35\*.exp + del vc71\liblink_test-vc71-sgd-1_35\*.pch + +./vc71/liblink_test-vc71-sgd-1_35.lib : vc71/liblink_test-vc71-sgd-1_35/link_test.obj + link -lib /nologo /out:vc71/liblink_test-vc71-sgd-1_35.lib $(XSFLAGS) vc71/liblink_test-vc71-sgd-1_35/link_test.obj + +./vc71/liblink_test-vc71-sgd-1_35.exe : main.cpp ./vc71/liblink_test-vc71-sgd-1_35.lib + cl $(INCLUDES) /nologo /MLd /W3 /Gm /GX /Zi /Od /I..\..\..\..\ /DWIN32 /D_DEBUG /D_MBCS /D_LIB /FD /GX /RTC1 /DBOOST_LIB_DIAGNOSTIC=1 $(CXXFLAGS) -o ./vc71/liblink_test-vc71-sgd-1_35.exe main.cpp /link /LIBPATH:./vc71 + vc71\liblink_test-vc71-sgd-1_35.exe + +######################################################## +# +# section for liblink_test-vc71-mt-sgd-1_35.lib +# +######################################################## +vc71/liblink_test-vc71-mt-sgd-1_35/link_test.obj: link_test.cpp $(ALL_HEADER) + cl /c $(INCLUDES) /nologo /MTd /W3 /Gm /GX /Zi /Od /I..\..\..\..\ /DWIN32 /D_MT /D_DEBUG /D_MBCS /D_LIB /FD /GX /RTC1 $(CXXFLAGS) -Y- -Fo./vc71/liblink_test-vc71-mt-sgd-1_35/ -Fdvc71/liblink_test-vc71-mt-sgd-1_35.pdb link_test.cpp + +liblink_test-vc71-mt-sgd-1_35_dir : + @if not exist "vc71\liblink_test-vc71-mt-sgd-1_35\$(NULL)" mkdir vc71\liblink_test-vc71-mt-sgd-1_35 + +liblink_test-vc71-mt-sgd-1_35_clean : + del vc71\liblink_test-vc71-mt-sgd-1_35\*.obj + del vc71\liblink_test-vc71-mt-sgd-1_35\*.idb + del vc71\liblink_test-vc71-mt-sgd-1_35\*.exp + del vc71\liblink_test-vc71-mt-sgd-1_35\*.pch + +./vc71/liblink_test-vc71-mt-sgd-1_35.lib : vc71/liblink_test-vc71-mt-sgd-1_35/link_test.obj + link -lib /nologo /out:vc71/liblink_test-vc71-mt-sgd-1_35.lib $(XSFLAGS) vc71/liblink_test-vc71-mt-sgd-1_35/link_test.obj + +./vc71/liblink_test-vc71-mt-sgd-1_35.exe : main.cpp ./vc71/liblink_test-vc71-mt-sgd-1_35.lib + cl $(INCLUDES) /nologo /MTd /W3 /Gm /GX /Zi /Od /I..\..\..\..\ /DWIN32 /D_MT /D_DEBUG /D_MBCS /D_LIB /FD /GX /RTC1 /DBOOST_LIB_DIAGNOSTIC=1 $(CXXFLAGS) -o ./vc71/liblink_test-vc71-mt-sgd-1_35.exe main.cpp /link /LIBPATH:./vc71 + vc71\liblink_test-vc71-mt-sgd-1_35.exe + +######################################################## +# +# section for link_test-vc71-mt-gd-1_35.lib +# +######################################################## +vc71/link_test-vc71-mt-gd-1_35/link_test.obj: link_test.cpp $(ALL_HEADER) + cl /c $(INCLUDES) /nologo /MDd /W3 /Gm /GX /Zi /Od /I..\..\..\..\ /D_DEBUG /DBOOST_DYN_LINK /DWIN32 /D_WINDOWS /D_MBCS /DUSRDLL /FD /GX /RTC1 $(CXXFLAGS) -Y- -Fo./vc71/link_test-vc71-mt-gd-1_35/ -Fdvc71/link_test-vc71-mt-gd-1_35.pdb link_test.cpp + +link_test-vc71-mt-gd-1_35_dir : + @if not exist "vc71\link_test-vc71-mt-gd-1_35\$(NULL)" mkdir vc71\link_test-vc71-mt-gd-1_35 + +link_test-vc71-mt-gd-1_35_clean : + del vc71\link_test-vc71-mt-gd-1_35\*.obj + del vc71\link_test-vc71-mt-gd-1_35\*.idb + del vc71\link_test-vc71-mt-gd-1_35\*.exp + del vc71\link_test-vc71-mt-gd-1_35\*.pch + +./vc71/link_test-vc71-mt-gd-1_35.lib : vc71/link_test-vc71-mt-gd-1_35/link_test.obj + link kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /incremental:yes /pdb:"vc71/link_test-vc71-mt-gd-1_35.pdb" /debug /machine:I386 /out:"vc71/link_test-vc71-mt-gd-1_35.dll" /implib:"vc71/link_test-vc71-mt-gd-1_35.lib" /LIBPATH:$(STLPORT_PATH)\lib $(XLFLAGS) vc71/link_test-vc71-mt-gd-1_35/link_test.obj + +./vc71/link_test-vc71-mt-gd-1_35.exe : main.cpp ./vc71/link_test-vc71-mt-gd-1_35.lib + cl $(INCLUDES) /nologo /MDd /W3 /Gm /GX /Zi /Od /I..\..\..\..\ /D_DEBUG /DBOOST_DYN_LINK /DWIN32 /D_WINDOWS /D_MBCS /DUSRDLL /FD /GX /RTC1 /DBOOST_LIB_DIAGNOSTIC=1 $(CXXFLAGS) -o ./vc71/link_test-vc71-mt-gd-1_35.exe main.cpp /link /LIBPATH:./vc71 + vc71\link_test-vc71-mt-gd-1_35.exe + +######################################################## +# +# section for link_test-vc71-mt-1_35.lib +# +######################################################## +vc71/link_test-vc71-mt-1_35/link_test.obj: link_test.cpp $(ALL_HEADER) + cl /c $(INCLUDES) /nologo /MD /W3 /GX /O2 /GB /GF /Gy /I..\..\..\..\ /DBOOST_DYN_LINK /DNDEBUG /DWIN32 /D_WINDOWS /D_MBCS /D_USRDLL /FD $(CXXFLAGS) -Y- -Fo./vc71/link_test-vc71-mt-1_35/ -Fdvc71/link_test-vc71-mt-1_35.pdb link_test.cpp + +link_test-vc71-mt-1_35_dir : + @if not exist "vc71\link_test-vc71-mt-1_35\$(NULL)" mkdir vc71\link_test-vc71-mt-1_35 + +link_test-vc71-mt-1_35_clean : + del vc71\link_test-vc71-mt-1_35\*.obj + del vc71\link_test-vc71-mt-1_35\*.idb + del vc71\link_test-vc71-mt-1_35\*.exp + del vc71\link_test-vc71-mt-1_35\*.pch + +./vc71/link_test-vc71-mt-1_35.lib : vc71/link_test-vc71-mt-1_35/link_test.obj + link kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /incremental:yes /pdb:"vc71/link_test-vc71-mt-1_35.pdb" /debug /machine:I386 /out:"vc71/link_test-vc71-mt-1_35.dll" /implib:"vc71/link_test-vc71-mt-1_35.lib" /LIBPATH:$(STLPORT_PATH)\lib $(XLFLAGS) vc71/link_test-vc71-mt-1_35/link_test.obj + +./vc71/link_test-vc71-mt-1_35.exe : main.cpp ./vc71/link_test-vc71-mt-1_35.lib + cl $(INCLUDES) /nologo /MD /W3 /GX /O2 /GB /GF /Gy /I..\..\..\..\ /DBOOST_DYN_LINK /DNDEBUG /DWIN32 /D_WINDOWS /D_MBCS /D_USRDLL /FD /DBOOST_LIB_DIAGNOSTIC=1 $(CXXFLAGS) -o ./vc71/link_test-vc71-mt-1_35.exe main.cpp /link /LIBPATH:./vc71 + vc71\link_test-vc71-mt-1_35.exe + +######################################################## +# +# section for liblink_test-vc71-mt-1_35.lib +# +######################################################## +vc71/liblink_test-vc71-mt-1_35/link_test.obj: link_test.cpp $(ALL_HEADER) + cl /c $(INCLUDES) /nologo /MD /W3 /GX /O2 /GB /GF /Gy /I..\..\..\..\ /DBOOST_REGEX_STATIC_LINK /DNDEBUG /DWIN32 /D_WINDOWS /D_MBCS /D_USRDLL /FD $(CXXFLAGS) -Y- -Fo./vc71/liblink_test-vc71-mt-1_35/ -Fdvc71/liblink_test-vc71-mt-1_35.pdb link_test.cpp + +liblink_test-vc71-mt-1_35_dir : + @if not exist "vc71\liblink_test-vc71-mt-1_35\$(NULL)" mkdir vc71\liblink_test-vc71-mt-1_35 + +liblink_test-vc71-mt-1_35_clean : + del vc71\liblink_test-vc71-mt-1_35\*.obj + del vc71\liblink_test-vc71-mt-1_35\*.idb + del vc71\liblink_test-vc71-mt-1_35\*.exp + del vc71\liblink_test-vc71-mt-1_35\*.pch + +./vc71/liblink_test-vc71-mt-1_35.lib : vc71/liblink_test-vc71-mt-1_35/link_test.obj + link -lib /nologo /out:vc71/liblink_test-vc71-mt-1_35.lib $(XSFLAGS) vc71/liblink_test-vc71-mt-1_35/link_test.obj + +./vc71/liblink_test-vc71-mt-1_35.exe : main.cpp ./vc71/liblink_test-vc71-mt-1_35.lib + cl $(INCLUDES) /nologo /MD /W3 /GX /O2 /GB /GF /Gy /I..\..\..\..\ /DBOOST_REGEX_STATIC_LINK /DNDEBUG /DWIN32 /D_WINDOWS /D_MBCS /D_USRDLL /FD /DBOOST_LIB_DIAGNOSTIC=1 $(CXXFLAGS) -o ./vc71/liblink_test-vc71-mt-1_35.exe main.cpp /link /LIBPATH:./vc71 + vc71\liblink_test-vc71-mt-1_35.exe + +######################################################## +# +# section for liblink_test-vc71-mt-gd-1_35.lib +# +######################################################## +vc71/liblink_test-vc71-mt-gd-1_35/link_test.obj: link_test.cpp $(ALL_HEADER) + cl /c $(INCLUDES) /nologo /MDd /W3 /Gm /GX /Zi /Od /I..\..\..\..\ /DBOOST_REGEX_STATIC_LINK /D_DEBUG /DWIN32 /D_WINDOWS /D_MBCS /DUSRDLL /FD /GX /RTC1 $(CXXFLAGS) -Y- -Fo./vc71/liblink_test-vc71-mt-gd-1_35/ -Fdvc71/liblink_test-vc71-mt-gd-1_35.pdb link_test.cpp + +liblink_test-vc71-mt-gd-1_35_dir : + @if not exist "vc71\liblink_test-vc71-mt-gd-1_35\$(NULL)" mkdir vc71\liblink_test-vc71-mt-gd-1_35 + +liblink_test-vc71-mt-gd-1_35_clean : + del vc71\liblink_test-vc71-mt-gd-1_35\*.obj + del vc71\liblink_test-vc71-mt-gd-1_35\*.idb + del vc71\liblink_test-vc71-mt-gd-1_35\*.exp + del vc71\liblink_test-vc71-mt-gd-1_35\*.pch + +./vc71/liblink_test-vc71-mt-gd-1_35.lib : vc71/liblink_test-vc71-mt-gd-1_35/link_test.obj + link -lib /nologo /out:vc71/liblink_test-vc71-mt-gd-1_35.lib $(XSFLAGS) vc71/liblink_test-vc71-mt-gd-1_35/link_test.obj + +./vc71/liblink_test-vc71-mt-gd-1_35.exe : main.cpp ./vc71/liblink_test-vc71-mt-gd-1_35.lib + cl $(INCLUDES) /nologo /MDd /W3 /Gm /GX /Zi /Od /I..\..\..\..\ /DBOOST_REGEX_STATIC_LINK /D_DEBUG /DWIN32 /D_WINDOWS /D_MBCS /DUSRDLL /FD /GX /RTC1 /DBOOST_LIB_DIAGNOSTIC=1 $(CXXFLAGS) -o ./vc71/liblink_test-vc71-mt-gd-1_35.exe main.cpp /link /LIBPATH:./vc71 + vc71\liblink_test-vc71-mt-gd-1_35.exe + diff --git a/libs/config/test/link/vc_gen.sh b/libs/config/test/link/vc_gen.sh new file mode 100644 index 0000000000..1ba46f3bc0 --- /dev/null +++ b/libs/config/test/link/vc_gen.sh @@ -0,0 +1,424 @@ +#! /bin/bash +# copyright John Maddock 2005 +# 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) + +libname="" +src="" +header="" +all_dep="" + +# current makefile: +out="" +# temporary file: +tout="" +# install target temp file: +iout="" +# debug flag: +debug="no" +# compile options: +opts="" +# main output sub-directory: +subdir="" +# extra debug /RTc options: +debug_extra="" + +function vc6_gen_lib() +{ + all_dep="$all_dep $libname""_dir ./$subdir/$libname.lib ./$subdir/$libname.exe" + echo " copy $subdir\\$libname.lib "'"$'"(MSVCDIR)\\lib"'"' >> $iout + if test $debug == "yes"; then + echo " copy $subdir\\$libname.pdb "'"$'"(MSVCDIR)\\lib"'"' >> $iout + fi +# +# set up section comments: + cat >> $tout << EOF +######################################################## +# +# section for $libname.lib +# +######################################################## +EOF +# +# process source files: + all_obj="" + for file in $src + do + obj=`echo "$file" | sed 's/\(.*\)cpp/\1obj/g'` + obj="$subdir/$libname/$obj" + all_obj="$all_obj $obj" + echo "$obj: $file \$(ALL_HEADER)" >> $tout + echo " cl /c \$(INCLUDES) $opts \$(CXXFLAGS) -Y- -Fo./$subdir/$libname/ -Fd$subdir/$libname.pdb $file" >> $tout + echo "" >> $tout + done +# +# now for the directories for this library: + echo "$libname"_dir : >> $tout + echo " @if not exist \"$subdir\\$libname\\\$(NULL)\" mkdir $subdir\\$libname" >> $tout + echo "" >> $tout +# +# now for the clean options for this library: + all_clean="$all_clean $libname""_clean" + echo "$libname"_clean : >> $tout + echo " del $subdir\\$libname\\"'*.obj' >> $tout + echo " del $subdir\\$libname\\"'*.idb' >> $tout + echo " del $subdir\\$libname\\"'*.exp' >> $tout + echo " del $subdir\\$libname\\"'*.pch' >> $tout + echo "" >> $tout +# +# now for the main target for this library: + echo ./$subdir/$libname.lib : $all_obj >> $tout + echo " link -lib /nologo /out:$subdir/$libname.lib \$(XSFLAGS) $all_obj" >> $tout + echo "" >> $tout +# now the test program: + echo ./$subdir/$libname.exe : main.cpp ./$subdir/$libname.lib >> $tout + echo " cl \$(INCLUDES) $opts /DBOOST_LIB_DIAGNOSTIC=1 \$(CXXFLAGS) -o ./$subdir/$libname.exe main.cpp /link /LIBPATH:./$subdir" >> $tout + echo " $subdir"'\'"$libname.exe" >> $tout + echo "" >> $tout +} + +function vc6_gen_dll() +{ + all_dep="$all_dep $libname""_dir ./$subdir/$libname.lib ./$subdir/$libname.exe" + echo " copy $subdir\\$libname.lib "'"$'"(MSVCDIR)\\lib"'"' >> $iout + echo " copy $subdir\\$libname.dll "'"$'"(MSVCDIR)\\bin"'"' >> $iout + if test $debug == "yes"; then + echo " copy $subdir\\$libname.pdb "'"$'"(MSVCDIR)\\lib"'"' >> $iout + fi +# +# set up section comments: + cat >> $tout << EOF +######################################################## +# +# section for $libname.lib +# +######################################################## +EOF +# +# process source files: + all_obj="" + for file in $src + do + obj=`echo "$file" | sed 's/\(.*\)cpp/\1obj/g'` + obj="$subdir/$libname/$obj" + all_obj="$all_obj $obj" + echo "$obj: $file \$(ALL_HEADER)" >> $tout + echo " cl /c \$(INCLUDES) $opts \$(CXXFLAGS) -Y- -Fo./$subdir/$libname/ -Fd$subdir/$libname.pdb $file" >> $tout + echo "" >> $tout + done +# +# now for the directories for this library: + echo "$libname"_dir : >> $tout + echo " @if not exist \"$subdir\\$libname\\\$(NULL)\" mkdir $subdir\\$libname" >> $tout + echo "" >> $tout +# +# now for the clean options for this library: + all_clean="$all_clean $libname""_clean" + echo "$libname"_clean : >> $tout + echo " del $subdir\\$libname\\"'*.obj' >> $tout + echo " del $subdir\\$libname\\"'*.idb' >> $tout + echo " del $subdir\\$libname\\"'*.exp' >> $tout + echo " del $subdir\\$libname\\"'*.pch' >> $tout + echo "" >> $tout +# +# now for the main target for this library: + echo ./$subdir/$libname.lib : $all_obj >> $tout + echo " link kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /incremental:yes /pdb:\"$subdir/$libname.pdb\" /debug /machine:I386 /out:\"$subdir/$libname.dll\" /implib:\"$subdir/$libname.lib\" /LIBPATH:\$(STLPORT_PATH)\\lib \$(XLFLAGS) $all_obj" >> $tout + echo "" >> $tout +# now the test program: + echo ./$subdir/$libname.exe : main.cpp ./$subdir/$libname.lib >> $tout + echo " cl \$(INCLUDES) $opts /DBOOST_LIB_DIAGNOSTIC=1 \$(CXXFLAGS) -o ./$subdir/$libname.exe main.cpp /link /LIBPATH:./$subdir" >> $tout + echo " $subdir"'\'"$libname.exe" >> $tout + echo "" >> $tout +} + +is_stlport="no" + +function vc6_gen() +{ + debug="no" + tout="temp" + iout="temp_install" + all_dep="main_dir" + all_clean="" + echo > $out + echo > $tout + rm -f $iout + + libname="liblink_test-${subdir}-s-${boost_version}" + opts='/nologo /ML /W3 /GX /O2 /GB /GF /Gy /I..\..\..\..\ /DWIN32 /DNDEBUG /D_MBCS /D_LIB /FD' + vc6_gen_lib + + libname="liblink_test-${subdir}-mt-s-${boost_version}" + opts='/nologo /MT /W3 /GX /O2 /GB /GF /Gy /I..\..\..\..\ /D_MT /DWIN32 /DNDEBUG /D_MBCS /D_LIB /FD ' + vc6_gen_lib + + debug="yes" + libname="liblink_test-${subdir}-sgd-${boost_version}" + opts='/nologo /MLd /W3 /Gm /GX /Zi /Od /I..\..\..\..\ /DWIN32 /D_DEBUG /D_MBCS /D_LIB /FD '"$debug_extra"' ' + vc6_gen_lib + + libname="liblink_test-${subdir}-mt-sgd-${boost_version}" + opts='/nologo /MTd /W3 /Gm /GX /Zi /Od /I..\..\..\..\ /DWIN32 /D_MT /D_DEBUG /D_MBCS /D_LIB /FD '"$debug_extra"' ' + vc6_gen_lib + + libname="link_test-${subdir}-mt-gd-${boost_version}" + opts='/nologo /MDd /W3 /Gm /GX /Zi /Od /I..\..\..\..\ /D_DEBUG /DBOOST_DYN_LINK /DWIN32 /D_WINDOWS /D_MBCS /DUSRDLL /FD '"$debug_extra"' ' + vc6_gen_dll + + debug="no" + opts='/nologo /MD /W3 /GX /O2 /GB /GF /Gy /I..\..\..\..\ /DBOOST_DYN_LINK /DNDEBUG /DWIN32 /D_WINDOWS /D_MBCS /D_USRDLL /FD ' + libname="link_test-${subdir}-mt-${boost_version}" + vc6_gen_dll + + debug="no" + opts='/nologo /MD /W3 /GX /O2 /GB /GF /Gy /I..\..\..\..\ /DBOOST_REGEX_STATIC_LINK /DNDEBUG /DWIN32 /D_WINDOWS /D_MBCS /D_USRDLL /FD ' + libname="liblink_test-${subdir}-mt-${boost_version}" + vc6_gen_lib + + debug="yes" + libname="liblink_test-${subdir}-mt-gd-${boost_version}" + opts='/nologo /MDd /W3 /Gm /GX /Zi /Od /I..\..\..\..\ /DBOOST_REGEX_STATIC_LINK /D_DEBUG /DWIN32 /D_WINDOWS /D_MBCS /DUSRDLL /FD '"$debug_extra"' ' + vc6_gen_lib + + cat > $out << EOF +# copyright John Maddock 2005 +# 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) +# +# auto generated makefile for VC6 compiler +# +# usage: +# make +# brings libraries up to date +# make install +# brings libraries up to date and copies binaries to your VC6 /lib and /bin directories (recomended) +# + +# +# Add additional compiler options here: +# +CXXFLAGS= +# +# Add additional include directories here: +# +INCLUDES= +# +# add additional linker flags here: +# +XLFLAGS= +# +# add additional static-library creation flags here: +# +XSFLAGS= + +!IF "\$(OS)" == "Windows_NT" +NULL= +!ELSE +NULL=nul +!ENDIF + +!IF "\$(MSVCDIR)" == "" +!ERROR Variable MSVCDIR not set. +!ENDIF + +EOF + echo "" >> $out + echo "ALL_HEADER=$header" >> $out + echo "" >> $out + echo "all : $all_dep" >> $out + echo >> $out + echo "clean : $all_clean" >> $out + echo >> $out + echo "install : all" >> $out + cat $iout >> $out + echo >> $out + echo main_dir : >> $out + echo " @if not exist \"$subdir\\\$(NULL)\" mkdir $subdir" >> $out + echo "" >> $out + + cat $tout >> $out +} + +function vc6_stlp_gen() +{ + debug="no" + tout="temp" + iout="temp_install" + all_dep="main_dir" + all_clean="" + echo > $out + echo > $tout + rm -f $iout + + libname="liblink_test-${subdir}-mt-s-${boost_version}" + opts='/nologo /MT /W3 /GX /O2 /GB /GF /Gy /I$(STLPORT_PATH)\stlport /I..\..\..\..\ /D_MT /DWIN32 /DNDEBUG /D_MBCS /D_LIB ' + vc6_gen_lib + + debug="true" + libname="liblink_test-${subdir}-mt-sgd-${boost_version}" + opts='/nologo /MTd /W3 /Gm /GX /Zi /Od /I$(STLPORT_PATH)\stlport /I..\..\..\..\ /DWIN32 /D_MT /D_DEBUG /D_MBCS /D_LIB '"$debug_extra"' ' + vc6_gen_lib + + libname="link_test-${subdir}-mt-gd-${boost_version}" + opts='/nologo /MDd /W3 /Gm /GX /Zi /Od /I$(STLPORT_PATH)\stlport /I..\..\..\..\ /DBOOST_DYN_LINK /D_DEBUG /DWIN32 /D_WINDOWS /D_MBCS /DUSRDLL '"$debug_extra"' ' + vc6_gen_dll + + debug="no" + opts='/nologo /MD /W3 /GX /O2 /GB /GF /I$(STLPORT_PATH)\stlport /Gy /I..\..\..\..\ /DBOOST_DYN_LINK /DNDEBUG /DWIN32 /D_WINDOWS /D_MBCS /D_USRDLL ' + libname="link_test-${subdir}-mt-${boost_version}" + vc6_gen_dll + + debug="no" + opts='/nologo /MD /W3 /GX /O2 /GB /GF /Gy /I$(STLPORT_PATH)\stlport /I..\..\..\..\ /DBOOST_REGEX_STATIC_LINK /DNDEBUG /DWIN32 /D_WINDOWS /D_MBCS /D_USRDLL ' + libname="liblink_test-${subdir}-mt-${boost_version}" + vc6_gen_lib + + debug="true" + libname="liblink_test-${subdir}-mt-gd-${boost_version}" + opts='/nologo /MDd /W3 /Gm /GX /Zi /Od /I$(STLPORT_PATH)\stlport /I..\..\..\..\ /DBOOST_REGEX_STATIC_LINK /D_DEBUG /DWIN32 /D_WINDOWS /D_MBCS /DUSRDLL '"$debug_extra"' ' + vc6_gen_lib + +# debug STLPort mode: +# not yet supported by bjam? + debug="yes" + opts='/nologo /MDd /W3 /Gm /GX /Zi /Od /I$(STLPORT_PATH)\stlport /I..\..\..\..\ /DBOOST_DYN_LINK /D__STL_DEBUG /D_STLP_DEBUG /D_DEBUG /DWIN32 /D_WINDOWS /D_MBCS /DUSRDLL '"$debug_extra"' ' + libname="link_test-${subdir}-mt-pgd-${boost_version}" + vc6_gen_dll + libname="liblink_test-${subdir}-mt-spgd-${boost_version}" + opts='/nologo /MTd /W3 /Gm /GX /Zi /Od /I$(STLPORT_PATH)\stlport /I..\..\..\..\ /D__STL_DEBUG /D_STLP_DEBUG /DWIN32 /D_MT /D_DEBUG /D_MBCS /D_LIB '"$debug_extra"' ' + vc6_gen_lib + opts='/nologo /MDd /W3 /Gm /GX /Zi /Od /I$(STLPORT_PATH)\stlport /I..\..\..\..\ /DBOOST_REGEX_STATIC_LINK /D__STL_DEBUG /D_STLP_DEBUG /D_DEBUG /DWIN32 /D_WINDOWS /D_MBCS /DUSRDLL '"$debug_extra"' ' + libname="liblink_test-${subdir}-mt-pgd-${boost_version}" + vc6_gen_lib + + cat > $out << EOF +# copyright John Maddock 2005 +# 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) +# +# auto generated makefile for VC6+STLPort +# +# usage: +# make +# brings libraries up to date +# make install +# brings libraries up to date and copies binaries to your VC6 /lib and /bin directories (recomended) +# + +# +# Add additional compiler options here: +# +CXXFLAGS= +# +# Add additional include directories here: +# +INCLUDES= +# +# add additional linker flags here: +# +XLFLAGS= +# +# add additional static-library creation flags here: +# +XSFLAGS= + +!IF "\$(OS)" == "Windows_NT" +NULL= +!ELSE +NULL=nul +!ENDIF + +!IF "\$(MSVCDIR)" == "" +!ERROR Variable MSVCDIR not set. +!ENDIF + +!IF "\$(STLPORT_PATH)" == "" +!ERROR Variable STLPORT_PATH not set. +!ENDIF + +EOF + echo "" >> $out + echo "ALL_HEADER=$header" >> $out + echo "" >> $out + echo "all : $all_dep" >> $out + echo >> $out + echo "clean : $all_clean" >> $out + echo >> $out + echo "install : stlport_check all" >> $out + cat $iout >> $out + echo >> $out + echo main_dir : >> $out + echo " @if not exist \"$subdir\\\$(NULL)\" mkdir $subdir" >> $out + echo "" >> $out + echo 'stlport_check : $(STLPORT_PATH)\stlport\string' >> $out + echo " echo" >> $out + echo "" >> $out + + cat $tout >> $out +} + + +. common.sh + +# +# generate vc6 makefile: +debug_extra="/GX" +out="vc6.mak" +subdir="vc6" +vc6_gen +# +# generate vc6-stlport makefile: +is_stlport="yes" +out="vc6-stlport.mak" +no_single="yes" +subdir="vc6-stlport" +vc6_stlp_gen +# +# generate vc7 makefile: +debug_extra="/GX /RTC1" +is_stlport="no" +out="vc7.mak" +no_single="no" +subdir="vc7" +vc6_gen +# +# generate vc7-stlport makefile: +is_stlport="yes" +out="vc7-stlport.mak" +no_single="yes" +subdir="vc7-stlport" +vc6_stlp_gen +# +# generate vc71 makefile: +is_stlport="no" +out="vc71.mak" +no_single="no" +subdir="vc71" +vc6_gen +# +# generate vc71-stlport makefile: +is_stlport="yes" +out="vc71-stlport.mak" +no_single="yes" +subdir="vc71-stlport" +vc6_stlp_gen + + +# +# remove tmep files; +rm -f $tout $iout + + + + + + + + + + + diff --git a/libs/config/test/math_info.cpp b/libs/config/test/math_info.cpp new file mode 100644 index 0000000000..47fe9ffe4e --- /dev/null +++ b/libs/config/test/math_info.cpp @@ -0,0 +1,365 @@ +// (C) Copyright John Maddock 2005. +// 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) + +// See http://www.boost.org/libs/config/test for most recent version. + +// +// This test prints out informative information about <math.h>, <float.h> +// and <limits>. Note that this file does require a correctly configured +// Boost setup, and so can't be folded into config_info which is designed +// to function without Boost.Confg support. Each test is documented in +// more detail below. +// + +#include <boost/limits.hpp> +#include <limits.h> +#include <math.h> +#include <cmath> +#include <float.h> +#include <iostream> +#include <iomanip> +#include <cstring> +#include <boost/type_traits/alignment_of.hpp> + +#ifdef BOOST_NO_STDC_NAMESPACE +namespace std{ using ::strcmp; using ::pow; using ::fabs; using ::sqrt; using ::sin; using ::atan2; } +#endif + +static unsigned int indent = 4; +static unsigned int width = 40; + +void print_macro(const char* name, const char* value) +{ + // if name == value+1 then then macro is not defined, + // in which case we don't print anything: + if(0 != std::strcmp(name, value+1)) + { + for(unsigned i = 0; i < indent; ++i) std::cout.put(' '); + std::cout << std::setw(width); + std::cout.setf(std::istream::left, std::istream::adjustfield); + std::cout << name; + if(value[1]) + { + // macro has a value: + std::cout << value << "\n"; + } + else + { + // macro is defined but has no value: + std::cout << " [no value]\n"; + } + } +} + +#define PRINT_MACRO(X) print_macro(#X, BOOST_STRINGIZE(=X)) + +template <class T> +void print_expression(const char* expression, T val) +{ + for(unsigned i = 0; i < indent; ++i) std::cout.put(' '); + std::cout << std::setw(width); + std::cout.setf(std::istream::left, std::istream::adjustfield); + std::cout << std::setprecision(std::numeric_limits<T>::digits10+2); + std::cout << expression << "=" << val << std::endl; +} + +#define PRINT_EXPRESSION(E) print_expression(#E, E); + + +template <class T> +void print_limits(T, const char* name) +{ + // + // Output general information on numeric_limits, as well as + // probing known and supected problems. + // + std::cout << + "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n" + "std::numeric_limits information for type " << name << std::endl; + std::cout << + " is_specialized = " << std::numeric_limits<T>::is_specialized << std::endl; + std::cout << + " min" "() = " << std::setprecision(std::numeric_limits<T>::digits10 + 2) << (std::numeric_limits<T>::min)() << std::endl; + std::cout << + " max" "() = " << std::setprecision(std::numeric_limits<T>::digits10 + 2) << (std::numeric_limits<T>::max)() << std::endl; + std::cout << + " digits = " << std::numeric_limits<T>::digits << std::endl; + std::cout << + " digits10 = " << std::numeric_limits<T>::digits10 << std::endl; + std::cout << + " is_signed = " << std::numeric_limits<T>::is_signed << std::endl; + std::cout << + " is_integer = " << std::numeric_limits<T>::is_integer << std::endl; + std::cout << + " is_exact = " << std::numeric_limits<T>::is_exact << std::endl; + std::cout << + " radix = " << std::numeric_limits<T>::radix << std::endl; + + std::cout << + " epsilon() = " << std::setprecision(std::numeric_limits<T>::digits10 + 2) << (std::numeric_limits<T>::epsilon)() << std::endl; + std::cout << + " round_error() = " << std::setprecision(std::numeric_limits<T>::digits10 + 2) << (std::numeric_limits<T>::round_error)() << std::endl; + + std::cout << + " min_exponent = " << std::numeric_limits<T>::min_exponent << std::endl; + std::cout << + " min_exponent10 = " << std::numeric_limits<T>::min_exponent10 << std::endl; + std::cout << + " max_exponent = " << std::numeric_limits<T>::max_exponent << std::endl; + std::cout << + " max_exponent10 = " << std::numeric_limits<T>::max_exponent10 << std::endl; + std::cout << + " has_infinity = " << std::numeric_limits<T>::has_infinity << std::endl; + std::cout << + " has_quiet_NaN = " << std::numeric_limits<T>::has_quiet_NaN << std::endl; + std::cout << + " has_signaling_NaN = " << std::numeric_limits<T>::has_signaling_NaN << std::endl; + std::cout << + " has_denorm = " << std::numeric_limits<T>::has_denorm << std::endl; + std::cout << + " has_denorm_loss = " << std::numeric_limits<T>::has_denorm_loss << std::endl; + + std::cout << + " infinity() = " << std::setprecision(std::numeric_limits<T>::digits10 + 2) << (std::numeric_limits<T>::infinity)() << std::endl; + std::cout << + " quiet_NaN() = " << std::setprecision(std::numeric_limits<T>::digits10 + 2) << (std::numeric_limits<T>::quiet_NaN)() << std::endl; + std::cout << + " signaling_NaN() = " << std::setprecision(std::numeric_limits<T>::digits10 + 2) << (std::numeric_limits<T>::signaling_NaN)() << std::endl; + std::cout << + " denorm_min() = " << std::setprecision(std::numeric_limits<T>::digits10 + 2) << (std::numeric_limits<T>::denorm_min)() << std::endl; + + + std::cout << + " is_iec559 = " << std::numeric_limits<T>::is_iec559 << std::endl; + std::cout << + " is_bounded = " << std::numeric_limits<T>::is_bounded << std::endl; + std::cout << + " is_modulo = " << std::numeric_limits<T>::is_modulo << std::endl; + std::cout << + " traps = " << std::numeric_limits<T>::traps << std::endl; + std::cout << + " tinyness_before = " << std::numeric_limits<T>::tinyness_before << std::endl; + std::cout << + " round_style = " << std::numeric_limits<T>::round_style << std::endl << std::endl; + + if(std::numeric_limits<T>::is_exact == 0) + { + bool r = std::numeric_limits<T>::epsilon() == std::pow(static_cast<T>(std::numeric_limits<T>::radix), 1-std::numeric_limits<T>::digits); + if(r) + std::cout << "Epsilon has sane value of std::pow(std::numeric_limits<T>::radix, 1-std::numeric_limits<T>::digits)." << std::endl; + else + std::cout << "CAUTION: epsilon does not have a sane value." << std::endl; + std::cout << std::endl; + } + std::cout << + " sizeof(" << name << ") = " << sizeof(T) << std::endl; + std::cout << + " alignment_of<" << name << "> = " << boost::alignment_of<T>::value << std::endl << std::endl; +} +/* +template <class T> +bool is_same_type(T, T) +{ + return true; +}*/ +bool is_same_type(float, float) +{ return true; } +bool is_same_type(double, double) +{ return true; } +bool is_same_type(long double, long double) +{ return true; } +template <class T, class U> +bool is_same_type(T, U) +{ + return false; +} + +// +// We need this to test whether abs has been overloaded for +// the floating point types or not: +// +namespace std{ +#if !BOOST_WORKAROUND(BOOST_MSVC, == 1300) && \ + !defined(_LIBCPP_VERSION) +template <class T> +char abs(T) +{ + return ' '; +} +#endif +} + + +template <class T> +void test_overloads(T, const char* name) +{ + // + // Probe known and suspected problems with the std lib Math functions. + // + std::cout << + "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n" + "Math function overload information for type " << name << std::endl; + + // + // Are the math functions overloaded for type T, + // or do we just get double versions? + // + bool r = is_same_type(std::fabs(T(0)), T(0)); + r &= is_same_type(std::sqrt(T(0)), T(0)); + r &= is_same_type(std::sin(T(0)), T(0)); + if(r) + std::cout << "The Math functions are overloaded for type " << name << std::endl; + else + std::cout << "CAUTION: The Math functions are NOT overloaded for type " << name << std::endl; + + // + // Check that a few of the functions work OK, we do this because if these + // are implemented as double precision internally then we can get + // overflow or underflow when passing arguments of other types. + // + r = (std::fabs((std::numeric_limits<T>::max)()) == (std::numeric_limits<T>::max)()); + r &= (std::fabs(-(std::numeric_limits<T>::max)()) == (std::numeric_limits<T>::max)()); + r &= (std::fabs((std::numeric_limits<T>::min)()) == (std::numeric_limits<T>::min)()); + r &= (std::fabs(-(std::numeric_limits<T>::min)()) == (std::numeric_limits<T>::min)()); + if(r) + std::cout << "std::fabs looks OK for type " << name << std::endl; + else + std::cout << "CAUTION: std::fabs is broken for type " << name << std::endl; + + // + // abs not overloaded for real arguments with VC6 (and others?) + // + r = (std::abs((std::numeric_limits<T>::max)()) == (std::numeric_limits<T>::max)()); + r &= (std::abs(-(std::numeric_limits<T>::max)()) == (std::numeric_limits<T>::max)()); + r &= (std::abs((std::numeric_limits<T>::min)()) == (std::numeric_limits<T>::min)()); + r &= (std::abs(-(std::numeric_limits<T>::min)()) == (std::numeric_limits<T>::min)()); + if(r) + std::cout << "std::abs looks OK for type " << name << std::endl; + else + std::cout << "CAUTION: std::abs is broken for type " << name << std::endl; + + // + // std::sqrt on FreeBSD converts long double arguments to double leading to + // overflow/underflow: + // + r = (std::sqrt((std::numeric_limits<T>::max)()) < (std::numeric_limits<T>::max)()); + if(r) + std::cout << "std::sqrt looks OK for type " << name << std::endl; + else + std::cout << "CAUTION: std::sqrt is broken for type " << name << std::endl; + + // + // Sanity check for atan2: verify that it returns arguments in the correct + // range and not just atan(x/y). + // + static const T half_pi = static_cast<T>(1.57079632679489661923132169163975144L); + + T val = std::atan2(T(-1), T(-1)); + r = -half_pi > val; + val = std::atan2(T(1), T(-1)); + r &= half_pi < val; + val = std::atan2(T(1), T(1)); + r &= (val > 0) && (val < half_pi); + val = std::atan2(T(-1), T(1)); + r &= (val < 0) && (val > -half_pi); + if(r) + std::cout << "std::atan2 looks OK for type " << name << std::endl; + else + std::cout << "CAUTION: std::atan2 is broken for type " << name << std::endl; +} + + + +int main() +{ + // + // Start by printing the values of the macros from float.h + // + std::cout << + "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n" + "Macros from <math.h>" << std::endl; + +#ifdef __BORLANDC__ + // Turn off hardware exceptions so we don't just abort + // when calling numeric_limits members. + _control87(MCW_EM,MCW_EM); +#endif + + PRINT_EXPRESSION(HUGE_VAL); +#ifdef HUGE_VALF + PRINT_EXPRESSION(HUGE_VALF); +#endif +#ifdef HUGE_VALL + PRINT_EXPRESSION(HUGE_VALL); +#endif +#ifdef INFINITY + PRINT_EXPRESSION(INFINITY); +#endif + + PRINT_MACRO(NAN); + PRINT_MACRO(FP_INFINITE); + PRINT_MACRO(FP_NAN); + PRINT_MACRO(FP_NORMAL); + PRINT_MACRO(FP_SUBNORMAL); + PRINT_MACRO(FP_ZERO); + PRINT_MACRO(FP_FAST_FMA); + PRINT_MACRO(FP_FAST_FMAF); + PRINT_MACRO(FP_FAST_FMAL); + PRINT_MACRO(FP_ILOGB0); + PRINT_MACRO(FP_ILOGBNAN); + PRINT_MACRO(MATH_ERRNO); + PRINT_MACRO(MATH_ERREXCEPT); + + PRINT_EXPRESSION(FLT_MIN_10_EXP); + PRINT_EXPRESSION(FLT_DIG); + PRINT_EXPRESSION(FLT_MIN_EXP); + PRINT_EXPRESSION(FLT_EPSILON); + PRINT_EXPRESSION(FLT_RADIX); + PRINT_EXPRESSION(FLT_MANT_DIG); + PRINT_EXPRESSION(FLT_ROUNDS); + PRINT_EXPRESSION(FLT_MAX); + PRINT_EXPRESSION(FLT_MAX_10_EXP); + PRINT_EXPRESSION(FLT_MAX_EXP); + PRINT_EXPRESSION(FLT_MIN); + PRINT_EXPRESSION(DBL_DIG); + PRINT_EXPRESSION(DBL_MIN_EXP); + PRINT_EXPRESSION(DBL_EPSILON); + PRINT_EXPRESSION(DBL_MANT_DIG); + PRINT_EXPRESSION(DBL_MAX); + PRINT_EXPRESSION(DBL_MIN); + PRINT_EXPRESSION(DBL_MAX_10_EXP); + PRINT_EXPRESSION(DBL_MAX_EXP); + PRINT_EXPRESSION(DBL_MIN_10_EXP); + PRINT_EXPRESSION(LDBL_MAX_10_EXP); + PRINT_EXPRESSION(LDBL_MAX_EXP); + PRINT_EXPRESSION(LDBL_MIN); + PRINT_EXPRESSION(LDBL_MIN_10_EXP); + PRINT_EXPRESSION(LDBL_DIG); + PRINT_EXPRESSION(LDBL_MIN_EXP); + PRINT_EXPRESSION(LDBL_EPSILON); + PRINT_EXPRESSION(LDBL_MANT_DIG); + PRINT_EXPRESSION(LDBL_MAX); + + std::cout << std::endl; + + // + // print out numeric_limits info: + // + print_limits(float(0), "float"); + print_limits(double(0), "double"); + print_limits((long double)(0), "long double"); + + // + // print out function overload information: + // + test_overloads(float(0), "float"); + test_overloads(double(0), "double"); + test_overloads((long double)(0), "long double"); + return 0; +} + + + + diff --git a/libs/config/test/no_0x_hdr_array_fail.cpp b/libs/config/test/no_0x_hdr_array_fail.cpp new file mode 100644 index 0000000000..a67ed7fd68 --- /dev/null +++ b/libs/config/test/no_0x_hdr_array_fail.cpp @@ -0,0 +1,37 @@ +// This file was automatically generated on Fri May 15 12:10:32 2009 +// by libs/config/tools/generate.cpp +// Copyright John Maddock 2002-4. +// 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) + +// See http://www.boost.org/libs/config for the most recent version.// +// Revision $Id: no_0x_hdr_array_fail.cpp 53445 2009-05-30 11:22:59Z bemandawes $ +// + + +// Test file for macro BOOST_NO_0X_HDR_ARRAY +// This file should not compile, if it does then +// BOOST_NO_0X_HDR_ARRAY should not be defined. +// See file boost_no_0x_hdr_array.ipp for details + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include <boost/config.hpp> +#include "test.hpp" + +#ifdef BOOST_NO_0X_HDR_ARRAY +#include "boost_no_0x_hdr_array.ipp" +#else +#error "this file should not compile" +#endif + +int main( int, char *[] ) +{ + return boost_no_0x_hdr_array::test(); +} + diff --git a/libs/config/test/no_0x_hdr_array_pass.cpp b/libs/config/test/no_0x_hdr_array_pass.cpp new file mode 100644 index 0000000000..cf5450cd95 --- /dev/null +++ b/libs/config/test/no_0x_hdr_array_pass.cpp @@ -0,0 +1,37 @@ +// This file was automatically generated on Fri May 15 12:10:32 2009 +// by libs/config/tools/generate.cpp +// Copyright John Maddock 2002-4. +// 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) + +// See http://www.boost.org/libs/config for the most recent version.// +// Revision $Id: no_0x_hdr_array_pass.cpp 53445 2009-05-30 11:22:59Z bemandawes $ +// + + +// Test file for macro BOOST_NO_0X_HDR_ARRAY +// This file should compile, if it does not then +// BOOST_NO_0X_HDR_ARRAY should be defined. +// See file boost_no_0x_hdr_array.ipp for details + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include <boost/config.hpp> +#include "test.hpp" + +#ifndef BOOST_NO_0X_HDR_ARRAY +#include "boost_no_0x_hdr_array.ipp" +#else +namespace boost_no_0x_hdr_array = empty_boost; +#endif + +int main( int, char *[] ) +{ + return boost_no_0x_hdr_array::test(); +} + diff --git a/libs/config/test/no_0x_hdr_chrono_fail.cpp b/libs/config/test/no_0x_hdr_chrono_fail.cpp new file mode 100644 index 0000000000..acec13bc62 --- /dev/null +++ b/libs/config/test/no_0x_hdr_chrono_fail.cpp @@ -0,0 +1,37 @@ +// This file was automatically generated on Fri May 15 11:57:42 2009 +// by libs/config/tools/generate.cpp +// Copyright John Maddock 2002-4. +// 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) + +// See http://www.boost.org/libs/config for the most recent version.// +// Revision $Id: no_0x_hdr_chrono_fail.cpp 53445 2009-05-30 11:22:59Z bemandawes $ +// + + +// Test file for macro BOOST_NO_0X_HDR_CHRONO +// This file should not compile, if it does then +// BOOST_NO_0X_HDR_CHRONO should not be defined. +// See file boost_no_0x_hdr_chrono.ipp for details + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include <boost/config.hpp> +#include "test.hpp" + +#ifdef BOOST_NO_0X_HDR_CHRONO +#include "boost_no_0x_hdr_chrono.ipp" +#else +#error "this file should not compile" +#endif + +int main( int, char *[] ) +{ + return boost_no_0x_hdr_chrono::test(); +} + diff --git a/libs/config/test/no_0x_hdr_chrono_pass.cpp b/libs/config/test/no_0x_hdr_chrono_pass.cpp new file mode 100644 index 0000000000..37999be24b --- /dev/null +++ b/libs/config/test/no_0x_hdr_chrono_pass.cpp @@ -0,0 +1,37 @@ +// This file was automatically generated on Fri May 15 11:57:42 2009 +// by libs/config/tools/generate.cpp +// Copyright John Maddock 2002-4. +// 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) + +// See http://www.boost.org/libs/config for the most recent version.// +// Revision $Id: no_0x_hdr_chrono_pass.cpp 53445 2009-05-30 11:22:59Z bemandawes $ +// + + +// Test file for macro BOOST_NO_0X_HDR_CHRONO +// This file should compile, if it does not then +// BOOST_NO_0X_HDR_CHRONO should be defined. +// See file boost_no_0x_hdr_chrono.ipp for details + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include <boost/config.hpp> +#include "test.hpp" + +#ifndef BOOST_NO_0X_HDR_CHRONO +#include "boost_no_0x_hdr_chrono.ipp" +#else +namespace boost_no_0x_hdr_chrono = empty_boost; +#endif + +int main( int, char *[] ) +{ + return boost_no_0x_hdr_chrono::test(); +} + diff --git a/libs/config/test/no_0x_hdr_codecvt_fail.cpp b/libs/config/test/no_0x_hdr_codecvt_fail.cpp new file mode 100644 index 0000000000..7bcb38b011 --- /dev/null +++ b/libs/config/test/no_0x_hdr_codecvt_fail.cpp @@ -0,0 +1,37 @@ +// This file was automatically generated on Fri May 15 11:57:42 2009 +// by libs/config/tools/generate.cpp +// Copyright John Maddock 2002-4. +// 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) + +// See http://www.boost.org/libs/config for the most recent version.// +// Revision $Id: no_0x_hdr_codecvt_fail.cpp 53445 2009-05-30 11:22:59Z bemandawes $ +// + + +// Test file for macro BOOST_NO_0X_HDR_CODECVT +// This file should not compile, if it does then +// BOOST_NO_0X_HDR_CODECVT should not be defined. +// See file boost_no_0x_hdr_codecvt.ipp for details + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include <boost/config.hpp> +#include "test.hpp" + +#ifdef BOOST_NO_0X_HDR_CODECVT +#include "boost_no_0x_hdr_codecvt.ipp" +#else +#error "this file should not compile" +#endif + +int main( int, char *[] ) +{ + return boost_no_0x_hdr_codecvt::test(); +} + diff --git a/libs/config/test/no_0x_hdr_codecvt_pass.cpp b/libs/config/test/no_0x_hdr_codecvt_pass.cpp new file mode 100644 index 0000000000..623d5a6808 --- /dev/null +++ b/libs/config/test/no_0x_hdr_codecvt_pass.cpp @@ -0,0 +1,37 @@ +// This file was automatically generated on Fri May 15 11:57:42 2009 +// by libs/config/tools/generate.cpp +// Copyright John Maddock 2002-4. +// 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) + +// See http://www.boost.org/libs/config for the most recent version.// +// Revision $Id: no_0x_hdr_codecvt_pass.cpp 53445 2009-05-30 11:22:59Z bemandawes $ +// + + +// Test file for macro BOOST_NO_0X_HDR_CODECVT +// This file should compile, if it does not then +// BOOST_NO_0X_HDR_CODECVT should be defined. +// See file boost_no_0x_hdr_codecvt.ipp for details + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include <boost/config.hpp> +#include "test.hpp" + +#ifndef BOOST_NO_0X_HDR_CODECVT +#include "boost_no_0x_hdr_codecvt.ipp" +#else +namespace boost_no_0x_hdr_codecvt = empty_boost; +#endif + +int main( int, char *[] ) +{ + return boost_no_0x_hdr_codecvt::test(); +} + diff --git a/libs/config/test/no_0x_hdr_condition_variable_fail.cpp b/libs/config/test/no_0x_hdr_condition_variable_fail.cpp new file mode 100644 index 0000000000..dc6c833e84 --- /dev/null +++ b/libs/config/test/no_0x_hdr_condition_variable_fail.cpp @@ -0,0 +1,37 @@ +// This file was automatically generated on Fri May 15 11:57:42 2009 +// by libs/config/tools/generate.cpp +// Copyright John Maddock 2002-4. +// 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) + +// See http://www.boost.org/libs/config for the most recent version.// +// Revision $Id: no_0x_hdr_condition_variable_fail.cpp 53445 2009-05-30 11:22:59Z bemandawes $ +// + + +// Test file for macro BOOST_NO_0X_HDR_CONDITION_VARIABLE +// This file should not compile, if it does then +// BOOST_NO_0X_HDR_CONDITION_VARIABLE should not be defined. +// See file boost_no_0x_hdr_condition_variable.ipp for details + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include <boost/config.hpp> +#include "test.hpp" + +#ifdef BOOST_NO_0X_HDR_CONDITION_VARIABLE +#include "boost_no_0x_hdr_condition_variable.ipp" +#else +#error "this file should not compile" +#endif + +int main( int, char *[] ) +{ + return boost_no_0x_hdr_condition_variable::test(); +} + diff --git a/libs/config/test/no_0x_hdr_condition_variable_pass.cpp b/libs/config/test/no_0x_hdr_condition_variable_pass.cpp new file mode 100644 index 0000000000..ad283487de --- /dev/null +++ b/libs/config/test/no_0x_hdr_condition_variable_pass.cpp @@ -0,0 +1,37 @@ +// This file was automatically generated on Fri May 15 11:57:42 2009 +// by libs/config/tools/generate.cpp +// Copyright John Maddock 2002-4. +// 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) + +// See http://www.boost.org/libs/config for the most recent version.// +// Revision $Id: no_0x_hdr_condition_variable_pass.cpp 53445 2009-05-30 11:22:59Z bemandawes $ +// + + +// Test file for macro BOOST_NO_0X_HDR_CONDITION_VARIABLE +// This file should compile, if it does not then +// BOOST_NO_0X_HDR_CONDITION_VARIABLE should be defined. +// See file boost_no_0x_hdr_condition_variable.ipp for details + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include <boost/config.hpp> +#include "test.hpp" + +#ifndef BOOST_NO_0X_HDR_CONDITION_VARIABLE +#include "boost_no_0x_hdr_condition_variable.ipp" +#else +namespace boost_no_0x_hdr_condition_variable = empty_boost; +#endif + +int main( int, char *[] ) +{ + return boost_no_0x_hdr_condition_variable::test(); +} + diff --git a/libs/config/test/no_0x_hdr_forward_list_fail.cpp b/libs/config/test/no_0x_hdr_forward_list_fail.cpp new file mode 100644 index 0000000000..ff60ad0ea4 --- /dev/null +++ b/libs/config/test/no_0x_hdr_forward_list_fail.cpp @@ -0,0 +1,37 @@ +// This file was automatically generated on Fri May 15 11:57:42 2009 +// by libs/config/tools/generate.cpp +// Copyright John Maddock 2002-4. +// 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) + +// See http://www.boost.org/libs/config for the most recent version.// +// Revision $Id: no_0x_hdr_forward_list_fail.cpp 53445 2009-05-30 11:22:59Z bemandawes $ +// + + +// Test file for macro BOOST_NO_0X_HDR_FORWARD_LIST +// This file should not compile, if it does then +// BOOST_NO_0X_HDR_FORWARD_LIST should not be defined. +// See file boost_no_0x_hdr_forward_list.ipp for details + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include <boost/config.hpp> +#include "test.hpp" + +#ifdef BOOST_NO_0X_HDR_FORWARD_LIST +#include "boost_no_0x_hdr_forward_list.ipp" +#else +#error "this file should not compile" +#endif + +int main( int, char *[] ) +{ + return boost_no_0x_hdr_forward_list::test(); +} + diff --git a/libs/config/test/no_0x_hdr_forward_list_pass.cpp b/libs/config/test/no_0x_hdr_forward_list_pass.cpp new file mode 100644 index 0000000000..3ef31ffeca --- /dev/null +++ b/libs/config/test/no_0x_hdr_forward_list_pass.cpp @@ -0,0 +1,37 @@ +// This file was automatically generated on Fri May 15 11:57:42 2009 +// by libs/config/tools/generate.cpp +// Copyright John Maddock 2002-4. +// 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) + +// See http://www.boost.org/libs/config for the most recent version.// +// Revision $Id: no_0x_hdr_forward_list_pass.cpp 53445 2009-05-30 11:22:59Z bemandawes $ +// + + +// Test file for macro BOOST_NO_0X_HDR_FORWARD_LIST +// This file should compile, if it does not then +// BOOST_NO_0X_HDR_FORWARD_LIST should be defined. +// See file boost_no_0x_hdr_forward_list.ipp for details + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include <boost/config.hpp> +#include "test.hpp" + +#ifndef BOOST_NO_0X_HDR_FORWARD_LIST +#include "boost_no_0x_hdr_forward_list.ipp" +#else +namespace boost_no_0x_hdr_forward_list = empty_boost; +#endif + +int main( int, char *[] ) +{ + return boost_no_0x_hdr_forward_list::test(); +} + diff --git a/libs/config/test/no_0x_hdr_future_fail.cpp b/libs/config/test/no_0x_hdr_future_fail.cpp new file mode 100644 index 0000000000..812cab6de7 --- /dev/null +++ b/libs/config/test/no_0x_hdr_future_fail.cpp @@ -0,0 +1,37 @@ +// This file was automatically generated on Fri May 15 11:57:42 2009 +// by libs/config/tools/generate.cpp +// Copyright John Maddock 2002-4. +// 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) + +// See http://www.boost.org/libs/config for the most recent version.// +// Revision $Id: no_0x_hdr_future_fail.cpp 53445 2009-05-30 11:22:59Z bemandawes $ +// + + +// Test file for macro BOOST_NO_0X_HDR_FUTURE +// This file should not compile, if it does then +// BOOST_NO_0X_HDR_FUTURE should not be defined. +// See file boost_no_0x_hdr_future.ipp for details + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include <boost/config.hpp> +#include "test.hpp" + +#ifdef BOOST_NO_0X_HDR_FUTURE +#include "boost_no_0x_hdr_future.ipp" +#else +#error "this file should not compile" +#endif + +int main( int, char *[] ) +{ + return boost_no_0x_hdr_future::test(); +} + diff --git a/libs/config/test/no_0x_hdr_future_pass.cpp b/libs/config/test/no_0x_hdr_future_pass.cpp new file mode 100644 index 0000000000..181f17b64b --- /dev/null +++ b/libs/config/test/no_0x_hdr_future_pass.cpp @@ -0,0 +1,37 @@ +// This file was automatically generated on Fri May 15 11:57:42 2009 +// by libs/config/tools/generate.cpp +// Copyright John Maddock 2002-4. +// 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) + +// See http://www.boost.org/libs/config for the most recent version.// +// Revision $Id: no_0x_hdr_future_pass.cpp 53445 2009-05-30 11:22:59Z bemandawes $ +// + + +// Test file for macro BOOST_NO_0X_HDR_FUTURE +// This file should compile, if it does not then +// BOOST_NO_0X_HDR_FUTURE should be defined. +// See file boost_no_0x_hdr_future.ipp for details + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include <boost/config.hpp> +#include "test.hpp" + +#ifndef BOOST_NO_0X_HDR_FUTURE +#include "boost_no_0x_hdr_future.ipp" +#else +namespace boost_no_0x_hdr_future = empty_boost; +#endif + +int main( int, char *[] ) +{ + return boost_no_0x_hdr_future::test(); +} + diff --git a/libs/config/test/no_0x_hdr_initializer_list_fail.cpp b/libs/config/test/no_0x_hdr_initializer_list_fail.cpp new file mode 100644 index 0000000000..c2ba892313 --- /dev/null +++ b/libs/config/test/no_0x_hdr_initializer_list_fail.cpp @@ -0,0 +1,37 @@ +// This file was automatically generated on Fri May 15 11:57:42 2009 +// by libs/config/tools/generate.cpp +// Copyright John Maddock 2002-4. +// 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) + +// See http://www.boost.org/libs/config for the most recent version.// +// Revision $Id: no_0x_hdr_initializer_list_fail.cpp 53445 2009-05-30 11:22:59Z bemandawes $ +// + + +// Test file for macro BOOST_NO_0X_HDR_INITIALIZER_LIST +// This file should not compile, if it does then +// BOOST_NO_0X_HDR_INITIALIZER_LIST should not be defined. +// See file boost_no_0x_hdr_initializer_list.ipp for details + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include <boost/config.hpp> +#include "test.hpp" + +#ifdef BOOST_NO_0X_HDR_INITIALIZER_LIST +#include "boost_no_0x_hdr_initializer_list.ipp" +#else +#error "this file should not compile" +#endif + +int main( int, char *[] ) +{ + return boost_no_0x_hdr_initializer_list::test(); +} + diff --git a/libs/config/test/no_0x_hdr_initializer_list_pass.cpp b/libs/config/test/no_0x_hdr_initializer_list_pass.cpp new file mode 100644 index 0000000000..c817c9baa3 --- /dev/null +++ b/libs/config/test/no_0x_hdr_initializer_list_pass.cpp @@ -0,0 +1,37 @@ +// This file was automatically generated on Fri May 15 11:57:42 2009 +// by libs/config/tools/generate.cpp +// Copyright John Maddock 2002-4. +// 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) + +// See http://www.boost.org/libs/config for the most recent version.// +// Revision $Id: no_0x_hdr_initializer_list_pass.cpp 53445 2009-05-30 11:22:59Z bemandawes $ +// + + +// Test file for macro BOOST_NO_0X_HDR_INITIALIZER_LIST +// This file should compile, if it does not then +// BOOST_NO_0X_HDR_INITIALIZER_LIST should be defined. +// See file boost_no_0x_hdr_initializer_list.ipp for details + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include <boost/config.hpp> +#include "test.hpp" + +#ifndef BOOST_NO_0X_HDR_INITIALIZER_LIST +#include "boost_no_0x_hdr_initializer_list.ipp" +#else +namespace boost_no_0x_hdr_initializer_list = empty_boost; +#endif + +int main( int, char *[] ) +{ + return boost_no_0x_hdr_initializer_list::test(); +} + diff --git a/libs/config/test/no_0x_hdr_mutex_fail.cpp b/libs/config/test/no_0x_hdr_mutex_fail.cpp new file mode 100644 index 0000000000..951a21b143 --- /dev/null +++ b/libs/config/test/no_0x_hdr_mutex_fail.cpp @@ -0,0 +1,37 @@ +// This file was automatically generated on Fri May 15 11:57:42 2009 +// by libs/config/tools/generate.cpp +// Copyright John Maddock 2002-4. +// 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) + +// See http://www.boost.org/libs/config for the most recent version.// +// Revision $Id: no_0x_hdr_mutex_fail.cpp 53445 2009-05-30 11:22:59Z bemandawes $ +// + + +// Test file for macro BOOST_NO_0X_HDR_MUTEX +// This file should not compile, if it does then +// BOOST_NO_0X_HDR_MUTEX should not be defined. +// See file boost_no_0x_hdr_mutex.ipp for details + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include <boost/config.hpp> +#include "test.hpp" + +#ifdef BOOST_NO_0X_HDR_MUTEX +#include "boost_no_0x_hdr_mutex.ipp" +#else +#error "this file should not compile" +#endif + +int main( int, char *[] ) +{ + return boost_no_0x_hdr_mutex::test(); +} + diff --git a/libs/config/test/no_0x_hdr_mutex_pass.cpp b/libs/config/test/no_0x_hdr_mutex_pass.cpp new file mode 100644 index 0000000000..dc05100d45 --- /dev/null +++ b/libs/config/test/no_0x_hdr_mutex_pass.cpp @@ -0,0 +1,37 @@ +// This file was automatically generated on Fri May 15 11:57:42 2009 +// by libs/config/tools/generate.cpp +// Copyright John Maddock 2002-4. +// 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) + +// See http://www.boost.org/libs/config for the most recent version.// +// Revision $Id: no_0x_hdr_mutex_pass.cpp 53445 2009-05-30 11:22:59Z bemandawes $ +// + + +// Test file for macro BOOST_NO_0X_HDR_MUTEX +// This file should compile, if it does not then +// BOOST_NO_0X_HDR_MUTEX should be defined. +// See file boost_no_0x_hdr_mutex.ipp for details + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include <boost/config.hpp> +#include "test.hpp" + +#ifndef BOOST_NO_0X_HDR_MUTEX +#include "boost_no_0x_hdr_mutex.ipp" +#else +namespace boost_no_0x_hdr_mutex = empty_boost; +#endif + +int main( int, char *[] ) +{ + return boost_no_0x_hdr_mutex::test(); +} + diff --git a/libs/config/test/no_0x_hdr_random_fail.cpp b/libs/config/test/no_0x_hdr_random_fail.cpp new file mode 100644 index 0000000000..e84c67af56 --- /dev/null +++ b/libs/config/test/no_0x_hdr_random_fail.cpp @@ -0,0 +1,37 @@ +// This file was automatically generated on Fri May 15 11:57:42 2009 +// by libs/config/tools/generate.cpp +// Copyright John Maddock 2002-4. +// 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) + +// See http://www.boost.org/libs/config for the most recent version.// +// Revision $Id: no_0x_hdr_random_fail.cpp 53445 2009-05-30 11:22:59Z bemandawes $ +// + + +// Test file for macro BOOST_NO_0X_HDR_RANDOM +// This file should not compile, if it does then +// BOOST_NO_0X_HDR_RANDOM should not be defined. +// See file boost_no_0x_hdr_random.ipp for details + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include <boost/config.hpp> +#include "test.hpp" + +#ifdef BOOST_NO_0X_HDR_RANDOM +#include "boost_no_0x_hdr_random.ipp" +#else +#error "this file should not compile" +#endif + +int main( int, char *[] ) +{ + return boost_no_0x_hdr_random::test(); +} + diff --git a/libs/config/test/no_0x_hdr_random_pass.cpp b/libs/config/test/no_0x_hdr_random_pass.cpp new file mode 100644 index 0000000000..79daeb118d --- /dev/null +++ b/libs/config/test/no_0x_hdr_random_pass.cpp @@ -0,0 +1,37 @@ +// This file was automatically generated on Fri May 15 11:57:42 2009 +// by libs/config/tools/generate.cpp +// Copyright John Maddock 2002-4. +// 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) + +// See http://www.boost.org/libs/config for the most recent version.// +// Revision $Id: no_0x_hdr_random_pass.cpp 53445 2009-05-30 11:22:59Z bemandawes $ +// + + +// Test file for macro BOOST_NO_0X_HDR_RANDOM +// This file should compile, if it does not then +// BOOST_NO_0X_HDR_RANDOM should be defined. +// See file boost_no_0x_hdr_random.ipp for details + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include <boost/config.hpp> +#include "test.hpp" + +#ifndef BOOST_NO_0X_HDR_RANDOM +#include "boost_no_0x_hdr_random.ipp" +#else +namespace boost_no_0x_hdr_random = empty_boost; +#endif + +int main( int, char *[] ) +{ + return boost_no_0x_hdr_random::test(); +} + diff --git a/libs/config/test/no_0x_hdr_ratio_fail.cpp b/libs/config/test/no_0x_hdr_ratio_fail.cpp new file mode 100644 index 0000000000..bd783bbb6a --- /dev/null +++ b/libs/config/test/no_0x_hdr_ratio_fail.cpp @@ -0,0 +1,37 @@ +// This file was automatically generated on Fri May 15 11:57:42 2009 +// by libs/config/tools/generate.cpp +// Copyright John Maddock 2002-4. +// 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) + +// See http://www.boost.org/libs/config for the most recent version.// +// Revision $Id: no_0x_hdr_ratio_fail.cpp 53445 2009-05-30 11:22:59Z bemandawes $ +// + + +// Test file for macro BOOST_NO_0X_HDR_RATIO +// This file should not compile, if it does then +// BOOST_NO_0X_HDR_RATIO should not be defined. +// See file boost_no_0x_hdr_ratio.ipp for details + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include <boost/config.hpp> +#include "test.hpp" + +#ifdef BOOST_NO_0X_HDR_RATIO +#include "boost_no_0x_hdr_ratio.ipp" +#else +#error "this file should not compile" +#endif + +int main( int, char *[] ) +{ + return boost_no_0x_hdr_ratio::test(); +} + diff --git a/libs/config/test/no_0x_hdr_ratio_pass.cpp b/libs/config/test/no_0x_hdr_ratio_pass.cpp new file mode 100644 index 0000000000..ff34d38465 --- /dev/null +++ b/libs/config/test/no_0x_hdr_ratio_pass.cpp @@ -0,0 +1,37 @@ +// This file was automatically generated on Fri May 15 11:57:42 2009 +// by libs/config/tools/generate.cpp +// Copyright John Maddock 2002-4. +// 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) + +// See http://www.boost.org/libs/config for the most recent version.// +// Revision $Id: no_0x_hdr_ratio_pass.cpp 53445 2009-05-30 11:22:59Z bemandawes $ +// + + +// Test file for macro BOOST_NO_0X_HDR_RATIO +// This file should compile, if it does not then +// BOOST_NO_0X_HDR_RATIO should be defined. +// See file boost_no_0x_hdr_ratio.ipp for details + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include <boost/config.hpp> +#include "test.hpp" + +#ifndef BOOST_NO_0X_HDR_RATIO +#include "boost_no_0x_hdr_ratio.ipp" +#else +namespace boost_no_0x_hdr_ratio = empty_boost; +#endif + +int main( int, char *[] ) +{ + return boost_no_0x_hdr_ratio::test(); +} + diff --git a/libs/config/test/no_0x_hdr_regex_fail.cpp b/libs/config/test/no_0x_hdr_regex_fail.cpp new file mode 100644 index 0000000000..3fdf0d10cb --- /dev/null +++ b/libs/config/test/no_0x_hdr_regex_fail.cpp @@ -0,0 +1,37 @@ +// This file was automatically generated on Fri May 15 11:57:42 2009 +// by libs/config/tools/generate.cpp +// Copyright John Maddock 2002-4. +// 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) + +// See http://www.boost.org/libs/config for the most recent version.// +// Revision $Id: no_0x_hdr_regex_fail.cpp 53445 2009-05-30 11:22:59Z bemandawes $ +// + + +// Test file for macro BOOST_NO_0X_HDR_REGEX +// This file should not compile, if it does then +// BOOST_NO_0X_HDR_REGEX should not be defined. +// See file boost_no_0x_hdr_regex.ipp for details + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include <boost/config.hpp> +#include "test.hpp" + +#ifdef BOOST_NO_0X_HDR_REGEX +#include "boost_no_0x_hdr_regex.ipp" +#else +#error "this file should not compile" +#endif + +int main( int, char *[] ) +{ + return boost_no_0x_hdr_regex::test(); +} + diff --git a/libs/config/test/no_0x_hdr_regex_pass.cpp b/libs/config/test/no_0x_hdr_regex_pass.cpp new file mode 100644 index 0000000000..0c983c57cc --- /dev/null +++ b/libs/config/test/no_0x_hdr_regex_pass.cpp @@ -0,0 +1,37 @@ +// This file was automatically generated on Fri May 15 11:57:42 2009 +// by libs/config/tools/generate.cpp +// Copyright John Maddock 2002-4. +// 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) + +// See http://www.boost.org/libs/config for the most recent version.// +// Revision $Id: no_0x_hdr_regex_pass.cpp 53445 2009-05-30 11:22:59Z bemandawes $ +// + + +// Test file for macro BOOST_NO_0X_HDR_REGEX +// This file should compile, if it does not then +// BOOST_NO_0X_HDR_REGEX should be defined. +// See file boost_no_0x_hdr_regex.ipp for details + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include <boost/config.hpp> +#include "test.hpp" + +#ifndef BOOST_NO_0X_HDR_REGEX +#include "boost_no_0x_hdr_regex.ipp" +#else +namespace boost_no_0x_hdr_regex = empty_boost; +#endif + +int main( int, char *[] ) +{ + return boost_no_0x_hdr_regex::test(); +} + diff --git a/libs/config/test/no_0x_hdr_system_error_fail.cpp b/libs/config/test/no_0x_hdr_system_error_fail.cpp new file mode 100644 index 0000000000..8df2a4cefc --- /dev/null +++ b/libs/config/test/no_0x_hdr_system_error_fail.cpp @@ -0,0 +1,37 @@ +// This file was automatically generated on Fri May 15 11:57:42 2009 +// by libs/config/tools/generate.cpp +// Copyright John Maddock 2002-4. +// 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) + +// See http://www.boost.org/libs/config for the most recent version.// +// Revision $Id: no_0x_hdr_system_error_fail.cpp 53445 2009-05-30 11:22:59Z bemandawes $ +// + + +// Test file for macro BOOST_NO_0X_HDR_SYSTEM_ERROR +// This file should not compile, if it does then +// BOOST_NO_0X_HDR_SYSTEM_ERROR should not be defined. +// See file boost_no_0x_hdr_system_error.ipp for details + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include <boost/config.hpp> +#include "test.hpp" + +#ifdef BOOST_NO_0X_HDR_SYSTEM_ERROR +#include "boost_no_0x_hdr_system_error.ipp" +#else +#error "this file should not compile" +#endif + +int main( int, char *[] ) +{ + return boost_no_0x_hdr_system_error::test(); +} + diff --git a/libs/config/test/no_0x_hdr_system_error_pass.cpp b/libs/config/test/no_0x_hdr_system_error_pass.cpp new file mode 100644 index 0000000000..ed1b16838c --- /dev/null +++ b/libs/config/test/no_0x_hdr_system_error_pass.cpp @@ -0,0 +1,37 @@ +// This file was automatically generated on Fri May 15 11:57:42 2009 +// by libs/config/tools/generate.cpp +// Copyright John Maddock 2002-4. +// 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) + +// See http://www.boost.org/libs/config for the most recent version.// +// Revision $Id: no_0x_hdr_system_error_pass.cpp 53445 2009-05-30 11:22:59Z bemandawes $ +// + + +// Test file for macro BOOST_NO_0X_HDR_SYSTEM_ERROR +// This file should compile, if it does not then +// BOOST_NO_0X_HDR_SYSTEM_ERROR should be defined. +// See file boost_no_0x_hdr_system_error.ipp for details + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include <boost/config.hpp> +#include "test.hpp" + +#ifndef BOOST_NO_0X_HDR_SYSTEM_ERROR +#include "boost_no_0x_hdr_system_error.ipp" +#else +namespace boost_no_0x_hdr_system_error = empty_boost; +#endif + +int main( int, char *[] ) +{ + return boost_no_0x_hdr_system_error::test(); +} + diff --git a/libs/config/test/no_0x_hdr_thread_fail.cpp b/libs/config/test/no_0x_hdr_thread_fail.cpp new file mode 100644 index 0000000000..f96f9c4a95 --- /dev/null +++ b/libs/config/test/no_0x_hdr_thread_fail.cpp @@ -0,0 +1,37 @@ +// This file was automatically generated on Fri May 15 12:45:15 2009 +// by libs/config/tools/generate.cpp +// Copyright John Maddock 2002-4. +// 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) + +// See http://www.boost.org/libs/config for the most recent version.// +// Revision $Id: no_0x_hdr_thread_fail.cpp 53445 2009-05-30 11:22:59Z bemandawes $ +// + + +// Test file for macro BOOST_NO_0X_HDR_THREAD +// This file should not compile, if it does then +// BOOST_NO_0X_HDR_THREAD should not be defined. +// See file boost_no_0x_hdr_thread.ipp for details + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include <boost/config.hpp> +#include "test.hpp" + +#ifdef BOOST_NO_0X_HDR_THREAD +#include "boost_no_0x_hdr_thread.ipp" +#else +#error "this file should not compile" +#endif + +int main( int, char *[] ) +{ + return boost_no_0x_hdr_thread::test(); +} + diff --git a/libs/config/test/no_0x_hdr_thread_pass.cpp b/libs/config/test/no_0x_hdr_thread_pass.cpp new file mode 100644 index 0000000000..1a771d028f --- /dev/null +++ b/libs/config/test/no_0x_hdr_thread_pass.cpp @@ -0,0 +1,37 @@ +// This file was automatically generated on Fri May 15 12:45:15 2009 +// by libs/config/tools/generate.cpp +// Copyright John Maddock 2002-4. +// 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) + +// See http://www.boost.org/libs/config for the most recent version.// +// Revision $Id: no_0x_hdr_thread_pass.cpp 53445 2009-05-30 11:22:59Z bemandawes $ +// + + +// Test file for macro BOOST_NO_0X_HDR_THREAD +// This file should compile, if it does not then +// BOOST_NO_0X_HDR_THREAD should be defined. +// See file boost_no_0x_hdr_thread.ipp for details + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include <boost/config.hpp> +#include "test.hpp" + +#ifndef BOOST_NO_0X_HDR_THREAD +#include "boost_no_0x_hdr_thread.ipp" +#else +namespace boost_no_0x_hdr_thread = empty_boost; +#endif + +int main( int, char *[] ) +{ + return boost_no_0x_hdr_thread::test(); +} + diff --git a/libs/config/test/no_0x_hdr_tuple_fail.cpp b/libs/config/test/no_0x_hdr_tuple_fail.cpp new file mode 100644 index 0000000000..07f1ef7f25 --- /dev/null +++ b/libs/config/test/no_0x_hdr_tuple_fail.cpp @@ -0,0 +1,37 @@ +// This file was automatically generated on Fri May 15 11:57:42 2009 +// by libs/config/tools/generate.cpp +// Copyright John Maddock 2002-4. +// 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) + +// See http://www.boost.org/libs/config for the most recent version.// +// Revision $Id: no_0x_hdr_tuple_fail.cpp 53445 2009-05-30 11:22:59Z bemandawes $ +// + + +// Test file for macro BOOST_NO_0X_HDR_TUPLE +// This file should not compile, if it does then +// BOOST_NO_0X_HDR_TUPLE should not be defined. +// See file boost_no_0x_hdr_tuple.ipp for details + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include <boost/config.hpp> +#include "test.hpp" + +#ifdef BOOST_NO_0X_HDR_TUPLE +#include "boost_no_0x_hdr_tuple.ipp" +#else +#error "this file should not compile" +#endif + +int main( int, char *[] ) +{ + return boost_no_0x_hdr_tuple::test(); +} + diff --git a/libs/config/test/no_0x_hdr_tuple_pass.cpp b/libs/config/test/no_0x_hdr_tuple_pass.cpp new file mode 100644 index 0000000000..99a2d53823 --- /dev/null +++ b/libs/config/test/no_0x_hdr_tuple_pass.cpp @@ -0,0 +1,37 @@ +// This file was automatically generated on Fri May 15 11:57:42 2009 +// by libs/config/tools/generate.cpp +// Copyright John Maddock 2002-4. +// 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) + +// See http://www.boost.org/libs/config for the most recent version.// +// Revision $Id: no_0x_hdr_tuple_pass.cpp 53445 2009-05-30 11:22:59Z bemandawes $ +// + + +// Test file for macro BOOST_NO_0X_HDR_TUPLE +// This file should compile, if it does not then +// BOOST_NO_0X_HDR_TUPLE should be defined. +// See file boost_no_0x_hdr_tuple.ipp for details + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include <boost/config.hpp> +#include "test.hpp" + +#ifndef BOOST_NO_0X_HDR_TUPLE +#include "boost_no_0x_hdr_tuple.ipp" +#else +namespace boost_no_0x_hdr_tuple = empty_boost; +#endif + +int main( int, char *[] ) +{ + return boost_no_0x_hdr_tuple::test(); +} + diff --git a/libs/config/test/no_0x_hdr_type_traits_fail.cpp b/libs/config/test/no_0x_hdr_type_traits_fail.cpp new file mode 100644 index 0000000000..d91a0644aa --- /dev/null +++ b/libs/config/test/no_0x_hdr_type_traits_fail.cpp @@ -0,0 +1,37 @@ +// This file was automatically generated on Fri May 15 11:57:42 2009 +// by libs/config/tools/generate.cpp +// Copyright John Maddock 2002-4. +// 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) + +// See http://www.boost.org/libs/config for the most recent version.// +// Revision $Id: no_0x_hdr_type_traits_fail.cpp 53445 2009-05-30 11:22:59Z bemandawes $ +// + + +// Test file for macro BOOST_NO_0X_HDR_TYPE_TRAITS +// This file should not compile, if it does then +// BOOST_NO_0X_HDR_TYPE_TRAITS should not be defined. +// See file boost_no_0x_hdr_type_traits.ipp for details + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include <boost/config.hpp> +#include "test.hpp" + +#ifdef BOOST_NO_0X_HDR_TYPE_TRAITS +#include "boost_no_0x_hdr_type_traits.ipp" +#else +#error "this file should not compile" +#endif + +int main( int, char *[] ) +{ + return boost_no_0x_hdr_type_traits::test(); +} + diff --git a/libs/config/test/no_0x_hdr_type_traits_pass.cpp b/libs/config/test/no_0x_hdr_type_traits_pass.cpp new file mode 100644 index 0000000000..32b881c661 --- /dev/null +++ b/libs/config/test/no_0x_hdr_type_traits_pass.cpp @@ -0,0 +1,37 @@ +// This file was automatically generated on Fri May 15 11:57:42 2009 +// by libs/config/tools/generate.cpp +// Copyright John Maddock 2002-4. +// 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) + +// See http://www.boost.org/libs/config for the most recent version.// +// Revision $Id: no_0x_hdr_type_traits_pass.cpp 53445 2009-05-30 11:22:59Z bemandawes $ +// + + +// Test file for macro BOOST_NO_0X_HDR_TYPE_TRAITS +// This file should compile, if it does not then +// BOOST_NO_0X_HDR_TYPE_TRAITS should be defined. +// See file boost_no_0x_hdr_type_traits.ipp for details + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include <boost/config.hpp> +#include "test.hpp" + +#ifndef BOOST_NO_0X_HDR_TYPE_TRAITS +#include "boost_no_0x_hdr_type_traits.ipp" +#else +namespace boost_no_0x_hdr_type_traits = empty_boost; +#endif + +int main( int, char *[] ) +{ + return boost_no_0x_hdr_type_traits::test(); +} + diff --git a/libs/config/test/no_0x_hdr_typeindex_fail.cpp b/libs/config/test/no_0x_hdr_typeindex_fail.cpp new file mode 100644 index 0000000000..83e903d340 --- /dev/null +++ b/libs/config/test/no_0x_hdr_typeindex_fail.cpp @@ -0,0 +1,37 @@ +// This file was automatically generated on Fri Jun 04 12:51:34 2010 +// by libs/config/tools/generate.cpp +// Copyright John Maddock 2002-4. +// 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) + +// See http://www.boost.org/libs/config for the most recent version.// +// Revision $Id: generate.cpp 49281 2008-10-11 15:40:44Z johnmaddock $ +// + + +// Test file for macro BOOST_NO_0X_HDR_TYPEINDEX +// This file should not compile, if it does then +// BOOST_NO_0X_HDR_TYPEINDEX should not be defined. +// See file boost_no_0x_hdr_typeindex.ipp for details + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include <boost/config.hpp> +#include "test.hpp" + +#ifdef BOOST_NO_0X_HDR_TYPEINDEX +#include "boost_no_0x_hdr_typeindex.ipp" +#else +#error "this file should not compile" +#endif + +int main( int, char *[] ) +{ + return boost_no_0x_hdr_typeindex::test(); +} + diff --git a/libs/config/test/no_0x_hdr_typeindex_pass.cpp b/libs/config/test/no_0x_hdr_typeindex_pass.cpp new file mode 100644 index 0000000000..52d3844006 --- /dev/null +++ b/libs/config/test/no_0x_hdr_typeindex_pass.cpp @@ -0,0 +1,37 @@ +// This file was automatically generated on Fri Jun 04 12:51:34 2010 +// by libs/config/tools/generate.cpp +// Copyright John Maddock 2002-4. +// 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) + +// See http://www.boost.org/libs/config for the most recent version.// +// Revision $Id: generate.cpp 49281 2008-10-11 15:40:44Z johnmaddock $ +// + + +// Test file for macro BOOST_NO_0X_HDR_TYPEINDEX +// This file should compile, if it does not then +// BOOST_NO_0X_HDR_TYPEINDEX should be defined. +// See file boost_no_0x_hdr_typeindex.ipp for details + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include <boost/config.hpp> +#include "test.hpp" + +#ifndef BOOST_NO_0X_HDR_TYPEINDEX +#include "boost_no_0x_hdr_typeindex.ipp" +#else +namespace boost_no_0x_hdr_typeindex = empty_boost; +#endif + +int main( int, char *[] ) +{ + return boost_no_0x_hdr_typeindex::test(); +} + diff --git a/libs/config/test/no_0x_hdr_unordered_map_fail.cpp b/libs/config/test/no_0x_hdr_unordered_map_fail.cpp new file mode 100644 index 0000000000..a1d22dfa47 --- /dev/null +++ b/libs/config/test/no_0x_hdr_unordered_map_fail.cpp @@ -0,0 +1,37 @@ +// This file was automatically generated on Fri May 15 11:57:42 2009 +// by libs/config/tools/generate.cpp +// Copyright John Maddock 2002-4. +// 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) + +// See http://www.boost.org/libs/config for the most recent version.// +// Revision $Id: no_0x_hdr_unordered_map_fail.cpp 53445 2009-05-30 11:22:59Z bemandawes $ +// + + +// Test file for macro BOOST_NO_0X_HDR_UNORDERED_MAP +// This file should not compile, if it does then +// BOOST_NO_0X_HDR_UNORDERED_MAP should not be defined. +// See file boost_no_0x_hdr_unordered_map.ipp for details + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include <boost/config.hpp> +#include "test.hpp" + +#ifdef BOOST_NO_0X_HDR_UNORDERED_MAP +#include "boost_no_0x_hdr_unordered_map.ipp" +#else +#error "this file should not compile" +#endif + +int main( int, char *[] ) +{ + return boost_no_0x_hdr_unordered_map::test(); +} + diff --git a/libs/config/test/no_0x_hdr_unordered_map_pass.cpp b/libs/config/test/no_0x_hdr_unordered_map_pass.cpp new file mode 100644 index 0000000000..35371157f9 --- /dev/null +++ b/libs/config/test/no_0x_hdr_unordered_map_pass.cpp @@ -0,0 +1,37 @@ +// This file was automatically generated on Fri May 15 11:57:42 2009 +// by libs/config/tools/generate.cpp +// Copyright John Maddock 2002-4. +// 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) + +// See http://www.boost.org/libs/config for the most recent version.// +// Revision $Id: no_0x_hdr_unordered_map_pass.cpp 53445 2009-05-30 11:22:59Z bemandawes $ +// + + +// Test file for macro BOOST_NO_0X_HDR_UNORDERED_MAP +// This file should compile, if it does not then +// BOOST_NO_0X_HDR_UNORDERED_MAP should be defined. +// See file boost_no_0x_hdr_unordered_map.ipp for details + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include <boost/config.hpp> +#include "test.hpp" + +#ifndef BOOST_NO_0X_HDR_UNORDERED_MAP +#include "boost_no_0x_hdr_unordered_map.ipp" +#else +namespace boost_no_0x_hdr_unordered_map = empty_boost; +#endif + +int main( int, char *[] ) +{ + return boost_no_0x_hdr_unordered_map::test(); +} + diff --git a/libs/config/test/no_0x_hdr_unordered_set_fail.cpp b/libs/config/test/no_0x_hdr_unordered_set_fail.cpp new file mode 100644 index 0000000000..3fd6f71667 --- /dev/null +++ b/libs/config/test/no_0x_hdr_unordered_set_fail.cpp @@ -0,0 +1,37 @@ +// This file was automatically generated on Fri May 15 11:57:42 2009 +// by libs/config/tools/generate.cpp +// Copyright John Maddock 2002-4. +// 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) + +// See http://www.boost.org/libs/config for the most recent version.// +// Revision $Id: no_0x_hdr_unordered_set_fail.cpp 53445 2009-05-30 11:22:59Z bemandawes $ +// + + +// Test file for macro BOOST_NO_0X_HDR_UNORDERED_SET +// This file should not compile, if it does then +// BOOST_NO_0X_HDR_UNORDERED_SET should not be defined. +// See file boost_no_0x_hdr_unordered_set.ipp for details + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include <boost/config.hpp> +#include "test.hpp" + +#ifdef BOOST_NO_0X_HDR_UNORDERED_SET +#include "boost_no_0x_hdr_unordered_set.ipp" +#else +#error "this file should not compile" +#endif + +int main( int, char *[] ) +{ + return boost_no_0x_hdr_unordered_set::test(); +} + diff --git a/libs/config/test/no_0x_hdr_unordered_set_pass.cpp b/libs/config/test/no_0x_hdr_unordered_set_pass.cpp new file mode 100644 index 0000000000..6941b73a9b --- /dev/null +++ b/libs/config/test/no_0x_hdr_unordered_set_pass.cpp @@ -0,0 +1,37 @@ +// This file was automatically generated on Fri May 15 11:57:42 2009 +// by libs/config/tools/generate.cpp +// Copyright John Maddock 2002-4. +// 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) + +// See http://www.boost.org/libs/config for the most recent version.// +// Revision $Id: no_0x_hdr_unordered_set_pass.cpp 53445 2009-05-30 11:22:59Z bemandawes $ +// + + +// Test file for macro BOOST_NO_0X_HDR_UNORDERED_SET +// This file should compile, if it does not then +// BOOST_NO_0X_HDR_UNORDERED_SET should be defined. +// See file boost_no_0x_hdr_unordered_set.ipp for details + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include <boost/config.hpp> +#include "test.hpp" + +#ifndef BOOST_NO_0X_HDR_UNORDERED_SET +#include "boost_no_0x_hdr_unordered_set.ipp" +#else +namespace boost_no_0x_hdr_unordered_set = empty_boost; +#endif + +int main( int, char *[] ) +{ + return boost_no_0x_hdr_unordered_set::test(); +} + diff --git a/libs/config/test/no_adl_barrier_fail.cpp b/libs/config/test/no_adl_barrier_fail.cpp new file mode 100644 index 0000000000..a21e0b3b6a --- /dev/null +++ b/libs/config/test/no_adl_barrier_fail.cpp @@ -0,0 +1,37 @@ +// This file was automatically generated on Fri Mar 28 16:52:13 2008 +// by libs/config/tools/generate.cpp +// Copyright John Maddock 2002-4. +// 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) + +// See http://www.boost.org/libs/config for the most recent version.// +// Revision $Id: generate.cpp 40184 2007-10-19 12:46:54Z johnmaddock $ +// + + +// Test file for macro BOOST_NO_ADL_BARRIER +// This file should not compile, if it does then +// BOOST_NO_ADL_BARRIER should not be defined. +// See file boost_no_adl_barrier.ipp for details + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include <boost/config.hpp> +#include "test.hpp" + +#ifdef BOOST_NO_ADL_BARRIER +#include "boost_no_adl_barrier.ipp" +#else +#error "this file should not compile" +#endif + +int main( int, char *[] ) +{ + return boost_no_adl_barrier::test(); +} + diff --git a/libs/config/test/no_adl_barrier_pass.cpp b/libs/config/test/no_adl_barrier_pass.cpp new file mode 100644 index 0000000000..39bef3fb4f --- /dev/null +++ b/libs/config/test/no_adl_barrier_pass.cpp @@ -0,0 +1,37 @@ +// This file was automatically generated on Fri Mar 28 16:52:13 2008 +// by libs/config/tools/generate.cpp +// Copyright John Maddock 2002-4. +// 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) + +// See http://www.boost.org/libs/config for the most recent version.// +// Revision $Id: generate.cpp 40184 2007-10-19 12:46:54Z johnmaddock $ +// + + +// Test file for macro BOOST_NO_ADL_BARRIER +// This file should compile, if it does not then +// BOOST_NO_ADL_BARRIER should be defined. +// See file boost_no_adl_barrier.ipp for details + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include <boost/config.hpp> +#include "test.hpp" + +#ifndef BOOST_NO_ADL_BARRIER +#include "boost_no_adl_barrier.ipp" +#else +namespace boost_no_adl_barrier = empty_boost; +#endif + +int main( int, char *[] ) +{ + return boost_no_adl_barrier::test(); +} + diff --git a/libs/config/test/no_arg_dep_lookup_fail.cpp b/libs/config/test/no_arg_dep_lookup_fail.cpp new file mode 100644 index 0000000000..7733f87b07 --- /dev/null +++ b/libs/config/test/no_arg_dep_lookup_fail.cpp @@ -0,0 +1,34 @@ +// This file was automatically generated on Fri Dec 03 18:04:00 2004 +// by libs/config/tools/generate.cpp +// Copyright John Maddock 2002-4. +// 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) + +// See http://www.boost.org/libs/config for the most recent version. + +// Test file for macro BOOST_NO_ARGUMENT_DEPENDENT_LOOKUP +// This file should not compile, if it does then +// BOOST_NO_ARGUMENT_DEPENDENT_LOOKUP should not be defined. +// See file boost_no_arg_dep_lookup.ipp for details + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include <boost/config.hpp> +#include "test.hpp" + +#ifdef BOOST_NO_ARGUMENT_DEPENDENT_LOOKUP +#include "boost_no_arg_dep_lookup.ipp" +#else +#error "this file should not compile" +#endif + +int main( int, char *[] ) +{ + return boost_no_argument_dependent_lookup::test(); +} + diff --git a/libs/config/test/no_arg_dep_lookup_pass.cpp b/libs/config/test/no_arg_dep_lookup_pass.cpp new file mode 100644 index 0000000000..1a8d7a7b81 --- /dev/null +++ b/libs/config/test/no_arg_dep_lookup_pass.cpp @@ -0,0 +1,34 @@ +// This file was automatically generated on Fri Dec 03 18:04:00 2004 +// by libs/config/tools/generate.cpp +// Copyright John Maddock 2002-4. +// 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) + +// See http://www.boost.org/libs/config for the most recent version. + +// Test file for macro BOOST_NO_ARGUMENT_DEPENDENT_LOOKUP +// This file should compile, if it does not then +// BOOST_NO_ARGUMENT_DEPENDENT_LOOKUP should be defined. +// See file boost_no_arg_dep_lookup.ipp for details + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include <boost/config.hpp> +#include "test.hpp" + +#ifndef BOOST_NO_ARGUMENT_DEPENDENT_LOOKUP +#include "boost_no_arg_dep_lookup.ipp" +#else +namespace boost_no_argument_dependent_lookup = empty_boost; +#endif + +int main( int, char *[] ) +{ + return boost_no_argument_dependent_lookup::test(); +} + diff --git a/libs/config/test/no_array_type_spec_fail.cpp b/libs/config/test/no_array_type_spec_fail.cpp new file mode 100644 index 0000000000..9299736e04 --- /dev/null +++ b/libs/config/test/no_array_type_spec_fail.cpp @@ -0,0 +1,34 @@ +// This file was automatically generated on Fri Dec 03 18:04:00 2004 +// by libs/config/tools/generate.cpp +// Copyright John Maddock 2002-4. +// 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) + +// See http://www.boost.org/libs/config for the most recent version. + +// Test file for macro BOOST_NO_ARRAY_TYPE_SPECIALIZATIONS +// This file should not compile, if it does then +// BOOST_NO_ARRAY_TYPE_SPECIALIZATIONS should not be defined. +// See file boost_no_array_type_spec.ipp for details + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include <boost/config.hpp> +#include "test.hpp" + +#ifdef BOOST_NO_ARRAY_TYPE_SPECIALIZATIONS +#include "boost_no_array_type_spec.ipp" +#else +#error "this file should not compile" +#endif + +int main( int, char *[] ) +{ + return boost_no_array_type_specializations::test(); +} + diff --git a/libs/config/test/no_array_type_spec_pass.cpp b/libs/config/test/no_array_type_spec_pass.cpp new file mode 100644 index 0000000000..75ab43404c --- /dev/null +++ b/libs/config/test/no_array_type_spec_pass.cpp @@ -0,0 +1,34 @@ +// This file was automatically generated on Fri Dec 03 18:04:00 2004 +// by libs/config/tools/generate.cpp +// Copyright John Maddock 2002-4. +// 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) + +// See http://www.boost.org/libs/config for the most recent version. + +// Test file for macro BOOST_NO_ARRAY_TYPE_SPECIALIZATIONS +// This file should compile, if it does not then +// BOOST_NO_ARRAY_TYPE_SPECIALIZATIONS should be defined. +// See file boost_no_array_type_spec.ipp for details + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include <boost/config.hpp> +#include "test.hpp" + +#ifndef BOOST_NO_ARRAY_TYPE_SPECIALIZATIONS +#include "boost_no_array_type_spec.ipp" +#else +namespace boost_no_array_type_specializations = empty_boost; +#endif + +int main( int, char *[] ) +{ + return boost_no_array_type_specializations::test(); +} + diff --git a/libs/config/test/no_auto_declarations_fail.cpp b/libs/config/test/no_auto_declarations_fail.cpp new file mode 100644 index 0000000000..e13fb40d88 --- /dev/null +++ b/libs/config/test/no_auto_declarations_fail.cpp @@ -0,0 +1,37 @@ +// This file was automatically generated on Thu Mar 12 17:32:04 2009 +// by libs/config/tools/generate.cpp +// Copyright John Maddock 2002-4. +// 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) + +// See http://www.boost.org/libs/config for the most recent version.// +// Revision $Id: no_auto_declarations_fail.cpp 53445 2009-05-30 11:22:59Z bemandawes $ +// + + +// Test file for macro BOOST_NO_AUTO_DECLARATIONS +// This file should not compile, if it does then +// BOOST_NO_AUTO_DECLARATIONS should not be defined. +// See file boost_no_auto_declarations.ipp for details + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include <boost/config.hpp> +#include "test.hpp" + +#ifdef BOOST_NO_AUTO_DECLARATIONS +#include "boost_no_auto_declarations.ipp" +#else +#error "this file should not compile" +#endif + +int main( int, char *[] ) +{ + return boost_no_auto_declarations::test(); +} + diff --git a/libs/config/test/no_auto_declarations_pass.cpp b/libs/config/test/no_auto_declarations_pass.cpp new file mode 100644 index 0000000000..d8d695dc62 --- /dev/null +++ b/libs/config/test/no_auto_declarations_pass.cpp @@ -0,0 +1,37 @@ +// This file was automatically generated on Thu Mar 12 17:32:04 2009 +// by libs/config/tools/generate.cpp +// Copyright John Maddock 2002-4. +// 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) + +// See http://www.boost.org/libs/config for the most recent version.// +// Revision $Id: no_auto_declarations_pass.cpp 53445 2009-05-30 11:22:59Z bemandawes $ +// + + +// Test file for macro BOOST_NO_AUTO_DECLARATIONS +// This file should compile, if it does not then +// BOOST_NO_AUTO_DECLARATIONS should be defined. +// See file boost_no_auto_declarations.ipp for details + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include <boost/config.hpp> +#include "test.hpp" + +#ifndef BOOST_NO_AUTO_DECLARATIONS +#include "boost_no_auto_declarations.ipp" +#else +namespace boost_no_auto_declarations = empty_boost; +#endif + +int main( int, char *[] ) +{ + return boost_no_auto_declarations::test(); +} + diff --git a/libs/config/test/no_auto_multidecl_fail.cpp b/libs/config/test/no_auto_multidecl_fail.cpp new file mode 100644 index 0000000000..5ebfa6fdbd --- /dev/null +++ b/libs/config/test/no_auto_multidecl_fail.cpp @@ -0,0 +1,37 @@ +// This file was automatically generated on Thu Mar 12 17:32:04 2009 +// by libs/config/tools/generate.cpp +// Copyright John Maddock 2002-4. +// 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) + +// See http://www.boost.org/libs/config for the most recent version.// +// Revision $Id: no_auto_multidecl_fail.cpp 53445 2009-05-30 11:22:59Z bemandawes $ +// + + +// Test file for macro BOOST_NO_AUTO_MULTIDECLARATIONS +// This file should not compile, if it does then +// BOOST_NO_AUTO_MULTIDECLARATIONS should not be defined. +// See file boost_no_auto_multidecl.ipp for details + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include <boost/config.hpp> +#include "test.hpp" + +#ifdef BOOST_NO_AUTO_MULTIDECLARATIONS +#include "boost_no_auto_multidecl.ipp" +#else +#error "this file should not compile" +#endif + +int main( int, char *[] ) +{ + return boost_no_auto_multideclarations::test(); +} + diff --git a/libs/config/test/no_auto_multidecl_pass.cpp b/libs/config/test/no_auto_multidecl_pass.cpp new file mode 100644 index 0000000000..37facb7525 --- /dev/null +++ b/libs/config/test/no_auto_multidecl_pass.cpp @@ -0,0 +1,37 @@ +// This file was automatically generated on Thu Mar 12 17:32:04 2009 +// by libs/config/tools/generate.cpp +// Copyright John Maddock 2002-4. +// 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) + +// See http://www.boost.org/libs/config for the most recent version.// +// Revision $Id: no_auto_multidecl_pass.cpp 53445 2009-05-30 11:22:59Z bemandawes $ +// + + +// Test file for macro BOOST_NO_AUTO_MULTIDECLARATIONS +// This file should compile, if it does not then +// BOOST_NO_AUTO_MULTIDECLARATIONS should be defined. +// See file boost_no_auto_multidecl.ipp for details + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include <boost/config.hpp> +#include "test.hpp" + +#ifndef BOOST_NO_AUTO_MULTIDECLARATIONS +#include "boost_no_auto_multidecl.ipp" +#else +namespace boost_no_auto_multideclarations = empty_boost; +#endif + +int main( int, char *[] ) +{ + return boost_no_auto_multideclarations::test(); +} + diff --git a/libs/config/test/no_auto_ptr_fail.cpp b/libs/config/test/no_auto_ptr_fail.cpp new file mode 100644 index 0000000000..da64bb92ce --- /dev/null +++ b/libs/config/test/no_auto_ptr_fail.cpp @@ -0,0 +1,34 @@ +// This file was automatically generated on Fri Dec 03 18:04:00 2004 +// by libs/config/tools/generate.cpp +// Copyright John Maddock 2002-4. +// 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) + +// See http://www.boost.org/libs/config for the most recent version. + +// Test file for macro BOOST_NO_AUTO_PTR +// This file should not compile, if it does then +// BOOST_NO_AUTO_PTR should not be defined. +// See file boost_no_auto_ptr.ipp for details + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include <boost/config.hpp> +#include "test.hpp" + +#ifdef BOOST_NO_AUTO_PTR +#include "boost_no_auto_ptr.ipp" +#else +#error "this file should not compile" +#endif + +int main( int, char *[] ) +{ + return boost_no_auto_ptr::test(); +} + diff --git a/libs/config/test/no_auto_ptr_pass.cpp b/libs/config/test/no_auto_ptr_pass.cpp new file mode 100644 index 0000000000..3a978a7447 --- /dev/null +++ b/libs/config/test/no_auto_ptr_pass.cpp @@ -0,0 +1,34 @@ +// This file was automatically generated on Fri Dec 03 18:04:00 2004 +// by libs/config/tools/generate.cpp +// Copyright John Maddock 2002-4. +// 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) + +// See http://www.boost.org/libs/config for the most recent version. + +// Test file for macro BOOST_NO_AUTO_PTR +// This file should compile, if it does not then +// BOOST_NO_AUTO_PTR should be defined. +// See file boost_no_auto_ptr.ipp for details + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include <boost/config.hpp> +#include "test.hpp" + +#ifndef BOOST_NO_AUTO_PTR +#include "boost_no_auto_ptr.ipp" +#else +namespace boost_no_auto_ptr = empty_boost; +#endif + +int main( int, char *[] ) +{ + return boost_no_auto_ptr::test(); +} + diff --git a/libs/config/test/no_bcb_partial_spec_fail.cpp b/libs/config/test/no_bcb_partial_spec_fail.cpp new file mode 100644 index 0000000000..c19747bdd0 --- /dev/null +++ b/libs/config/test/no_bcb_partial_spec_fail.cpp @@ -0,0 +1,34 @@ +// This file was automatically generated on Fri Dec 03 18:04:01 2004 +// by libs/config/tools/generate.cpp +// Copyright John Maddock 2002-4. +// 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) + +// See http://www.boost.org/libs/config for the most recent version. + +// Test file for macro BOOST_BCB_PARTIAL_SPECIALIZATION_BUG +// This file should not compile, if it does then +// BOOST_BCB_PARTIAL_SPECIALIZATION_BUG should not be defined. +// See file boost_no_bcb_partial_spec.ipp for details + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include <boost/config.hpp> +#include "test.hpp" + +#ifdef BOOST_BCB_PARTIAL_SPECIALIZATION_BUG +#include "boost_no_bcb_partial_spec.ipp" +#else +#error "this file should not compile" +#endif + +int main( int, char *[] ) +{ + return boost_bcb_partial_specialization_bug::test(); +} + diff --git a/libs/config/test/no_bcb_partial_spec_pass.cpp b/libs/config/test/no_bcb_partial_spec_pass.cpp new file mode 100644 index 0000000000..a6605bc85c --- /dev/null +++ b/libs/config/test/no_bcb_partial_spec_pass.cpp @@ -0,0 +1,34 @@ +// This file was automatically generated on Fri Dec 03 18:04:01 2004 +// by libs/config/tools/generate.cpp +// Copyright John Maddock 2002-4. +// 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) + +// See http://www.boost.org/libs/config for the most recent version. + +// Test file for macro BOOST_BCB_PARTIAL_SPECIALIZATION_BUG +// This file should compile, if it does not then +// BOOST_BCB_PARTIAL_SPECIALIZATION_BUG should be defined. +// See file boost_no_bcb_partial_spec.ipp for details + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include <boost/config.hpp> +#include "test.hpp" + +#ifndef BOOST_BCB_PARTIAL_SPECIALIZATION_BUG +#include "boost_no_bcb_partial_spec.ipp" +#else +namespace boost_bcb_partial_specialization_bug = empty_boost; +#endif + +int main( int, char *[] ) +{ + return boost_bcb_partial_specialization_bug::test(); +} + diff --git a/libs/config/test/no_char16_t_fail.cpp b/libs/config/test/no_char16_t_fail.cpp new file mode 100644 index 0000000000..75f3a348fe --- /dev/null +++ b/libs/config/test/no_char16_t_fail.cpp @@ -0,0 +1,37 @@ +// This file was automatically generated on Thu May 29 09:24:04 2008 +// by libs/config/tools/generate.cpp +// Copyright John Maddock 2002-4. +// 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) + +// See http://www.boost.org/libs/config for the most recent version.// +// Revision $Id: no_char16_t_fail.cpp 51606 2009-03-04 14:28:36Z bemandawes $ +// + + +// Test file for macro BOOST_NO_CHAR16_T +// This file should not compile, if it does then +// BOOST_NO_CHAR16_T should not be defined. +// See file boost_no_char16_t.ipp for details + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include <boost/config.hpp> +#include "test.hpp" + +#ifdef BOOST_NO_CHAR16_T +#include "boost_no_char16_t.ipp" +#else +#error "this file should not compile" +#endif + +int main( int, char *[] ) +{ + return boost_no_char16_t::test(); +} + diff --git a/libs/config/test/no_char16_t_pass.cpp b/libs/config/test/no_char16_t_pass.cpp new file mode 100644 index 0000000000..d090be6527 --- /dev/null +++ b/libs/config/test/no_char16_t_pass.cpp @@ -0,0 +1,37 @@ +// This file was automatically generated on Thu May 29 09:24:04 2008 +// by libs/config/tools/generate.cpp +// Copyright John Maddock 2002-4. +// 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) + +// See http://www.boost.org/libs/config for the most recent version.// +// Revision $Id: no_char16_t_pass.cpp 51606 2009-03-04 14:28:36Z bemandawes $ +// + + +// Test file for macro BOOST_NO_CHAR16_T +// This file should compile, if it does not then +// BOOST_NO_CHAR16_T should be defined. +// See file boost_no_char16_t.ipp for details + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include <boost/config.hpp> +#include "test.hpp" + +#ifndef BOOST_NO_CHAR16_T +#include "boost_no_char16_t.ipp" +#else +namespace boost_no_char16_t = empty_boost; +#endif + +int main( int, char *[] ) +{ + return boost_no_char16_t::test(); +} + diff --git a/libs/config/test/no_char32_t_fail.cpp b/libs/config/test/no_char32_t_fail.cpp new file mode 100644 index 0000000000..36642201c9 --- /dev/null +++ b/libs/config/test/no_char32_t_fail.cpp @@ -0,0 +1,37 @@ +// This file was automatically generated on Thu May 29 09:24:04 2008 +// by libs/config/tools/generate.cpp +// Copyright John Maddock 2002-4. +// 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) + +// See http://www.boost.org/libs/config for the most recent version.// +// Revision $Id: no_char32_t_fail.cpp 51606 2009-03-04 14:28:36Z bemandawes $ +// + + +// Test file for macro BOOST_NO_CHAR32_T +// This file should not compile, if it does then +// BOOST_NO_CHAR32_T should not be defined. +// See file boost_no_char32_t.ipp for details + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include <boost/config.hpp> +#include "test.hpp" + +#ifdef BOOST_NO_CHAR32_T +#include "boost_no_char32_t.ipp" +#else +#error "this file should not compile" +#endif + +int main( int, char *[] ) +{ + return boost_no_char32_t::test(); +} + diff --git a/libs/config/test/no_char32_t_pass.cpp b/libs/config/test/no_char32_t_pass.cpp new file mode 100644 index 0000000000..60ccbb7fc2 --- /dev/null +++ b/libs/config/test/no_char32_t_pass.cpp @@ -0,0 +1,37 @@ +// This file was automatically generated on Thu May 29 09:24:04 2008 +// by libs/config/tools/generate.cpp +// Copyright John Maddock 2002-4. +// 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) + +// See http://www.boost.org/libs/config for the most recent version.// +// Revision $Id: no_char32_t_pass.cpp 51606 2009-03-04 14:28:36Z bemandawes $ +// + + +// Test file for macro BOOST_NO_CHAR32_T +// This file should compile, if it does not then +// BOOST_NO_CHAR32_T should be defined. +// See file boost_no_char32_t.ipp for details + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include <boost/config.hpp> +#include "test.hpp" + +#ifndef BOOST_NO_CHAR32_T +#include "boost_no_char32_t.ipp" +#else +namespace boost_no_char32_t = empty_boost; +#endif + +int main( int, char *[] ) +{ + return boost_no_char32_t::test(); +} + diff --git a/libs/config/test/no_com_value_init_fail.cpp b/libs/config/test/no_com_value_init_fail.cpp new file mode 100644 index 0000000000..ec89a85811 --- /dev/null +++ b/libs/config/test/no_com_value_init_fail.cpp @@ -0,0 +1,37 @@ +// This file was automatically generated on Fri Apr 09 12:24:53 2010 +// by libs/config/tools/generate.cpp +// Copyright John Maddock 2002-4. +// 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) + +// See http://www.boost.org/libs/config for the most recent version.// +// Revision $Id: generate.cpp 49281 2008-10-11 15:40:44Z johnmaddock $ +// + + +// Test file for macro BOOST_NO_COMPLETE_VALUE_INITIALIZATION +// This file should not compile, if it does then +// BOOST_NO_COMPLETE_VALUE_INITIALIZATION should not be defined. +// See file boost_no_com_value_init.ipp for details + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include <boost/config.hpp> +#include "test.hpp" + +#ifdef BOOST_NO_COMPLETE_VALUE_INITIALIZATION +#include "boost_no_com_value_init.ipp" +#else +#error "this file should not compile" +#endif + +int main( int, char *[] ) +{ + return boost_no_complete_value_initialization::test(); +} + diff --git a/libs/config/test/no_com_value_init_pass.cpp b/libs/config/test/no_com_value_init_pass.cpp new file mode 100644 index 0000000000..cfe00a22a0 --- /dev/null +++ b/libs/config/test/no_com_value_init_pass.cpp @@ -0,0 +1,37 @@ +// This file was automatically generated on Fri Apr 09 12:24:53 2010 +// by libs/config/tools/generate.cpp +// Copyright John Maddock 2002-4. +// 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) + +// See http://www.boost.org/libs/config for the most recent version.// +// Revision $Id: generate.cpp 49281 2008-10-11 15:40:44Z johnmaddock $ +// + + +// Test file for macro BOOST_NO_COMPLETE_VALUE_INITIALIZATION +// This file should compile, if it does not then +// BOOST_NO_COMPLETE_VALUE_INITIALIZATION should be defined. +// See file boost_no_com_value_init.ipp for details + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include <boost/config.hpp> +#include "test.hpp" + +#ifndef BOOST_NO_COMPLETE_VALUE_INITIALIZATION +#include "boost_no_com_value_init.ipp" +#else +namespace boost_no_complete_value_initialization = empty_boost; +#endif + +int main( int, char *[] ) +{ + return boost_no_complete_value_initialization::test(); +} + diff --git a/libs/config/test/no_constexpr_fail.cpp b/libs/config/test/no_constexpr_fail.cpp new file mode 100644 index 0000000000..4e1af46144 --- /dev/null +++ b/libs/config/test/no_constexpr_fail.cpp @@ -0,0 +1,37 @@ +// This file was automatically generated on Thu Jun 19 16:26:16 2008 +// by libs/config/tools/generate.cpp +// Copyright John Maddock 2002-4. +// 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) + +// See http://www.boost.org/libs/config for the most recent version.// +// Revision $Id: no_constexpr_fail.cpp 51606 2009-03-04 14:28:36Z bemandawes $ +// + + +// Test file for macro BOOST_NO_CONSTEXPR +// This file should not compile, if it does then +// BOOST_NO_CONSTEXPR should not be defined. +// See file boost_no_constexpr.ipp for details + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include <boost/config.hpp> +#include "test.hpp" + +#ifdef BOOST_NO_CONSTEXPR +#include "boost_no_constexpr.ipp" +#else +#error "this file should not compile" +#endif + +int main( int, char *[] ) +{ + return boost_no_constexpr::test(); +} + diff --git a/libs/config/test/no_constexpr_pass.cpp b/libs/config/test/no_constexpr_pass.cpp new file mode 100644 index 0000000000..945ac7b88b --- /dev/null +++ b/libs/config/test/no_constexpr_pass.cpp @@ -0,0 +1,37 @@ +// This file was automatically generated on Thu Jun 19 16:26:16 2008 +// by libs/config/tools/generate.cpp +// Copyright John Maddock 2002-4. +// 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) + +// See http://www.boost.org/libs/config for the most recent version.// +// Revision $Id: no_constexpr_pass.cpp 51606 2009-03-04 14:28:36Z bemandawes $ +// + + +// Test file for macro BOOST_NO_CONSTEXPR +// This file should compile, if it does not then +// BOOST_NO_CONSTEXPR should be defined. +// See file boost_no_constexpr.ipp for details + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include <boost/config.hpp> +#include "test.hpp" + +#ifndef BOOST_NO_CONSTEXPR +#include "boost_no_constexpr.ipp" +#else +namespace boost_no_constexpr = empty_boost; +#endif + +int main( int, char *[] ) +{ + return boost_no_constexpr::test(); +} + diff --git a/libs/config/test/no_ctype_functions_fail.cpp b/libs/config/test/no_ctype_functions_fail.cpp new file mode 100644 index 0000000000..5379c7d184 --- /dev/null +++ b/libs/config/test/no_ctype_functions_fail.cpp @@ -0,0 +1,34 @@ +// This file was automatically generated on Fri Dec 03 18:04:01 2004 +// by libs/config/tools/generate.cpp +// Copyright John Maddock 2002-4. +// 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) + +// See http://www.boost.org/libs/config for the most recent version. + +// Test file for macro BOOST_NO_CTYPE_FUNCTIONS +// This file should not compile, if it does then +// BOOST_NO_CTYPE_FUNCTIONS should not be defined. +// See file boost_no_ctype_functions.ipp for details + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include <boost/config.hpp> +#include "test.hpp" + +#ifdef BOOST_NO_CTYPE_FUNCTIONS +#include "boost_no_ctype_functions.ipp" +#else +#error "this file should not compile" +#endif + +int main( int, char *[] ) +{ + return boost_no_ctype_functions::test(); +} + diff --git a/libs/config/test/no_ctype_functions_pass.cpp b/libs/config/test/no_ctype_functions_pass.cpp new file mode 100644 index 0000000000..64e285fa1b --- /dev/null +++ b/libs/config/test/no_ctype_functions_pass.cpp @@ -0,0 +1,34 @@ +// This file was automatically generated on Fri Dec 03 18:04:01 2004 +// by libs/config/tools/generate.cpp +// Copyright John Maddock 2002-4. +// 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) + +// See http://www.boost.org/libs/config for the most recent version. + +// Test file for macro BOOST_NO_CTYPE_FUNCTIONS +// This file should compile, if it does not then +// BOOST_NO_CTYPE_FUNCTIONS should be defined. +// See file boost_no_ctype_functions.ipp for details + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include <boost/config.hpp> +#include "test.hpp" + +#ifndef BOOST_NO_CTYPE_FUNCTIONS +#include "boost_no_ctype_functions.ipp" +#else +namespace boost_no_ctype_functions = empty_boost; +#endif + +int main( int, char *[] ) +{ + return boost_no_ctype_functions::test(); +} + diff --git a/libs/config/test/no_cv_spec_fail.cpp b/libs/config/test/no_cv_spec_fail.cpp new file mode 100644 index 0000000000..8b2658fd1c --- /dev/null +++ b/libs/config/test/no_cv_spec_fail.cpp @@ -0,0 +1,34 @@ +// This file was automatically generated on Fri Dec 03 18:04:01 2004 +// by libs/config/tools/generate.cpp +// Copyright John Maddock 2002-4. +// 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) + +// See http://www.boost.org/libs/config for the most recent version. + +// Test file for macro BOOST_NO_CV_SPECIALIZATIONS +// This file should not compile, if it does then +// BOOST_NO_CV_SPECIALIZATIONS should not be defined. +// See file boost_no_cv_spec.ipp for details + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include <boost/config.hpp> +#include "test.hpp" + +#ifdef BOOST_NO_CV_SPECIALIZATIONS +#include "boost_no_cv_spec.ipp" +#else +#error "this file should not compile" +#endif + +int main( int, char *[] ) +{ + return boost_no_cv_specializations::test(); +} + diff --git a/libs/config/test/no_cv_spec_pass.cpp b/libs/config/test/no_cv_spec_pass.cpp new file mode 100644 index 0000000000..310c4efdbf --- /dev/null +++ b/libs/config/test/no_cv_spec_pass.cpp @@ -0,0 +1,34 @@ +// This file was automatically generated on Fri Dec 03 18:04:01 2004 +// by libs/config/tools/generate.cpp +// Copyright John Maddock 2002-4. +// 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) + +// See http://www.boost.org/libs/config for the most recent version. + +// Test file for macro BOOST_NO_CV_SPECIALIZATIONS +// This file should compile, if it does not then +// BOOST_NO_CV_SPECIALIZATIONS should be defined. +// See file boost_no_cv_spec.ipp for details + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include <boost/config.hpp> +#include "test.hpp" + +#ifndef BOOST_NO_CV_SPECIALIZATIONS +#include "boost_no_cv_spec.ipp" +#else +namespace boost_no_cv_specializations = empty_boost; +#endif + +int main( int, char *[] ) +{ + return boost_no_cv_specializations::test(); +} + diff --git a/libs/config/test/no_cv_void_spec_fail.cpp b/libs/config/test/no_cv_void_spec_fail.cpp new file mode 100644 index 0000000000..0608d56b32 --- /dev/null +++ b/libs/config/test/no_cv_void_spec_fail.cpp @@ -0,0 +1,34 @@ +// This file was automatically generated on Fri Dec 03 18:04:01 2004 +// by libs/config/tools/generate.cpp +// Copyright John Maddock 2002-4. +// 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) + +// See http://www.boost.org/libs/config for the most recent version. + +// Test file for macro BOOST_NO_CV_VOID_SPECIALIZATIONS +// This file should not compile, if it does then +// BOOST_NO_CV_VOID_SPECIALIZATIONS should not be defined. +// See file boost_no_cv_void_spec.ipp for details + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include <boost/config.hpp> +#include "test.hpp" + +#ifdef BOOST_NO_CV_VOID_SPECIALIZATIONS +#include "boost_no_cv_void_spec.ipp" +#else +#error "this file should not compile" +#endif + +int main( int, char *[] ) +{ + return boost_no_cv_void_specializations::test(); +} + diff --git a/libs/config/test/no_cv_void_spec_pass.cpp b/libs/config/test/no_cv_void_spec_pass.cpp new file mode 100644 index 0000000000..7eac2959a5 --- /dev/null +++ b/libs/config/test/no_cv_void_spec_pass.cpp @@ -0,0 +1,34 @@ +// This file was automatically generated on Fri Dec 03 18:04:01 2004 +// by libs/config/tools/generate.cpp +// Copyright John Maddock 2002-4. +// 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) + +// See http://www.boost.org/libs/config for the most recent version. + +// Test file for macro BOOST_NO_CV_VOID_SPECIALIZATIONS +// This file should compile, if it does not then +// BOOST_NO_CV_VOID_SPECIALIZATIONS should be defined. +// See file boost_no_cv_void_spec.ipp for details + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include <boost/config.hpp> +#include "test.hpp" + +#ifndef BOOST_NO_CV_VOID_SPECIALIZATIONS +#include "boost_no_cv_void_spec.ipp" +#else +namespace boost_no_cv_void_specializations = empty_boost; +#endif + +int main( int, char *[] ) +{ + return boost_no_cv_void_specializations::test(); +} + diff --git a/libs/config/test/no_cwchar_fail.cpp b/libs/config/test/no_cwchar_fail.cpp new file mode 100644 index 0000000000..e49e9837c9 --- /dev/null +++ b/libs/config/test/no_cwchar_fail.cpp @@ -0,0 +1,34 @@ +// This file was automatically generated on Fri Dec 03 18:04:01 2004 +// by libs/config/tools/generate.cpp +// Copyright John Maddock 2002-4. +// 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) + +// See http://www.boost.org/libs/config for the most recent version. + +// Test file for macro BOOST_NO_CWCHAR +// This file should not compile, if it does then +// BOOST_NO_CWCHAR should not be defined. +// See file boost_no_cwchar.ipp for details + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include <boost/config.hpp> +#include "test.hpp" + +#ifdef BOOST_NO_CWCHAR +#include "boost_no_cwchar.ipp" +#else +#error "this file should not compile" +#endif + +int main( int, char *[] ) +{ + return boost_no_cwchar::test(); +} + diff --git a/libs/config/test/no_cwchar_pass.cpp b/libs/config/test/no_cwchar_pass.cpp new file mode 100644 index 0000000000..ae82820f30 --- /dev/null +++ b/libs/config/test/no_cwchar_pass.cpp @@ -0,0 +1,34 @@ +// This file was automatically generated on Fri Dec 03 18:04:01 2004 +// by libs/config/tools/generate.cpp +// Copyright John Maddock 2002-4. +// 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) + +// See http://www.boost.org/libs/config for the most recent version. + +// Test file for macro BOOST_NO_CWCHAR +// This file should compile, if it does not then +// BOOST_NO_CWCHAR should be defined. +// See file boost_no_cwchar.ipp for details + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include <boost/config.hpp> +#include "test.hpp" + +#ifndef BOOST_NO_CWCHAR +#include "boost_no_cwchar.ipp" +#else +namespace boost_no_cwchar = empty_boost; +#endif + +int main( int, char *[] ) +{ + return boost_no_cwchar::test(); +} + diff --git a/libs/config/test/no_cwctype_fail.cpp b/libs/config/test/no_cwctype_fail.cpp new file mode 100644 index 0000000000..85bdcbc94d --- /dev/null +++ b/libs/config/test/no_cwctype_fail.cpp @@ -0,0 +1,34 @@ +// This file was automatically generated on Fri Dec 03 18:04:01 2004 +// by libs/config/tools/generate.cpp +// Copyright John Maddock 2002-4. +// 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) + +// See http://www.boost.org/libs/config for the most recent version. + +// Test file for macro BOOST_NO_CWCTYPE +// This file should not compile, if it does then +// BOOST_NO_CWCTYPE should not be defined. +// See file boost_no_cwctype.ipp for details + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include <boost/config.hpp> +#include "test.hpp" + +#ifdef BOOST_NO_CWCTYPE +#include "boost_no_cwctype.ipp" +#else +#error "this file should not compile" +#endif + +int main( int, char *[] ) +{ + return boost_no_cwctype::test(); +} + diff --git a/libs/config/test/no_cwctype_pass.cpp b/libs/config/test/no_cwctype_pass.cpp new file mode 100644 index 0000000000..1cb1c4becc --- /dev/null +++ b/libs/config/test/no_cwctype_pass.cpp @@ -0,0 +1,34 @@ +// This file was automatically generated on Fri Dec 03 18:04:01 2004 +// by libs/config/tools/generate.cpp +// Copyright John Maddock 2002-4. +// 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) + +// See http://www.boost.org/libs/config for the most recent version. + +// Test file for macro BOOST_NO_CWCTYPE +// This file should compile, if it does not then +// BOOST_NO_CWCTYPE should be defined. +// See file boost_no_cwctype.ipp for details + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include <boost/config.hpp> +#include "test.hpp" + +#ifndef BOOST_NO_CWCTYPE +#include "boost_no_cwctype.ipp" +#else +namespace boost_no_cwctype = empty_boost; +#endif + +int main( int, char *[] ) +{ + return boost_no_cwctype::test(); +} + diff --git a/libs/config/test/no_decltype_fail.cpp b/libs/config/test/no_decltype_fail.cpp new file mode 100644 index 0000000000..7740c80517 --- /dev/null +++ b/libs/config/test/no_decltype_fail.cpp @@ -0,0 +1,37 @@ +// This file was automatically generated on Thu May 29 07:24:54 2008 +// by libs/config/tools/generate.cpp +// Copyright John Maddock 2002-4. +// 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) + +// See http://www.boost.org/libs/config for the most recent version.// +// Revision $Id: no_decltype_fail.cpp 51606 2009-03-04 14:28:36Z bemandawes $ +// + + +// Test file for macro BOOST_NO_DECLTYPE +// This file should not compile, if it does then +// BOOST_NO_DECLTYPE should not be defined. +// See file boost_no_decltype.ipp for details + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include <boost/config.hpp> +#include "test.hpp" + +#ifdef BOOST_NO_DECLTYPE +#include "boost_no_decltype.ipp" +#else +#error "this file should not compile" +#endif + +int main( int, char *[] ) +{ + return boost_no_decltype::test(); +} + diff --git a/libs/config/test/no_decltype_n3276_fail.cpp b/libs/config/test/no_decltype_n3276_fail.cpp new file mode 100644 index 0000000000..10c8d3adc9 --- /dev/null +++ b/libs/config/test/no_decltype_n3276_fail.cpp @@ -0,0 +1,37 @@ +// This file was automatically generated on Wed Jun 1 21:44:56 2011 +// by libs/config/tools/generate.cpp +// Copyright John Maddock 2002-4. +// 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) + +// See http://www.boost.org/libs/config for the most recent version.// +// Revision $Id: no_decltype_n3276_fail.cpp 73153 2011-07-16 20:12:46Z eric_niebler $ +// + + +// Test file for macro BOOST_NO_DECLTYPE_N3276 +// This file should not compile, if it does then +// BOOST_NO_DECLTYPE_N3276 should not be defined. +// See file boost_no_decltype_n3276.ipp for details + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include <boost/config.hpp> +#include "test.hpp" + +#ifdef BOOST_NO_DECLTYPE_N3276 +#include "boost_no_decltype_n3276.ipp" +#else +#error "this file should not compile" +#endif + +int main( int, char *[] ) +{ + return boost_no_decltype_n3276::test(); +} + diff --git a/libs/config/test/no_decltype_n3276_pass.cpp b/libs/config/test/no_decltype_n3276_pass.cpp new file mode 100644 index 0000000000..95be21126a --- /dev/null +++ b/libs/config/test/no_decltype_n3276_pass.cpp @@ -0,0 +1,37 @@ +// This file was automatically generated on Wed Jun 1 21:44:56 2011 +// by libs/config/tools/generate.cpp +// Copyright John Maddock 2002-4. +// 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) + +// See http://www.boost.org/libs/config for the most recent version.// +// Revision $Id: no_decltype_n3276_pass.cpp 73153 2011-07-16 20:12:46Z eric_niebler $ +// + + +// Test file for macro BOOST_NO_DECLTYPE_N3276 +// This file should compile, if it does not then +// BOOST_NO_DECLTYPE_N3276 should be defined. +// See file boost_no_decltype_n3276.ipp for details + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include <boost/config.hpp> +#include "test.hpp" + +#ifndef BOOST_NO_DECLTYPE_N3276 +#include "boost_no_decltype_n3276.ipp" +#else +namespace boost_no_decltype_n3276 = empty_boost; +#endif + +int main( int, char *[] ) +{ + return boost_no_decltype_n3276::test(); +} + diff --git a/libs/config/test/no_decltype_pass.cpp b/libs/config/test/no_decltype_pass.cpp new file mode 100644 index 0000000000..922712a48c --- /dev/null +++ b/libs/config/test/no_decltype_pass.cpp @@ -0,0 +1,37 @@ +// This file was automatically generated on Thu May 29 07:24:54 2008 +// by libs/config/tools/generate.cpp +// Copyright John Maddock 2002-4. +// 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) + +// See http://www.boost.org/libs/config for the most recent version.// +// Revision $Id: no_decltype_pass.cpp 51606 2009-03-04 14:28:36Z bemandawes $ +// + + +// Test file for macro BOOST_NO_DECLTYPE +// This file should compile, if it does not then +// BOOST_NO_DECLTYPE should be defined. +// See file boost_no_decltype.ipp for details + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include <boost/config.hpp> +#include "test.hpp" + +#ifndef BOOST_NO_DECLTYPE +#include "boost_no_decltype.ipp" +#else +namespace boost_no_decltype = empty_boost; +#endif + +int main( int, char *[] ) +{ + return boost_no_decltype::test(); +} + diff --git a/libs/config/test/no_ded_typename_fail.cpp b/libs/config/test/no_ded_typename_fail.cpp new file mode 100644 index 0000000000..d82937f2a8 --- /dev/null +++ b/libs/config/test/no_ded_typename_fail.cpp @@ -0,0 +1,34 @@ +// This file was automatically generated on Fri Dec 03 18:04:01 2004 +// by libs/config/tools/generate.cpp +// Copyright John Maddock 2002-4. +// 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) + +// See http://www.boost.org/libs/config for the most recent version. + +// Test file for macro BOOST_DEDUCED_TYPENAME +// This file should not compile, if it does then +// BOOST_DEDUCED_TYPENAME should not be defined. +// See file boost_no_ded_typename.ipp for details + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include <boost/config.hpp> +#include "test.hpp" + +#ifdef BOOST_DEDUCED_TYPENAME +#include "boost_no_ded_typename.ipp" +#else +#error "this file should not compile" +#endif + +int main( int, char *[] ) +{ + return boost_deduced_typename::test(); +} + diff --git a/libs/config/test/no_ded_typename_pass.cpp b/libs/config/test/no_ded_typename_pass.cpp new file mode 100644 index 0000000000..fe59f36515 --- /dev/null +++ b/libs/config/test/no_ded_typename_pass.cpp @@ -0,0 +1,34 @@ +// This file was automatically generated on Fri Dec 03 18:04:01 2004 +// by libs/config/tools/generate.cpp +// Copyright John Maddock 2002-4. +// 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) + +// See http://www.boost.org/libs/config for the most recent version. + +// Test file for macro BOOST_DEDUCED_TYPENAME +// This file should compile, if it does not then +// BOOST_DEDUCED_TYPENAME should be defined. +// See file boost_no_ded_typename.ipp for details + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include <boost/config.hpp> +#include "test.hpp" + +#ifndef BOOST_DEDUCED_TYPENAME +#include "boost_no_ded_typename.ipp" +#else +namespace boost_deduced_typename = empty_boost; +#endif + +int main( int, char *[] ) +{ + return boost_deduced_typename::test(); +} + diff --git a/libs/config/test/no_defaulted_functions_fail.cpp b/libs/config/test/no_defaulted_functions_fail.cpp new file mode 100644 index 0000000000..f7759049af --- /dev/null +++ b/libs/config/test/no_defaulted_functions_fail.cpp @@ -0,0 +1,37 @@ +// This file was automatically generated on Fri Jun 20 11:01:41 2008 +// by libs/config/tools/generate.cpp +// Copyright John Maddock 2002-4. +// 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) + +// See http://www.boost.org/libs/config for the most recent version.// +// Revision $Id: no_defaulted_functions_fail.cpp 51606 2009-03-04 14:28:36Z bemandawes $ +// + + +// Test file for macro BOOST_NO_DEFAULTED_FUNCTIONS +// This file should not compile, if it does then +// BOOST_NO_DEFAULTED_FUNCTIONS should not be defined. +// See file boost_no_defaulted_functions.ipp for details + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include <boost/config.hpp> +#include "test.hpp" + +#ifdef BOOST_NO_DEFAULTED_FUNCTIONS +#include "boost_no_defaulted_functions.ipp" +#else +#error "this file should not compile" +#endif + +int main( int, char *[] ) +{ + return boost_no_defaulted_functions::test(); +} + diff --git a/libs/config/test/no_defaulted_functions_pass.cpp b/libs/config/test/no_defaulted_functions_pass.cpp new file mode 100644 index 0000000000..8dd14d742e --- /dev/null +++ b/libs/config/test/no_defaulted_functions_pass.cpp @@ -0,0 +1,37 @@ +// This file was automatically generated on Fri Jun 20 11:01:41 2008 +// by libs/config/tools/generate.cpp +// Copyright John Maddock 2002-4. +// 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) + +// See http://www.boost.org/libs/config for the most recent version.// +// Revision $Id: no_defaulted_functions_pass.cpp 51606 2009-03-04 14:28:36Z bemandawes $ +// + + +// Test file for macro BOOST_NO_DEFAULTED_FUNCTIONS +// This file should compile, if it does not then +// BOOST_NO_DEFAULTED_FUNCTIONS should be defined. +// See file boost_no_defaulted_functions.ipp for details + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include <boost/config.hpp> +#include "test.hpp" + +#ifndef BOOST_NO_DEFAULTED_FUNCTIONS +#include "boost_no_defaulted_functions.ipp" +#else +namespace boost_no_defaulted_functions = empty_boost; +#endif + +int main( int, char *[] ) +{ + return boost_no_defaulted_functions::test(); +} + diff --git a/libs/config/test/no_deleted_functions_fail.cpp b/libs/config/test/no_deleted_functions_fail.cpp new file mode 100644 index 0000000000..db1322ebad --- /dev/null +++ b/libs/config/test/no_deleted_functions_fail.cpp @@ -0,0 +1,37 @@ +// This file was automatically generated on Thu Jun 19 16:26:16 2008 +// by libs/config/tools/generate.cpp +// Copyright John Maddock 2002-4. +// 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) + +// See http://www.boost.org/libs/config for the most recent version.// +// Revision $Id: no_deleted_functions_fail.cpp 51606 2009-03-04 14:28:36Z bemandawes $ +// + + +// Test file for macro BOOST_NO_DELETED_FUNCTIONS +// This file should not compile, if it does then +// BOOST_NO_DELETED_FUNCTIONS should not be defined. +// See file boost_no_deleted_functions.ipp for details + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include <boost/config.hpp> +#include "test.hpp" + +#ifdef BOOST_NO_DELETED_FUNCTIONS +#include "boost_no_deleted_functions.ipp" +#else +#error "this file should not compile" +#endif + +int main( int, char *[] ) +{ + return boost_no_deleted_functions::test(); +} + diff --git a/libs/config/test/no_deleted_functions_pass.cpp b/libs/config/test/no_deleted_functions_pass.cpp new file mode 100644 index 0000000000..c6a6ad6386 --- /dev/null +++ b/libs/config/test/no_deleted_functions_pass.cpp @@ -0,0 +1,37 @@ +// This file was automatically generated on Thu Jun 19 16:26:16 2008 +// by libs/config/tools/generate.cpp +// Copyright John Maddock 2002-4. +// 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) + +// See http://www.boost.org/libs/config for the most recent version.// +// Revision $Id: no_deleted_functions_pass.cpp 51606 2009-03-04 14:28:36Z bemandawes $ +// + + +// Test file for macro BOOST_NO_DELETED_FUNCTIONS +// This file should compile, if it does not then +// BOOST_NO_DELETED_FUNCTIONS should be defined. +// See file boost_no_deleted_functions.ipp for details + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include <boost/config.hpp> +#include "test.hpp" + +#ifndef BOOST_NO_DELETED_FUNCTIONS +#include "boost_no_deleted_functions.ipp" +#else +namespace boost_no_deleted_functions = empty_boost; +#endif + +int main( int, char *[] ) +{ + return boost_no_deleted_functions::test(); +} + diff --git a/libs/config/test/no_dep_nested_class_fail.cpp b/libs/config/test/no_dep_nested_class_fail.cpp new file mode 100644 index 0000000000..ca98977c85 --- /dev/null +++ b/libs/config/test/no_dep_nested_class_fail.cpp @@ -0,0 +1,34 @@ +// This file was automatically generated on Fri Dec 03 18:04:01 2004 +// by libs/config/tools/generate.cpp +// Copyright John Maddock 2002-4. +// 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) + +// See http://www.boost.org/libs/config for the most recent version. + +// Test file for macro BOOST_NO_DEPENDENT_NESTED_DERIVATIONS +// This file should not compile, if it does then +// BOOST_NO_DEPENDENT_NESTED_DERIVATIONS should not be defined. +// See file boost_no_dep_nested_class.ipp for details + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include <boost/config.hpp> +#include "test.hpp" + +#ifdef BOOST_NO_DEPENDENT_NESTED_DERIVATIONS +#include "boost_no_dep_nested_class.ipp" +#else +#error "this file should not compile" +#endif + +int main( int, char *[] ) +{ + return boost_no_dependent_nested_derivations::test(); +} + diff --git a/libs/config/test/no_dep_nested_class_pass.cpp b/libs/config/test/no_dep_nested_class_pass.cpp new file mode 100644 index 0000000000..1eaa6e616c --- /dev/null +++ b/libs/config/test/no_dep_nested_class_pass.cpp @@ -0,0 +1,34 @@ +// This file was automatically generated on Fri Dec 03 18:04:01 2004 +// by libs/config/tools/generate.cpp +// Copyright John Maddock 2002-4. +// 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) + +// See http://www.boost.org/libs/config for the most recent version. + +// Test file for macro BOOST_NO_DEPENDENT_NESTED_DERIVATIONS +// This file should compile, if it does not then +// BOOST_NO_DEPENDENT_NESTED_DERIVATIONS should be defined. +// See file boost_no_dep_nested_class.ipp for details + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include <boost/config.hpp> +#include "test.hpp" + +#ifndef BOOST_NO_DEPENDENT_NESTED_DERIVATIONS +#include "boost_no_dep_nested_class.ipp" +#else +namespace boost_no_dependent_nested_derivations = empty_boost; +#endif + +int main( int, char *[] ) +{ + return boost_no_dependent_nested_derivations::test(); +} + diff --git a/libs/config/test/no_dep_val_param_fail.cpp b/libs/config/test/no_dep_val_param_fail.cpp new file mode 100644 index 0000000000..1c0a96f451 --- /dev/null +++ b/libs/config/test/no_dep_val_param_fail.cpp @@ -0,0 +1,34 @@ +// This file was automatically generated on Fri Dec 03 18:04:01 2004 +// by libs/config/tools/generate.cpp +// Copyright John Maddock 2002-4. +// 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) + +// See http://www.boost.org/libs/config for the most recent version. + +// Test file for macro BOOST_NO_DEPENDENT_TYPES_IN_TEMPLATE_VALUE_PARAMETERS +// This file should not compile, if it does then +// BOOST_NO_DEPENDENT_TYPES_IN_TEMPLATE_VALUE_PARAMETERS should not be defined. +// See file boost_no_dep_val_param.ipp for details + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include <boost/config.hpp> +#include "test.hpp" + +#ifdef BOOST_NO_DEPENDENT_TYPES_IN_TEMPLATE_VALUE_PARAMETERS +#include "boost_no_dep_val_param.ipp" +#else +#error "this file should not compile" +#endif + +int main( int, char *[] ) +{ + return boost_no_dependent_types_in_template_value_parameters::test(); +} + diff --git a/libs/config/test/no_dep_val_param_pass.cpp b/libs/config/test/no_dep_val_param_pass.cpp new file mode 100644 index 0000000000..57f6bdf211 --- /dev/null +++ b/libs/config/test/no_dep_val_param_pass.cpp @@ -0,0 +1,34 @@ +// This file was automatically generated on Fri Dec 03 18:04:01 2004 +// by libs/config/tools/generate.cpp +// Copyright John Maddock 2002-4. +// 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) + +// See http://www.boost.org/libs/config for the most recent version. + +// Test file for macro BOOST_NO_DEPENDENT_TYPES_IN_TEMPLATE_VALUE_PARAMETERS +// This file should compile, if it does not then +// BOOST_NO_DEPENDENT_TYPES_IN_TEMPLATE_VALUE_PARAMETERS should be defined. +// See file boost_no_dep_val_param.ipp for details + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include <boost/config.hpp> +#include "test.hpp" + +#ifndef BOOST_NO_DEPENDENT_TYPES_IN_TEMPLATE_VALUE_PARAMETERS +#include "boost_no_dep_val_param.ipp" +#else +namespace boost_no_dependent_types_in_template_value_parameters = empty_boost; +#endif + +int main( int, char *[] ) +{ + return boost_no_dependent_types_in_template_value_parameters::test(); +} + diff --git a/libs/config/test/no_excep_std_fail.cpp b/libs/config/test/no_excep_std_fail.cpp new file mode 100644 index 0000000000..0c557ac45b --- /dev/null +++ b/libs/config/test/no_excep_std_fail.cpp @@ -0,0 +1,34 @@ +// This file was automatically generated on Fri Dec 03 18:04:01 2004 +// by libs/config/tools/generate.cpp +// Copyright John Maddock 2002-4. +// 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) + +// See http://www.boost.org/libs/config for the most recent version. + +// Test file for macro BOOST_NO_EXCEPTION_STD_NAMESPACE +// This file should not compile, if it does then +// BOOST_NO_EXCEPTION_STD_NAMESPACE should not be defined. +// See file boost_no_excep_std.ipp for details + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include <boost/config.hpp> +#include "test.hpp" + +#ifdef BOOST_NO_EXCEPTION_STD_NAMESPACE +#include "boost_no_excep_std.ipp" +#else +#error "this file should not compile" +#endif + +int main( int, char *[] ) +{ + return boost_no_exception_std_namespace::test(); +} + diff --git a/libs/config/test/no_excep_std_pass.cpp b/libs/config/test/no_excep_std_pass.cpp new file mode 100644 index 0000000000..9b5f9ca1c0 --- /dev/null +++ b/libs/config/test/no_excep_std_pass.cpp @@ -0,0 +1,34 @@ +// This file was automatically generated on Fri Dec 03 18:04:01 2004 +// by libs/config/tools/generate.cpp +// Copyright John Maddock 2002-4. +// 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) + +// See http://www.boost.org/libs/config for the most recent version. + +// Test file for macro BOOST_NO_EXCEPTION_STD_NAMESPACE +// This file should compile, if it does not then +// BOOST_NO_EXCEPTION_STD_NAMESPACE should be defined. +// See file boost_no_excep_std.ipp for details + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include <boost/config.hpp> +#include "test.hpp" + +#ifndef BOOST_NO_EXCEPTION_STD_NAMESPACE +#include "boost_no_excep_std.ipp" +#else +namespace boost_no_exception_std_namespace = empty_boost; +#endif + +int main( int, char *[] ) +{ + return boost_no_exception_std_namespace::test(); +} + diff --git a/libs/config/test/no_exceptions_fail.cpp b/libs/config/test/no_exceptions_fail.cpp new file mode 100644 index 0000000000..e1f3f4902e --- /dev/null +++ b/libs/config/test/no_exceptions_fail.cpp @@ -0,0 +1,34 @@ +// This file was automatically generated on Fri Dec 03 18:04:01 2004 +// by libs/config/tools/generate.cpp +// Copyright John Maddock 2002-4. +// 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) + +// See http://www.boost.org/libs/config for the most recent version. + +// Test file for macro BOOST_NO_EXCEPTIONS +// This file should not compile, if it does then +// BOOST_NO_EXCEPTIONS should not be defined. +// See file boost_no_exceptions.ipp for details + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include <boost/config.hpp> +#include "test.hpp" + +#ifdef BOOST_NO_EXCEPTIONS +#include "boost_no_exceptions.ipp" +#else +#error "this file should not compile" +#endif + +int main( int, char *[] ) +{ + return boost_no_exceptions::test(); +} + diff --git a/libs/config/test/no_exceptions_pass.cpp b/libs/config/test/no_exceptions_pass.cpp new file mode 100644 index 0000000000..f2bf582143 --- /dev/null +++ b/libs/config/test/no_exceptions_pass.cpp @@ -0,0 +1,34 @@ +// This file was automatically generated on Fri Dec 03 18:04:01 2004 +// by libs/config/tools/generate.cpp +// Copyright John Maddock 2002-4. +// 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) + +// See http://www.boost.org/libs/config for the most recent version. + +// Test file for macro BOOST_NO_EXCEPTIONS +// This file should compile, if it does not then +// BOOST_NO_EXCEPTIONS should be defined. +// See file boost_no_exceptions.ipp for details + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include <boost/config.hpp> +#include "test.hpp" + +#ifndef BOOST_NO_EXCEPTIONS +#include "boost_no_exceptions.ipp" +#else +namespace boost_no_exceptions = empty_boost; +#endif + +int main( int, char *[] ) +{ + return boost_no_exceptions::test(); +} + diff --git a/libs/config/test/no_exp_func_tem_arg_fail.cpp b/libs/config/test/no_exp_func_tem_arg_fail.cpp new file mode 100644 index 0000000000..e491c4dba8 --- /dev/null +++ b/libs/config/test/no_exp_func_tem_arg_fail.cpp @@ -0,0 +1,34 @@ +// This file was automatically generated on Fri Dec 03 18:04:01 2004 +// by libs/config/tools/generate.cpp +// Copyright John Maddock 2002-4. +// 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) + +// See http://www.boost.org/libs/config for the most recent version. + +// Test file for macro BOOST_NO_EXPLICIT_FUNCTION_TEMPLATE_ARGUMENTS +// This file should not compile, if it does then +// BOOST_NO_EXPLICIT_FUNCTION_TEMPLATE_ARGUMENTS should not be defined. +// See file boost_no_exp_func_tem_arg.ipp for details + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include <boost/config.hpp> +#include "test.hpp" + +#ifdef BOOST_NO_EXPLICIT_FUNCTION_TEMPLATE_ARGUMENTS +#include "boost_no_exp_func_tem_arg.ipp" +#else +#error "this file should not compile" +#endif + +int main( int, char *[] ) +{ + return boost_no_explicit_function_template_arguments::test(); +} + diff --git a/libs/config/test/no_exp_func_tem_arg_pass.cpp b/libs/config/test/no_exp_func_tem_arg_pass.cpp new file mode 100644 index 0000000000..6e23777884 --- /dev/null +++ b/libs/config/test/no_exp_func_tem_arg_pass.cpp @@ -0,0 +1,34 @@ +// This file was automatically generated on Fri Dec 03 18:04:01 2004 +// by libs/config/tools/generate.cpp +// Copyright John Maddock 2002-4. +// 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) + +// See http://www.boost.org/libs/config for the most recent version. + +// Test file for macro BOOST_NO_EXPLICIT_FUNCTION_TEMPLATE_ARGUMENTS +// This file should compile, if it does not then +// BOOST_NO_EXPLICIT_FUNCTION_TEMPLATE_ARGUMENTS should be defined. +// See file boost_no_exp_func_tem_arg.ipp for details + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include <boost/config.hpp> +#include "test.hpp" + +#ifndef BOOST_NO_EXPLICIT_FUNCTION_TEMPLATE_ARGUMENTS +#include "boost_no_exp_func_tem_arg.ipp" +#else +namespace boost_no_explicit_function_template_arguments = empty_boost; +#endif + +int main( int, char *[] ) +{ + return boost_no_explicit_function_template_arguments::test(); +} + diff --git a/libs/config/test/no_explicit_cvt_ops_fail.cpp b/libs/config/test/no_explicit_cvt_ops_fail.cpp new file mode 100644 index 0000000000..ca78a2435a --- /dev/null +++ b/libs/config/test/no_explicit_cvt_ops_fail.cpp @@ -0,0 +1,37 @@ +// This file was automatically generated on Fri Jun 20 11:51:15 2008 +// by libs/config/tools/generate.cpp +// Copyright John Maddock 2002-4. +// 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) + +// See http://www.boost.org/libs/config for the most recent version.// +// Revision $Id: no_explicit_cvt_ops_fail.cpp 51606 2009-03-04 14:28:36Z bemandawes $ +// + + +// Test file for macro BOOST_NO_EXPLICIT_CONVERSION_OPERATORS +// This file should not compile, if it does then +// BOOST_NO_EXPLICIT_CONVERSION_OPERATORS should not be defined. +// See file boost_no_explicit_cvt_ops.ipp for details + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include <boost/config.hpp> +#include "test.hpp" + +#ifdef BOOST_NO_EXPLICIT_CONVERSION_OPERATORS +#include "boost_no_explicit_cvt_ops.ipp" +#else +#error "this file should not compile" +#endif + +int main( int, char *[] ) +{ + return boost_no_explicit_conversion_operators::test(); +} + diff --git a/libs/config/test/no_explicit_cvt_ops_pass.cpp b/libs/config/test/no_explicit_cvt_ops_pass.cpp new file mode 100644 index 0000000000..ca0191194d --- /dev/null +++ b/libs/config/test/no_explicit_cvt_ops_pass.cpp @@ -0,0 +1,37 @@ +// This file was automatically generated on Fri Jun 20 11:51:15 2008 +// by libs/config/tools/generate.cpp +// Copyright John Maddock 2002-4. +// 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) + +// See http://www.boost.org/libs/config for the most recent version.// +// Revision $Id: no_explicit_cvt_ops_pass.cpp 51606 2009-03-04 14:28:36Z bemandawes $ +// + + +// Test file for macro BOOST_NO_EXPLICIT_CONVERSION_OPERATORS +// This file should compile, if it does not then +// BOOST_NO_EXPLICIT_CONVERSION_OPERATORS should be defined. +// See file boost_no_explicit_cvt_ops.ipp for details + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include <boost/config.hpp> +#include "test.hpp" + +#ifndef BOOST_NO_EXPLICIT_CONVERSION_OPERATORS +#include "boost_no_explicit_cvt_ops.ipp" +#else +namespace boost_no_explicit_conversion_operators = empty_boost; +#endif + +int main( int, char *[] ) +{ + return boost_no_explicit_conversion_operators::test(); +} + diff --git a/libs/config/test/no_extern_template_fail.cpp b/libs/config/test/no_extern_template_fail.cpp new file mode 100644 index 0000000000..ecae4c2251 --- /dev/null +++ b/libs/config/test/no_extern_template_fail.cpp @@ -0,0 +1,37 @@ +// This file was automatically generated on Thu May 29 09:24:04 2008 +// by libs/config/tools/generate.cpp +// Copyright John Maddock 2002-4. +// 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) + +// See http://www.boost.org/libs/config for the most recent version.// +// Revision $Id: no_extern_template_fail.cpp 51606 2009-03-04 14:28:36Z bemandawes $ +// + + +// Test file for macro BOOST_NO_EXTERN_TEMPLATE +// This file should not compile, if it does then +// BOOST_NO_EXTERN_TEMPLATE should not be defined. +// See file boost_no_extern_template.ipp for details + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include <boost/config.hpp> +#include "test.hpp" + +#ifdef BOOST_NO_EXTERN_TEMPLATE +#include "boost_no_extern_template.ipp" +#else +#error "this file should not compile" +#endif + +int main( int, char *[] ) +{ + return boost_no_extern_template::test(); +} + diff --git a/libs/config/test/no_extern_template_pass.cpp b/libs/config/test/no_extern_template_pass.cpp new file mode 100644 index 0000000000..ca456d71b5 --- /dev/null +++ b/libs/config/test/no_extern_template_pass.cpp @@ -0,0 +1,37 @@ +// This file was automatically generated on Thu May 29 09:24:04 2008 +// by libs/config/tools/generate.cpp +// Copyright John Maddock 2002-4. +// 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) + +// See http://www.boost.org/libs/config for the most recent version.// +// Revision $Id: no_extern_template_pass.cpp 51606 2009-03-04 14:28:36Z bemandawes $ +// + + +// Test file for macro BOOST_NO_EXTERN_TEMPLATE +// This file should compile, if it does not then +// BOOST_NO_EXTERN_TEMPLATE should be defined. +// See file boost_no_extern_template.ipp for details + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include <boost/config.hpp> +#include "test.hpp" + +#ifndef BOOST_NO_EXTERN_TEMPLATE +#include "boost_no_extern_template.ipp" +#else +namespace boost_no_extern_template = empty_boost; +#endif + +int main( int, char *[] ) +{ + return boost_no_extern_template::test(); +} + diff --git a/libs/config/test/no_fenv_h_fail.cpp b/libs/config/test/no_fenv_h_fail.cpp new file mode 100644 index 0000000000..9b2f41039c --- /dev/null +++ b/libs/config/test/no_fenv_h_fail.cpp @@ -0,0 +1,33 @@ +// Copyright Bryce Lelbach 2010. +// Copyright John Maddock 2002-4. +// 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) + +// See http://www.boost.org/libs/config for the most recent version. + +// Test file for macro BOOST_NO_FENV_H +// This file should not compile, if it does then +// BOOST_NO_FENV_H should not be defined. +// See file boost_no_fenv_h.ipp for details + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include <boost/config.hpp> +#include "test.hpp" + +#ifdef BOOST_NO_FENV_H +#include "boost_no_fenv_h.ipp" +#else +#error "this file should not compile" +#endif + +int main( int, char *[] ) +{ + return boost_no_fenv_h::test(); +} + diff --git a/libs/config/test/no_fenv_h_pass.cpp b/libs/config/test/no_fenv_h_pass.cpp new file mode 100644 index 0000000000..573d62449e --- /dev/null +++ b/libs/config/test/no_fenv_h_pass.cpp @@ -0,0 +1,33 @@ +// Copyright Bryce Lelbach 2010. +// Copyright John Maddock 2002-4. +// 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) + +// See http://www.boost.org/libs/config for the most recent version. + +// Test file for macro BOOST_NO_FENV_H +// This file should compile, if it does not then +// BOOST_NO_FENV_H should be defined. +// See file boost_no_fenv_h.ipp for details + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include <boost/config.hpp> +#include "test.hpp" + +#ifndef BOOST_NO_FENV_H +#include "boost_no_fenv_h.ipp" +#else +namespace boost_no_fenv_h = empty_boost; +#endif + +int main( int, char *[] ) +{ + return boost_no_fenv_h::test(); +} + diff --git a/libs/config/test/no_func_tmp_order_fail.cpp b/libs/config/test/no_func_tmp_order_fail.cpp new file mode 100644 index 0000000000..7736e908d6 --- /dev/null +++ b/libs/config/test/no_func_tmp_order_fail.cpp @@ -0,0 +1,34 @@ +// This file was automatically generated on Fri Dec 03 18:04:01 2004 +// by libs/config/tools/generate.cpp +// Copyright John Maddock 2002-4. +// 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) + +// See http://www.boost.org/libs/config for the most recent version. + +// Test file for macro BOOST_NO_FUNCTION_TEMPLATE_ORDERING +// This file should not compile, if it does then +// BOOST_NO_FUNCTION_TEMPLATE_ORDERING should not be defined. +// See file boost_no_func_tmp_order.ipp for details + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include <boost/config.hpp> +#include "test.hpp" + +#ifdef BOOST_NO_FUNCTION_TEMPLATE_ORDERING +#include "boost_no_func_tmp_order.ipp" +#else +#error "this file should not compile" +#endif + +int main( int, char *[] ) +{ + return boost_no_function_template_ordering::test(); +} + diff --git a/libs/config/test/no_func_tmp_order_pass.cpp b/libs/config/test/no_func_tmp_order_pass.cpp new file mode 100644 index 0000000000..003829f54b --- /dev/null +++ b/libs/config/test/no_func_tmp_order_pass.cpp @@ -0,0 +1,34 @@ +// This file was automatically generated on Fri Dec 03 18:04:01 2004 +// by libs/config/tools/generate.cpp +// Copyright John Maddock 2002-4. +// 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) + +// See http://www.boost.org/libs/config for the most recent version. + +// Test file for macro BOOST_NO_FUNCTION_TEMPLATE_ORDERING +// This file should compile, if it does not then +// BOOST_NO_FUNCTION_TEMPLATE_ORDERING should be defined. +// See file boost_no_func_tmp_order.ipp for details + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include <boost/config.hpp> +#include "test.hpp" + +#ifndef BOOST_NO_FUNCTION_TEMPLATE_ORDERING +#include "boost_no_func_tmp_order.ipp" +#else +namespace boost_no_function_template_ordering = empty_boost; +#endif + +int main( int, char *[] ) +{ + return boost_no_function_template_ordering::test(); +} + diff --git a/libs/config/test/no_function_template_default_args_fail.cpp b/libs/config/test/no_function_template_default_args_fail.cpp new file mode 100644 index 0000000000..a551130de3 --- /dev/null +++ b/libs/config/test/no_function_template_default_args_fail.cpp @@ -0,0 +1,37 @@ +// This file was automatically generated on Sun Aug 02 08:25:59 2009 +// by libs/config/tools/generate.cpp +// Copyright John Maddock 2002-4. +// 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) + +// See http://www.boost.org/libs/config for the most recent version.// +// Revision $Id: no_function_template_default_args_fail.cpp 56678 2009-10-09 16:16:02Z johnmaddock $ +// + + +// Test file for macro BOOST_NO_FUNCTION_TEMPLATE_DEFAULT_ARGS +// This file should not compile, if it does then +// BOOST_NO_FUNCTION_TEMPLATE_DEFAULT_ARGS should not be defined. +// See file boost_no_function_template_default_args.ipp for details + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include <boost/config.hpp> +#include "test.hpp" + +#ifdef BOOST_NO_FUNCTION_TEMPLATE_DEFAULT_ARGS +#include "boost_no_function_template_default_args.ipp" +#else +#error "this file should not compile" +#endif + +int main( int, char *[] ) +{ + return boost_no_function_template_default_args::test(); +} + diff --git a/libs/config/test/no_function_template_default_args_pass.cpp b/libs/config/test/no_function_template_default_args_pass.cpp new file mode 100644 index 0000000000..346d653da2 --- /dev/null +++ b/libs/config/test/no_function_template_default_args_pass.cpp @@ -0,0 +1,37 @@ +// This file was automatically generated on Sun Aug 02 08:25:59 2009 +// by libs/config/tools/generate.cpp +// Copyright John Maddock 2002-4. +// 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) + +// See http://www.boost.org/libs/config for the most recent version.// +// Revision $Id: no_function_template_default_args_pass.cpp 56678 2009-10-09 16:16:02Z johnmaddock $ +// + + +// Test file for macro BOOST_NO_FUNCTION_TEMPLATE_DEFAULT_ARGS +// This file should compile, if it does not then +// BOOST_NO_FUNCTION_TEMPLATE_DEFAULT_ARGS should be defined. +// See file boost_no_function_template_default_args.ipp for details + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include <boost/config.hpp> +#include "test.hpp" + +#ifndef BOOST_NO_FUNCTION_TEMPLATE_DEFAULT_ARGS +#include "boost_no_function_template_default_args.ipp" +#else +namespace boost_no_function_template_default_args = empty_boost; +#endif + +int main( int, char *[] ) +{ + return boost_no_function_template_default_args::test(); +} + diff --git a/libs/config/test/no_function_type_spec_fail.cpp b/libs/config/test/no_function_type_spec_fail.cpp new file mode 100644 index 0000000000..6ae1dba27b --- /dev/null +++ b/libs/config/test/no_function_type_spec_fail.cpp @@ -0,0 +1,34 @@ +// This file was automatically generated on Sun Dec 31 16:23:48 2006 +// by libs/config/tools/generate.cpp +// Copyright John Maddock 2002-4. +// 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) + +// See http://www.boost.org/libs/config for the most recent version. + +// Test file for macro BOOST_NO_FUNCTION_TYPE_SPECIALIZATIONS +// This file should not compile, if it does then +// BOOST_NO_FUNCTION_TYPE_SPECIALIZATIONS should not be defined. +// See file boost_no_function_type_spec.ipp for details + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include <boost/config.hpp> +#include "test.hpp" + +#ifdef BOOST_NO_FUNCTION_TYPE_SPECIALIZATIONS +#include "boost_no_function_type_spec.ipp" +#else +#error "this file should not compile" +#endif + +int main( int, char *[] ) +{ + return boost_no_function_type_specializations::test(); +} + diff --git a/libs/config/test/no_function_type_spec_pass.cpp b/libs/config/test/no_function_type_spec_pass.cpp new file mode 100644 index 0000000000..e70de0c407 --- /dev/null +++ b/libs/config/test/no_function_type_spec_pass.cpp @@ -0,0 +1,34 @@ +// This file was automatically generated on Sun Dec 31 16:23:48 2006 +// by libs/config/tools/generate.cpp +// Copyright John Maddock 2002-4. +// 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) + +// See http://www.boost.org/libs/config for the most recent version. + +// Test file for macro BOOST_NO_FUNCTION_TYPE_SPECIALIZATIONS +// This file should compile, if it does not then +// BOOST_NO_FUNCTION_TYPE_SPECIALIZATIONS should be defined. +// See file boost_no_function_type_spec.ipp for details + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include <boost/config.hpp> +#include "test.hpp" + +#ifndef BOOST_NO_FUNCTION_TYPE_SPECIALIZATIONS +#include "boost_no_function_type_spec.ipp" +#else +namespace boost_no_function_type_specializations = empty_boost; +#endif + +int main( int, char *[] ) +{ + return boost_no_function_type_specializations::test(); +} + diff --git a/libs/config/test/no_i64_limits_fail.cpp b/libs/config/test/no_i64_limits_fail.cpp new file mode 100644 index 0000000000..63f01b342b --- /dev/null +++ b/libs/config/test/no_i64_limits_fail.cpp @@ -0,0 +1,34 @@ +// This file was automatically generated on Fri Dec 03 18:04:01 2004 +// by libs/config/tools/generate.cpp +// Copyright John Maddock 2002-4. +// 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) + +// See http://www.boost.org/libs/config for the most recent version. + +// Test file for macro BOOST_NO_MS_INT64_NUMERIC_LIMITS +// This file should not compile, if it does then +// BOOST_NO_MS_INT64_NUMERIC_LIMITS should not be defined. +// See file boost_no_i64_limits.ipp for details + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include <boost/config.hpp> +#include "test.hpp" + +#ifdef BOOST_NO_MS_INT64_NUMERIC_LIMITS +#include "boost_no_i64_limits.ipp" +#else +#error "this file should not compile" +#endif + +int main( int, char *[] ) +{ + return boost_no_ms_int64_numeric_limits::test(); +} + diff --git a/libs/config/test/no_i64_limits_pass.cpp b/libs/config/test/no_i64_limits_pass.cpp new file mode 100644 index 0000000000..58e63e7100 --- /dev/null +++ b/libs/config/test/no_i64_limits_pass.cpp @@ -0,0 +1,34 @@ +// This file was automatically generated on Fri Dec 03 18:04:01 2004 +// by libs/config/tools/generate.cpp +// Copyright John Maddock 2002-4. +// 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) + +// See http://www.boost.org/libs/config for the most recent version. + +// Test file for macro BOOST_NO_MS_INT64_NUMERIC_LIMITS +// This file should compile, if it does not then +// BOOST_NO_MS_INT64_NUMERIC_LIMITS should be defined. +// See file boost_no_i64_limits.ipp for details + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include <boost/config.hpp> +#include "test.hpp" + +#ifndef BOOST_NO_MS_INT64_NUMERIC_LIMITS +#include "boost_no_i64_limits.ipp" +#else +namespace boost_no_ms_int64_numeric_limits = empty_boost; +#endif + +int main( int, char *[] ) +{ + return boost_no_ms_int64_numeric_limits::test(); +} + diff --git a/libs/config/test/no_initializer_lists_fail.cpp b/libs/config/test/no_initializer_lists_fail.cpp new file mode 100644 index 0000000000..633c051f3c --- /dev/null +++ b/libs/config/test/no_initializer_lists_fail.cpp @@ -0,0 +1,37 @@ +// This file was automatically generated on Wed Sep 24 11:44:21 2008 +// by libs/config/tools/generate.cpp +// Copyright John Maddock 2002-4. +// 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) + +// See http://www.boost.org/libs/config for the most recent version.// +// Revision $Id: no_initializer_lists_fail.cpp 50451 2009-01-03 23:18:33Z danieljames $ +// + + +// Test file for macro BOOST_NO_INITIALIZER_LISTS +// This file should not compile, if it does then +// BOOST_NO_INITIALIZER_LISTS should not be defined. +// See file boost_no_initializer_lists.ipp for details + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include <boost/config.hpp> +#include "test.hpp" + +#ifdef BOOST_NO_INITIALIZER_LISTS +#include "boost_no_initializer_lists.ipp" +#else +#error "this file should not compile" +#endif + +int main( int, char *[] ) +{ + return boost_no_initializer_lists::test(); +} + diff --git a/libs/config/test/no_initializer_lists_pass.cpp b/libs/config/test/no_initializer_lists_pass.cpp new file mode 100644 index 0000000000..02e67c06c5 --- /dev/null +++ b/libs/config/test/no_initializer_lists_pass.cpp @@ -0,0 +1,37 @@ +// This file was automatically generated on Wed Sep 24 11:44:21 2008 +// by libs/config/tools/generate.cpp +// Copyright John Maddock 2002-4. +// 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) + +// See http://www.boost.org/libs/config for the most recent version.// +// Revision $Id: no_initializer_lists_pass.cpp 50451 2009-01-03 23:18:33Z danieljames $ +// + + +// Test file for macro BOOST_NO_INITIALIZER_LISTS +// This file should compile, if it does not then +// BOOST_NO_INITIALIZER_LISTS should be defined. +// See file boost_no_initializer_lists.ipp for details + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include <boost/config.hpp> +#include "test.hpp" + +#ifndef BOOST_NO_INITIALIZER_LISTS +#include "boost_no_initializer_lists.ipp" +#else +namespace boost_no_initializer_lists = empty_boost; +#endif + +int main( int, char *[] ) +{ + return boost_no_initializer_lists::test(); +} + diff --git a/libs/config/test/no_inline_memb_init_fail.cpp b/libs/config/test/no_inline_memb_init_fail.cpp new file mode 100644 index 0000000000..e4b9a6f6f1 --- /dev/null +++ b/libs/config/test/no_inline_memb_init_fail.cpp @@ -0,0 +1,34 @@ +// This file was automatically generated on Fri Dec 03 18:04:01 2004 +// by libs/config/tools/generate.cpp +// Copyright John Maddock 2002-4. +// 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) + +// See http://www.boost.org/libs/config for the most recent version. + +// Test file for macro BOOST_NO_INCLASS_MEMBER_INITIALIZATION +// This file should not compile, if it does then +// BOOST_NO_INCLASS_MEMBER_INITIALIZATION should not be defined. +// See file boost_no_inline_memb_init.ipp for details + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include <boost/config.hpp> +#include "test.hpp" + +#ifdef BOOST_NO_INCLASS_MEMBER_INITIALIZATION +#include "boost_no_inline_memb_init.ipp" +#else +#error "this file should not compile" +#endif + +int main( int, char *[] ) +{ + return boost_no_inclass_member_initialization::test(); +} + diff --git a/libs/config/test/no_inline_memb_init_pass.cpp b/libs/config/test/no_inline_memb_init_pass.cpp new file mode 100644 index 0000000000..1b51313401 --- /dev/null +++ b/libs/config/test/no_inline_memb_init_pass.cpp @@ -0,0 +1,34 @@ +// This file was automatically generated on Fri Dec 03 18:04:01 2004 +// by libs/config/tools/generate.cpp +// Copyright John Maddock 2002-4. +// 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) + +// See http://www.boost.org/libs/config for the most recent version. + +// Test file for macro BOOST_NO_INCLASS_MEMBER_INITIALIZATION +// This file should compile, if it does not then +// BOOST_NO_INCLASS_MEMBER_INITIALIZATION should be defined. +// See file boost_no_inline_memb_init.ipp for details + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include <boost/config.hpp> +#include "test.hpp" + +#ifndef BOOST_NO_INCLASS_MEMBER_INITIALIZATION +#include "boost_no_inline_memb_init.ipp" +#else +namespace boost_no_inclass_member_initialization = empty_boost; +#endif + +int main( int, char *[] ) +{ + return boost_no_inclass_member_initialization::test(); +} + diff --git a/libs/config/test/no_integral_int64_t_fail.cpp b/libs/config/test/no_integral_int64_t_fail.cpp new file mode 100644 index 0000000000..92280dfd6b --- /dev/null +++ b/libs/config/test/no_integral_int64_t_fail.cpp @@ -0,0 +1,34 @@ +// This file was automatically generated on Fri Dec 03 18:04:01 2004 +// by libs/config/tools/generate.cpp +// Copyright John Maddock 2002-4. +// 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) + +// See http://www.boost.org/libs/config for the most recent version. + +// Test file for macro BOOST_NO_INTEGRAL_INT64_T +// This file should not compile, if it does then +// BOOST_NO_INTEGRAL_INT64_T should not be defined. +// See file boost_no_integral_int64_t.ipp for details + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include <boost/config.hpp> +#include "test.hpp" + +#ifdef BOOST_NO_INTEGRAL_INT64_T +#include "boost_no_integral_int64_t.ipp" +#else +#error "this file should not compile" +#endif + +int main( int, char *[] ) +{ + return boost_no_integral_int64_t::test(); +} + diff --git a/libs/config/test/no_integral_int64_t_pass.cpp b/libs/config/test/no_integral_int64_t_pass.cpp new file mode 100644 index 0000000000..012a562fed --- /dev/null +++ b/libs/config/test/no_integral_int64_t_pass.cpp @@ -0,0 +1,34 @@ +// This file was automatically generated on Fri Dec 03 18:04:01 2004 +// by libs/config/tools/generate.cpp +// Copyright John Maddock 2002-4. +// 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) + +// See http://www.boost.org/libs/config for the most recent version. + +// Test file for macro BOOST_NO_INTEGRAL_INT64_T +// This file should compile, if it does not then +// BOOST_NO_INTEGRAL_INT64_T should be defined. +// See file boost_no_integral_int64_t.ipp for details + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include <boost/config.hpp> +#include "test.hpp" + +#ifndef BOOST_NO_INTEGRAL_INT64_T +#include "boost_no_integral_int64_t.ipp" +#else +namespace boost_no_integral_int64_t = empty_boost; +#endif + +int main( int, char *[] ) +{ + return boost_no_integral_int64_t::test(); +} + diff --git a/libs/config/test/no_iosfwd_fail.cpp b/libs/config/test/no_iosfwd_fail.cpp new file mode 100644 index 0000000000..a1c6d91887 --- /dev/null +++ b/libs/config/test/no_iosfwd_fail.cpp @@ -0,0 +1,34 @@ +// This file was automatically generated on Sat Aug 25 12:32:21 2007 +// by libs/config/tools/generate.cpp +// Copyright John Maddock 2002-4. +// 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) + +// See http://www.boost.org/libs/config for the most recent version. + +// Test file for macro BOOST_NO_IOSFWD +// This file should not compile, if it does then +// BOOST_NO_IOSFWD should not be defined. +// See file boost_no_iosfwd.ipp for details + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include <boost/config.hpp> +#include "test.hpp" + +#ifdef BOOST_NO_IOSFWD +#include "boost_no_iosfwd.ipp" +#else +#error "this file should not compile" +#endif + +int main( int, char *[] ) +{ + return boost_no_iosfwd::test(); +} + diff --git a/libs/config/test/no_iosfwd_pass.cpp b/libs/config/test/no_iosfwd_pass.cpp new file mode 100644 index 0000000000..6e631d9034 --- /dev/null +++ b/libs/config/test/no_iosfwd_pass.cpp @@ -0,0 +1,34 @@ +// This file was automatically generated on Sat Aug 25 12:32:21 2007 +// by libs/config/tools/generate.cpp +// Copyright John Maddock 2002-4. +// 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) + +// See http://www.boost.org/libs/config for the most recent version. + +// Test file for macro BOOST_NO_IOSFWD +// This file should compile, if it does not then +// BOOST_NO_IOSFWD should be defined. +// See file boost_no_iosfwd.ipp for details + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include <boost/config.hpp> +#include "test.hpp" + +#ifndef BOOST_NO_IOSFWD +#include "boost_no_iosfwd.ipp" +#else +namespace boost_no_iosfwd = empty_boost; +#endif + +int main( int, char *[] ) +{ + return boost_no_iosfwd::test(); +} + diff --git a/libs/config/test/no_iostream_fail.cpp b/libs/config/test/no_iostream_fail.cpp new file mode 100644 index 0000000000..67a8459550 --- /dev/null +++ b/libs/config/test/no_iostream_fail.cpp @@ -0,0 +1,34 @@ +// This file was automatically generated on Sat Aug 25 12:32:21 2007 +// by libs/config/tools/generate.cpp +// Copyright John Maddock 2002-4. +// 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) + +// See http://www.boost.org/libs/config for the most recent version. + +// Test file for macro BOOST_NO_IOSTREAM +// This file should not compile, if it does then +// BOOST_NO_IOSTREAM should not be defined. +// See file boost_no_iostream.ipp for details + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include <boost/config.hpp> +#include "test.hpp" + +#ifdef BOOST_NO_IOSTREAM +#include "boost_no_iostream.ipp" +#else +#error "this file should not compile" +#endif + +int main( int, char *[] ) +{ + return boost_no_iostream::test(); +} + diff --git a/libs/config/test/no_iostream_pass.cpp b/libs/config/test/no_iostream_pass.cpp new file mode 100644 index 0000000000..ba1d0ac30b --- /dev/null +++ b/libs/config/test/no_iostream_pass.cpp @@ -0,0 +1,34 @@ +// This file was automatically generated on Sat Aug 25 12:32:21 2007 +// by libs/config/tools/generate.cpp +// Copyright John Maddock 2002-4. +// 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) + +// See http://www.boost.org/libs/config for the most recent version. + +// Test file for macro BOOST_NO_IOSTREAM +// This file should compile, if it does not then +// BOOST_NO_IOSTREAM should be defined. +// See file boost_no_iostream.ipp for details + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include <boost/config.hpp> +#include "test.hpp" + +#ifndef BOOST_NO_IOSTREAM +#include "boost_no_iostream.ipp" +#else +namespace boost_no_iostream = empty_boost; +#endif + +int main( int, char *[] ) +{ + return boost_no_iostream::test(); +} + diff --git a/libs/config/test/no_is_abstract_fail.cpp b/libs/config/test/no_is_abstract_fail.cpp new file mode 100644 index 0000000000..1a5c57befc --- /dev/null +++ b/libs/config/test/no_is_abstract_fail.cpp @@ -0,0 +1,34 @@ +// This file was automatically generated on Fri Dec 03 18:04:01 2004 +// by libs/config/tools/generate.cpp +// Copyright John Maddock 2002-4. +// 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) + +// See http://www.boost.org/libs/config for the most recent version. + +// Test file for macro BOOST_NO_IS_ABSTRACT +// This file should not compile, if it does then +// BOOST_NO_IS_ABSTRACT should not be defined. +// See file boost_no_is_abstract.ipp for details + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include <boost/config.hpp> +#include "test.hpp" + +#ifdef BOOST_NO_IS_ABSTRACT +#include "boost_no_is_abstract.ipp" +#else +#error "this file should not compile" +#endif + +int main( int, char *[] ) +{ + return boost_no_is_abstract::test(); +} + diff --git a/libs/config/test/no_is_abstract_pass.cpp b/libs/config/test/no_is_abstract_pass.cpp new file mode 100644 index 0000000000..a9caf68635 --- /dev/null +++ b/libs/config/test/no_is_abstract_pass.cpp @@ -0,0 +1,34 @@ +// This file was automatically generated on Fri Dec 03 18:04:01 2004 +// by libs/config/tools/generate.cpp +// Copyright John Maddock 2002-4. +// 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) + +// See http://www.boost.org/libs/config for the most recent version. + +// Test file for macro BOOST_NO_IS_ABSTRACT +// This file should compile, if it does not then +// BOOST_NO_IS_ABSTRACT should be defined. +// See file boost_no_is_abstract.ipp for details + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include <boost/config.hpp> +#include "test.hpp" + +#ifndef BOOST_NO_IS_ABSTRACT +#include "boost_no_is_abstract.ipp" +#else +namespace boost_no_is_abstract = empty_boost; +#endif + +int main( int, char *[] ) +{ + return boost_no_is_abstract::test(); +} + diff --git a/libs/config/test/no_iter_construct_fail.cpp b/libs/config/test/no_iter_construct_fail.cpp new file mode 100644 index 0000000000..bc618648ae --- /dev/null +++ b/libs/config/test/no_iter_construct_fail.cpp @@ -0,0 +1,34 @@ +// This file was automatically generated on Fri Dec 03 18:04:01 2004 +// by libs/config/tools/generate.cpp +// Copyright John Maddock 2002-4. +// 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) + +// See http://www.boost.org/libs/config for the most recent version. + +// Test file for macro BOOST_NO_TEMPLATED_ITERATOR_CONSTRUCTORS +// This file should not compile, if it does then +// BOOST_NO_TEMPLATED_ITERATOR_CONSTRUCTORS should not be defined. +// See file boost_no_iter_construct.ipp for details + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include <boost/config.hpp> +#include "test.hpp" + +#ifdef BOOST_NO_TEMPLATED_ITERATOR_CONSTRUCTORS +#include "boost_no_iter_construct.ipp" +#else +#error "this file should not compile" +#endif + +int main( int, char *[] ) +{ + return boost_no_templated_iterator_constructors::test(); +} + diff --git a/libs/config/test/no_iter_construct_pass.cpp b/libs/config/test/no_iter_construct_pass.cpp new file mode 100644 index 0000000000..6d063bedfd --- /dev/null +++ b/libs/config/test/no_iter_construct_pass.cpp @@ -0,0 +1,34 @@ +// This file was automatically generated on Fri Dec 03 18:04:01 2004 +// by libs/config/tools/generate.cpp +// Copyright John Maddock 2002-4. +// 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) + +// See http://www.boost.org/libs/config for the most recent version. + +// Test file for macro BOOST_NO_TEMPLATED_ITERATOR_CONSTRUCTORS +// This file should compile, if it does not then +// BOOST_NO_TEMPLATED_ITERATOR_CONSTRUCTORS should be defined. +// See file boost_no_iter_construct.ipp for details + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include <boost/config.hpp> +#include "test.hpp" + +#ifndef BOOST_NO_TEMPLATED_ITERATOR_CONSTRUCTORS +#include "boost_no_iter_construct.ipp" +#else +namespace boost_no_templated_iterator_constructors = empty_boost; +#endif + +int main( int, char *[] ) +{ + return boost_no_templated_iterator_constructors::test(); +} + diff --git a/libs/config/test/no_lambdas_fail.cpp b/libs/config/test/no_lambdas_fail.cpp new file mode 100644 index 0000000000..bf4e658e24 --- /dev/null +++ b/libs/config/test/no_lambdas_fail.cpp @@ -0,0 +1,37 @@ +// This file was automatically generated on Thu May 14 16:01:35 2009 +// by libs/config/tools/generate.cpp +// Copyright John Maddock 2002-4. +// 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) + +// See http://www.boost.org/libs/config for the most recent version.// +// Revision $Id: no_lambdas_fail.cpp 53445 2009-05-30 11:22:59Z bemandawes $ +// + + +// Test file for macro BOOST_NO_LAMBDAS +// This file should not compile, if it does then +// BOOST_NO_LAMBDAS should not be defined. +// See file boost_no_lambdas.ipp for details + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include <boost/config.hpp> +#include "test.hpp" + +#ifdef BOOST_NO_LAMBDAS +#include "boost_no_lambdas.ipp" +#else +#error "this file should not compile" +#endif + +int main( int, char *[] ) +{ + return boost_no_lambdas::test(); +} + diff --git a/libs/config/test/no_lambdas_pass.cpp b/libs/config/test/no_lambdas_pass.cpp new file mode 100644 index 0000000000..a5d199751c --- /dev/null +++ b/libs/config/test/no_lambdas_pass.cpp @@ -0,0 +1,37 @@ +// This file was automatically generated on Thu May 14 16:01:35 2009 +// by libs/config/tools/generate.cpp +// Copyright John Maddock 2002-4. +// 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) + +// See http://www.boost.org/libs/config for the most recent version.// +// Revision $Id: no_lambdas_pass.cpp 53445 2009-05-30 11:22:59Z bemandawes $ +// + + +// Test file for macro BOOST_NO_LAMBDAS +// This file should compile, if it does not then +// BOOST_NO_LAMBDAS should be defined. +// See file boost_no_lambdas.ipp for details + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include <boost/config.hpp> +#include "test.hpp" + +#ifndef BOOST_NO_LAMBDAS +#include "boost_no_lambdas.ipp" +#else +namespace boost_no_lambdas = empty_boost; +#endif + +int main( int, char *[] ) +{ + return boost_no_lambdas::test(); +} + diff --git a/libs/config/test/no_limits_const_exp_fail.cpp b/libs/config/test/no_limits_const_exp_fail.cpp new file mode 100644 index 0000000000..9f916d9bd3 --- /dev/null +++ b/libs/config/test/no_limits_const_exp_fail.cpp @@ -0,0 +1,34 @@ +// This file was automatically generated on Fri Dec 03 18:04:01 2004 +// by libs/config/tools/generate.cpp +// Copyright John Maddock 2002-4. +// 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) + +// See http://www.boost.org/libs/config for the most recent version. + +// Test file for macro BOOST_NO_LIMITS_COMPILE_TIME_CONSTANTS +// This file should not compile, if it does then +// BOOST_NO_LIMITS_COMPILE_TIME_CONSTANTS should not be defined. +// See file boost_no_limits_const_exp.ipp for details + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include <boost/config.hpp> +#include "test.hpp" + +#ifdef BOOST_NO_LIMITS_COMPILE_TIME_CONSTANTS +#include "boost_no_limits_const_exp.ipp" +#else +#error "this file should not compile" +#endif + +int main( int, char *[] ) +{ + return boost_no_limits_compile_time_constants::test(); +} + diff --git a/libs/config/test/no_limits_const_exp_pass.cpp b/libs/config/test/no_limits_const_exp_pass.cpp new file mode 100644 index 0000000000..a280b76579 --- /dev/null +++ b/libs/config/test/no_limits_const_exp_pass.cpp @@ -0,0 +1,34 @@ +// This file was automatically generated on Fri Dec 03 18:04:01 2004 +// by libs/config/tools/generate.cpp +// Copyright John Maddock 2002-4. +// 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) + +// See http://www.boost.org/libs/config for the most recent version. + +// Test file for macro BOOST_NO_LIMITS_COMPILE_TIME_CONSTANTS +// This file should compile, if it does not then +// BOOST_NO_LIMITS_COMPILE_TIME_CONSTANTS should be defined. +// See file boost_no_limits_const_exp.ipp for details + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include <boost/config.hpp> +#include "test.hpp" + +#ifndef BOOST_NO_LIMITS_COMPILE_TIME_CONSTANTS +#include "boost_no_limits_const_exp.ipp" +#else +namespace boost_no_limits_compile_time_constants = empty_boost; +#endif + +int main( int, char *[] ) +{ + return boost_no_limits_compile_time_constants::test(); +} + diff --git a/libs/config/test/no_limits_fail.cpp b/libs/config/test/no_limits_fail.cpp new file mode 100644 index 0000000000..d685397cc0 --- /dev/null +++ b/libs/config/test/no_limits_fail.cpp @@ -0,0 +1,34 @@ +// This file was automatically generated on Fri Dec 03 18:04:01 2004 +// by libs/config/tools/generate.cpp +// Copyright John Maddock 2002-4. +// 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) + +// See http://www.boost.org/libs/config for the most recent version. + +// Test file for macro BOOST_NO_LIMITS +// This file should not compile, if it does then +// BOOST_NO_LIMITS should not be defined. +// See file boost_no_limits.ipp for details + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include <boost/config.hpp> +#include "test.hpp" + +#ifdef BOOST_NO_LIMITS +#include "boost_no_limits.ipp" +#else +#error "this file should not compile" +#endif + +int main( int, char *[] ) +{ + return boost_no_limits::test(); +} + diff --git a/libs/config/test/no_limits_lowest_fail.cpp b/libs/config/test/no_limits_lowest_fail.cpp new file mode 100644 index 0000000000..d58aa04e33 --- /dev/null +++ b/libs/config/test/no_limits_lowest_fail.cpp @@ -0,0 +1,37 @@ +// This file was automatically generated on Sat Sep 25 16:53:41 2010 +// by libs/config/tools/generate.cpp +// Copyright John Maddock 2002-4. +// 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) + +// See http://www.boost.org/libs/config for the most recent version.// +// Revision $Id: generate.cpp 49281 2008-10-11 15:40:44Z johnmaddock $ +// + + +// Test file for macro BOOST_NO_NUMERIC_LIMITS_LOWEST +// This file should not compile, if it does then +// BOOST_NO_NUMERIC_LIMITS_LOWEST should not be defined. +// See file boost_no_limits_lowest.ipp for details + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include <boost/config.hpp> +#include "test.hpp" + +#ifdef BOOST_NO_NUMERIC_LIMITS_LOWEST +#include "boost_no_limits_lowest.ipp" +#else +#error "this file should not compile" +#endif + +int main( int, char *[] ) +{ + return boost_no_numeric_limits_lowest::test(); +} + diff --git a/libs/config/test/no_limits_lowest_pass.cpp b/libs/config/test/no_limits_lowest_pass.cpp new file mode 100644 index 0000000000..d6af60bd6d --- /dev/null +++ b/libs/config/test/no_limits_lowest_pass.cpp @@ -0,0 +1,37 @@ +// This file was automatically generated on Sat Sep 25 16:53:41 2010 +// by libs/config/tools/generate.cpp +// Copyright John Maddock 2002-4. +// 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) + +// See http://www.boost.org/libs/config for the most recent version.// +// Revision $Id: generate.cpp 49281 2008-10-11 15:40:44Z johnmaddock $ +// + + +// Test file for macro BOOST_NO_NUMERIC_LIMITS_LOWEST +// This file should compile, if it does not then +// BOOST_NO_NUMERIC_LIMITS_LOWEST should be defined. +// See file boost_no_limits_lowest.ipp for details + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include <boost/config.hpp> +#include "test.hpp" + +#ifndef BOOST_NO_NUMERIC_LIMITS_LOWEST +#include "boost_no_limits_lowest.ipp" +#else +namespace boost_no_numeric_limits_lowest = empty_boost; +#endif + +int main( int, char *[] ) +{ + return boost_no_numeric_limits_lowest::test(); +} + diff --git a/libs/config/test/no_limits_pass.cpp b/libs/config/test/no_limits_pass.cpp new file mode 100644 index 0000000000..7d77cac325 --- /dev/null +++ b/libs/config/test/no_limits_pass.cpp @@ -0,0 +1,34 @@ +// This file was automatically generated on Fri Dec 03 18:04:01 2004 +// by libs/config/tools/generate.cpp +// Copyright John Maddock 2002-4. +// 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) + +// See http://www.boost.org/libs/config for the most recent version. + +// Test file for macro BOOST_NO_LIMITS +// This file should compile, if it does not then +// BOOST_NO_LIMITS should be defined. +// See file boost_no_limits.ipp for details + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include <boost/config.hpp> +#include "test.hpp" + +#ifndef BOOST_NO_LIMITS +#include "boost_no_limits.ipp" +#else +namespace boost_no_limits = empty_boost; +#endif + +int main( int, char *[] ) +{ + return boost_no_limits::test(); +} + diff --git a/libs/config/test/no_ll_limits_fail.cpp b/libs/config/test/no_ll_limits_fail.cpp new file mode 100644 index 0000000000..477262c7b6 --- /dev/null +++ b/libs/config/test/no_ll_limits_fail.cpp @@ -0,0 +1,34 @@ +// This file was automatically generated on Fri Dec 03 18:04:01 2004 +// by libs/config/tools/generate.cpp +// Copyright John Maddock 2002-4. +// 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) + +// See http://www.boost.org/libs/config for the most recent version. + +// Test file for macro BOOST_NO_LONG_LONG_NUMERIC_LIMITS +// This file should not compile, if it does then +// BOOST_NO_LONG_LONG_NUMERIC_LIMITS should not be defined. +// See file boost_no_ll_limits.ipp for details + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include <boost/config.hpp> +#include "test.hpp" + +#ifdef BOOST_NO_LONG_LONG_NUMERIC_LIMITS +#include "boost_no_ll_limits.ipp" +#else +#error "this file should not compile" +#endif + +int main( int, char *[] ) +{ + return boost_no_long_long_numeric_limits::test(); +} + diff --git a/libs/config/test/no_ll_limits_pass.cpp b/libs/config/test/no_ll_limits_pass.cpp new file mode 100644 index 0000000000..2c6a3860a6 --- /dev/null +++ b/libs/config/test/no_ll_limits_pass.cpp @@ -0,0 +1,34 @@ +// This file was automatically generated on Fri Dec 03 18:04:01 2004 +// by libs/config/tools/generate.cpp +// Copyright John Maddock 2002-4. +// 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) + +// See http://www.boost.org/libs/config for the most recent version. + +// Test file for macro BOOST_NO_LONG_LONG_NUMERIC_LIMITS +// This file should compile, if it does not then +// BOOST_NO_LONG_LONG_NUMERIC_LIMITS should be defined. +// See file boost_no_ll_limits.ipp for details + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include <boost/config.hpp> +#include "test.hpp" + +#ifndef BOOST_NO_LONG_LONG_NUMERIC_LIMITS +#include "boost_no_ll_limits.ipp" +#else +namespace boost_no_long_long_numeric_limits = empty_boost; +#endif + +int main( int, char *[] ) +{ + return boost_no_long_long_numeric_limits::test(); +} + diff --git a/libs/config/test/no_long_long_fail.cpp b/libs/config/test/no_long_long_fail.cpp new file mode 100644 index 0000000000..e95456cb45 --- /dev/null +++ b/libs/config/test/no_long_long_fail.cpp @@ -0,0 +1,37 @@ +// This file was automatically generated on Thu May 29 07:24:54 2008 +// by libs/config/tools/generate.cpp +// Copyright John Maddock 2002-4. +// 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) + +// See http://www.boost.org/libs/config for the most recent version.// +// Revision $Id: no_long_long_fail.cpp 51606 2009-03-04 14:28:36Z bemandawes $ +// + + +// Test file for macro BOOST_NO_LONG_LONG +// This file should not compile, if it does then +// BOOST_NO_LONG_LONG should not be defined. +// See file boost_no_long_long.ipp for details + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include <boost/config.hpp> +#include "test.hpp" + +#ifdef BOOST_NO_LONG_LONG +#include "boost_no_long_long.ipp" +#else +#error "this file should not compile" +#endif + +int main( int, char *[] ) +{ + return boost_no_long_long::test(); +} + diff --git a/libs/config/test/no_long_long_pass.cpp b/libs/config/test/no_long_long_pass.cpp new file mode 100644 index 0000000000..2233b376b9 --- /dev/null +++ b/libs/config/test/no_long_long_pass.cpp @@ -0,0 +1,37 @@ +// This file was automatically generated on Thu May 29 07:24:54 2008 +// by libs/config/tools/generate.cpp +// Copyright John Maddock 2002-4. +// 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) + +// See http://www.boost.org/libs/config for the most recent version.// +// Revision $Id: no_long_long_pass.cpp 51606 2009-03-04 14:28:36Z bemandawes $ +// + + +// Test file for macro BOOST_NO_LONG_LONG +// This file should compile, if it does not then +// BOOST_NO_LONG_LONG should be defined. +// See file boost_no_long_long.ipp for details + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include <boost/config.hpp> +#include "test.hpp" + +#ifndef BOOST_NO_LONG_LONG +#include "boost_no_long_long.ipp" +#else +namespace boost_no_long_long = empty_boost; +#endif + +int main( int, char *[] ) +{ + return boost_no_long_long::test(); +} + diff --git a/libs/config/test/no_mem_func_spec_fail.cpp b/libs/config/test/no_mem_func_spec_fail.cpp new file mode 100644 index 0000000000..4216ed4098 --- /dev/null +++ b/libs/config/test/no_mem_func_spec_fail.cpp @@ -0,0 +1,34 @@ +// This file was automatically generated on Fri Dec 03 18:04:01 2004 +// by libs/config/tools/generate.cpp +// Copyright John Maddock 2002-4. +// 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) + +// See http://www.boost.org/libs/config for the most recent version. + +// Test file for macro BOOST_NO_MEMBER_FUNCTION_SPECIALIZATIONS +// This file should not compile, if it does then +// BOOST_NO_MEMBER_FUNCTION_SPECIALIZATIONS should not be defined. +// See file boost_no_mem_func_spec.ipp for details + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include <boost/config.hpp> +#include "test.hpp" + +#ifdef BOOST_NO_MEMBER_FUNCTION_SPECIALIZATIONS +#include "boost_no_mem_func_spec.ipp" +#else +#error "this file should not compile" +#endif + +int main( int, char *[] ) +{ + return boost_no_member_function_specializations::test(); +} + diff --git a/libs/config/test/no_mem_func_spec_pass.cpp b/libs/config/test/no_mem_func_spec_pass.cpp new file mode 100644 index 0000000000..a26ceb0e3b --- /dev/null +++ b/libs/config/test/no_mem_func_spec_pass.cpp @@ -0,0 +1,34 @@ +// This file was automatically generated on Fri Dec 03 18:04:01 2004 +// by libs/config/tools/generate.cpp +// Copyright John Maddock 2002-4. +// 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) + +// See http://www.boost.org/libs/config for the most recent version. + +// Test file for macro BOOST_NO_MEMBER_FUNCTION_SPECIALIZATIONS +// This file should compile, if it does not then +// BOOST_NO_MEMBER_FUNCTION_SPECIALIZATIONS should be defined. +// See file boost_no_mem_func_spec.ipp for details + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include <boost/config.hpp> +#include "test.hpp" + +#ifndef BOOST_NO_MEMBER_FUNCTION_SPECIALIZATIONS +#include "boost_no_mem_func_spec.ipp" +#else +namespace boost_no_member_function_specializations = empty_boost; +#endif + +int main( int, char *[] ) +{ + return boost_no_member_function_specializations::test(); +} + diff --git a/libs/config/test/no_mem_tem_keyword_fail.cpp b/libs/config/test/no_mem_tem_keyword_fail.cpp new file mode 100644 index 0000000000..fe6b962894 --- /dev/null +++ b/libs/config/test/no_mem_tem_keyword_fail.cpp @@ -0,0 +1,34 @@ +// This file was automatically generated on Fri Dec 03 18:04:02 2004 +// by libs/config/tools/generate.cpp +// Copyright John Maddock 2002-4. +// 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) + +// See http://www.boost.org/libs/config for the most recent version. + +// Test file for macro BOOST_NO_MEMBER_TEMPLATE_KEYWORD +// This file should not compile, if it does then +// BOOST_NO_MEMBER_TEMPLATE_KEYWORD should not be defined. +// See file boost_no_mem_tem_keyword.ipp for details + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include <boost/config.hpp> +#include "test.hpp" + +#ifdef BOOST_NO_MEMBER_TEMPLATE_KEYWORD +#include "boost_no_mem_tem_keyword.ipp" +#else +#error "this file should not compile" +#endif + +int main( int, char *[] ) +{ + return boost_no_member_template_keyword::test(); +} + diff --git a/libs/config/test/no_mem_tem_keyword_pass.cpp b/libs/config/test/no_mem_tem_keyword_pass.cpp new file mode 100644 index 0000000000..7beb159757 --- /dev/null +++ b/libs/config/test/no_mem_tem_keyword_pass.cpp @@ -0,0 +1,34 @@ +// This file was automatically generated on Fri Dec 03 18:04:02 2004 +// by libs/config/tools/generate.cpp +// Copyright John Maddock 2002-4. +// 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) + +// See http://www.boost.org/libs/config for the most recent version. + +// Test file for macro BOOST_NO_MEMBER_TEMPLATE_KEYWORD +// This file should compile, if it does not then +// BOOST_NO_MEMBER_TEMPLATE_KEYWORD should be defined. +// See file boost_no_mem_tem_keyword.ipp for details + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include <boost/config.hpp> +#include "test.hpp" + +#ifndef BOOST_NO_MEMBER_TEMPLATE_KEYWORD +#include "boost_no_mem_tem_keyword.ipp" +#else +namespace boost_no_member_template_keyword = empty_boost; +#endif + +int main( int, char *[] ) +{ + return boost_no_member_template_keyword::test(); +} + diff --git a/libs/config/test/no_mem_tem_pnts_fail.cpp b/libs/config/test/no_mem_tem_pnts_fail.cpp new file mode 100644 index 0000000000..bca3ee0af6 --- /dev/null +++ b/libs/config/test/no_mem_tem_pnts_fail.cpp @@ -0,0 +1,34 @@ +// This file was automatically generated on Fri Dec 03 18:04:02 2004 +// by libs/config/tools/generate.cpp +// Copyright John Maddock 2002-4. +// 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) + +// See http://www.boost.org/libs/config for the most recent version. + +// Test file for macro BOOST_NO_POINTER_TO_MEMBER_TEMPLATE_PARAMETERS +// This file should not compile, if it does then +// BOOST_NO_POINTER_TO_MEMBER_TEMPLATE_PARAMETERS should not be defined. +// See file boost_no_mem_tem_pnts.ipp for details + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include <boost/config.hpp> +#include "test.hpp" + +#ifdef BOOST_NO_POINTER_TO_MEMBER_TEMPLATE_PARAMETERS +#include "boost_no_mem_tem_pnts.ipp" +#else +#error "this file should not compile" +#endif + +int main( int, char *[] ) +{ + return boost_no_pointer_to_member_template_parameters::test(); +} + diff --git a/libs/config/test/no_mem_tem_pnts_pass.cpp b/libs/config/test/no_mem_tem_pnts_pass.cpp new file mode 100644 index 0000000000..bf273cc360 --- /dev/null +++ b/libs/config/test/no_mem_tem_pnts_pass.cpp @@ -0,0 +1,34 @@ +// This file was automatically generated on Fri Dec 03 18:04:02 2004 +// by libs/config/tools/generate.cpp +// Copyright John Maddock 2002-4. +// 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) + +// See http://www.boost.org/libs/config for the most recent version. + +// Test file for macro BOOST_NO_POINTER_TO_MEMBER_TEMPLATE_PARAMETERS +// This file should compile, if it does not then +// BOOST_NO_POINTER_TO_MEMBER_TEMPLATE_PARAMETERS should be defined. +// See file boost_no_mem_tem_pnts.ipp for details + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include <boost/config.hpp> +#include "test.hpp" + +#ifndef BOOST_NO_POINTER_TO_MEMBER_TEMPLATE_PARAMETERS +#include "boost_no_mem_tem_pnts.ipp" +#else +namespace boost_no_pointer_to_member_template_parameters = empty_boost; +#endif + +int main( int, char *[] ) +{ + return boost_no_pointer_to_member_template_parameters::test(); +} + diff --git a/libs/config/test/no_mem_templ_frnds_fail.cpp b/libs/config/test/no_mem_templ_frnds_fail.cpp new file mode 100644 index 0000000000..a8602c1f1d --- /dev/null +++ b/libs/config/test/no_mem_templ_frnds_fail.cpp @@ -0,0 +1,34 @@ +// This file was automatically generated on Fri Dec 03 18:04:02 2004 +// by libs/config/tools/generate.cpp +// Copyright John Maddock 2002-4. +// 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) + +// See http://www.boost.org/libs/config for the most recent version. + +// Test file for macro BOOST_NO_MEMBER_TEMPLATE_FRIENDS +// This file should not compile, if it does then +// BOOST_NO_MEMBER_TEMPLATE_FRIENDS should not be defined. +// See file boost_no_mem_templ_frnds.ipp for details + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include <boost/config.hpp> +#include "test.hpp" + +#ifdef BOOST_NO_MEMBER_TEMPLATE_FRIENDS +#include "boost_no_mem_templ_frnds.ipp" +#else +#error "this file should not compile" +#endif + +int main( int, char *[] ) +{ + return boost_no_member_template_friends::test(); +} + diff --git a/libs/config/test/no_mem_templ_frnds_pass.cpp b/libs/config/test/no_mem_templ_frnds_pass.cpp new file mode 100644 index 0000000000..a234eba7b6 --- /dev/null +++ b/libs/config/test/no_mem_templ_frnds_pass.cpp @@ -0,0 +1,34 @@ +// This file was automatically generated on Fri Dec 03 18:04:01 2004 +// by libs/config/tools/generate.cpp +// Copyright John Maddock 2002-4. +// 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) + +// See http://www.boost.org/libs/config for the most recent version. + +// Test file for macro BOOST_NO_MEMBER_TEMPLATE_FRIENDS +// This file should compile, if it does not then +// BOOST_NO_MEMBER_TEMPLATE_FRIENDS should be defined. +// See file boost_no_mem_templ_frnds.ipp for details + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include <boost/config.hpp> +#include "test.hpp" + +#ifndef BOOST_NO_MEMBER_TEMPLATE_FRIENDS +#include "boost_no_mem_templ_frnds.ipp" +#else +namespace boost_no_member_template_friends = empty_boost; +#endif + +int main( int, char *[] ) +{ + return boost_no_member_template_friends::test(); +} + diff --git a/libs/config/test/no_mem_templates_fail.cpp b/libs/config/test/no_mem_templates_fail.cpp new file mode 100644 index 0000000000..3b6227da69 --- /dev/null +++ b/libs/config/test/no_mem_templates_fail.cpp @@ -0,0 +1,34 @@ +// This file was automatically generated on Fri Dec 03 18:04:01 2004 +// by libs/config/tools/generate.cpp +// Copyright John Maddock 2002-4. +// 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) + +// See http://www.boost.org/libs/config for the most recent version. + +// Test file for macro BOOST_NO_MEMBER_TEMPLATES +// This file should not compile, if it does then +// BOOST_NO_MEMBER_TEMPLATES should not be defined. +// See file boost_no_mem_templates.ipp for details + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include <boost/config.hpp> +#include "test.hpp" + +#ifdef BOOST_NO_MEMBER_TEMPLATES +#include "boost_no_mem_templates.ipp" +#else +#error "this file should not compile" +#endif + +int main( int, char *[] ) +{ + return boost_no_member_templates::test(); +} + diff --git a/libs/config/test/no_mem_templates_pass.cpp b/libs/config/test/no_mem_templates_pass.cpp new file mode 100644 index 0000000000..7935f1146b --- /dev/null +++ b/libs/config/test/no_mem_templates_pass.cpp @@ -0,0 +1,34 @@ +// This file was automatically generated on Fri Dec 03 18:04:01 2004 +// by libs/config/tools/generate.cpp +// Copyright John Maddock 2002-4. +// 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) + +// See http://www.boost.org/libs/config for the most recent version. + +// Test file for macro BOOST_NO_MEMBER_TEMPLATES +// This file should compile, if it does not then +// BOOST_NO_MEMBER_TEMPLATES should be defined. +// See file boost_no_mem_templates.ipp for details + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include <boost/config.hpp> +#include "test.hpp" + +#ifndef BOOST_NO_MEMBER_TEMPLATES +#include "boost_no_mem_templates.ipp" +#else +namespace boost_no_member_templates = empty_boost; +#endif + +int main( int, char *[] ) +{ + return boost_no_member_templates::test(); +} + diff --git a/libs/config/test/no_nested_friendship_fail.cpp b/libs/config/test/no_nested_friendship_fail.cpp new file mode 100644 index 0000000000..dd90e404a2 --- /dev/null +++ b/libs/config/test/no_nested_friendship_fail.cpp @@ -0,0 +1,37 @@ +// This file was automatically generated on Thu Sep 18 23:32:18 2008 +// by libs/config/tools/generate.cpp +// Copyright John Maddock 2002-4. +// 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) + +// See http://www.boost.org/libs/config for the most recent version.// +// Revision $Id$ +// + + +// Test file for macro BOOST_NO_NESTED_FRIENDSHIP +// This file should not compile, if it does then +// BOOST_NO_NESTED_FRIENDSHIP should not be defined. +// See file boost_no_nested_friendship.ipp for details + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include <boost/config.hpp> +#include "test.hpp" + +#ifdef BOOST_NO_NESTED_FRIENDSHIP +#include "boost_no_nested_friendship.ipp" +#else +#error "this file should not compile" +#endif + +int main( int, char *[] ) +{ + return boost_no_nested_friendship::test(); +} + diff --git a/libs/config/test/no_nested_friendship_pass.cpp b/libs/config/test/no_nested_friendship_pass.cpp new file mode 100644 index 0000000000..3e114bc9dd --- /dev/null +++ b/libs/config/test/no_nested_friendship_pass.cpp @@ -0,0 +1,37 @@ +// This file was automatically generated on Thu Sep 18 23:32:18 2008 +// by libs/config/tools/generate.cpp +// Copyright John Maddock 2002-4. +// 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) + +// See http://www.boost.org/libs/config for the most recent version.// +// Revision $Id$ +// + + +// Test file for macro BOOST_NO_NESTED_FRIENDSHIP +// This file should compile, if it does not then +// BOOST_NO_NESTED_FRIENDSHIP should be defined. +// See file boost_no_nested_friendship.ipp for details + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include <boost/config.hpp> +#include "test.hpp" + +#ifndef BOOST_NO_NESTED_FRIENDSHIP +#include "boost_no_nested_friendship.ipp" +#else +namespace boost_no_nested_friendship = empty_boost; +#endif + +int main( int, char *[] ) +{ + return boost_no_nested_friendship::test(); +} + diff --git a/libs/config/test/no_noexcept_fail.cpp b/libs/config/test/no_noexcept_fail.cpp new file mode 100644 index 0000000000..f06f55df98 --- /dev/null +++ b/libs/config/test/no_noexcept_fail.cpp @@ -0,0 +1,37 @@ +// This file was automatically generated on Thu May 5 04:40:08 2011 +// by libs/config/tools/generate.cpp +// Copyright John Maddock 2002-4. +// 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) + +// See http://www.boost.org/libs/config for the most recent version.// +// Revision $Id$ +// + + +// Test file for macro BOOST_NO_NOEXCEPT +// This file should not compile, if it does then +// BOOST_NO_NOEXCEPT should not be defined. +// See file boost_no_noexcept.ipp for details + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include <boost/config.hpp> +#include "test.hpp" + +#ifdef BOOST_NO_NOEXCEPT +#include "boost_no_noexcept.ipp" +#else +#error "this file should not compile" +#endif + +int main( int, char *[] ) +{ + return boost_no_noexcept::test(); +} + diff --git a/libs/config/test/no_noexcept_pass.cpp b/libs/config/test/no_noexcept_pass.cpp new file mode 100644 index 0000000000..9d6a6cdfc3 --- /dev/null +++ b/libs/config/test/no_noexcept_pass.cpp @@ -0,0 +1,37 @@ +// This file was automatically generated on Thu May 5 04:40:08 2011 +// by libs/config/tools/generate.cpp +// Copyright John Maddock 2002-4. +// 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) + +// See http://www.boost.org/libs/config for the most recent version.// +// Revision $Id$ +// + + +// Test file for macro BOOST_NO_NOEXCEPT +// This file should compile, if it does not then +// BOOST_NO_NOEXCEPT should be defined. +// See file boost_no_noexcept.ipp for details + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include <boost/config.hpp> +#include "test.hpp" + +#ifndef BOOST_NO_NOEXCEPT +#include "boost_no_noexcept.ipp" +#else +namespace boost_no_noexcept = empty_boost; +#endif + +int main( int, char *[] ) +{ + return boost_no_noexcept::test(); +} + diff --git a/libs/config/test/no_nullptr_fail.cpp b/libs/config/test/no_nullptr_fail.cpp new file mode 100644 index 0000000000..98f9a66649 --- /dev/null +++ b/libs/config/test/no_nullptr_fail.cpp @@ -0,0 +1,37 @@ +// This file was automatically generated on Thu May 14 16:01:35 2009 +// by libs/config/tools/generate.cpp +// Copyright John Maddock 2002-4. +// 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) + +// See http://www.boost.org/libs/config for the most recent version.// +// Revision $Id: no_nullptr_fail.cpp 53445 2009-05-30 11:22:59Z bemandawes $ +// + + +// Test file for macro BOOST_NO_NULLPTR +// This file should not compile, if it does then +// BOOST_NO_NULLPTR should not be defined. +// See file boost_no_nullptr.ipp for details + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include <boost/config.hpp> +#include "test.hpp" + +#ifdef BOOST_NO_NULLPTR +#include "boost_no_nullptr.ipp" +#else +#error "this file should not compile" +#endif + +int main( int, char *[] ) +{ + return boost_no_nullptr::test(); +} + diff --git a/libs/config/test/no_nullptr_pass.cpp b/libs/config/test/no_nullptr_pass.cpp new file mode 100644 index 0000000000..501016ad84 --- /dev/null +++ b/libs/config/test/no_nullptr_pass.cpp @@ -0,0 +1,37 @@ +// This file was automatically generated on Thu May 14 16:01:35 2009 +// by libs/config/tools/generate.cpp +// Copyright John Maddock 2002-4. +// 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) + +// See http://www.boost.org/libs/config for the most recent version.// +// Revision $Id: no_nullptr_pass.cpp 53445 2009-05-30 11:22:59Z bemandawes $ +// + + +// Test file for macro BOOST_NO_NULLPTR +// This file should compile, if it does not then +// BOOST_NO_NULLPTR should be defined. +// See file boost_no_nullptr.ipp for details + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include <boost/config.hpp> +#include "test.hpp" + +#ifndef BOOST_NO_NULLPTR +#include "boost_no_nullptr.ipp" +#else +namespace boost_no_nullptr = empty_boost; +#endif + +int main( int, char *[] ) +{ + return boost_no_nullptr::test(); +} + diff --git a/libs/config/test/no_ops_in_namespace_fail.cpp b/libs/config/test/no_ops_in_namespace_fail.cpp new file mode 100644 index 0000000000..2e746ece01 --- /dev/null +++ b/libs/config/test/no_ops_in_namespace_fail.cpp @@ -0,0 +1,34 @@ +// This file was automatically generated on Fri Dec 03 18:04:02 2004 +// by libs/config/tools/generate.cpp +// Copyright John Maddock 2002-4. +// 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) + +// See http://www.boost.org/libs/config for the most recent version. + +// Test file for macro BOOST_NO_OPERATORS_IN_NAMESPACE +// This file should not compile, if it does then +// BOOST_NO_OPERATORS_IN_NAMESPACE should not be defined. +// See file boost_no_ops_in_namespace.ipp for details + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include <boost/config.hpp> +#include "test.hpp" + +#ifdef BOOST_NO_OPERATORS_IN_NAMESPACE +#include "boost_no_ops_in_namespace.ipp" +#else +#error "this file should not compile" +#endif + +int main( int, char *[] ) +{ + return boost_no_operators_in_namespace::test(); +} + diff --git a/libs/config/test/no_ops_in_namespace_pass.cpp b/libs/config/test/no_ops_in_namespace_pass.cpp new file mode 100644 index 0000000000..5004411dd4 --- /dev/null +++ b/libs/config/test/no_ops_in_namespace_pass.cpp @@ -0,0 +1,34 @@ +// This file was automatically generated on Fri Dec 03 18:04:02 2004 +// by libs/config/tools/generate.cpp +// Copyright John Maddock 2002-4. +// 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) + +// See http://www.boost.org/libs/config for the most recent version. + +// Test file for macro BOOST_NO_OPERATORS_IN_NAMESPACE +// This file should compile, if it does not then +// BOOST_NO_OPERATORS_IN_NAMESPACE should be defined. +// See file boost_no_ops_in_namespace.ipp for details + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include <boost/config.hpp> +#include "test.hpp" + +#ifndef BOOST_NO_OPERATORS_IN_NAMESPACE +#include "boost_no_ops_in_namespace.ipp" +#else +namespace boost_no_operators_in_namespace = empty_boost; +#endif + +int main( int, char *[] ) +{ + return boost_no_operators_in_namespace::test(); +} + diff --git a/libs/config/test/no_part_spec_def_args_fail.cpp b/libs/config/test/no_part_spec_def_args_fail.cpp new file mode 100644 index 0000000000..68f34d2754 --- /dev/null +++ b/libs/config/test/no_part_spec_def_args_fail.cpp @@ -0,0 +1,37 @@ +// This file was automatically generated on Mon Apr 21 12:40:41 2008 +// by libs/config/tools/generate.cpp +// Copyright John Maddock 2002-4. +// 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) + +// See http://www.boost.org/libs/config for the most recent version.// +// Revision $Id: generate.cpp 44422 2008-04-14 18:06:59Z johnmaddock $ +// + + +// Test file for macro BOOST_NO_PARTIAL_SPECIALIZATION_IMPLICIT_DEFAULT_ARGS +// This file should not compile, if it does then +// BOOST_NO_PARTIAL_SPECIALIZATION_IMPLICIT_DEFAULT_ARGS should not be defined. +// See file boost_no_part_spec_def_args.ipp for details + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include <boost/config.hpp> +#include "test.hpp" + +#ifdef BOOST_NO_PARTIAL_SPECIALIZATION_IMPLICIT_DEFAULT_ARGS +#include "boost_no_part_spec_def_args.ipp" +#else +#error "this file should not compile" +#endif + +int main( int, char *[] ) +{ + return boost_no_partial_specialization_implicit_default_args::test(); +} + diff --git a/libs/config/test/no_part_spec_def_args_pass.cpp b/libs/config/test/no_part_spec_def_args_pass.cpp new file mode 100644 index 0000000000..06864228bb --- /dev/null +++ b/libs/config/test/no_part_spec_def_args_pass.cpp @@ -0,0 +1,37 @@ +// This file was automatically generated on Mon Apr 21 12:40:41 2008 +// by libs/config/tools/generate.cpp +// Copyright John Maddock 2002-4. +// 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) + +// See http://www.boost.org/libs/config for the most recent version.// +// Revision $Id: generate.cpp 44422 2008-04-14 18:06:59Z johnmaddock $ +// + + +// Test file for macro BOOST_NO_PARTIAL_SPECIALIZATION_IMPLICIT_DEFAULT_ARGS +// This file should compile, if it does not then +// BOOST_NO_PARTIAL_SPECIALIZATION_IMPLICIT_DEFAULT_ARGS should be defined. +// See file boost_no_part_spec_def_args.ipp for details + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include <boost/config.hpp> +#include "test.hpp" + +#ifndef BOOST_NO_PARTIAL_SPECIALIZATION_IMPLICIT_DEFAULT_ARGS +#include "boost_no_part_spec_def_args.ipp" +#else +namespace boost_no_partial_specialization_implicit_default_args = empty_boost; +#endif + +int main( int, char *[] ) +{ + return boost_no_partial_specialization_implicit_default_args::test(); +} + diff --git a/libs/config/test/no_partial_spec_fail.cpp b/libs/config/test/no_partial_spec_fail.cpp new file mode 100644 index 0000000000..0b24a97d82 --- /dev/null +++ b/libs/config/test/no_partial_spec_fail.cpp @@ -0,0 +1,34 @@ +// This file was automatically generated on Fri Dec 03 18:04:02 2004 +// by libs/config/tools/generate.cpp +// Copyright John Maddock 2002-4. +// 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) + +// See http://www.boost.org/libs/config for the most recent version. + +// Test file for macro BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION +// This file should not compile, if it does then +// BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION should not be defined. +// See file boost_no_partial_spec.ipp for details + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include <boost/config.hpp> +#include "test.hpp" + +#ifdef BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION +#include "boost_no_partial_spec.ipp" +#else +#error "this file should not compile" +#endif + +int main( int, char *[] ) +{ + return boost_no_template_partial_specialization::test(); +} + diff --git a/libs/config/test/no_partial_spec_pass.cpp b/libs/config/test/no_partial_spec_pass.cpp new file mode 100644 index 0000000000..5767410a60 --- /dev/null +++ b/libs/config/test/no_partial_spec_pass.cpp @@ -0,0 +1,34 @@ +// This file was automatically generated on Fri Dec 03 18:04:02 2004 +// by libs/config/tools/generate.cpp +// Copyright John Maddock 2002-4. +// 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) + +// See http://www.boost.org/libs/config for the most recent version. + +// Test file for macro BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION +// This file should compile, if it does not then +// BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION should be defined. +// See file boost_no_partial_spec.ipp for details + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include <boost/config.hpp> +#include "test.hpp" + +#ifndef BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION +#include "boost_no_partial_spec.ipp" +#else +namespace boost_no_template_partial_specialization = empty_boost; +#endif + +int main( int, char *[] ) +{ + return boost_no_template_partial_specialization::test(); +} + diff --git a/libs/config/test/no_priv_aggregate_fail.cpp b/libs/config/test/no_priv_aggregate_fail.cpp new file mode 100644 index 0000000000..22ed88fa66 --- /dev/null +++ b/libs/config/test/no_priv_aggregate_fail.cpp @@ -0,0 +1,34 @@ +// This file was automatically generated on Fri Dec 03 18:04:02 2004 +// by libs/config/tools/generate.cpp +// Copyright John Maddock 2002-4. +// 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) + +// See http://www.boost.org/libs/config for the most recent version. + +// Test file for macro BOOST_NO_PRIVATE_IN_AGGREGATE +// This file should not compile, if it does then +// BOOST_NO_PRIVATE_IN_AGGREGATE should not be defined. +// See file boost_no_priv_aggregate.ipp for details + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include <boost/config.hpp> +#include "test.hpp" + +#ifdef BOOST_NO_PRIVATE_IN_AGGREGATE +#include "boost_no_priv_aggregate.ipp" +#else +#error "this file should not compile" +#endif + +int main( int, char *[] ) +{ + return boost_no_private_in_aggregate::test(); +} + diff --git a/libs/config/test/no_priv_aggregate_pass.cpp b/libs/config/test/no_priv_aggregate_pass.cpp new file mode 100644 index 0000000000..839be57a96 --- /dev/null +++ b/libs/config/test/no_priv_aggregate_pass.cpp @@ -0,0 +1,34 @@ +// This file was automatically generated on Fri Dec 03 18:04:02 2004 +// by libs/config/tools/generate.cpp +// Copyright John Maddock 2002-4. +// 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) + +// See http://www.boost.org/libs/config for the most recent version. + +// Test file for macro BOOST_NO_PRIVATE_IN_AGGREGATE +// This file should compile, if it does not then +// BOOST_NO_PRIVATE_IN_AGGREGATE should be defined. +// See file boost_no_priv_aggregate.ipp for details + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include <boost/config.hpp> +#include "test.hpp" + +#ifndef BOOST_NO_PRIVATE_IN_AGGREGATE +#include "boost_no_priv_aggregate.ipp" +#else +namespace boost_no_private_in_aggregate = empty_boost; +#endif + +int main( int, char *[] ) +{ + return boost_no_private_in_aggregate::test(); +} + diff --git a/libs/config/test/no_ptr_mem_const_fail.cpp b/libs/config/test/no_ptr_mem_const_fail.cpp new file mode 100644 index 0000000000..36eb9dc353 --- /dev/null +++ b/libs/config/test/no_ptr_mem_const_fail.cpp @@ -0,0 +1,34 @@ +// This file was automatically generated on Fri Dec 03 18:04:02 2004 +// by libs/config/tools/generate.cpp +// Copyright John Maddock 2002-4. +// 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) + +// See http://www.boost.org/libs/config for the most recent version. + +// Test file for macro BOOST_NO_POINTER_TO_MEMBER_CONST +// This file should not compile, if it does then +// BOOST_NO_POINTER_TO_MEMBER_CONST should not be defined. +// See file boost_no_ptr_mem_const.ipp for details + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include <boost/config.hpp> +#include "test.hpp" + +#ifdef BOOST_NO_POINTER_TO_MEMBER_CONST +#include "boost_no_ptr_mem_const.ipp" +#else +#error "this file should not compile" +#endif + +int main( int, char *[] ) +{ + return boost_no_pointer_to_member_const::test(); +} + diff --git a/libs/config/test/no_ptr_mem_const_pass.cpp b/libs/config/test/no_ptr_mem_const_pass.cpp new file mode 100644 index 0000000000..c15d7ad1a5 --- /dev/null +++ b/libs/config/test/no_ptr_mem_const_pass.cpp @@ -0,0 +1,34 @@ +// This file was automatically generated on Fri Dec 03 18:04:02 2004 +// by libs/config/tools/generate.cpp +// Copyright John Maddock 2002-4. +// 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) + +// See http://www.boost.org/libs/config for the most recent version. + +// Test file for macro BOOST_NO_POINTER_TO_MEMBER_CONST +// This file should compile, if it does not then +// BOOST_NO_POINTER_TO_MEMBER_CONST should be defined. +// See file boost_no_ptr_mem_const.ipp for details + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include <boost/config.hpp> +#include "test.hpp" + +#ifndef BOOST_NO_POINTER_TO_MEMBER_CONST +#include "boost_no_ptr_mem_const.ipp" +#else +namespace boost_no_pointer_to_member_const = empty_boost; +#endif + +int main( int, char *[] ) +{ + return boost_no_pointer_to_member_const::test(); +} + diff --git a/libs/config/test/no_raw_literals_fail.cpp b/libs/config/test/no_raw_literals_fail.cpp new file mode 100644 index 0000000000..a1e9c98475 --- /dev/null +++ b/libs/config/test/no_raw_literals_fail.cpp @@ -0,0 +1,37 @@ +// This file was automatically generated on Thu Jun 19 16:26:16 2008 +// by libs/config/tools/generate.cpp +// Copyright John Maddock 2002-4. +// 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) + +// See http://www.boost.org/libs/config for the most recent version.// +// Revision $Id: no_raw_literals_fail.cpp 51606 2009-03-04 14:28:36Z bemandawes $ +// + + +// Test file for macro BOOST_NO_RAW_LITERALS +// This file should not compile, if it does then +// BOOST_NO_RAW_LITERALS should not be defined. +// See file boost_no_raw_literals.ipp for details + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include <boost/config.hpp> +#include "test.hpp" + +#ifdef BOOST_NO_RAW_LITERALS +#include "boost_no_raw_literals.ipp" +#else +#error "this file should not compile" +#endif + +int main( int, char *[] ) +{ + return boost_no_raw_literals::test(); +} + diff --git a/libs/config/test/no_raw_literals_pass.cpp b/libs/config/test/no_raw_literals_pass.cpp new file mode 100644 index 0000000000..d0125fddf0 --- /dev/null +++ b/libs/config/test/no_raw_literals_pass.cpp @@ -0,0 +1,37 @@ +// This file was automatically generated on Thu Jun 19 16:26:16 2008 +// by libs/config/tools/generate.cpp +// Copyright John Maddock 2002-4. +// 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) + +// See http://www.boost.org/libs/config for the most recent version.// +// Revision $Id: no_raw_literals_pass.cpp 51606 2009-03-04 14:28:36Z bemandawes $ +// + + +// Test file for macro BOOST_NO_RAW_LITERALS +// This file should compile, if it does not then +// BOOST_NO_RAW_LITERALS should be defined. +// See file boost_no_raw_literals.ipp for details + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include <boost/config.hpp> +#include "test.hpp" + +#ifndef BOOST_NO_RAW_LITERALS +#include "boost_no_raw_literals.ipp" +#else +namespace boost_no_raw_literals = empty_boost; +#endif + +int main( int, char *[] ) +{ + return boost_no_raw_literals::test(); +} + diff --git a/libs/config/test/no_ret_det_fail.cpp b/libs/config/test/no_ret_det_fail.cpp new file mode 100644 index 0000000000..e48bfa4f7e --- /dev/null +++ b/libs/config/test/no_ret_det_fail.cpp @@ -0,0 +1,34 @@ +// This file was automatically generated on Fri Dec 03 18:04:02 2004 +// by libs/config/tools/generate.cpp +// Copyright John Maddock 2002-4. +// 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) + +// See http://www.boost.org/libs/config for the most recent version. + +// Test file for macro BOOST_NO_UNREACHABLE_RETURN_DETECTION +// This file should not compile, if it does then +// BOOST_NO_UNREACHABLE_RETURN_DETECTION should not be defined. +// See file boost_no_ret_det.ipp for details + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include <boost/config.hpp> +#include "test.hpp" + +#ifdef BOOST_NO_UNREACHABLE_RETURN_DETECTION +#include "boost_no_ret_det.ipp" +#else +#error "this file should not compile" +#endif + +int main( int, char *[] ) +{ + return boost_no_unreachable_return_detection::test(); +} + diff --git a/libs/config/test/no_ret_det_pass.cpp b/libs/config/test/no_ret_det_pass.cpp new file mode 100644 index 0000000000..7d45813f7f --- /dev/null +++ b/libs/config/test/no_ret_det_pass.cpp @@ -0,0 +1,34 @@ +// This file was automatically generated on Fri Dec 03 18:04:02 2004 +// by libs/config/tools/generate.cpp +// Copyright John Maddock 2002-4. +// 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) + +// See http://www.boost.org/libs/config for the most recent version. + +// Test file for macro BOOST_NO_UNREACHABLE_RETURN_DETECTION +// This file should compile, if it does not then +// BOOST_NO_UNREACHABLE_RETURN_DETECTION should be defined. +// See file boost_no_ret_det.ipp for details + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include <boost/config.hpp> +#include "test.hpp" + +#ifndef BOOST_NO_UNREACHABLE_RETURN_DETECTION +#include "boost_no_ret_det.ipp" +#else +namespace boost_no_unreachable_return_detection = empty_boost; +#endif + +int main( int, char *[] ) +{ + return boost_no_unreachable_return_detection::test(); +} + diff --git a/libs/config/test/no_rtti_fail.cpp b/libs/config/test/no_rtti_fail.cpp new file mode 100644 index 0000000000..f24f15d623 --- /dev/null +++ b/libs/config/test/no_rtti_fail.cpp @@ -0,0 +1,37 @@ +// This file was automatically generated on Mon Aug 25 10:51:51 2008 +// by libs/config/tools/generate.cpp +// Copyright John Maddock 2002-4. +// 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) + +// See http://www.boost.org/libs/config for the most recent version.// +// Revision $Id: generate.cpp 47351 2008-07-12 12:41:52Z johnmaddock $ +// + + +// Test file for macro BOOST_NO_RTTI +// This file should not compile, if it does then +// BOOST_NO_RTTI should not be defined. +// See file boost_no_rtti.ipp for details + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include <boost/config.hpp> +#include "test.hpp" + +#ifdef BOOST_NO_RTTI +#include "boost_no_rtti.ipp" +#else +#error "this file should not compile" +#endif + +int main( int, char *[] ) +{ + return boost_no_rtti::test(); +} + diff --git a/libs/config/test/no_rtti_pass.cpp b/libs/config/test/no_rtti_pass.cpp new file mode 100644 index 0000000000..9809213f25 --- /dev/null +++ b/libs/config/test/no_rtti_pass.cpp @@ -0,0 +1,37 @@ +// This file was automatically generated on Mon Aug 25 10:51:51 2008 +// by libs/config/tools/generate.cpp +// Copyright John Maddock 2002-4. +// 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) + +// See http://www.boost.org/libs/config for the most recent version.// +// Revision $Id: generate.cpp 47351 2008-07-12 12:41:52Z johnmaddock $ +// + + +// Test file for macro BOOST_NO_RTTI +// This file should compile, if it does not then +// BOOST_NO_RTTI should be defined. +// See file boost_no_rtti.ipp for details + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include <boost/config.hpp> +#include "test.hpp" + +#ifndef BOOST_NO_RTTI +#include "boost_no_rtti.ipp" +#else +namespace boost_no_rtti = empty_boost; +#endif + +int main( int, char *[] ) +{ + return boost_no_rtti::test(); +} + diff --git a/libs/config/test/no_rvalue_references_fail.cpp b/libs/config/test/no_rvalue_references_fail.cpp new file mode 100644 index 0000000000..e401fde519 --- /dev/null +++ b/libs/config/test/no_rvalue_references_fail.cpp @@ -0,0 +1,37 @@ +// This file was automatically generated on Thu May 29 07:24:54 2008 +// by libs/config/tools/generate.cpp +// Copyright John Maddock 2002-4. +// 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) + +// See http://www.boost.org/libs/config for the most recent version.// +// Revision $Id: no_rvalue_references_fail.cpp 51606 2009-03-04 14:28:36Z bemandawes $ +// + + +// Test file for macro BOOST_NO_RVALUE_REFERENCES +// This file should not compile, if it does then +// BOOST_NO_RVALUE_REFERENCES should not be defined. +// See file boost_no_rvalue_references.ipp for details + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include <boost/config.hpp> +#include "test.hpp" + +#ifdef BOOST_NO_RVALUE_REFERENCES +#include "boost_no_rvalue_references.ipp" +#else +#error "this file should not compile" +#endif + +int main( int, char *[] ) +{ + return boost_no_rvalue_references::test(); +} + diff --git a/libs/config/test/no_rvalue_references_pass.cpp b/libs/config/test/no_rvalue_references_pass.cpp new file mode 100644 index 0000000000..a5df568616 --- /dev/null +++ b/libs/config/test/no_rvalue_references_pass.cpp @@ -0,0 +1,37 @@ +// This file was automatically generated on Thu May 29 07:24:54 2008 +// by libs/config/tools/generate.cpp +// Copyright John Maddock 2002-4. +// 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) + +// See http://www.boost.org/libs/config for the most recent version.// +// Revision $Id: no_rvalue_references_pass.cpp 51606 2009-03-04 14:28:36Z bemandawes $ +// + + +// Test file for macro BOOST_NO_RVALUE_REFERENCES +// This file should compile, if it does not then +// BOOST_NO_RVALUE_REFERENCES should be defined. +// See file boost_no_rvalue_references.ipp for details + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include <boost/config.hpp> +#include "test.hpp" + +#ifndef BOOST_NO_RVALUE_REFERENCES +#include "boost_no_rvalue_references.ipp" +#else +namespace boost_no_rvalue_references = empty_boost; +#endif + +int main( int, char *[] ) +{ + return boost_no_rvalue_references::test(); +} + diff --git a/libs/config/test/no_scoped_enums_fail.cpp b/libs/config/test/no_scoped_enums_fail.cpp new file mode 100644 index 0000000000..d4ef3c2fb1 --- /dev/null +++ b/libs/config/test/no_scoped_enums_fail.cpp @@ -0,0 +1,37 @@ +// This file was automatically generated on Thu May 29 08:00:48 2008 +// by libs/config/tools/generate.cpp +// Copyright John Maddock 2002-4. +// 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) + +// See http://www.boost.org/libs/config for the most recent version.// +// Revision $Id: no_scoped_enums_fail.cpp 51606 2009-03-04 14:28:36Z bemandawes $ +// + + +// Test file for macro BOOST_NO_SCOPED_ENUMS +// This file should not compile, if it does then +// BOOST_NO_SCOPED_ENUMS should not be defined. +// See file boost_no_scoped_enums.ipp for details + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include <boost/config.hpp> +#include "test.hpp" + +#ifdef BOOST_NO_SCOPED_ENUMS +#include "boost_no_scoped_enums.ipp" +#else +#error "this file should not compile" +#endif + +int main( int, char *[] ) +{ + return boost_no_scoped_enums::test(); +} + diff --git a/libs/config/test/no_scoped_enums_pass.cpp b/libs/config/test/no_scoped_enums_pass.cpp new file mode 100644 index 0000000000..c0efd1272f --- /dev/null +++ b/libs/config/test/no_scoped_enums_pass.cpp @@ -0,0 +1,37 @@ +// This file was automatically generated on Thu May 29 08:00:48 2008 +// by libs/config/tools/generate.cpp +// Copyright John Maddock 2002-4. +// 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) + +// See http://www.boost.org/libs/config for the most recent version.// +// Revision $Id: no_scoped_enums_pass.cpp 51606 2009-03-04 14:28:36Z bemandawes $ +// + + +// Test file for macro BOOST_NO_SCOPED_ENUMS +// This file should compile, if it does not then +// BOOST_NO_SCOPED_ENUMS should be defined. +// See file boost_no_scoped_enums.ipp for details + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include <boost/config.hpp> +#include "test.hpp" + +#ifndef BOOST_NO_SCOPED_ENUMS +#include "boost_no_scoped_enums.ipp" +#else +namespace boost_no_scoped_enums = empty_boost; +#endif + +int main( int, char *[] ) +{ + return boost_no_scoped_enums::test(); +} + diff --git a/libs/config/test/no_sfinae_expr_fail.cpp b/libs/config/test/no_sfinae_expr_fail.cpp new file mode 100644 index 0000000000..925f9ecaa8 --- /dev/null +++ b/libs/config/test/no_sfinae_expr_fail.cpp @@ -0,0 +1,37 @@ +// This file was automatically generated on Sun Aug 02 08:25:59 2009 +// by libs/config/tools/generate.cpp +// Copyright John Maddock 2002-4. +// 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) + +// See http://www.boost.org/libs/config for the most recent version.// +// Revision $Id: no_sfinae_expr_fail.cpp 56678 2009-10-09 16:16:02Z johnmaddock $ +// + + +// Test file for macro BOOST_NO_SFINAE_EXPR +// This file should not compile, if it does then +// BOOST_NO_SFINAE_EXPR should not be defined. +// See file boost_no_sfinae_expr.ipp for details + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include <boost/config.hpp> +#include "test.hpp" + +#ifdef BOOST_NO_SFINAE_EXPR +#include "boost_no_sfinae_expr.ipp" +#else +#error "this file should not compile" +#endif + +int main( int, char *[] ) +{ + return boost_no_sfinae_expr::test(); +} + diff --git a/libs/config/test/no_sfinae_expr_pass.cpp b/libs/config/test/no_sfinae_expr_pass.cpp new file mode 100644 index 0000000000..5b580250c8 --- /dev/null +++ b/libs/config/test/no_sfinae_expr_pass.cpp @@ -0,0 +1,37 @@ +// This file was automatically generated on Sun Aug 02 08:25:59 2009 +// by libs/config/tools/generate.cpp +// Copyright John Maddock 2002-4. +// 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) + +// See http://www.boost.org/libs/config for the most recent version.// +// Revision $Id: no_sfinae_expr_pass.cpp 56678 2009-10-09 16:16:02Z johnmaddock $ +// + + +// Test file for macro BOOST_NO_SFINAE_EXPR +// This file should compile, if it does not then +// BOOST_NO_SFINAE_EXPR should be defined. +// See file boost_no_sfinae_expr.ipp for details + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include <boost/config.hpp> +#include "test.hpp" + +#ifndef BOOST_NO_SFINAE_EXPR +#include "boost_no_sfinae_expr.ipp" +#else +namespace boost_no_sfinae_expr = empty_boost; +#endif + +int main( int, char *[] ) +{ + return boost_no_sfinae_expr::test(); +} + diff --git a/libs/config/test/no_sfinae_fail.cpp b/libs/config/test/no_sfinae_fail.cpp new file mode 100644 index 0000000000..915f924605 --- /dev/null +++ b/libs/config/test/no_sfinae_fail.cpp @@ -0,0 +1,34 @@ +// This file was automatically generated on Fri Dec 03 18:04:02 2004 +// by libs/config/tools/generate.cpp +// Copyright John Maddock 2002-4. +// 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) + +// See http://www.boost.org/libs/config for the most recent version. + +// Test file for macro BOOST_NO_SFINAE +// This file should not compile, if it does then +// BOOST_NO_SFINAE should not be defined. +// See file boost_no_sfinae.ipp for details + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include <boost/config.hpp> +#include "test.hpp" + +#ifdef BOOST_NO_SFINAE +#include "boost_no_sfinae.ipp" +#else +#error "this file should not compile" +#endif + +int main( int, char *[] ) +{ + return boost_no_sfinae::test(); +} + diff --git a/libs/config/test/no_sfinae_pass.cpp b/libs/config/test/no_sfinae_pass.cpp new file mode 100644 index 0000000000..8ebfc383fe --- /dev/null +++ b/libs/config/test/no_sfinae_pass.cpp @@ -0,0 +1,34 @@ +// This file was automatically generated on Fri Dec 03 18:04:02 2004 +// by libs/config/tools/generate.cpp +// Copyright John Maddock 2002-4. +// 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) + +// See http://www.boost.org/libs/config for the most recent version. + +// Test file for macro BOOST_NO_SFINAE +// This file should compile, if it does not then +// BOOST_NO_SFINAE should be defined. +// See file boost_no_sfinae.ipp for details + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include <boost/config.hpp> +#include "test.hpp" + +#ifndef BOOST_NO_SFINAE +#include "boost_no_sfinae.ipp" +#else +namespace boost_no_sfinae = empty_boost; +#endif + +int main( int, char *[] ) +{ + return boost_no_sfinae::test(); +} + diff --git a/libs/config/test/no_sstream_fail.cpp b/libs/config/test/no_sstream_fail.cpp new file mode 100644 index 0000000000..3cb5d9af15 --- /dev/null +++ b/libs/config/test/no_sstream_fail.cpp @@ -0,0 +1,34 @@ +// This file was automatically generated on Fri Dec 03 18:04:02 2004 +// by libs/config/tools/generate.cpp +// Copyright John Maddock 2002-4. +// 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) + +// See http://www.boost.org/libs/config for the most recent version. + +// Test file for macro BOOST_NO_STRINGSTREAM +// This file should not compile, if it does then +// BOOST_NO_STRINGSTREAM should not be defined. +// See file boost_no_sstream.ipp for details + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include <boost/config.hpp> +#include "test.hpp" + +#ifdef BOOST_NO_STRINGSTREAM +#include "boost_no_sstream.ipp" +#else +#error "this file should not compile" +#endif + +int main( int, char *[] ) +{ + return boost_no_stringstream::test(); +} + diff --git a/libs/config/test/no_sstream_pass.cpp b/libs/config/test/no_sstream_pass.cpp new file mode 100644 index 0000000000..de325a3976 --- /dev/null +++ b/libs/config/test/no_sstream_pass.cpp @@ -0,0 +1,34 @@ +// This file was automatically generated on Fri Dec 03 18:04:02 2004 +// by libs/config/tools/generate.cpp +// Copyright John Maddock 2002-4. +// 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) + +// See http://www.boost.org/libs/config for the most recent version. + +// Test file for macro BOOST_NO_STRINGSTREAM +// This file should compile, if it does not then +// BOOST_NO_STRINGSTREAM should be defined. +// See file boost_no_sstream.ipp for details + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include <boost/config.hpp> +#include "test.hpp" + +#ifndef BOOST_NO_STRINGSTREAM +#include "boost_no_sstream.ipp" +#else +namespace boost_no_stringstream = empty_boost; +#endif + +int main( int, char *[] ) +{ + return boost_no_stringstream::test(); +} + diff --git a/libs/config/test/no_static_assert_fail.cpp b/libs/config/test/no_static_assert_fail.cpp new file mode 100644 index 0000000000..075420869c --- /dev/null +++ b/libs/config/test/no_static_assert_fail.cpp @@ -0,0 +1,37 @@ +// This file was automatically generated on Thu May 29 07:24:54 2008 +// by libs/config/tools/generate.cpp +// Copyright John Maddock 2002-4. +// 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) + +// See http://www.boost.org/libs/config for the most recent version.// +// Revision $Id: no_static_assert_fail.cpp 51606 2009-03-04 14:28:36Z bemandawes $ +// + + +// Test file for macro BOOST_NO_STATIC_ASSERT +// This file should not compile, if it does then +// BOOST_NO_STATIC_ASSERT should not be defined. +// See file boost_no_static_assert.ipp for details + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include <boost/config.hpp> +#include "test.hpp" + +#ifdef BOOST_NO_STATIC_ASSERT +#include "boost_no_static_assert.ipp" +#else +#error "this file should not compile" +#endif + +int main( int, char *[] ) +{ + return boost_no_static_assert::test(); +} + diff --git a/libs/config/test/no_static_assert_pass.cpp b/libs/config/test/no_static_assert_pass.cpp new file mode 100644 index 0000000000..cc1116b3fe --- /dev/null +++ b/libs/config/test/no_static_assert_pass.cpp @@ -0,0 +1,37 @@ +// This file was automatically generated on Thu May 29 07:24:54 2008 +// by libs/config/tools/generate.cpp +// Copyright John Maddock 2002-4. +// 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) + +// See http://www.boost.org/libs/config for the most recent version.// +// Revision $Id: no_static_assert_pass.cpp 51606 2009-03-04 14:28:36Z bemandawes $ +// + + +// Test file for macro BOOST_NO_STATIC_ASSERT +// This file should compile, if it does not then +// BOOST_NO_STATIC_ASSERT should be defined. +// See file boost_no_static_assert.ipp for details + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include <boost/config.hpp> +#include "test.hpp" + +#ifndef BOOST_NO_STATIC_ASSERT +#include "boost_no_static_assert.ipp" +#else +namespace boost_no_static_assert = empty_boost; +#endif + +int main( int, char *[] ) +{ + return boost_no_static_assert::test(); +} + diff --git a/libs/config/test/no_std_allocator_fail.cpp b/libs/config/test/no_std_allocator_fail.cpp new file mode 100644 index 0000000000..e5213dcc2f --- /dev/null +++ b/libs/config/test/no_std_allocator_fail.cpp @@ -0,0 +1,34 @@ +// This file was automatically generated on Fri Dec 03 18:04:02 2004 +// by libs/config/tools/generate.cpp +// Copyright John Maddock 2002-4. +// 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) + +// See http://www.boost.org/libs/config for the most recent version. + +// Test file for macro BOOST_NO_STD_ALLOCATOR +// This file should not compile, if it does then +// BOOST_NO_STD_ALLOCATOR should not be defined. +// See file boost_no_std_allocator.ipp for details + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include <boost/config.hpp> +#include "test.hpp" + +#ifdef BOOST_NO_STD_ALLOCATOR +#include "boost_no_std_allocator.ipp" +#else +#error "this file should not compile" +#endif + +int main( int, char *[] ) +{ + return boost_no_std_allocator::test(); +} + diff --git a/libs/config/test/no_std_allocator_pass.cpp b/libs/config/test/no_std_allocator_pass.cpp new file mode 100644 index 0000000000..63ab611c68 --- /dev/null +++ b/libs/config/test/no_std_allocator_pass.cpp @@ -0,0 +1,34 @@ +// This file was automatically generated on Fri Dec 03 18:04:02 2004 +// by libs/config/tools/generate.cpp +// Copyright John Maddock 2002-4. +// 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) + +// See http://www.boost.org/libs/config for the most recent version. + +// Test file for macro BOOST_NO_STD_ALLOCATOR +// This file should compile, if it does not then +// BOOST_NO_STD_ALLOCATOR should be defined. +// See file boost_no_std_allocator.ipp for details + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include <boost/config.hpp> +#include "test.hpp" + +#ifndef BOOST_NO_STD_ALLOCATOR +#include "boost_no_std_allocator.ipp" +#else +namespace boost_no_std_allocator = empty_boost; +#endif + +int main( int, char *[] ) +{ + return boost_no_std_allocator::test(); +} + diff --git a/libs/config/test/no_std_distance_fail.cpp b/libs/config/test/no_std_distance_fail.cpp new file mode 100644 index 0000000000..a8c21a43a6 --- /dev/null +++ b/libs/config/test/no_std_distance_fail.cpp @@ -0,0 +1,34 @@ +// This file was automatically generated on Fri Dec 03 18:04:02 2004 +// by libs/config/tools/generate.cpp +// Copyright John Maddock 2002-4. +// 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) + +// See http://www.boost.org/libs/config for the most recent version. + +// Test file for macro BOOST_NO_STD_DISTANCE +// This file should not compile, if it does then +// BOOST_NO_STD_DISTANCE should not be defined. +// See file boost_no_std_distance.ipp for details + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include <boost/config.hpp> +#include "test.hpp" + +#ifdef BOOST_NO_STD_DISTANCE +#include "boost_no_std_distance.ipp" +#else +#error "this file should not compile" +#endif + +int main( int, char *[] ) +{ + return boost_no_std_distance::test(); +} + diff --git a/libs/config/test/no_std_distance_pass.cpp b/libs/config/test/no_std_distance_pass.cpp new file mode 100644 index 0000000000..870d86d9c2 --- /dev/null +++ b/libs/config/test/no_std_distance_pass.cpp @@ -0,0 +1,34 @@ +// This file was automatically generated on Fri Dec 03 18:04:02 2004 +// by libs/config/tools/generate.cpp +// Copyright John Maddock 2002-4. +// 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) + +// See http://www.boost.org/libs/config for the most recent version. + +// Test file for macro BOOST_NO_STD_DISTANCE +// This file should compile, if it does not then +// BOOST_NO_STD_DISTANCE should be defined. +// See file boost_no_std_distance.ipp for details + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include <boost/config.hpp> +#include "test.hpp" + +#ifndef BOOST_NO_STD_DISTANCE +#include "boost_no_std_distance.ipp" +#else +namespace boost_no_std_distance = empty_boost; +#endif + +int main( int, char *[] ) +{ + return boost_no_std_distance::test(); +} + diff --git a/libs/config/test/no_std_iter_traits_fail.cpp b/libs/config/test/no_std_iter_traits_fail.cpp new file mode 100644 index 0000000000..98ba389f7a --- /dev/null +++ b/libs/config/test/no_std_iter_traits_fail.cpp @@ -0,0 +1,34 @@ +// This file was automatically generated on Fri Dec 03 18:04:02 2004 +// by libs/config/tools/generate.cpp +// Copyright John Maddock 2002-4. +// 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) + +// See http://www.boost.org/libs/config for the most recent version. + +// Test file for macro BOOST_NO_STD_ITERATOR_TRAITS +// This file should not compile, if it does then +// BOOST_NO_STD_ITERATOR_TRAITS should not be defined. +// See file boost_no_std_iter_traits.ipp for details + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include <boost/config.hpp> +#include "test.hpp" + +#ifdef BOOST_NO_STD_ITERATOR_TRAITS +#include "boost_no_std_iter_traits.ipp" +#else +#error "this file should not compile" +#endif + +int main( int, char *[] ) +{ + return boost_no_std_iterator_traits::test(); +} + diff --git a/libs/config/test/no_std_iter_traits_pass.cpp b/libs/config/test/no_std_iter_traits_pass.cpp new file mode 100644 index 0000000000..30b7399d97 --- /dev/null +++ b/libs/config/test/no_std_iter_traits_pass.cpp @@ -0,0 +1,34 @@ +// This file was automatically generated on Fri Dec 03 18:04:02 2004 +// by libs/config/tools/generate.cpp +// Copyright John Maddock 2002-4. +// 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) + +// See http://www.boost.org/libs/config for the most recent version. + +// Test file for macro BOOST_NO_STD_ITERATOR_TRAITS +// This file should compile, if it does not then +// BOOST_NO_STD_ITERATOR_TRAITS should be defined. +// See file boost_no_std_iter_traits.ipp for details + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include <boost/config.hpp> +#include "test.hpp" + +#ifndef BOOST_NO_STD_ITERATOR_TRAITS +#include "boost_no_std_iter_traits.ipp" +#else +namespace boost_no_std_iterator_traits = empty_boost; +#endif + +int main( int, char *[] ) +{ + return boost_no_std_iterator_traits::test(); +} + diff --git a/libs/config/test/no_std_iterator_fail.cpp b/libs/config/test/no_std_iterator_fail.cpp new file mode 100644 index 0000000000..7da3216dcb --- /dev/null +++ b/libs/config/test/no_std_iterator_fail.cpp @@ -0,0 +1,34 @@ +// This file was automatically generated on Fri Dec 03 18:04:02 2004 +// by libs/config/tools/generate.cpp +// Copyright John Maddock 2002-4. +// 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) + +// See http://www.boost.org/libs/config for the most recent version. + +// Test file for macro BOOST_NO_STD_ITERATOR +// This file should not compile, if it does then +// BOOST_NO_STD_ITERATOR should not be defined. +// See file boost_no_std_iterator.ipp for details + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include <boost/config.hpp> +#include "test.hpp" + +#ifdef BOOST_NO_STD_ITERATOR +#include "boost_no_std_iterator.ipp" +#else +#error "this file should not compile" +#endif + +int main( int, char *[] ) +{ + return boost_no_std_iterator::test(); +} + diff --git a/libs/config/test/no_std_iterator_pass.cpp b/libs/config/test/no_std_iterator_pass.cpp new file mode 100644 index 0000000000..7dbd9ce5f2 --- /dev/null +++ b/libs/config/test/no_std_iterator_pass.cpp @@ -0,0 +1,34 @@ +// This file was automatically generated on Fri Dec 03 18:04:02 2004 +// by libs/config/tools/generate.cpp +// Copyright John Maddock 2002-4. +// 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) + +// See http://www.boost.org/libs/config for the most recent version. + +// Test file for macro BOOST_NO_STD_ITERATOR +// This file should compile, if it does not then +// BOOST_NO_STD_ITERATOR should be defined. +// See file boost_no_std_iterator.ipp for details + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include <boost/config.hpp> +#include "test.hpp" + +#ifndef BOOST_NO_STD_ITERATOR +#include "boost_no_std_iterator.ipp" +#else +namespace boost_no_std_iterator = empty_boost; +#endif + +int main( int, char *[] ) +{ + return boost_no_std_iterator::test(); +} + diff --git a/libs/config/test/no_std_locale_fail.cpp b/libs/config/test/no_std_locale_fail.cpp new file mode 100644 index 0000000000..46d2a4656f --- /dev/null +++ b/libs/config/test/no_std_locale_fail.cpp @@ -0,0 +1,34 @@ +// This file was automatically generated on Fri Dec 03 18:04:02 2004 +// by libs/config/tools/generate.cpp +// Copyright John Maddock 2002-4. +// 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) + +// See http://www.boost.org/libs/config for the most recent version. + +// Test file for macro BOOST_NO_STD_LOCALE +// This file should not compile, if it does then +// BOOST_NO_STD_LOCALE should not be defined. +// See file boost_no_std_locale.ipp for details + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include <boost/config.hpp> +#include "test.hpp" + +#ifdef BOOST_NO_STD_LOCALE +#include "boost_no_std_locale.ipp" +#else +#error "this file should not compile" +#endif + +int main( int, char *[] ) +{ + return boost_no_std_locale::test(); +} + diff --git a/libs/config/test/no_std_locale_pass.cpp b/libs/config/test/no_std_locale_pass.cpp new file mode 100644 index 0000000000..95a16483c8 --- /dev/null +++ b/libs/config/test/no_std_locale_pass.cpp @@ -0,0 +1,34 @@ +// This file was automatically generated on Fri Dec 03 18:04:02 2004 +// by libs/config/tools/generate.cpp +// Copyright John Maddock 2002-4. +// 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) + +// See http://www.boost.org/libs/config for the most recent version. + +// Test file for macro BOOST_NO_STD_LOCALE +// This file should compile, if it does not then +// BOOST_NO_STD_LOCALE should be defined. +// See file boost_no_std_locale.ipp for details + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include <boost/config.hpp> +#include "test.hpp" + +#ifndef BOOST_NO_STD_LOCALE +#include "boost_no_std_locale.ipp" +#else +namespace boost_no_std_locale = empty_boost; +#endif + +int main( int, char *[] ) +{ + return boost_no_std_locale::test(); +} + diff --git a/libs/config/test/no_std_messages_fail.cpp b/libs/config/test/no_std_messages_fail.cpp new file mode 100644 index 0000000000..f5da5a28bc --- /dev/null +++ b/libs/config/test/no_std_messages_fail.cpp @@ -0,0 +1,34 @@ +// This file was automatically generated on Fri Dec 03 18:04:02 2004 +// by libs/config/tools/generate.cpp +// Copyright John Maddock 2002-4. +// 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) + +// See http://www.boost.org/libs/config for the most recent version. + +// Test file for macro BOOST_NO_STD_MESSAGES +// This file should not compile, if it does then +// BOOST_NO_STD_MESSAGES should not be defined. +// See file boost_no_std_messages.ipp for details + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include <boost/config.hpp> +#include "test.hpp" + +#ifdef BOOST_NO_STD_MESSAGES +#include "boost_no_std_messages.ipp" +#else +#error "this file should not compile" +#endif + +int main( int, char *[] ) +{ + return boost_no_std_messages::test(); +} + diff --git a/libs/config/test/no_std_messages_pass.cpp b/libs/config/test/no_std_messages_pass.cpp new file mode 100644 index 0000000000..c3d1786e09 --- /dev/null +++ b/libs/config/test/no_std_messages_pass.cpp @@ -0,0 +1,34 @@ +// This file was automatically generated on Fri Dec 03 18:04:02 2004 +// by libs/config/tools/generate.cpp +// Copyright John Maddock 2002-4. +// 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) + +// See http://www.boost.org/libs/config for the most recent version. + +// Test file for macro BOOST_NO_STD_MESSAGES +// This file should compile, if it does not then +// BOOST_NO_STD_MESSAGES should be defined. +// See file boost_no_std_messages.ipp for details + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include <boost/config.hpp> +#include "test.hpp" + +#ifndef BOOST_NO_STD_MESSAGES +#include "boost_no_std_messages.ipp" +#else +namespace boost_no_std_messages = empty_boost; +#endif + +int main( int, char *[] ) +{ + return boost_no_std_messages::test(); +} + diff --git a/libs/config/test/no_std_min_max_fail.cpp b/libs/config/test/no_std_min_max_fail.cpp new file mode 100644 index 0000000000..438d55a2b1 --- /dev/null +++ b/libs/config/test/no_std_min_max_fail.cpp @@ -0,0 +1,34 @@ +// This file was automatically generated on Fri Dec 03 18:04:02 2004 +// by libs/config/tools/generate.cpp +// Copyright John Maddock 2002-4. +// 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) + +// See http://www.boost.org/libs/config for the most recent version. + +// Test file for macro BOOST_NO_STD_MIN_MAX +// This file should not compile, if it does then +// BOOST_NO_STD_MIN_MAX should not be defined. +// See file boost_no_std_min_max.ipp for details + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include <boost/config.hpp> +#include "test.hpp" + +#ifdef BOOST_NO_STD_MIN_MAX +#include "boost_no_std_min_max.ipp" +#else +#error "this file should not compile" +#endif + +int main( int, char *[] ) +{ + return boost_no_std_min_max::test(); +} + diff --git a/libs/config/test/no_std_min_max_pass.cpp b/libs/config/test/no_std_min_max_pass.cpp new file mode 100644 index 0000000000..f5349aa39e --- /dev/null +++ b/libs/config/test/no_std_min_max_pass.cpp @@ -0,0 +1,34 @@ +// This file was automatically generated on Fri Dec 03 18:04:02 2004 +// by libs/config/tools/generate.cpp +// Copyright John Maddock 2002-4. +// 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) + +// See http://www.boost.org/libs/config for the most recent version. + +// Test file for macro BOOST_NO_STD_MIN_MAX +// This file should compile, if it does not then +// BOOST_NO_STD_MIN_MAX should be defined. +// See file boost_no_std_min_max.ipp for details + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include <boost/config.hpp> +#include "test.hpp" + +#ifndef BOOST_NO_STD_MIN_MAX +#include "boost_no_std_min_max.ipp" +#else +namespace boost_no_std_min_max = empty_boost; +#endif + +int main( int, char *[] ) +{ + return boost_no_std_min_max::test(); +} + diff --git a/libs/config/test/no_std_oi_assign_fail.cpp b/libs/config/test/no_std_oi_assign_fail.cpp new file mode 100644 index 0000000000..353e3a1090 --- /dev/null +++ b/libs/config/test/no_std_oi_assign_fail.cpp @@ -0,0 +1,34 @@ +// This file was automatically generated on Fri Dec 03 18:04:02 2004 +// by libs/config/tools/generate.cpp +// Copyright John Maddock 2002-4. +// 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) + +// See http://www.boost.org/libs/config for the most recent version. + +// Test file for macro BOOST_NO_STD_OUTPUT_ITERATOR_ASSIGN +// This file should not compile, if it does then +// BOOST_NO_STD_OUTPUT_ITERATOR_ASSIGN should not be defined. +// See file boost_no_std_oi_assign.ipp for details + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include <boost/config.hpp> +#include "test.hpp" + +#ifdef BOOST_NO_STD_OUTPUT_ITERATOR_ASSIGN +#include "boost_no_std_oi_assign.ipp" +#else +#error "this file should not compile" +#endif + +int main( int, char *[] ) +{ + return boost_no_std_output_iterator_assign::test(); +} + diff --git a/libs/config/test/no_std_oi_assign_pass.cpp b/libs/config/test/no_std_oi_assign_pass.cpp new file mode 100644 index 0000000000..7f16148dbd --- /dev/null +++ b/libs/config/test/no_std_oi_assign_pass.cpp @@ -0,0 +1,34 @@ +// This file was automatically generated on Fri Dec 03 18:04:02 2004 +// by libs/config/tools/generate.cpp +// Copyright John Maddock 2002-4. +// 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) + +// See http://www.boost.org/libs/config for the most recent version. + +// Test file for macro BOOST_NO_STD_OUTPUT_ITERATOR_ASSIGN +// This file should compile, if it does not then +// BOOST_NO_STD_OUTPUT_ITERATOR_ASSIGN should be defined. +// See file boost_no_std_oi_assign.ipp for details + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include <boost/config.hpp> +#include "test.hpp" + +#ifndef BOOST_NO_STD_OUTPUT_ITERATOR_ASSIGN +#include "boost_no_std_oi_assign.ipp" +#else +namespace boost_no_std_output_iterator_assign = empty_boost; +#endif + +int main( int, char *[] ) +{ + return boost_no_std_output_iterator_assign::test(); +} + diff --git a/libs/config/test/no_std_typeinfo_fail.cpp b/libs/config/test/no_std_typeinfo_fail.cpp new file mode 100644 index 0000000000..7bb145f071 --- /dev/null +++ b/libs/config/test/no_std_typeinfo_fail.cpp @@ -0,0 +1,34 @@ +// This file was automatically generated on Sat Aug 25 12:32:22 2007 +// by libs/config/tools/generate.cpp +// Copyright John Maddock 2002-4. +// 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) + +// See http://www.boost.org/libs/config for the most recent version. + +// Test file for macro BOOST_NO_STD_TYPEINFO +// This file should not compile, if it does then +// BOOST_NO_STD_TYPEINFO should not be defined. +// See file boost_no_std_typeinfo.ipp for details + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include <boost/config.hpp> +#include "test.hpp" + +#ifdef BOOST_NO_STD_TYPEINFO +#include "boost_no_std_typeinfo.ipp" +#else +#error "this file should not compile" +#endif + +int main( int, char *[] ) +{ + return boost_no_std_typeinfo::test(); +} + diff --git a/libs/config/test/no_std_typeinfo_pass.cpp b/libs/config/test/no_std_typeinfo_pass.cpp new file mode 100644 index 0000000000..0bfd031a3e --- /dev/null +++ b/libs/config/test/no_std_typeinfo_pass.cpp @@ -0,0 +1,34 @@ +// This file was automatically generated on Sat Aug 25 12:32:22 2007 +// by libs/config/tools/generate.cpp +// Copyright John Maddock 2002-4. +// 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) + +// See http://www.boost.org/libs/config for the most recent version. + +// Test file for macro BOOST_NO_STD_TYPEINFO +// This file should compile, if it does not then +// BOOST_NO_STD_TYPEINFO should be defined. +// See file boost_no_std_typeinfo.ipp for details + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include <boost/config.hpp> +#include "test.hpp" + +#ifndef BOOST_NO_STD_TYPEINFO +#include "boost_no_std_typeinfo.ipp" +#else +namespace boost_no_std_typeinfo = empty_boost; +#endif + +int main( int, char *[] ) +{ + return boost_no_std_typeinfo::test(); +} + diff --git a/libs/config/test/no_std_unordered_fail.cpp b/libs/config/test/no_std_unordered_fail.cpp new file mode 100644 index 0000000000..afc31bea51 --- /dev/null +++ b/libs/config/test/no_std_unordered_fail.cpp @@ -0,0 +1,37 @@ +// This file was automatically generated on Tue Dec 16 16:41:40 2008 +// by libs/config/tools/generate.cpp +// Copyright John Maddock 2002-4. +// 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) + +// See http://www.boost.org/libs/config for the most recent version.// +// Revision $Id: generate.cpp 49281 2008-10-11 15:40:44Z johnmaddock $ +// + + +// Test file for macro BOOST_NO_STD_UNORDERED +// This file should not compile, if it does then +// BOOST_NO_STD_UNORDERED should not be defined. +// See file boost_no_std_unordered.ipp for details + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include <boost/config.hpp> +#include "test.hpp" + +#ifdef BOOST_NO_STD_UNORDERED +#include "boost_no_std_unordered.ipp" +#else +#error "this file should not compile" +#endif + +int main( int, char *[] ) +{ + return boost_no_std_unordered::test(); +} + diff --git a/libs/config/test/no_std_unordered_pass.cpp b/libs/config/test/no_std_unordered_pass.cpp new file mode 100644 index 0000000000..5ef2bf0259 --- /dev/null +++ b/libs/config/test/no_std_unordered_pass.cpp @@ -0,0 +1,37 @@ +// This file was automatically generated on Tue Dec 16 16:41:40 2008 +// by libs/config/tools/generate.cpp +// Copyright John Maddock 2002-4. +// 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) + +// See http://www.boost.org/libs/config for the most recent version.// +// Revision $Id: generate.cpp 49281 2008-10-11 15:40:44Z johnmaddock $ +// + + +// Test file for macro BOOST_NO_STD_UNORDERED +// This file should compile, if it does not then +// BOOST_NO_STD_UNORDERED should be defined. +// See file boost_no_std_unordered.ipp for details + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include <boost/config.hpp> +#include "test.hpp" + +#ifndef BOOST_NO_STD_UNORDERED +#include "boost_no_std_unordered.ipp" +#else +namespace boost_no_std_unordered = empty_boost; +#endif + +int main( int, char *[] ) +{ + return boost_no_std_unordered::test(); +} + diff --git a/libs/config/test/no_std_use_facet_fail.cpp b/libs/config/test/no_std_use_facet_fail.cpp new file mode 100644 index 0000000000..e1c06b6a9b --- /dev/null +++ b/libs/config/test/no_std_use_facet_fail.cpp @@ -0,0 +1,34 @@ +// This file was automatically generated on Fri Dec 03 18:04:02 2004 +// by libs/config/tools/generate.cpp +// Copyright John Maddock 2002-4. +// 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) + +// See http://www.boost.org/libs/config for the most recent version. + +// Test file for macro BOOST_NO_STD_USE_FACET +// This file should not compile, if it does then +// BOOST_NO_STD_USE_FACET should not be defined. +// See file boost_no_std_use_facet.ipp for details + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include <boost/config.hpp> +#include "test.hpp" + +#ifdef BOOST_NO_STD_USE_FACET +#include "boost_no_std_use_facet.ipp" +#else +#error "this file should not compile" +#endif + +int main( int, char *[] ) +{ + return boost_no_std_use_facet::test(); +} + diff --git a/libs/config/test/no_std_use_facet_pass.cpp b/libs/config/test/no_std_use_facet_pass.cpp new file mode 100644 index 0000000000..111f382335 --- /dev/null +++ b/libs/config/test/no_std_use_facet_pass.cpp @@ -0,0 +1,34 @@ +// This file was automatically generated on Fri Dec 03 18:04:02 2004 +// by libs/config/tools/generate.cpp +// Copyright John Maddock 2002-4. +// 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) + +// See http://www.boost.org/libs/config for the most recent version. + +// Test file for macro BOOST_NO_STD_USE_FACET +// This file should compile, if it does not then +// BOOST_NO_STD_USE_FACET should be defined. +// See file boost_no_std_use_facet.ipp for details + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include <boost/config.hpp> +#include "test.hpp" + +#ifndef BOOST_NO_STD_USE_FACET +#include "boost_no_std_use_facet.ipp" +#else +namespace boost_no_std_use_facet = empty_boost; +#endif + +int main( int, char *[] ) +{ + return boost_no_std_use_facet::test(); +} + diff --git a/libs/config/test/no_std_wstreambuf_fail.cpp b/libs/config/test/no_std_wstreambuf_fail.cpp new file mode 100644 index 0000000000..40e6ecb945 --- /dev/null +++ b/libs/config/test/no_std_wstreambuf_fail.cpp @@ -0,0 +1,34 @@ +// This file was automatically generated on Fri Dec 03 18:04:02 2004 +// by libs/config/tools/generate.cpp +// Copyright John Maddock 2002-4. +// 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) + +// See http://www.boost.org/libs/config for the most recent version. + +// Test file for macro BOOST_NO_STD_WSTREAMBUF +// This file should not compile, if it does then +// BOOST_NO_STD_WSTREAMBUF should not be defined. +// See file boost_no_std_wstreambuf.ipp for details + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include <boost/config.hpp> +#include "test.hpp" + +#ifdef BOOST_NO_STD_WSTREAMBUF +#include "boost_no_std_wstreambuf.ipp" +#else +#error "this file should not compile" +#endif + +int main( int, char *[] ) +{ + return boost_no_std_wstreambuf::test(); +} + diff --git a/libs/config/test/no_std_wstreambuf_pass.cpp b/libs/config/test/no_std_wstreambuf_pass.cpp new file mode 100644 index 0000000000..f5aa6c6391 --- /dev/null +++ b/libs/config/test/no_std_wstreambuf_pass.cpp @@ -0,0 +1,34 @@ +// This file was automatically generated on Fri Dec 03 18:04:02 2004 +// by libs/config/tools/generate.cpp +// Copyright John Maddock 2002-4. +// 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) + +// See http://www.boost.org/libs/config for the most recent version. + +// Test file for macro BOOST_NO_STD_WSTREAMBUF +// This file should compile, if it does not then +// BOOST_NO_STD_WSTREAMBUF should be defined. +// See file boost_no_std_wstreambuf.ipp for details + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include <boost/config.hpp> +#include "test.hpp" + +#ifndef BOOST_NO_STD_WSTREAMBUF +#include "boost_no_std_wstreambuf.ipp" +#else +namespace boost_no_std_wstreambuf = empty_boost; +#endif + +int main( int, char *[] ) +{ + return boost_no_std_wstreambuf::test(); +} + diff --git a/libs/config/test/no_std_wstring_fail.cpp b/libs/config/test/no_std_wstring_fail.cpp new file mode 100644 index 0000000000..39a5fa83fe --- /dev/null +++ b/libs/config/test/no_std_wstring_fail.cpp @@ -0,0 +1,34 @@ +// This file was automatically generated on Fri Dec 03 18:04:02 2004 +// by libs/config/tools/generate.cpp +// Copyright John Maddock 2002-4. +// 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) + +// See http://www.boost.org/libs/config for the most recent version. + +// Test file for macro BOOST_NO_STD_WSTRING +// This file should not compile, if it does then +// BOOST_NO_STD_WSTRING should not be defined. +// See file boost_no_std_wstring.ipp for details + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include <boost/config.hpp> +#include "test.hpp" + +#ifdef BOOST_NO_STD_WSTRING +#include "boost_no_std_wstring.ipp" +#else +#error "this file should not compile" +#endif + +int main( int, char *[] ) +{ + return boost_no_std_wstring::test(); +} + diff --git a/libs/config/test/no_std_wstring_pass.cpp b/libs/config/test/no_std_wstring_pass.cpp new file mode 100644 index 0000000000..0fb8e03192 --- /dev/null +++ b/libs/config/test/no_std_wstring_pass.cpp @@ -0,0 +1,34 @@ +// This file was automatically generated on Fri Dec 03 18:04:02 2004 +// by libs/config/tools/generate.cpp +// Copyright John Maddock 2002-4. +// 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) + +// See http://www.boost.org/libs/config for the most recent version. + +// Test file for macro BOOST_NO_STD_WSTRING +// This file should compile, if it does not then +// BOOST_NO_STD_WSTRING should be defined. +// See file boost_no_std_wstring.ipp for details + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include <boost/config.hpp> +#include "test.hpp" + +#ifndef BOOST_NO_STD_WSTRING +#include "boost_no_std_wstring.ipp" +#else +namespace boost_no_std_wstring = empty_boost; +#endif + +int main( int, char *[] ) +{ + return boost_no_std_wstring::test(); +} + diff --git a/libs/config/test/no_stdc_namespace_fail.cpp b/libs/config/test/no_stdc_namespace_fail.cpp new file mode 100644 index 0000000000..745a2b8990 --- /dev/null +++ b/libs/config/test/no_stdc_namespace_fail.cpp @@ -0,0 +1,34 @@ +// This file was automatically generated on Fri Dec 03 18:04:02 2004 +// by libs/config/tools/generate.cpp +// Copyright John Maddock 2002-4. +// 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) + +// See http://www.boost.org/libs/config for the most recent version. + +// Test file for macro BOOST_NO_STDC_NAMESPACE +// This file should not compile, if it does then +// BOOST_NO_STDC_NAMESPACE should not be defined. +// See file boost_no_stdc_namespace.ipp for details + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include <boost/config.hpp> +#include "test.hpp" + +#ifdef BOOST_NO_STDC_NAMESPACE +#include "boost_no_stdc_namespace.ipp" +#else +#error "this file should not compile" +#endif + +int main( int, char *[] ) +{ + return boost_no_stdc_namespace::test(); +} + diff --git a/libs/config/test/no_stdc_namespace_pass.cpp b/libs/config/test/no_stdc_namespace_pass.cpp new file mode 100644 index 0000000000..8b8eeafe7e --- /dev/null +++ b/libs/config/test/no_stdc_namespace_pass.cpp @@ -0,0 +1,34 @@ +// This file was automatically generated on Fri Dec 03 18:04:02 2004 +// by libs/config/tools/generate.cpp +// Copyright John Maddock 2002-4. +// 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) + +// See http://www.boost.org/libs/config for the most recent version. + +// Test file for macro BOOST_NO_STDC_NAMESPACE +// This file should compile, if it does not then +// BOOST_NO_STDC_NAMESPACE should be defined. +// See file boost_no_stdc_namespace.ipp for details + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include <boost/config.hpp> +#include "test.hpp" + +#ifndef BOOST_NO_STDC_NAMESPACE +#include "boost_no_stdc_namespace.ipp" +#else +namespace boost_no_stdc_namespace = empty_boost; +#endif + +int main( int, char *[] ) +{ + return boost_no_stdc_namespace::test(); +} + diff --git a/libs/config/test/no_swprintf_fail.cpp b/libs/config/test/no_swprintf_fail.cpp new file mode 100644 index 0000000000..3df0b132fc --- /dev/null +++ b/libs/config/test/no_swprintf_fail.cpp @@ -0,0 +1,34 @@ +// This file was automatically generated on Fri Dec 03 18:04:02 2004 +// by libs/config/tools/generate.cpp +// Copyright John Maddock 2002-4. +// 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) + +// See http://www.boost.org/libs/config for the most recent version. + +// Test file for macro BOOST_NO_SWPRINTF +// This file should not compile, if it does then +// BOOST_NO_SWPRINTF should not be defined. +// See file boost_no_swprintf.ipp for details + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include <boost/config.hpp> +#include "test.hpp" + +#ifdef BOOST_NO_SWPRINTF +#include "boost_no_swprintf.ipp" +#else +#error "this file should not compile" +#endif + +int main( int, char *[] ) +{ + return boost_no_swprintf::test(); +} + diff --git a/libs/config/test/no_swprintf_pass.cpp b/libs/config/test/no_swprintf_pass.cpp new file mode 100644 index 0000000000..3d4ef70961 --- /dev/null +++ b/libs/config/test/no_swprintf_pass.cpp @@ -0,0 +1,34 @@ +// This file was automatically generated on Fri Dec 03 18:04:02 2004 +// by libs/config/tools/generate.cpp +// Copyright John Maddock 2002-4. +// 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) + +// See http://www.boost.org/libs/config for the most recent version. + +// Test file for macro BOOST_NO_SWPRINTF +// This file should compile, if it does not then +// BOOST_NO_SWPRINTF should be defined. +// See file boost_no_swprintf.ipp for details + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include <boost/config.hpp> +#include "test.hpp" + +#ifndef BOOST_NO_SWPRINTF +#include "boost_no_swprintf.ipp" +#else +namespace boost_no_swprintf = empty_boost; +#endif + +int main( int, char *[] ) +{ + return boost_no_swprintf::test(); +} + diff --git a/libs/config/test/no_template_aliases_fail.cpp b/libs/config/test/no_template_aliases_fail.cpp new file mode 100644 index 0000000000..076d1b21b8 --- /dev/null +++ b/libs/config/test/no_template_aliases_fail.cpp @@ -0,0 +1,37 @@ +// This file was automatically generated on Thu May 14 16:01:36 2009 +// by libs/config/tools/generate.cpp +// Copyright John Maddock 2002-4. +// 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) + +// See http://www.boost.org/libs/config for the most recent version.// +// Revision $Id: no_template_aliases_fail.cpp 53445 2009-05-30 11:22:59Z bemandawes $ +// + + +// Test file for macro BOOST_NO_TEMPLATE_ALIASES +// This file should not compile, if it does then +// BOOST_NO_TEMPLATE_ALIASES should not be defined. +// See file boost_no_template_aliases.ipp for details + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include <boost/config.hpp> +#include "test.hpp" + +#ifdef BOOST_NO_TEMPLATE_ALIASES +#include "boost_no_template_aliases.ipp" +#else +#error "this file should not compile" +#endif + +int main( int, char *[] ) +{ + return boost_no_template_aliases::test(); +} + diff --git a/libs/config/test/no_template_aliases_pass.cpp b/libs/config/test/no_template_aliases_pass.cpp new file mode 100644 index 0000000000..47b2d81e59 --- /dev/null +++ b/libs/config/test/no_template_aliases_pass.cpp @@ -0,0 +1,37 @@ +// This file was automatically generated on Thu May 14 16:01:36 2009 +// by libs/config/tools/generate.cpp +// Copyright John Maddock 2002-4. +// 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) + +// See http://www.boost.org/libs/config for the most recent version.// +// Revision $Id: no_template_aliases_pass.cpp 53445 2009-05-30 11:22:59Z bemandawes $ +// + + +// Test file for macro BOOST_NO_TEMPLATE_ALIASES +// This file should compile, if it does not then +// BOOST_NO_TEMPLATE_ALIASES should be defined. +// See file boost_no_template_aliases.ipp for details + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include <boost/config.hpp> +#include "test.hpp" + +#ifndef BOOST_NO_TEMPLATE_ALIASES +#include "boost_no_template_aliases.ipp" +#else +namespace boost_no_template_aliases = empty_boost; +#endif + +int main( int, char *[] ) +{ + return boost_no_template_aliases::test(); +} + diff --git a/libs/config/test/no_template_streams_fail.cpp b/libs/config/test/no_template_streams_fail.cpp new file mode 100644 index 0000000000..16dfd5b166 --- /dev/null +++ b/libs/config/test/no_template_streams_fail.cpp @@ -0,0 +1,37 @@ +// This file was automatically generated on Mon Apr 21 10:10:52 2008 +// by libs/config/tools/generate.cpp +// Copyright John Maddock 2002-4. +// 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) + +// See http://www.boost.org/libs/config for the most recent version.// +// Revision $Id: generate.cpp 44422 2008-04-14 18:06:59Z johnmaddock $ +// + + +// Test file for macro BOOST_NO_TEMPLATED_IOSTREAMS +// This file should not compile, if it does then +// BOOST_NO_TEMPLATED_IOSTREAMS should not be defined. +// See file boost_no_template_streams.ipp for details + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include <boost/config.hpp> +#include "test.hpp" + +#ifdef BOOST_NO_TEMPLATED_IOSTREAMS +#include "boost_no_template_streams.ipp" +#else +#error "this file should not compile" +#endif + +int main( int, char *[] ) +{ + return boost_no_templated_iostreams::test(); +} + diff --git a/libs/config/test/no_template_streams_pass.cpp b/libs/config/test/no_template_streams_pass.cpp new file mode 100644 index 0000000000..9ea790981e --- /dev/null +++ b/libs/config/test/no_template_streams_pass.cpp @@ -0,0 +1,37 @@ +// This file was automatically generated on Mon Apr 21 10:10:52 2008 +// by libs/config/tools/generate.cpp +// Copyright John Maddock 2002-4. +// 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) + +// See http://www.boost.org/libs/config for the most recent version.// +// Revision $Id: generate.cpp 44422 2008-04-14 18:06:59Z johnmaddock $ +// + + +// Test file for macro BOOST_NO_TEMPLATED_IOSTREAMS +// This file should compile, if it does not then +// BOOST_NO_TEMPLATED_IOSTREAMS should be defined. +// See file boost_no_template_streams.ipp for details + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include <boost/config.hpp> +#include "test.hpp" + +#ifndef BOOST_NO_TEMPLATED_IOSTREAMS +#include "boost_no_template_streams.ipp" +#else +namespace boost_no_templated_iostreams = empty_boost; +#endif + +int main( int, char *[] ) +{ + return boost_no_templated_iostreams::test(); +} + diff --git a/libs/config/test/no_template_template_fail.cpp b/libs/config/test/no_template_template_fail.cpp new file mode 100644 index 0000000000..44f8a2b615 --- /dev/null +++ b/libs/config/test/no_template_template_fail.cpp @@ -0,0 +1,34 @@ +// This file was automatically generated on Fri Dec 03 18:04:02 2004 +// by libs/config/tools/generate.cpp +// Copyright John Maddock 2002-4. +// 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) + +// See http://www.boost.org/libs/config for the most recent version. + +// Test file for macro BOOST_NO_TEMPLATE_TEMPLATES +// This file should not compile, if it does then +// BOOST_NO_TEMPLATE_TEMPLATES should not be defined. +// See file boost_no_template_template.ipp for details + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include <boost/config.hpp> +#include "test.hpp" + +#ifdef BOOST_NO_TEMPLATE_TEMPLATES +#include "boost_no_template_template.ipp" +#else +#error "this file should not compile" +#endif + +int main( int, char *[] ) +{ + return boost_no_template_templates::test(); +} + diff --git a/libs/config/test/no_template_template_pass.cpp b/libs/config/test/no_template_template_pass.cpp new file mode 100644 index 0000000000..e70c33e163 --- /dev/null +++ b/libs/config/test/no_template_template_pass.cpp @@ -0,0 +1,34 @@ +// This file was automatically generated on Fri Dec 03 18:04:02 2004 +// by libs/config/tools/generate.cpp +// Copyright John Maddock 2002-4. +// 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) + +// See http://www.boost.org/libs/config for the most recent version. + +// Test file for macro BOOST_NO_TEMPLATE_TEMPLATES +// This file should compile, if it does not then +// BOOST_NO_TEMPLATE_TEMPLATES should be defined. +// See file boost_no_template_template.ipp for details + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include <boost/config.hpp> +#include "test.hpp" + +#ifndef BOOST_NO_TEMPLATE_TEMPLATES +#include "boost_no_template_template.ipp" +#else +namespace boost_no_template_templates = empty_boost; +#endif + +int main( int, char *[] ) +{ + return boost_no_template_templates::test(); +} + diff --git a/libs/config/test/no_two_phase_lookup_fail.cpp b/libs/config/test/no_two_phase_lookup_fail.cpp new file mode 100644 index 0000000000..6be607227b --- /dev/null +++ b/libs/config/test/no_two_phase_lookup_fail.cpp @@ -0,0 +1,34 @@ +// This file was automatically generated on Mon Jan 01 12:05:16 2007 +// by libs/config/tools/generate.cpp +// Copyright John Maddock 2002-4. +// 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) + +// See http://www.boost.org/libs/config for the most recent version. + +// Test file for macro BOOST_NO_TWO_PHASE_NAME_LOOKUP +// This file should not compile, if it does then +// BOOST_NO_TWO_PHASE_NAME_LOOKUP should not be defined. +// See file boost_no_two_phase_lookup.ipp for details + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include <boost/config.hpp> +#include "test.hpp" + +#ifdef BOOST_NO_TWO_PHASE_NAME_LOOKUP +#include "boost_no_two_phase_lookup.ipp" +#else +#error "this file should not compile" +#endif + +int main( int, char *[] ) +{ + return boost_no_two_phase_name_lookup::test(); +} + diff --git a/libs/config/test/no_two_phase_lookup_pass.cpp b/libs/config/test/no_two_phase_lookup_pass.cpp new file mode 100644 index 0000000000..5449587675 --- /dev/null +++ b/libs/config/test/no_two_phase_lookup_pass.cpp @@ -0,0 +1,34 @@ +// This file was automatically generated on Mon Jan 01 12:05:16 2007 +// by libs/config/tools/generate.cpp +// Copyright John Maddock 2002-4. +// 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) + +// See http://www.boost.org/libs/config for the most recent version. + +// Test file for macro BOOST_NO_TWO_PHASE_NAME_LOOKUP +// This file should compile, if it does not then +// BOOST_NO_TWO_PHASE_NAME_LOOKUP should be defined. +// See file boost_no_two_phase_lookup.ipp for details + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include <boost/config.hpp> +#include "test.hpp" + +#ifndef BOOST_NO_TWO_PHASE_NAME_LOOKUP +#include "boost_no_two_phase_lookup.ipp" +#else +namespace boost_no_two_phase_name_lookup = empty_boost; +#endif + +int main( int, char *[] ) +{ + return boost_no_two_phase_name_lookup::test(); +} + diff --git a/libs/config/test/no_typeid_fail.cpp b/libs/config/test/no_typeid_fail.cpp new file mode 100644 index 0000000000..7c3e4b23b6 --- /dev/null +++ b/libs/config/test/no_typeid_fail.cpp @@ -0,0 +1,34 @@ +// This file was automatically generated on Sat Aug 25 12:32:22 2007 +// by libs/config/tools/generate.cpp +// Copyright John Maddock 2002-4. +// 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) + +// See http://www.boost.org/libs/config for the most recent version. + +// Test file for macro BOOST_NO_TYPEID +// This file should not compile, if it does then +// BOOST_NO_TYPEID should not be defined. +// See file boost_no_typeid.ipp for details + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include <boost/config.hpp> +#include "test.hpp" + +#ifdef BOOST_NO_TYPEID +#include "boost_no_typeid.ipp" +#else +#error "this file should not compile" +#endif + +int main( int, char *[] ) +{ + return boost_no_typeid::test(); +} + diff --git a/libs/config/test/no_typeid_pass.cpp b/libs/config/test/no_typeid_pass.cpp new file mode 100644 index 0000000000..80582ef3b8 --- /dev/null +++ b/libs/config/test/no_typeid_pass.cpp @@ -0,0 +1,34 @@ +// This file was automatically generated on Sat Aug 25 12:32:22 2007 +// by libs/config/tools/generate.cpp +// Copyright John Maddock 2002-4. +// 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) + +// See http://www.boost.org/libs/config for the most recent version. + +// Test file for macro BOOST_NO_TYPEID +// This file should compile, if it does not then +// BOOST_NO_TYPEID should be defined. +// See file boost_no_typeid.ipp for details + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include <boost/config.hpp> +#include "test.hpp" + +#ifndef BOOST_NO_TYPEID +#include "boost_no_typeid.ipp" +#else +namespace boost_no_typeid = empty_boost; +#endif + +int main( int, char *[] ) +{ + return boost_no_typeid::test(); +} + diff --git a/libs/config/test/no_typename_with_ctor_fail.cpp b/libs/config/test/no_typename_with_ctor_fail.cpp new file mode 100644 index 0000000000..74ee7b0e69 --- /dev/null +++ b/libs/config/test/no_typename_with_ctor_fail.cpp @@ -0,0 +1,37 @@ +// This file was automatically generated on Thu Sep 18 23:32:18 2008 +// by libs/config/tools/generate.cpp +// Copyright John Maddock 2002-4. +// 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) + +// See http://www.boost.org/libs/config for the most recent version.// +// Revision $Id$ +// + + +// Test file for macro BOOST_NO_TYPENAME_WITH_CTOR +// This file should not compile, if it does then +// BOOST_NO_TYPENAME_WITH_CTOR should not be defined. +// See file boost_no_typename_with_ctor.ipp for details + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include <boost/config.hpp> +#include "test.hpp" + +#ifdef BOOST_NO_TYPENAME_WITH_CTOR +#include "boost_no_typename_with_ctor.ipp" +#else +#error "this file should not compile" +#endif + +int main( int, char *[] ) +{ + return boost_no_typename_with_ctor::test(); +} + diff --git a/libs/config/test/no_typename_with_ctor_pass.cpp b/libs/config/test/no_typename_with_ctor_pass.cpp new file mode 100644 index 0000000000..4a2d9bbccd --- /dev/null +++ b/libs/config/test/no_typename_with_ctor_pass.cpp @@ -0,0 +1,37 @@ +// This file was automatically generated on Thu Sep 18 23:32:18 2008 +// by libs/config/tools/generate.cpp +// Copyright John Maddock 2002-4. +// 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) + +// See http://www.boost.org/libs/config for the most recent version.// +// Revision $Id$ +// + + +// Test file for macro BOOST_NO_TYPENAME_WITH_CTOR +// This file should compile, if it does not then +// BOOST_NO_TYPENAME_WITH_CTOR should be defined. +// See file boost_no_typename_with_ctor.ipp for details + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include <boost/config.hpp> +#include "test.hpp" + +#ifndef BOOST_NO_TYPENAME_WITH_CTOR +#include "boost_no_typename_with_ctor.ipp" +#else +namespace boost_no_typename_with_ctor = empty_boost; +#endif + +int main( int, char *[] ) +{ + return boost_no_typename_with_ctor::test(); +} + diff --git a/libs/config/test/no_unicode_literals_fail.cpp b/libs/config/test/no_unicode_literals_fail.cpp new file mode 100644 index 0000000000..1fefdbf710 --- /dev/null +++ b/libs/config/test/no_unicode_literals_fail.cpp @@ -0,0 +1,37 @@ +// This file was automatically generated on Thu May 29 09:24:04 2008 +// by libs/config/tools/generate.cpp +// Copyright John Maddock 2002-4. +// 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) + +// See http://www.boost.org/libs/config for the most recent version.// +// Revision $Id: no_unicode_literals_fail.cpp 51606 2009-03-04 14:28:36Z bemandawes $ +// + + +// Test file for macro BOOST_NO_UNICODE_LITERALS +// This file should not compile, if it does then +// BOOST_NO_UNICODE_LITERALS should not be defined. +// See file boost_no_unicode_literals.ipp for details + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include <boost/config.hpp> +#include "test.hpp" + +#ifdef BOOST_NO_UNICODE_LITERALS +#include "boost_no_unicode_literals.ipp" +#else +#error "this file should not compile" +#endif + +int main( int, char *[] ) +{ + return boost_no_unicode_literals::test(); +} + diff --git a/libs/config/test/no_unicode_literals_pass.cpp b/libs/config/test/no_unicode_literals_pass.cpp new file mode 100644 index 0000000000..ef2c716127 --- /dev/null +++ b/libs/config/test/no_unicode_literals_pass.cpp @@ -0,0 +1,37 @@ +// This file was automatically generated on Thu May 29 09:24:04 2008 +// by libs/config/tools/generate.cpp +// Copyright John Maddock 2002-4. +// 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) + +// See http://www.boost.org/libs/config for the most recent version.// +// Revision $Id: no_unicode_literals_pass.cpp 51606 2009-03-04 14:28:36Z bemandawes $ +// + + +// Test file for macro BOOST_NO_UNICODE_LITERALS +// This file should compile, if it does not then +// BOOST_NO_UNICODE_LITERALS should be defined. +// See file boost_no_unicode_literals.ipp for details + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include <boost/config.hpp> +#include "test.hpp" + +#ifndef BOOST_NO_UNICODE_LITERALS +#include "boost_no_unicode_literals.ipp" +#else +namespace boost_no_unicode_literals = empty_boost; +#endif + +int main( int, char *[] ) +{ + return boost_no_unicode_literals::test(); +} + diff --git a/libs/config/test/no_unified_init_fail.cpp b/libs/config/test/no_unified_init_fail.cpp new file mode 100644 index 0000000000..1cd6296f30 --- /dev/null +++ b/libs/config/test/no_unified_init_fail.cpp @@ -0,0 +1,37 @@ +// This file was automatically generated on Mon May 09 12:11:17 2011 +// by libs/config/tools/generate.cpp +// Copyright John Maddock 2002-4. +// 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) + +// See http://www.boost.org/libs/config for the most recent version.// +// Revision $Id: generate.cpp 70001 2011-03-15 13:17:46Z johnmaddock $ +// + + +// Test file for macro BOOST_NO_UNIFIED_INITIALIZATION_SYNTAX +// This file should not compile, if it does then +// BOOST_NO_UNIFIED_INITIALIZATION_SYNTAX should not be defined. +// See file boost_no_unified_init.ipp for details + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include <boost/config.hpp> +#include "test.hpp" + +#ifdef BOOST_NO_UNIFIED_INITIALIZATION_SYNTAX +#include "boost_no_unified_init.ipp" +#else +#error "this file should not compile" +#endif + +int main( int, char *[] ) +{ + return boost_no_unified_initialization_syntax::test(); +} + diff --git a/libs/config/test/no_unified_init_pass.cpp b/libs/config/test/no_unified_init_pass.cpp new file mode 100644 index 0000000000..108a4a5015 --- /dev/null +++ b/libs/config/test/no_unified_init_pass.cpp @@ -0,0 +1,37 @@ +// This file was automatically generated on Mon May 09 12:11:17 2011 +// by libs/config/tools/generate.cpp +// Copyright John Maddock 2002-4. +// 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) + +// See http://www.boost.org/libs/config for the most recent version.// +// Revision $Id: generate.cpp 70001 2011-03-15 13:17:46Z johnmaddock $ +// + + +// Test file for macro BOOST_NO_UNIFIED_INITIALIZATION_SYNTAX +// This file should compile, if it does not then +// BOOST_NO_UNIFIED_INITIALIZATION_SYNTAX should be defined. +// See file boost_no_unified_init.ipp for details + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include <boost/config.hpp> +#include "test.hpp" + +#ifndef BOOST_NO_UNIFIED_INITIALIZATION_SYNTAX +#include "boost_no_unified_init.ipp" +#else +namespace boost_no_unified_initialization_syntax = empty_boost; +#endif + +int main( int, char *[] ) +{ + return boost_no_unified_initialization_syntax::test(); +} + diff --git a/libs/config/test/no_using_breaks_adl_fail.cpp b/libs/config/test/no_using_breaks_adl_fail.cpp new file mode 100644 index 0000000000..39a9b84d66 --- /dev/null +++ b/libs/config/test/no_using_breaks_adl_fail.cpp @@ -0,0 +1,34 @@ +// This file was automatically generated on Fri Dec 03 18:04:02 2004 +// by libs/config/tools/generate.cpp +// Copyright John Maddock 2002-4. +// 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) + +// See http://www.boost.org/libs/config for the most recent version. + +// Test file for macro BOOST_FUNCTION_SCOPE_USING_DECLARATION_BREAKS_ADL +// This file should not compile, if it does then +// BOOST_FUNCTION_SCOPE_USING_DECLARATION_BREAKS_ADL should not be defined. +// See file boost_no_using_breaks_adl.ipp for details + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include <boost/config.hpp> +#include "test.hpp" + +#ifdef BOOST_FUNCTION_SCOPE_USING_DECLARATION_BREAKS_ADL +#include "boost_no_using_breaks_adl.ipp" +#else +#error "this file should not compile" +#endif + +int main( int, char *[] ) +{ + return boost_function_scope_using_declaration_breaks_adl::test(); +} + diff --git a/libs/config/test/no_using_breaks_adl_pass.cpp b/libs/config/test/no_using_breaks_adl_pass.cpp new file mode 100644 index 0000000000..5f4cb49331 --- /dev/null +++ b/libs/config/test/no_using_breaks_adl_pass.cpp @@ -0,0 +1,34 @@ +// This file was automatically generated on Fri Dec 03 18:04:02 2004 +// by libs/config/tools/generate.cpp +// Copyright John Maddock 2002-4. +// 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) + +// See http://www.boost.org/libs/config for the most recent version. + +// Test file for macro BOOST_FUNCTION_SCOPE_USING_DECLARATION_BREAKS_ADL +// This file should compile, if it does not then +// BOOST_FUNCTION_SCOPE_USING_DECLARATION_BREAKS_ADL should be defined. +// See file boost_no_using_breaks_adl.ipp for details + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include <boost/config.hpp> +#include "test.hpp" + +#ifndef BOOST_FUNCTION_SCOPE_USING_DECLARATION_BREAKS_ADL +#include "boost_no_using_breaks_adl.ipp" +#else +namespace boost_function_scope_using_declaration_breaks_adl = empty_boost; +#endif + +int main( int, char *[] ) +{ + return boost_function_scope_using_declaration_breaks_adl::test(); +} + diff --git a/libs/config/test/no_using_decl_overld_fail.cpp b/libs/config/test/no_using_decl_overld_fail.cpp new file mode 100644 index 0000000000..35e12697a6 --- /dev/null +++ b/libs/config/test/no_using_decl_overld_fail.cpp @@ -0,0 +1,34 @@ +// This file was automatically generated on Fri Dec 03 18:04:02 2004 +// by libs/config/tools/generate.cpp +// Copyright John Maddock 2002-4. +// 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) + +// See http://www.boost.org/libs/config for the most recent version. + +// Test file for macro BOOST_NO_USING_DECLARATION_OVERLOADS_FROM_TYPENAME_BASE +// This file should not compile, if it does then +// BOOST_NO_USING_DECLARATION_OVERLOADS_FROM_TYPENAME_BASE should not be defined. +// See file boost_no_using_decl_overld.ipp for details + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include <boost/config.hpp> +#include "test.hpp" + +#ifdef BOOST_NO_USING_DECLARATION_OVERLOADS_FROM_TYPENAME_BASE +#include "boost_no_using_decl_overld.ipp" +#else +#error "this file should not compile" +#endif + +int main( int, char *[] ) +{ + return boost_no_using_declaration_overloads_from_typename_base::test(); +} + diff --git a/libs/config/test/no_using_decl_overld_pass.cpp b/libs/config/test/no_using_decl_overld_pass.cpp new file mode 100644 index 0000000000..c5290fc454 --- /dev/null +++ b/libs/config/test/no_using_decl_overld_pass.cpp @@ -0,0 +1,34 @@ +// This file was automatically generated on Fri Dec 03 18:04:02 2004 +// by libs/config/tools/generate.cpp +// Copyright John Maddock 2002-4. +// 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) + +// See http://www.boost.org/libs/config for the most recent version. + +// Test file for macro BOOST_NO_USING_DECLARATION_OVERLOADS_FROM_TYPENAME_BASE +// This file should compile, if it does not then +// BOOST_NO_USING_DECLARATION_OVERLOADS_FROM_TYPENAME_BASE should be defined. +// See file boost_no_using_decl_overld.ipp for details + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include <boost/config.hpp> +#include "test.hpp" + +#ifndef BOOST_NO_USING_DECLARATION_OVERLOADS_FROM_TYPENAME_BASE +#include "boost_no_using_decl_overld.ipp" +#else +namespace boost_no_using_declaration_overloads_from_typename_base = empty_boost; +#endif + +int main( int, char *[] ) +{ + return boost_no_using_declaration_overloads_from_typename_base::test(); +} + diff --git a/libs/config/test/no_using_template_fail.cpp b/libs/config/test/no_using_template_fail.cpp new file mode 100644 index 0000000000..febbbcd66a --- /dev/null +++ b/libs/config/test/no_using_template_fail.cpp @@ -0,0 +1,34 @@ +// This file was automatically generated on Fri Dec 03 18:04:02 2004 +// by libs/config/tools/generate.cpp +// Copyright John Maddock 2002-4. +// 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) + +// See http://www.boost.org/libs/config for the most recent version. + +// Test file for macro BOOST_NO_USING_TEMPLATE +// This file should not compile, if it does then +// BOOST_NO_USING_TEMPLATE should not be defined. +// See file boost_no_using_template.ipp for details + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include <boost/config.hpp> +#include "test.hpp" + +#ifdef BOOST_NO_USING_TEMPLATE +#include "boost_no_using_template.ipp" +#else +#error "this file should not compile" +#endif + +int main( int, char *[] ) +{ + return boost_no_using_template::test(); +} + diff --git a/libs/config/test/no_using_template_pass.cpp b/libs/config/test/no_using_template_pass.cpp new file mode 100644 index 0000000000..b48a31e363 --- /dev/null +++ b/libs/config/test/no_using_template_pass.cpp @@ -0,0 +1,34 @@ +// This file was automatically generated on Fri Dec 03 18:04:02 2004 +// by libs/config/tools/generate.cpp +// Copyright John Maddock 2002-4. +// 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) + +// See http://www.boost.org/libs/config for the most recent version. + +// Test file for macro BOOST_NO_USING_TEMPLATE +// This file should compile, if it does not then +// BOOST_NO_USING_TEMPLATE should be defined. +// See file boost_no_using_template.ipp for details + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include <boost/config.hpp> +#include "test.hpp" + +#ifndef BOOST_NO_USING_TEMPLATE +#include "boost_no_using_template.ipp" +#else +namespace boost_no_using_template = empty_boost; +#endif + +int main( int, char *[] ) +{ + return boost_no_using_template::test(); +} + diff --git a/libs/config/test/no_variadic_macros_fail.cpp b/libs/config/test/no_variadic_macros_fail.cpp new file mode 100644 index 0000000000..e119546953 --- /dev/null +++ b/libs/config/test/no_variadic_macros_fail.cpp @@ -0,0 +1,37 @@ +// This file was automatically generated on Tue Aug 17 09:59:01 2010 +// by libs/config/tools/generate.cpp +// Copyright John Maddock 2002-4. +// 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) + +// See http://www.boost.org/libs/config for the most recent version.// +// Revision $Id: generate.cpp 49281 2008-10-11 15:40:44Z johnmaddock $ +// + + +// Test file for macro BOOST_NO_VARIADIC_MACROS +// This file should not compile, if it does then +// BOOST_NO_VARIADIC_MACROS should not be defined. +// See file boost_no_variadic_macros.ipp for details + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include <boost/config.hpp> +#include "test.hpp" + +#ifdef BOOST_NO_VARIADIC_MACROS +#include "boost_no_variadic_macros.ipp" +#else +#error "this file should not compile" +#endif + +int main( int, char *[] ) +{ + return boost_no_variadic_macros::test(); +} + diff --git a/libs/config/test/no_variadic_macros_pass.cpp b/libs/config/test/no_variadic_macros_pass.cpp new file mode 100644 index 0000000000..7475c4fa29 --- /dev/null +++ b/libs/config/test/no_variadic_macros_pass.cpp @@ -0,0 +1,37 @@ +// This file was automatically generated on Tue Aug 17 09:59:01 2010 +// by libs/config/tools/generate.cpp +// Copyright John Maddock 2002-4. +// 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) + +// See http://www.boost.org/libs/config for the most recent version.// +// Revision $Id: generate.cpp 49281 2008-10-11 15:40:44Z johnmaddock $ +// + + +// Test file for macro BOOST_NO_VARIADIC_MACROS +// This file should compile, if it does not then +// BOOST_NO_VARIADIC_MACROS should be defined. +// See file boost_no_variadic_macros.ipp for details + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include <boost/config.hpp> +#include "test.hpp" + +#ifndef BOOST_NO_VARIADIC_MACROS +#include "boost_no_variadic_macros.ipp" +#else +namespace boost_no_variadic_macros = empty_boost; +#endif + +int main( int, char *[] ) +{ + return boost_no_variadic_macros::test(); +} + diff --git a/libs/config/test/no_variadic_templates_fail.cpp b/libs/config/test/no_variadic_templates_fail.cpp new file mode 100644 index 0000000000..dd7cd57e5b --- /dev/null +++ b/libs/config/test/no_variadic_templates_fail.cpp @@ -0,0 +1,37 @@ +// This file was automatically generated on Thu May 29 07:24:54 2008 +// by libs/config/tools/generate.cpp +// Copyright John Maddock 2002-4. +// 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) + +// See http://www.boost.org/libs/config for the most recent version.// +// Revision $Id: no_variadic_templates_fail.cpp 51606 2009-03-04 14:28:36Z bemandawes $ +// + + +// Test file for macro BOOST_NO_VARIADIC_TEMPLATES +// This file should not compile, if it does then +// BOOST_NO_VARIADIC_TEMPLATES should not be defined. +// See file boost_no_variadic_templates.ipp for details + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include <boost/config.hpp> +#include "test.hpp" + +#ifdef BOOST_NO_VARIADIC_TEMPLATES +#include "boost_no_variadic_templates.ipp" +#else +#error "this file should not compile" +#endif + +int main( int, char *[] ) +{ + return boost_no_variadic_templates::test(); +} + diff --git a/libs/config/test/no_variadic_templates_pass.cpp b/libs/config/test/no_variadic_templates_pass.cpp new file mode 100644 index 0000000000..e7bbaf0392 --- /dev/null +++ b/libs/config/test/no_variadic_templates_pass.cpp @@ -0,0 +1,37 @@ +// This file was automatically generated on Thu May 29 07:24:54 2008 +// by libs/config/tools/generate.cpp +// Copyright John Maddock 2002-4. +// 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) + +// See http://www.boost.org/libs/config for the most recent version.// +// Revision $Id: no_variadic_templates_pass.cpp 51606 2009-03-04 14:28:36Z bemandawes $ +// + + +// Test file for macro BOOST_NO_VARIADIC_TEMPLATES +// This file should compile, if it does not then +// BOOST_NO_VARIADIC_TEMPLATES should be defined. +// See file boost_no_variadic_templates.ipp for details + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include <boost/config.hpp> +#include "test.hpp" + +#ifndef BOOST_NO_VARIADIC_TEMPLATES +#include "boost_no_variadic_templates.ipp" +#else +namespace boost_no_variadic_templates = empty_boost; +#endif + +int main( int, char *[] ) +{ + return boost_no_variadic_templates::test(); +} + diff --git a/libs/config/test/no_void_returns_fail.cpp b/libs/config/test/no_void_returns_fail.cpp new file mode 100644 index 0000000000..ff08562a3e --- /dev/null +++ b/libs/config/test/no_void_returns_fail.cpp @@ -0,0 +1,34 @@ +// This file was automatically generated on Fri Dec 03 18:04:02 2004 +// by libs/config/tools/generate.cpp +// Copyright John Maddock 2002-4. +// 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) + +// See http://www.boost.org/libs/config for the most recent version. + +// Test file for macro BOOST_NO_VOID_RETURNS +// This file should not compile, if it does then +// BOOST_NO_VOID_RETURNS should not be defined. +// See file boost_no_void_returns.ipp for details + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include <boost/config.hpp> +#include "test.hpp" + +#ifdef BOOST_NO_VOID_RETURNS +#include "boost_no_void_returns.ipp" +#else +#error "this file should not compile" +#endif + +int main( int, char *[] ) +{ + return boost_no_void_returns::test(); +} + diff --git a/libs/config/test/no_void_returns_pass.cpp b/libs/config/test/no_void_returns_pass.cpp new file mode 100644 index 0000000000..73a0882b7e --- /dev/null +++ b/libs/config/test/no_void_returns_pass.cpp @@ -0,0 +1,34 @@ +// This file was automatically generated on Fri Dec 03 18:04:02 2004 +// by libs/config/tools/generate.cpp +// Copyright John Maddock 2002-4. +// 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) + +// See http://www.boost.org/libs/config for the most recent version. + +// Test file for macro BOOST_NO_VOID_RETURNS +// This file should compile, if it does not then +// BOOST_NO_VOID_RETURNS should be defined. +// See file boost_no_void_returns.ipp for details + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include <boost/config.hpp> +#include "test.hpp" + +#ifndef BOOST_NO_VOID_RETURNS +#include "boost_no_void_returns.ipp" +#else +namespace boost_no_void_returns = empty_boost; +#endif + +int main( int, char *[] ) +{ + return boost_no_void_returns::test(); +} + diff --git a/libs/config/test/no_wchar_t_fail.cpp b/libs/config/test/no_wchar_t_fail.cpp new file mode 100644 index 0000000000..c1b0712e3e --- /dev/null +++ b/libs/config/test/no_wchar_t_fail.cpp @@ -0,0 +1,34 @@ +// This file was automatically generated on Fri Dec 03 18:04:02 2004 +// by libs/config/tools/generate.cpp +// Copyright John Maddock 2002-4. +// 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) + +// See http://www.boost.org/libs/config for the most recent version. + +// Test file for macro BOOST_NO_INTRINSIC_WCHAR_T +// This file should not compile, if it does then +// BOOST_NO_INTRINSIC_WCHAR_T should not be defined. +// See file boost_no_wchar_t.ipp for details + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include <boost/config.hpp> +#include "test.hpp" + +#ifdef BOOST_NO_INTRINSIC_WCHAR_T +#include "boost_no_wchar_t.ipp" +#else +#error "this file should not compile" +#endif + +int main( int, char *[] ) +{ + return boost_no_intrinsic_wchar_t::test(); +} + diff --git a/libs/config/test/no_wchar_t_pass.cpp b/libs/config/test/no_wchar_t_pass.cpp new file mode 100644 index 0000000000..b31c07fb57 --- /dev/null +++ b/libs/config/test/no_wchar_t_pass.cpp @@ -0,0 +1,34 @@ +// This file was automatically generated on Fri Dec 03 18:04:02 2004 +// by libs/config/tools/generate.cpp +// Copyright John Maddock 2002-4. +// 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) + +// See http://www.boost.org/libs/config for the most recent version. + +// Test file for macro BOOST_NO_INTRINSIC_WCHAR_T +// This file should compile, if it does not then +// BOOST_NO_INTRINSIC_WCHAR_T should be defined. +// See file boost_no_wchar_t.ipp for details + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include <boost/config.hpp> +#include "test.hpp" + +#ifndef BOOST_NO_INTRINSIC_WCHAR_T +#include "boost_no_wchar_t.ipp" +#else +namespace boost_no_intrinsic_wchar_t = empty_boost; +#endif + +int main( int, char *[] ) +{ + return boost_no_intrinsic_wchar_t::test(); +} + diff --git a/libs/config/test/test.hpp b/libs/config/test/test.hpp new file mode 100644 index 0000000000..af7578096f --- /dev/null +++ b/libs/config/test/test.hpp @@ -0,0 +1,21 @@ +// (C) Copyright John Maddock 2001. +// 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) + +// See http://www.boost.org/libs/config for the most recent version. + +#ifndef BOOST_CONFIG_TEST_HPP +#define BOOST_CONFIG_TEST_HPP + +namespace empty_boost{ + +int test() +{ + return 0; +} + +} + +#endif + diff --git a/libs/config/test/threads/test_thread_fail1.cpp b/libs/config/test/threads/test_thread_fail1.cpp new file mode 100644 index 0000000000..5e0406bb3d --- /dev/null +++ b/libs/config/test/threads/test_thread_fail1.cpp @@ -0,0 +1,10 @@ +// (C) 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) + +// disable thread support: +#define BOOST_DISABLE_THREADS +// this should now be a compiler error: +#include <boost/config/requires_threads.hpp> +// we should never get here... diff --git a/libs/config/test/threads/test_thread_fail2.cpp b/libs/config/test/threads/test_thread_fail2.cpp new file mode 100644 index 0000000000..56ba4a0732 --- /dev/null +++ b/libs/config/test/threads/test_thread_fail2.cpp @@ -0,0 +1,13 @@ +// (C) 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) + +#include <boost/config.hpp> +// disable thread support: +#ifdef BOOST_HAS_THREADS +# undef BOOST_HAS_THREADS +#endif +// this should now be a compiler error: +#include <boost/config/requires_threads.hpp> +// we should never get here... diff --git a/libs/config/tools/Jamfile.v2 b/libs/config/tools/Jamfile.v2 new file mode 100644 index 0000000000..de66b8d220 --- /dev/null +++ b/libs/config/tools/Jamfile.v2 @@ -0,0 +1,15 @@ +# Copyright John Maddock 2005. +# 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) + +run generate.cpp + ../../regex/build//boost_regex + ../../filesystem/build//boost_filesystem ../../system/build//boost_system + : ../../.. +; + + + + + diff --git a/libs/config/tools/configure.in b/libs/config/tools/configure.in new file mode 100644 index 0000000000..8c69620e85 --- /dev/null +++ b/libs/config/tools/configure.in @@ -0,0 +1,463 @@ +# 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 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/libs/config/tools/generate.cpp b/libs/config/tools/generate.cpp new file mode 100644 index 0000000000..c29f511210 --- /dev/null +++ b/libs/config/tools/generate.cpp @@ -0,0 +1,290 @@ +// (C) Copyright John Maddock 2004. +// 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) + +// +// This progam scans for *.ipp files in the libs/config/test +// directory and then generates the *.cpp test files from them +// along with config_test.cpp and a Jamfile. +// + +#include <boost/regex.hpp> +#include <boost/filesystem/path.hpp> +#include <boost/filesystem/operations.hpp> +#include <boost/filesystem/fstream.hpp> +#include <boost/test/included/prg_exec_monitor.hpp> +#include <iostream> +#include <sstream> +#include <string> +#include <set> +#include <ctime> + +namespace fs = boost::filesystem; + +fs::path config_path; + +std::string copyright( +"// Copyright John Maddock 2002-4.\n" +"// Use, modification and distribution are subject to the \n" +"// Boost Software License, Version 1.0. (See accompanying file \n" +"// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)\n" +"\n" +"// See http://www.boost.org/libs/config for the most recent version." +"//\n// Revision $Id: generate.cpp 73153 2011-07-16 20:12:46Z eric_niebler $\n//\n"); + +std::stringstream config_test1; +std::stringstream config_test1a; +std::stringstream config_test2; +std::stringstream jamfile; +std::stringstream jamfile_v2; +std::set<std::string> macro_list; + + +void write_config_info() +{ + // load the file into memory so we can scan it: + fs::ifstream ifs(config_path / "config_info.cpp"); + std::string file_text; + std::copy(std::istreambuf_iterator<char>(ifs), std::istreambuf_iterator<char>(), std::back_inserter(file_text)); + ifs.close(); + // create macro list: + std::stringstream ss; + for(std::set<std::string>::const_iterator i(macro_list.begin()), j(macro_list.end()); + i != j; + ++i) + { + ss << " PRINT_MACRO(" << *i << ");\n"; + } + std::string macros = ss.str(); + // scan for Boost macro block: + boost::regex re("BEGIN\\s+GENERATED\\s+BLOCK\\s+DO\\s+NOT\\s+EDIT\\s+THIS[^\\n]+\\n(.*?)\\n\\s+//\\s*END\\s+GENERATED\\s+BLOCK"); + boost::smatch what; + if(boost::regex_search(file_text, what, re)) + { + std::string new_text; + new_text.append(what.prefix().first, what[1].first); + new_text.append(macros); + new_text.append(what[1].second, what.suffix().second); + fs::ofstream ofs(config_path / "config_info.cpp"); + ofs << new_text; + } +} + +void write_config_test() +{ + fs::ofstream ofs(config_path / "config_test.cpp"); + time_t t = std::time(0); + ofs << "// This file was automatically generated on " << std::ctime(&t); + ofs << "// by libs/config/tools/generate.cpp\n" << copyright << std::endl; + ofs << "// Test file for config setup\n" + "// This file should compile, if it does not then\n" + "// one or more macros need to be defined.\n" + "// see boost_*.ipp for more details\n\n" + "// Do not edit this file, it was generated automatically by\n\n" + "#include <boost/config.hpp>\n#include <iostream>\n#include \"test.hpp\"\n\n" + "int error_count = 0;\n\n"; + ofs << config_test1.str() << std::endl; + ofs << config_test1a.str() << std::endl; + ofs << "int main( int, char *[] )\n{\n" << config_test2.str() << " return error_count;\n}\n\n"; +} + +void write_jamfile_v2() +{ + fs::ofstream ofs(config_path / "all" / "Jamfile.v2"); + time_t t = std::time(0); + ofs << "#\n# Regression test Jamfile for boost configuration setup.\n# *** DO NOT EDIT THIS FILE BY HAND ***\n" + "# This file was automatically generated on " << std::ctime(&t); + ofs << "# by libs/config/tools/generate.cpp\n" + "# Copyright John Maddock.\n" + "# Use, modification and distribution are subject to the \n" + "# Boost Software License, Version 1.0. (See accompanying file \n" + "# LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)\n" + "#\n# If you need to alter build preferences then set them in\n" + "# the template defined in options_v2.jam.\n#\n" + "path-constant DOT : . ;\n" + "include $(DOT)/options_v2.jam ;\n\n" + "run ../config_info.cpp : : : <threading>single <toolset>msvc:<runtime-link>static <toolset>msvc:<link>static ;\n" + "run ../config_info.cpp : : : <threading>multi : config_info_threaded ;\n" + "run ../math_info.cpp : : : <toolset>borland:<runtime-link>static <toolset>borland:<link>static ;\n" + "run ../config_test.cpp : : : <threading>single <toolset>msvc:<runtime-link>static <toolset>msvc:<link>static ;\n" + "run ../config_test.cpp : : : <threading>multi : config_test_threaded ;\n" + "run ../limits_test.cpp ../../../test/build//boost_test_exec_monitor ;\n" + "run ../abi/abi_test.cpp ../abi/main.cpp ;\n\n"; + ofs << jamfile_v2.str() << std::endl; + +} + +void write_test_file(const fs::path& file, + const std::string& macro_name, + const std::string& namespace_name, + const std::string& header_file, + bool positive_test, + bool expect_success) +{ + if(!fs::exists(file)) + { + std::cout << "Writing test file " << file.string() << std::endl; + + fs::ofstream ofs(file); + std::time_t t = std::time(0); + ofs << "// This file was automatically generated on " << std::ctime(&t); + ofs << "// by libs/config/tools/generate.cpp\n" << copyright << std::endl; + ofs << "\n// Test file for macro " << macro_name << std::endl; + + if(expect_success) + { + ofs << "// This file should compile, if it does not then\n" + "// " << macro_name << " should "; + if(positive_test) + ofs << "not "; + ofs << "be defined.\n"; + } + else + { + ofs << "// This file should not compile, if it does then\n" + "// " << macro_name << " should "; + if(!positive_test) + ofs << "not "; + ofs << "be defined.\n"; + } + ofs << "// See file " << header_file << " for details\n\n"; + + ofs << "// Must not have BOOST_ASSERT_CONFIG set; it defeats\n" + "// the objective of this file:\n" + "#ifdef BOOST_ASSERT_CONFIG\n" + "# undef BOOST_ASSERT_CONFIG\n" + "#endif\n\n"; + + static const boost::regex tr1_exp("BOOST_HAS_TR1.*"); + + ofs << "#include <boost/config.hpp>\n"; + + if(regex_match(macro_name, tr1_exp)) + ofs << "#include <boost/tr1/detail/config.hpp>\n"; + + ofs << "#include \"test.hpp\"\n\n" + "#if"; + if(positive_test != expect_success) + ofs << "n"; + ofs << "def " << macro_name << + "\n#include \"" << header_file << + "\"\n#else\n"; + if(expect_success) + ofs << "namespace " << namespace_name << " = empty_boost;\n"; + else + ofs << "#error \"this file should not compile\"\n"; + ofs << "#endif\n\n"; + + ofs << "int main( int, char *[] )\n{\n return " << namespace_name << "::test();\n}\n\n"; + } + else + { + std::cout << "Skipping existing test file " << file.string() << std::endl; + } +} + +void process_ipp_file(const fs::path& file, bool positive_test) +{ + std::cout << "Info: Scanning file: " << file.string() << std::endl; + + // our variables: + std::string file_text; + std::string macro_name; + std::string namespace_name; + fs::path positive_file; + fs::path negative_file; + + // load the file into memory so we can scan it: + fs::ifstream ifs(file); + std::copy(std::istreambuf_iterator<char>(ifs), std::istreambuf_iterator<char>(), std::back_inserter(file_text)); + ifs.close(); + // scan for the macro name: + boost::regex macro_regex("//\\s*MACRO\\s*:\\s*(\\w+)"); + boost::smatch macro_match; + if(boost::regex_search(file_text, macro_match, macro_regex)) + { + macro_name = macro_match[1]; + macro_list.insert(macro_name); + namespace_name = boost::regex_replace(file_text, macro_regex, "\\L$1", boost::format_first_only | boost::format_no_copy); + } + if(macro_name.empty()) + { + std::cout << "Error: no macro definition found in " << file.string(); + } + else + { + std::cout << "Info: Macroname: " << macro_name << std::endl; + } + + // get the output filesnames: + boost::regex file_regex("boost_([^.]+)\\.ipp"); + positive_file = file.branch_path() / boost::regex_replace(file.leaf().string(), file_regex, "$1_pass.cpp"); + negative_file = file.branch_path() / boost::regex_replace(file.leaf().string(), file_regex, "$1_fail.cpp"); + write_test_file(positive_file, macro_name, namespace_name, file.leaf().string(), positive_test, true); + write_test_file(negative_file, macro_name, namespace_name, file.leaf().string(), positive_test, false); + + // always create config_test data, + // positive and negative tests go to separate streams, because for some + // reason some compilers choke unless we put them in a particular order... + std::ostream* pout = positive_test ? &config_test1a : &config_test1; + *pout << "#if"; + if(!positive_test) + *pout << "n"; + *pout << "def " << macro_name + << "\n#include \"" << file.leaf().string() << "\"\n#else\nnamespace " + << namespace_name << " = empty_boost;\n#endif\n"; + + config_test2 << " if(0 != " << namespace_name << "::test())\n" + " {\n" + " std::cerr << \"Failed test for " << macro_name << " at: \" << __FILE__ << \":\" << __LINE__ << std::endl;\n" + " ++error_count;\n" + " }\n"; + + // always generate the jamfile data: + jamfile << "test-suite \"" << macro_name << "\" : \n" + "[ run " << positive_file.leaf().string() << " <template>config_options ]\n" + "[ compile-fail " << negative_file.leaf().string() << " <template>config_options ] ;\n"; + + jamfile_v2 << "test-suite \"" << macro_name << "\" : \n" + "[ run ../" << positive_file.leaf().string() << " ]\n" + "[ compile-fail ../" << negative_file.leaf().string() << " ] ;\n"; + +} + +int cpp_main(int argc, char* argv[]) +{ + // + // get the boost path to begin with: + // + if(argc > 1) + { + fs::path p(argv[1]); + config_path = p / "libs" / "config" / "test" ; + } + else + { + // try __FILE__: + fs::path p(__FILE__); + config_path = p.branch_path().branch_path() / "test"; + } + std::cout << "Info: Boost.Config test path set as: " << config_path.string() << std::endl; + + // enumerate *.ipp files: + boost::regex ipp_mask("boost_(?:(has)|no).*\\.ipp"); + boost::smatch ipp_match; + fs::directory_iterator i(config_path), j; + while(i != j) + { + if(boost::regex_match(i->path().leaf().string(), ipp_match, ipp_mask)) + { + process_ipp_file(*i, ipp_match[1].matched); + } + ++i; + } + write_config_test(); + write_jamfile_v2(); + write_config_info(); + return 0; +} + |