From 38009aaf3b3020a4d5e00244930963486d291d50 Mon Sep 17 00:00:00 2001 From: John Maddock Date: Tue, 18 Sep 2001 11:13:39 +0000 Subject: [PATCH] commit of split-config, including any changes required to existing libraries (mainly regex). [SVN r11138] --- config.htm | 1264 +++++++++ config_test.cpp | 196 -- configure | 2338 +++++++++++++++++ include/boost/config.hpp | 682 +---- include/boost/config/compiler/borland.hpp | 55 + include/boost/config/compiler/comeau.hpp | 36 + include/boost/config/compiler/common_edg.hpp | 18 + include/boost/config/compiler/compaq_cxx.hpp | 18 + include/boost/config/compiler/gcc.hpp | 59 + include/boost/config/compiler/greenhills.hpp | 27 + include/boost/config/compiler/hp_acc.hpp | 36 + include/boost/config/compiler/intel.hpp | 56 + include/boost/config/compiler/kai.hpp | 27 + include/boost/config/compiler/metrowerks.hpp | 50 + include/boost/config/compiler/mpw.hpp | 49 + include/boost/config/compiler/sgi_mipspro.hpp | 16 + include/boost/config/compiler/sunpro_cc.hpp | 47 + include/boost/config/compiler/vacpp.hpp | 30 + include/boost/config/compiler/visualc.hpp | 75 + include/boost/config/platform/aix.hpp | 16 + include/boost/config/platform/beos.hpp | 23 + include/boost/config/platform/bsd.hpp | 36 + include/boost/config/platform/cygwin.hpp | 16 + include/boost/config/platform/hpux.hpp | 14 + include/boost/config/platform/irix.hpp | 13 + include/boost/config/platform/linux.hpp | 50 + include/boost/config/platform/macos.hpp | 26 + include/boost/config/platform/sunpro.hpp | 13 + include/boost/config/platform/win32.hpp | 28 + include/boost/config/posix_features.hpp | 33 + .../boost/config/select_compiler_config.hpp | 77 + .../boost/config/select_platform_config.hpp | 62 + include/boost/config/select_stdlib_config.hpp | 57 + include/boost/config/stdlib/dinkumware.hpp | 68 + include/boost/config/stdlib/libstdcpp3.hpp | 19 + include/boost/config/stdlib/msl.hpp | 46 + include/boost/config/stdlib/roguewave.hpp | 102 + include/boost/config/stdlib/sgi.hpp | 81 + include/boost/config/stdlib/stlport.hpp | 91 + include/boost/config/stdlib/vacpp.hpp | 13 + include/boost/config/suffix.hpp | 293 +++ include/boost/config/user.hpp | 58 + include/boost/version.hpp | 26 + index.htm | 89 - test/boost_has_2arg_use_facet.ipp | 28 + test/boost_has_bethreads.ipp | 31 + test/boost_has_hash.ipp | 44 + test/boost_has_macro_use_facet.ipp | 32 + test/boost_has_nl_types_h.ipp | 26 + test/boost_has_pthreads.ipp | 32 + test/boost_has_slist.ipp | 36 + test/boost_has_stdint_h.ipp | 36 + test/boost_has_stlp_use_facet.ipp | 28 + test/boost_has_unistd_h.ipp | 23 + test/boost_has_vc6_mem_templ.ipp | 55 + test/boost_has_vc_iterator.ipp | 37 + test/boost_has_winthreads.ipp | 31 + test/boost_no_arg_dep_lookup.ipp | 34 + test/boost_no_auto_ptr.ipp | 50 + test/boost_no_cv_spec.ipp | 44 + test/boost_no_cv_void_spec.ipp | 42 + test/boost_no_cwchar.ipp | 30 + test/boost_no_cwctype.ipp | 44 + test/boost_no_dep_nested_class.ipp | 55 + test/boost_no_dep_val_param.ipp | 33 + test/boost_no_exp_func_tem_arg.ipp | 35 + test/boost_no_func_tmp_order.ipp | 46 + test/boost_no_inline_memb_init.ipp | 52 + test/boost_no_iter_construct.ipp | 35 + test/boost_no_limits.ipp | 31 + test/boost_no_limits_const_exp.ipp | 39 + test/boost_no_mem_tem_keyword.ipp | 65 + test/boost_no_mem_templ_frnds.ipp | 67 + test/boost_no_mem_templates.ipp | 60 + test/boost_no_ops_in_namespace.ipp | 80 + test/boost_no_partial_spec.ipp | 53 + test/boost_no_priv_aggregate.ipp | 34 + test/boost_no_ptr_mem_const.ipp | 91 + test/boost_no_sstream.ipp | 26 + test/boost_no_std_allocator.ipp | 66 + test/boost_no_std_distance.ipp | 28 + test/boost_no_std_iter_traits.ipp | 76 + test/boost_no_std_iterator.ipp | 64 + test/boost_no_std_locale.ipp | 33 + test/boost_no_std_messages.ipp | 26 + test/boost_no_std_min_max.ipp | 30 + test/boost_no_std_oi_assign.ipp | 37 + test/boost_no_std_use_facet.ipp | 26 + test/boost_no_std_wstring.ipp | 25 + test/boost_no_stdc_namespace.ipp | 41 + test/boost_no_swprintf.ipp | 28 + test/boost_no_using_template.ipp | 43 + test/boost_no_wchar_t.ipp | 40 + test/config_info.cpp | 862 ++++++ test/config_test.cpp | 318 +++ test/has_2arg_use_facet_fail.cpp | 36 + test/has_2arg_use_facet_pass.cpp | 36 + test/has_bethreads_fail.cpp | 36 + test/has_bethreads_pass.cpp | 36 + test/has_hash_fail.cpp | 36 + test/has_hash_pass.cpp | 36 + test/has_macro_use_facet_fail.cpp | 36 + test/has_macro_use_facet_pass.cpp | 36 + test/has_nl_types_h_fail.cpp | 36 + test/has_nl_types_h_pass.cpp | 36 + test/has_pthreads_fail.cpp | 36 + test/has_pthreads_pass.cpp | 36 + test/has_slist_fail.cpp | 36 + test/has_slist_pass.cpp | 36 + test/has_stdint_h_fail.cpp | 36 + test/has_stdint_h_pass.cpp | 36 + test/has_stlp_use_facet_fail.cpp | 36 + test/has_stlp_use_facet_pass.cpp | 36 + test/has_unistd_h_fail.cpp | 36 + test/has_unistd_h_pass.cpp | 36 + test/has_vc6_mem_templ_fail.cpp | 36 + test/has_vc6_mem_templ_pass.cpp | 36 + test/has_vc_iterator_fail.cpp | 36 + test/has_vc_iterator_pass.cpp | 36 + test/has_winthreads_fail.cpp | 36 + test/has_winthreads_pass.cpp | 36 + limits_test.cpp => test/limits_test.cpp | 0 test/no_arg_dep_lookup_fail.cpp | 36 + test/no_arg_dep_lookup_pass.cpp | 36 + test/no_auto_ptr_fail.cpp | 36 + test/no_auto_ptr_pass.cpp | 36 + test/no_cv_spec_fail.cpp | 36 + test/no_cv_spec_pass.cpp | 36 + test/no_cv_void_spec_fail.cpp | 36 + test/no_cv_void_spec_pass.cpp | 36 + test/no_cwchar_fail.cpp | 36 + test/no_cwchar_pass.cpp | 36 + test/no_cwctype_fail.cpp | 36 + test/no_cwctype_pass.cpp | 36 + test/no_dep_nested_class_fail.cpp | 36 + test/no_dep_nested_class_pass.cpp | 36 + test/no_dep_val_param_fail.cpp | 36 + test/no_dep_val_param_pass.cpp | 36 + test/no_exp_func_tem_arg_fail.cpp | 36 + test/no_exp_func_tem_arg_pass.cpp | 36 + test/no_func_tmp_order_fail.cpp | 36 + test/no_func_tmp_order_pass.cpp | 36 + test/no_inline_memb_init_fail.cpp | 36 + test/no_inline_memb_init_pass.cpp | 36 + test/no_iter_construct_fail.cpp | 36 + test/no_iter_construct_pass.cpp | 36 + test/no_limits_const_exp_fail.cpp | 36 + test/no_limits_const_exp_pass.cpp | 36 + test/no_limits_fail.cpp | 36 + test/no_limits_pass.cpp | 36 + test/no_mem_tem_keyword_fail.cpp | 36 + test/no_mem_tem_keyword_pass.cpp | 36 + test/no_mem_templ_frnds_fail.cpp | 36 + test/no_mem_templ_frnds_pass.cpp | 36 + test/no_mem_templates_fail.cpp | 36 + test/no_mem_templates_pass.cpp | 36 + test/no_ops_in_namespace_fail.cpp | 36 + test/no_ops_in_namespace_pass.cpp | 36 + test/no_partial_spec_fail.cpp | 36 + test/no_partial_spec_pass.cpp | 36 + test/no_priv_aggregate_fail.cpp | 36 + test/no_priv_aggregate_pass.cpp | 36 + test/no_ptr_mem_const_fail.cpp | 36 + test/no_ptr_mem_const_pass.cpp | 36 + test/no_sstream_fail.cpp | 36 + test/no_sstream_pass.cpp | 36 + test/no_std_allocator_fail.cpp | 36 + test/no_std_allocator_pass.cpp | 36 + test/no_std_distance_fail.cpp | 36 + test/no_std_distance_pass.cpp | 36 + test/no_std_iter_traits_fail.cpp | 36 + test/no_std_iter_traits_pass.cpp | 36 + test/no_std_iterator_fail.cpp | 36 + test/no_std_iterator_pass.cpp | 36 + test/no_std_locale_fail.cpp | 36 + test/no_std_locale_pass.cpp | 36 + test/no_std_messages_fail.cpp | 36 + test/no_std_messages_pass.cpp | 36 + test/no_std_min_max_fail.cpp | 36 + test/no_std_min_max_pass.cpp | 36 + test/no_std_oi_assign_fail.cpp | 36 + test/no_std_oi_assign_pass.cpp | 36 + test/no_std_use_facet_fail.cpp | 36 + test/no_std_use_facet_pass.cpp | 36 + test/no_std_wstring_fail.cpp | 36 + test/no_std_wstring_pass.cpp | 36 + test/no_stdc_namespace_fail.cpp | 36 + test/no_stdc_namespace_pass.cpp | 36 + test/no_swprintf_fail.cpp | 36 + test/no_swprintf_pass.cpp | 36 + test/no_using_template_fail.cpp | 36 + test/no_using_template_pass.cpp | 36 + test/no_wchar_t_fail.cpp | 36 + test/no_wchar_t_pass.cpp | 36 + test/regression.cfg | 105 + test/test.hpp | 14 + tools/configure.in | 401 +++ tools/generate | 329 +++ 198 files changed, 13106 insertions(+), 928 deletions(-) create mode 100644 config.htm delete mode 100644 config_test.cpp create mode 100644 configure create mode 100644 include/boost/config/compiler/borland.hpp create mode 100644 include/boost/config/compiler/comeau.hpp create mode 100644 include/boost/config/compiler/common_edg.hpp create mode 100644 include/boost/config/compiler/compaq_cxx.hpp create mode 100644 include/boost/config/compiler/gcc.hpp create mode 100644 include/boost/config/compiler/greenhills.hpp create mode 100644 include/boost/config/compiler/hp_acc.hpp create mode 100644 include/boost/config/compiler/intel.hpp create mode 100644 include/boost/config/compiler/kai.hpp create mode 100644 include/boost/config/compiler/metrowerks.hpp create mode 100644 include/boost/config/compiler/mpw.hpp create mode 100644 include/boost/config/compiler/sgi_mipspro.hpp create mode 100644 include/boost/config/compiler/sunpro_cc.hpp create mode 100644 include/boost/config/compiler/vacpp.hpp create mode 100644 include/boost/config/compiler/visualc.hpp create mode 100644 include/boost/config/platform/aix.hpp create mode 100644 include/boost/config/platform/beos.hpp create mode 100644 include/boost/config/platform/bsd.hpp create mode 100644 include/boost/config/platform/cygwin.hpp create mode 100644 include/boost/config/platform/hpux.hpp create mode 100644 include/boost/config/platform/irix.hpp create mode 100644 include/boost/config/platform/linux.hpp create mode 100644 include/boost/config/platform/macos.hpp create mode 100644 include/boost/config/platform/sunpro.hpp create mode 100644 include/boost/config/platform/win32.hpp create mode 100644 include/boost/config/posix_features.hpp create mode 100644 include/boost/config/select_compiler_config.hpp create mode 100644 include/boost/config/select_platform_config.hpp create mode 100644 include/boost/config/select_stdlib_config.hpp create mode 100644 include/boost/config/stdlib/dinkumware.hpp create mode 100644 include/boost/config/stdlib/libstdcpp3.hpp create mode 100644 include/boost/config/stdlib/msl.hpp create mode 100644 include/boost/config/stdlib/roguewave.hpp create mode 100644 include/boost/config/stdlib/sgi.hpp create mode 100644 include/boost/config/stdlib/stlport.hpp create mode 100644 include/boost/config/stdlib/vacpp.hpp create mode 100644 include/boost/config/suffix.hpp create mode 100644 include/boost/config/user.hpp create mode 100644 include/boost/version.hpp delete mode 100644 index.htm create mode 100644 test/boost_has_2arg_use_facet.ipp create mode 100644 test/boost_has_bethreads.ipp create mode 100644 test/boost_has_hash.ipp create mode 100644 test/boost_has_macro_use_facet.ipp create mode 100644 test/boost_has_nl_types_h.ipp create mode 100644 test/boost_has_pthreads.ipp create mode 100644 test/boost_has_slist.ipp create mode 100644 test/boost_has_stdint_h.ipp create mode 100644 test/boost_has_stlp_use_facet.ipp create mode 100644 test/boost_has_unistd_h.ipp create mode 100644 test/boost_has_vc6_mem_templ.ipp create mode 100644 test/boost_has_vc_iterator.ipp create mode 100644 test/boost_has_winthreads.ipp create mode 100644 test/boost_no_arg_dep_lookup.ipp create mode 100644 test/boost_no_auto_ptr.ipp create mode 100644 test/boost_no_cv_spec.ipp create mode 100644 test/boost_no_cv_void_spec.ipp create mode 100644 test/boost_no_cwchar.ipp create mode 100644 test/boost_no_cwctype.ipp create mode 100644 test/boost_no_dep_nested_class.ipp create mode 100644 test/boost_no_dep_val_param.ipp create mode 100644 test/boost_no_exp_func_tem_arg.ipp create mode 100644 test/boost_no_func_tmp_order.ipp create mode 100644 test/boost_no_inline_memb_init.ipp create mode 100644 test/boost_no_iter_construct.ipp create mode 100644 test/boost_no_limits.ipp create mode 100644 test/boost_no_limits_const_exp.ipp create mode 100644 test/boost_no_mem_tem_keyword.ipp create mode 100644 test/boost_no_mem_templ_frnds.ipp create mode 100644 test/boost_no_mem_templates.ipp create mode 100644 test/boost_no_ops_in_namespace.ipp create mode 100644 test/boost_no_partial_spec.ipp create mode 100644 test/boost_no_priv_aggregate.ipp create mode 100644 test/boost_no_ptr_mem_const.ipp create mode 100644 test/boost_no_sstream.ipp create mode 100644 test/boost_no_std_allocator.ipp create mode 100644 test/boost_no_std_distance.ipp create mode 100644 test/boost_no_std_iter_traits.ipp create mode 100644 test/boost_no_std_iterator.ipp create mode 100644 test/boost_no_std_locale.ipp create mode 100644 test/boost_no_std_messages.ipp create mode 100644 test/boost_no_std_min_max.ipp create mode 100644 test/boost_no_std_oi_assign.ipp create mode 100644 test/boost_no_std_use_facet.ipp create mode 100644 test/boost_no_std_wstring.ipp create mode 100644 test/boost_no_stdc_namespace.ipp create mode 100644 test/boost_no_swprintf.ipp create mode 100644 test/boost_no_using_template.ipp create mode 100644 test/boost_no_wchar_t.ipp create mode 100644 test/config_info.cpp create mode 100644 test/config_test.cpp create mode 100644 test/has_2arg_use_facet_fail.cpp create mode 100644 test/has_2arg_use_facet_pass.cpp create mode 100644 test/has_bethreads_fail.cpp create mode 100644 test/has_bethreads_pass.cpp create mode 100644 test/has_hash_fail.cpp create mode 100644 test/has_hash_pass.cpp create mode 100644 test/has_macro_use_facet_fail.cpp create mode 100644 test/has_macro_use_facet_pass.cpp create mode 100644 test/has_nl_types_h_fail.cpp create mode 100644 test/has_nl_types_h_pass.cpp create mode 100644 test/has_pthreads_fail.cpp create mode 100644 test/has_pthreads_pass.cpp create mode 100644 test/has_slist_fail.cpp create mode 100644 test/has_slist_pass.cpp create mode 100644 test/has_stdint_h_fail.cpp create mode 100644 test/has_stdint_h_pass.cpp create mode 100644 test/has_stlp_use_facet_fail.cpp create mode 100644 test/has_stlp_use_facet_pass.cpp create mode 100644 test/has_unistd_h_fail.cpp create mode 100644 test/has_unistd_h_pass.cpp create mode 100644 test/has_vc6_mem_templ_fail.cpp create mode 100644 test/has_vc6_mem_templ_pass.cpp create mode 100644 test/has_vc_iterator_fail.cpp create mode 100644 test/has_vc_iterator_pass.cpp create mode 100644 test/has_winthreads_fail.cpp create mode 100644 test/has_winthreads_pass.cpp rename limits_test.cpp => test/limits_test.cpp (100%) create mode 100644 test/no_arg_dep_lookup_fail.cpp create mode 100644 test/no_arg_dep_lookup_pass.cpp create mode 100644 test/no_auto_ptr_fail.cpp create mode 100644 test/no_auto_ptr_pass.cpp create mode 100644 test/no_cv_spec_fail.cpp create mode 100644 test/no_cv_spec_pass.cpp create mode 100644 test/no_cv_void_spec_fail.cpp create mode 100644 test/no_cv_void_spec_pass.cpp create mode 100644 test/no_cwchar_fail.cpp create mode 100644 test/no_cwchar_pass.cpp create mode 100644 test/no_cwctype_fail.cpp create mode 100644 test/no_cwctype_pass.cpp create mode 100644 test/no_dep_nested_class_fail.cpp create mode 100644 test/no_dep_nested_class_pass.cpp create mode 100644 test/no_dep_val_param_fail.cpp create mode 100644 test/no_dep_val_param_pass.cpp create mode 100644 test/no_exp_func_tem_arg_fail.cpp create mode 100644 test/no_exp_func_tem_arg_pass.cpp create mode 100644 test/no_func_tmp_order_fail.cpp create mode 100644 test/no_func_tmp_order_pass.cpp create mode 100644 test/no_inline_memb_init_fail.cpp create mode 100644 test/no_inline_memb_init_pass.cpp create mode 100644 test/no_iter_construct_fail.cpp create mode 100644 test/no_iter_construct_pass.cpp create mode 100644 test/no_limits_const_exp_fail.cpp create mode 100644 test/no_limits_const_exp_pass.cpp create mode 100644 test/no_limits_fail.cpp create mode 100644 test/no_limits_pass.cpp create mode 100644 test/no_mem_tem_keyword_fail.cpp create mode 100644 test/no_mem_tem_keyword_pass.cpp create mode 100644 test/no_mem_templ_frnds_fail.cpp create mode 100644 test/no_mem_templ_frnds_pass.cpp create mode 100644 test/no_mem_templates_fail.cpp create mode 100644 test/no_mem_templates_pass.cpp create mode 100644 test/no_ops_in_namespace_fail.cpp create mode 100644 test/no_ops_in_namespace_pass.cpp create mode 100644 test/no_partial_spec_fail.cpp create mode 100644 test/no_partial_spec_pass.cpp create mode 100644 test/no_priv_aggregate_fail.cpp create mode 100644 test/no_priv_aggregate_pass.cpp create mode 100644 test/no_ptr_mem_const_fail.cpp create mode 100644 test/no_ptr_mem_const_pass.cpp create mode 100644 test/no_sstream_fail.cpp create mode 100644 test/no_sstream_pass.cpp create mode 100644 test/no_std_allocator_fail.cpp create mode 100644 test/no_std_allocator_pass.cpp create mode 100644 test/no_std_distance_fail.cpp create mode 100644 test/no_std_distance_pass.cpp create mode 100644 test/no_std_iter_traits_fail.cpp create mode 100644 test/no_std_iter_traits_pass.cpp create mode 100644 test/no_std_iterator_fail.cpp create mode 100644 test/no_std_iterator_pass.cpp create mode 100644 test/no_std_locale_fail.cpp create mode 100644 test/no_std_locale_pass.cpp create mode 100644 test/no_std_messages_fail.cpp create mode 100644 test/no_std_messages_pass.cpp create mode 100644 test/no_std_min_max_fail.cpp create mode 100644 test/no_std_min_max_pass.cpp create mode 100644 test/no_std_oi_assign_fail.cpp create mode 100644 test/no_std_oi_assign_pass.cpp create mode 100644 test/no_std_use_facet_fail.cpp create mode 100644 test/no_std_use_facet_pass.cpp create mode 100644 test/no_std_wstring_fail.cpp create mode 100644 test/no_std_wstring_pass.cpp create mode 100644 test/no_stdc_namespace_fail.cpp create mode 100644 test/no_stdc_namespace_pass.cpp create mode 100644 test/no_swprintf_fail.cpp create mode 100644 test/no_swprintf_pass.cpp create mode 100644 test/no_using_template_fail.cpp create mode 100644 test/no_using_template_pass.cpp create mode 100644 test/no_wchar_t_fail.cpp create mode 100644 test/no_wchar_t_pass.cpp create mode 100644 test/regression.cfg create mode 100644 test/test.hpp create mode 100644 tools/configure.in create mode 100644 tools/generate diff --git a/config.htm b/config.htm new file mode 100644 index 00000000..fa757205 --- /dev/null +++ b/config.htm @@ -0,0 +1,1264 @@ + + + + + + + + + + + +

+ +

Boost Configuration Reference

+ +

Contents

+ +
Configuring Boost for Your Platform
+   Using the default boost configuration
+   Using the configure script
+   User settable options
+   Advanced configuration usage
+   Testing the boost configuration
+Boost Macro Reference
+   Macros that describe defects
+   Macros that describe optional features
+   Boost Helper Macros
+   Boost Informational Macros
+Guidelines for Boost Authors
+   Adding New Defect Macros
+   Adding New Feature Test Macros
+   Modifying the Boost Configuration Headers
+Rationale
+Acknowledgements
+ +

Configuring Boost for Your Platform

+ +

Boost library users are never required to #include <boost/config.hpp>, +and are discouraged from including it on their own.

+ +

Boost library users can request support for additional +platforms to be added to config.hpp by emailing config@boost.org describing +their request.

+ +

Using the default boost +configuration

+ +

Boost is designed so that it is already correctly configured +for most common compilers; you should be able to use boost "as +is" without any configuration work. Since the compiler is +configured separately from the standard library used, that should +hold true even if you have replaced your compiler's standard +library with one from a third party (like STLport).

+ +

Using boost "as is" without trying to reconfigure it +is the recommended method of using boost, however you can run a +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.

+ +

Using the configure script

+ +

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:

+ +
./configure
+ +

you will see a list of the items being checked as the script +works it 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 then +you will need to set one or more of the following environment +variables:

+ + + + + + + + + + + + + + + + + + + + + + +

Variable

+

Description

+
CXXThe name of the compiler, + for example "c++".
CXXFLAGSThe compiler flags to use, + for example "-O2".
LDFLAGSThe linker flags to use, for + example "-L/mypath".
LIBSAny 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"
+./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 user.hpp (located +under <boost-root>/boost/config/). There are two ways you +can use this header:

+ +

Option 1: copy the header into <boost-root>/boost/config/ +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 user.hpp 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-root>/boost/config/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.

+ +

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: 

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Macro

+

Description

+
BOOST_USER_CONFIGWhen 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_COMPILER_CONFIGWhen 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_STDLIB_CONFIGWhen 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_PLATFORM_CONFIGWhen 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_NO_COMPILER_CONFIGWhen 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_CONFIGWhen 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_CONFIGWhen 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_CONFIGEquivalent to defining all + of BOOST_NO_COMPILER_CONFIG, BOOST_NO_STDLIB_CONFIG and + BOOST_NO_PLATFORM_CONFIG.
BOOST_STRICT_CONFIGThe 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_CONFIGWhen 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_THREADSWhen defined, disables + threading support, even if the compiler in its current + translation mode supports multiple threads.
+ +

Advanced configuration usage

+ +

By setting various macros on the compiler command line or by +editing <boost/config/user.hpp>, +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.hpp> +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, 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 - see user settable macros).

+ +

Finally the boost configuration header, includes <boost/config/suffix.hpp>; +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:

+ +

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> +for the compiler, <boost/config/stdlib/stlport.hpp> +for the standard library, and <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.hpp> +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.

+ +

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.hpp>, 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 compiled, and the second that you have +removed a dependency on two boost headers.

+ +

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 - see using the configure script for more +details.

+ +

Testing the boost configuration

+ +

The boost configuration library provides a full set of +regression test programs under the <boost-root>/libs/config/test/ +sub-directory:

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

File

+

Description

+
config_info.cppPrints 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.cppA 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.cppTests 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.cppIndividual 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.cppIndividual 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.cppIndividual 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.cppIndividual 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.

+ +

Boost Macro Reference

+ +

Macros that describe defects:

+ +

The following macros all describe features that are required +by the C++ standard, if one of the following macros is defined, +then it represents a defect in the compiler's conformance with +the standard.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Macro

+

Section

+

Description

+
BOOST_NO_ARGUMENT_DEPENDENT_LOOKUPCompilerCompiler does not implement + argument-dependent lookup (also named Koenig lookup); see + std::3.4.2 [basic.koenig.lookup]
BOOST_NO_AUTO_PTRStandard libraryIf the compiler / library + supplies non-standard or broken std::auto_ptr.
BOOST_NO_CV_SPECIALIZATIONSCompilerIf template specialisations + for cv-qualified types conflict with a specialisation for + a cv-unqualififed type.
BOOST_NO_CV_VOID_SPECIALIZATIONSCompilerIf template specialisations + for cv-void types conflict with a specialisation for void.
BOOST_NO_CWCHARPlatformThe Platform does not + provide <wchar.h> and <cwchar>.
BOOST_NO_CWCTYPEPlatformThe Platform does not + provide <wctype.h> and <cwctype>.
BOOST_NO_DEPENDENT_NESTED_DERIVATIONSCompilerThe 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_PARAMETERSCompilerTemplate value parameters + cannot have a dependent type, for example:
template<class T, typename T::type value> 
+class X { ... };
+
BOOST_NO_EXPLICIT_FUNCTION_TEMPLATE_ARGUMENTSCompilerCan only use deduced + template arguments when calling function template + instantiations.
BOOST_NO_INCLASS_MEMBER_INITIALIZATIONCompilerCompiler violates std::9.4.2/4.
BOOST_NO_INTRINSIC_WCHAR_TCompilerThe 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_LIMITSStandard libraryThe C++ implementation does + not provide the <limits> header.
BOOST_NO_LIMITS_COMPILE_TIME_CONSTANTSStandard libraryConstants such as + numeric_limits<T>::is_signed are not available for + use at compile-time.
BOOST_NO_MEMBER_TEMPLATE_KEYWORDCompilerIf the compiler supports + member templates, but not the template keyword when + accessing member template classes.
BOOST_NO_MEMBER_TEMPLATE_FRIENDSCompilerMember template friend + syntax ("template<class P> friend class frd;") + described in the C++ Standard, 14.5.3, not supported.
BOOST_NO_MEMBER_TEMPLATESCompilerMember template functions + not fully supported.
BOOST_NO_OPERATORS_IN_NAMESPACECompilerCompiler 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.
BOOST_NO_POINTER_TO_MEMBER_CONSTCompilerThe compiler does not + correctly handle pointers to const member functions, + preventing use of these in overloaded function templates. + See boost/functional.hpp + for example.
BOOST_NO_PRIVATE_IN_AGGREGATECompilerThe compiler misreads 8.5.1, + treating classes as non-aggregate if they contain private + or protected member functions.
BOOST_NO_STD_ALLOCATORStandard libraryThe C++ standard library + does not provide a standards conforming std::allocator.
BOOST_NO_STD_DISTANCEStandard libraryThe platform does not have a + conforming version of std::distance.
BOOST_NO_STD_ITERATORStandard libraryThe C++ implementation fails + to provide the std::iterator class.
BOOST_NO_STD_ITERATOR_TRAITSStandard libraryThe 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_LOCALEStandard libraryThe standard library lacks + std::locale.
BOOST_NO_STD_MESSAGESStandard libraryThe standard library lacks a + conforming std::messages facet.
BOOST_NO_STD_MIN_MAXStandard libraryThe C++ standard library + does not provide the min() and max() template functions + that should be in <algorithm>.
BOOST_NO_STD_OUTPUT_ITERATOR_ASSIGNStandard libraryDefined if the standard library's output + iterators are not assignable.
BOOST_NO_STD_USE_FACETStandard libraryThe standard library lacks a + conforming std::use_facet.
BOOST_NO_STD_WSTRINGStandard libraryThe standard library lacks + std::wstring.
BOOST_NO_STDC_NAMESPACECompiler/PlatformThe 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_STRINGSTREAMStandard libraryThe C++ implementation does + not provide the <sstream> header.
BOOST_NO_SWPRINTFPlatformThe platform does not have a + conforming version of swprintf.
BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATIONCompilerClass template partial + specialization (14.5.4 [temp.class.spec]) not supported.
BOOST_NO_TEMPLATED_ITERATOR_CONSTRUCTORSStandard libraryThe standard library does + not provide templated iterator constructors for its + containers.
BOOST_NO_USING_TEMPLATECompilerThe compiler will not accept + a using declaration that imports a template from the + global namespace into a named namespace. Probably Borland + specific.
BOOST_WEAK_FUNCTION_TEMPLATE_ORDERINGCompilerThe 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.
+
+ +

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.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Macro

+

Section

+

Description

+
BOOST_HAS_BETHREADSPlatformThe platform supports BeOS + style threads.
BOOST_HAS_HASHStandard libraryThe C++ implementation + provides the (SGI) hash_set or hash_map classes.
BOOST_HAS_MACRO_USE_FACETStandard libraryThe 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_NL_TYPES_HPlatformThe platform has an + <nl_types.h>.
BOOST_HAS_PTHREADSPlatformThe platform support POSIX + style threads.
BOOST_HAS_SLISTStandard libraryThe C++ implementation + provides the (SGI) slist class.
BOOST_HAS_STLP_USE_FACETStandard libraryThe 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.
BOOST_HAS_THREADSPlatform/compilerDefined if the compiler, in + its current translation mode, supports multiple threads + of execution.
BOOST_HAS_TWO_ARG_USE_FACETStandard libraryThe 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_HPlatformThe Platform provides + <unistd.h>.
BOOST_HAS_WINTHREADSPlatformThe platform supports MS + Windows style threads.
BOOST_MSVC_STD_ITERATORStandard libraryMicrosoft's broken version + of std::iterator is being used. This implies that std::iterator + takes no more than two template parameters, and that std::reverse_iterator + takes at least two template parameters.
BOOST_MSVC6_MEMBER_TEMPLATESCompilerMicrosoft 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_HPlatformThere 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).
+ +

Boost Helper Macros

+ +

The following macros are either simple helpers, or macros that +provide workarounds for compiler/standard library defects.

+ + + + + + + + + + + + + + + + + + + + + + + + + + +

Macro

+

Description

+
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_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_NESTED_TEMPLATEMember 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 Informational Macros

+ +

The following macros describe boost features; these are the +generally speaking the only boost macros that should be tested in +user code.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Macro

+

Header

+

Description

+
BOOST_VERSION<boost/version.hpp>Describes the boost version + number in XXYYZZ 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_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.
+ +

+ +

Guidelines for Boost Authors

+ +

The boost/config.hpp +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:

+ + + +

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 .cxx 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.cxx", 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, run the shell script "generate" +that you will find in the boost-root/libs/config/tools/ directory. +This generates two .cpp test files from the new test code, and +adds the tests to the regression test script, and the config_test.cpp +test program. If you can't run shell scripts on your platform +then post a message on the boost mailing list, and someone will +run it for you. Finally add a new entry to config_info.cpp so +that the new macro gets printed out when that program is run.

+ +

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.cxx". 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.hpp +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>).

+ +

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.hpp> +should never change, don't alter this file.

+ +

<boost/config/user.hpp> +is included by default, don't add extra code to this file unless +you have to. If you do, please remember to update libs/config/tools/configure.in as +well.

+ +

<boost/config/suffix.hpp> +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_platform_config.hpp> +and <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!

+ +

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 following +article.

+ +

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.

+ +

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 +change to one compiler's configuration (for example) does not +effect 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.

+ +

Acknowledgements

+ +

Beman Dawes provided the original config.hpp and part of this +document. Vesa Karvonen provided a description of the principles +(see 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. Numerous boost members, past and present, have +contributed fixes to boost's configuration.

+ +

 

+ +
+ +

© Beman Dawes 2001

+ +

© Vesa Karvonen 2001

+ +

© John Maddock 2001

+ +

 

+ +

 

+ +

 

+ +

 

+ +

 

+ + diff --git a/config_test.cpp b/config_test.cpp deleted file mode 100644 index 008423b1..00000000 --- a/config_test.cpp +++ /dev/null @@ -1,196 +0,0 @@ -// Boost config.hpp configuration test program file -----------------------// - -// (C) Copyright Boost.org 2000. Permission to copy, use, modify, sell and -// distribute this software is granted provided this copyright notice appears -// in all copies. This software is provided "as is" without express or implied -// warranty, and with no claim as to its suitability for any purpose. - -// See http://www.boost.org for the most recent version. - -#include -#include - -using std::cout; -using std::hex; -using std::dec; - -int main() -{ - - // boost compiler workaround defines - -# ifdef BOOST_NO_DEPENDENT_TYPES_IN_TEMPLATE_VALUE_PARAMETERS - cout << "BOOST_NO_DEPENDENT_TYPES_IN_TEMPLATE_VALUE_PARAMETERS defined\n"; -# endif - -# ifdef BOOST_NO_INCLASS_MEMBER_INITIALIZER - cout << "BOOST_NO_INCLASS_MEMBER_INITIALIZER defined\n"; -# endif - -# ifdef BOOST_NO_MEMBER_TEMPLATES - cout << "BOOST_NO_MEMBER_TEMPLATES defined\n"; -# endif - -# ifdef BOOST_NO_MEMBER_TEMPLATE_FRIENDS - cout << "BOOST_NO_MEMBER_TEMPLATE_FRIENDS defined\n"; -# endif - -# ifdef BOOST_NO_OPERATORS_IN_NAMESPACE - cout << "BOOST_NO_OPERATORS_IN_NAMESPACE defined\n"; -# endif - -# ifdef BOOST_NO_STD_ITERATOR - cout << "BOOST_NO_STD_ITERATOR defined\n"; -# endif - -# ifdef BOOST_NO_STD_ITERATOR_TRAITS - cout << "BOOST_NO_STD_ITERATOR_TRAITS defined\n"; -# endif - -# ifdef BOOST_NO_STDC_NAMESPACE - cout << "BOOST_NO_STDC_NAMESPACE defined\n"; -# endif - -# ifdef BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION - cout << "BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION defined\n"; -# endif - -# ifdef BOOST_NO_USING_TEMPLATE - cout << "BOOST_NO_USING_TEMPLATE defined\n"; -# endif - -# ifdef BOOST_DECL_EXPORTS - cout << "BOOST_DECL_EXPORTS defined\n"; -# endif - -# ifdef BOOST_SYSTEM_HAS_STDINT_H - cout << "BOOST_SYSTEM_HAS_STDINT_H defined\n"; -# endif - - - // compilers - -# ifdef __COMO__ - cout << "__COMO__ defined as " << __COMO__ << "\n"; -# endif - -# ifdef __COMO_VERSION__ - cout << "__COMO_VERSION__ defined as " << __COMO_VERSION__ << "\n"; -# endif - -# ifdef __GNUC__ - cout << "__GNUC__ defined as " << __GNUC__ << "\n"; -# endif - -# ifdef __GNUC_MINOR__ - cout << "__GNUC_MINOR__ defined as " << __GNUC_MINOR__ << "\n"; -# endif - -# ifdef __EDG__ - cout << "__EDG__ defined as " << __EDG__ << "\n"; -# endif - -# ifdef __EDG_VERSION__ - cout << "__EDG_VERSION__ defined as " << __EDG_VERSION__ << "\n"; -# endif - -# ifdef __ICC - cout << "__ICC defined as " << __ICC << "\n"; -# endif - -# ifdef __ICL - cout << "__ICL defined as " << __ICL << "\n"; -# endif - -# ifdef __INTEL_COMPILER - cout << "__INTEL_COMPILER defined as " << __INTEL_COMPILER << "\n"; -# endif - -# ifdef __USLC__ - cout << "__USLC__ defined\n"; -# endif - -# ifdef __BORLANDC__ - cout << "__BORLANDC__ defined as " << __BORLANDC__ << "\n"; -# endif - -# ifdef __MWERKS__ - cout << "__MWERKS__ defined as " << __MWERKS__ << "\n"; -# endif - -# ifdef __SUNPRO_CC - cout << "__SUNPRO_CC defined as " << __SUNPRO_CC << "\n"; -# endif - -# ifdef __sgi - cout << "__sgi is defined\n"; -# ifdef _COMPILER_VERSION - cout << "_COMPILER_VERSION defined as " << _COMPILER_VERSION << "\n"; -# endif -# endif - -# ifdef __DECCXX - cout << "__DECCXX defined\n"; -# ifdef __DECCXX_VER - cout << "__DECCXX_VER defined as " << __DECCXX_VER << "\n"; -# endif -# endif - -# ifdef _MSC_VER - cout << "_MSC_VER defined as " << _MSC_VER << "\n"; -# endif - -# ifdef BOOST_MSVC - cout << "BOOST_MSVC defined as " << BOOST_MSVC << "\n"; -# endif - -# ifdef BOOST_MSVC6_MEMBER_TEMPLATES - cout << "BOOST_MSVC6_MEMBER_TEMPLATES defined\n"; -# endif - -# ifdef BOOST_MSVC_STD_ITERATOR - cout << "BOOST_MSVC_STD_ITERATOR defined\n"; -# endif - - - // libraries - -# ifdef __SGI_STL_PORT - cout << "__SGI_STL_PORT defined as 0x" - << hex << __SGI_STL_PORT << dec << "\n"; -# endif - -# ifdef __GLIBCPP__ - cout << "__GLIBCPP__ defined\n"; -# endif - -# ifdef _GLIBCPP_VERSION - cout << "_GLIBCPP_VERSION defined as " << _GLIBCPP_VERSION << "\n"; -# endif - -# ifdef _GLIBCPP_USE_LONG_LONG - cout << "_GLIBCPP_USE_LONG_LONG defined\n"; -# endif - -# ifdef _GLIBCPP_USE_WCHAR_T - cout << "_GLIBCPP_USE_WCHAR_T defined\n"; -# endif - -# ifdef __STL_NO_NAMESPACES - cout << "__STL_NO_NAMESPACES defined\n"; -# endif - -# ifdef __STL_USE_NAMESPACES - cout << "__STL_USE_NAMESPACES defined\n"; -# endif - -# ifdef __STL_IMPORT_VENDOR_CSTD - cout << "__STL_IMPORT_VENDOR_CSTD defined\n"; -# endif - -# ifdef _RWSTD_VER - cout << "_RWSTD_VER defined as " << _RWSTD_VER << "\n"; -# endif - - return 0; -} diff --git a/configure b/configure new file mode 100644 index 00000000..9c012332 --- /dev/null +++ b/configure @@ -0,0 +1,2338 @@ +#! /bin/sh +# Guess values for system-dependent variables and create Makefiles. +# Generated by Autoconf 2.52. +# +# Copyright 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001 +# Free Software Foundation, Inc. +# This configure script is free software; the Free Software Foundation +# gives unlimited permission to copy, distribute and modify it. + +# 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 + +# Sed expression to map a string onto a valid variable name. +as_tr_sh="sed y%*+%pp%;s%[^_$as_cr_alnum]%_%g" + +# Sed expression to map a string onto a valid CPP name. +as_tr_cpp="sed y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g" + +# Be Bourne compatible +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then + emulate sh + NULLCMD=: +elif test -n "${BASH_VERSION+set}" && (set -o posix) >/dev/null 2>&1; then + set -o posix +fi + +# Name of the executable. +as_me=`echo "$0" |sed 's,.*[\\/],,'` + +if expr a : '\(a\)' >/dev/null 2>&1; then + as_expr=expr +else + as_expr=false +fi + +rm -f conf$$ conf$$.exe conf$$.file +echo >conf$$.file +if ln -s conf$$.file conf$$ 2>/dev/null; then + # We could just check for DJGPP; but this test a) works b) is more generic + # and c) will remain valid once DJGPP supports symlinks (DJGPP 2.04). + if test -f conf$$.exe; then + # Don't use ln at all; we don't have any links + as_ln_s='cp -p' + else + as_ln_s='ln -s' + fi +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$$.file + +as_executable_p="test -f" + +# Support unset when possible. +if (FOO=FOO; unset FOO) >/dev/null 2>&1; then + as_unset=unset +else + as_unset=false +fi + +# NLS nuisances. +$as_unset LANG || test "${LANG+set}" != set || { LANG=C; export LANG; } +$as_unset LC_ALL || test "${LC_ALL+set}" != set || { LC_ALL=C; export LC_ALL; } +$as_unset LC_TIME || test "${LC_TIME+set}" != set || { LC_TIME=C; export LC_TIME; } +$as_unset LC_CTYPE || test "${LC_CTYPE+set}" != set || { LC_CTYPE=C; export LC_CTYPE; } +$as_unset LANGUAGE || test "${LANGUAGE+set}" != set || { LANGUAGE=C; export LANGUAGE; } +$as_unset LC_COLLATE || test "${LC_COLLATE+set}" != set || { LC_COLLATE=C; export LC_COLLATE; } +$as_unset LC_NUMERIC || test "${LC_NUMERIC+set}" != set || { LC_NUMERIC=C; export LC_NUMERIC; } +$as_unset LC_MESSAGES || test "${LC_MESSAGES+set}" != set || { LC_MESSAGES=C; export LC_MESSAGES; } + +# IFS +# We need space, tab and new line, in precisely that order. +as_nl=' +' +IFS=" $as_nl" + +# CDPATH. +$as_unset CDPATH || test "${CDPATH+set}" != set || { CDPATH=:; export CDPATH; } + +# 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` + +exec 6>&1 + +# +# Initializations. +# +ac_default_prefix=/usr/local +cross_compiling=no +subdirs= +MFLAGS= MAKEFLAGS= +SHELL=${CONFIG_SHELL-/bin/sh} + +# Maximum number of lines to put in a shell here document. +# This variable seems obsolete. It should probably be removed, and +# only ac_max_sed_lines should be used. +: ${ac_max_here_lines=38} + +ac_unique_file="./tools/configure.in" + +# 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. +bindir='${exec_prefix}/bin' +sbindir='${exec_prefix}/sbin' +libexecdir='${exec_prefix}/libexec' +datadir='${prefix}/share' +sysconfdir='${prefix}/etc' +sharedstatedir='${prefix}/com' +localstatedir='${prefix}/var' +libdir='${exec_prefix}/lib' +includedir='${prefix}/include' +oldincludedir='/usr/include' +infodir='${prefix}/info' +mandir='${prefix}/man' + +# Identity of this package. +PACKAGE_NAME= +PACKAGE_TARNAME= +PACKAGE_VERSION= +PACKAGE_STRING= +PACKAGE_BUGREPORT= + +ac_prev= +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 + + ac_optarg=`expr "x$ac_option" : 'x[^=]*=\(.*\)'` + + # Accept the important Cygnus configure options, so we can diagnose typos. + + case $ac_option in + + -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 | --data | --dat | --da) + ac_prev=datadir ;; + -datadir=* | --datadir=* | --datadi=* | --datad=* | --data=* | --dat=* \ + | --da=*) + datadir=$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" ;; + + -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'` + case $ac_option in + *=*) ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"`;; + *) ac_optarg=yes ;; + esac + 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 ;; + + -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 ;; + + -localstatedir | --localstatedir | --localstatedi | --localstated \ + | --localstate | --localstat | --localsta | --localst \ + | --locals | --local | --loca | --loc | --lo) + ac_prev=localstatedir ;; + -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \ + | --localstate=* | --localstat=* | --localsta=* | --localst=* \ + | --locals=* | --local=* | --loca=* | --loc=* | --lo=*) + 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) + 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 ;; + + -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'` + case $ac_option in + *=*) ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"`;; + *) ac_optarg=yes ;; + esac + 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; }; } + ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` + 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 paths. +for ac_var in exec_prefix prefix +do + eval ac_val=$`echo $ac_var` + case $ac_val in + [\\/$]* | ?:[\\/]* | NONE | '' ) ;; + *) { echo "$as_me: error: expected an absolute path for --$ac_var: $ac_val" >&2 + { (exit 1); exit 1; }; };; + esac +done + +# Be sure to have absolute paths. +for ac_var in bindir sbindir libexecdir datadir sysconfdir sharedstatedir \ + localstatedir libdir includedir oldincludedir infodir mandir +do + eval ac_val=$`echo $ac_var` + case $ac_val in + [\\/$]* | ?:[\\/]* ) ;; + *) { echo "$as_me: error: expected an absolute path for --$ac_var: $ac_val" >&2 + { (exit 1); exit 1; }; };; + esac +done + +# There might be people who depend on the old broken behavior: `$host' +# used to hold the argument of --host etc. +build=$build_alias +host=$host_alias +target=$target_alias + +# FIXME: should be removed in autoconf 3.0. +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 + +# 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 its parent. + ac_prog=$0 + ac_confdir=`echo "$ac_prog" | sed 's%[\\/][^\\/][^\\/]*$%%'` + test "x$ac_confdir" = "x$ac_prog" && ac_confdir=. + 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 + if test "$ac_srcdir_defaulted" = yes; then + { echo "$as_me: error: cannot find sources in $ac_confdir or .." >&2 + { (exit 1); exit 1; }; } + else + { echo "$as_me: error: cannot find sources in $srcdir" >&2 + { (exit 1); exit 1; }; } + fi +fi +srcdir=`echo "$srcdir" | sed 's%\([^\\/]\)[\\/]*$%\1%'` +ac_env_build_alias_set=${build_alias+set} +ac_env_build_alias_value=$build_alias +ac_cv_env_build_alias_set=${build_alias+set} +ac_cv_env_build_alias_value=$build_alias +ac_env_host_alias_set=${host_alias+set} +ac_env_host_alias_value=$host_alias +ac_cv_env_host_alias_set=${host_alias+set} +ac_cv_env_host_alias_value=$host_alias +ac_env_target_alias_set=${target_alias+set} +ac_env_target_alias_value=$target_alias +ac_cv_env_target_alias_set=${target_alias+set} +ac_cv_env_target_alias_value=$target_alias +ac_env_CXX_set=${CXX+set} +ac_env_CXX_value=$CXX +ac_cv_env_CXX_set=${CXX+set} +ac_cv_env_CXX_value=$CXX +ac_env_CXXFLAGS_set=${CXXFLAGS+set} +ac_env_CXXFLAGS_value=$CXXFLAGS +ac_cv_env_CXXFLAGS_set=${CXXFLAGS+set} +ac_cv_env_CXXFLAGS_value=$CXXFLAGS +ac_env_LDFLAGS_set=${LDFLAGS+set} +ac_env_LDFLAGS_value=$LDFLAGS +ac_cv_env_LDFLAGS_set=${LDFLAGS+set} +ac_cv_env_LDFLAGS_value=$LDFLAGS +ac_env_CPPFLAGS_set=${CPPFLAGS+set} +ac_env_CPPFLAGS_value=$CPPFLAGS +ac_cv_env_CPPFLAGS_set=${CPPFLAGS+set} +ac_cv_env_CPPFLAGS_value=$CPPFLAGS + +# +# 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 < + +Some influential environment variables: + CXX C++ compiler command + CXXFLAGS C++ compiler flags + LDFLAGS linker flags, e.g. -L if you have libraries in a + nonstandard directory + CPPFLAGS C/C++ preprocessor flags, e.g. -I if you have + headers in a nonstandard directory + +Use these variables to override the choices made by `configure' or to help +it to find libraries and programs with nonstandard names/locations. + +EOF +fi + +if test "$ac_init_help" = "recursive"; then + # If there are subdirs, report their specific --help. + ac_popdir=`pwd` + for ac_subdir in : $ac_subdirs_all; do test "x$ac_subdir" = x: && continue + cd $ac_subdir + # A "../" for each directory in /$ac_subdir. + ac_dots=`echo $ac_subdir | + sed 's,^\./,,;s,[^/]$,&/,;s,[^/]*/,../,g'` + + case $srcdir in + .) # No --srcdir option. We are building in place. + ac_sub_srcdir=$srcdir ;; + [\\/]* | ?:[\\/]* ) # Absolute path. + ac_sub_srcdir=$srcdir/$ac_subdir ;; + *) # Relative path. + ac_sub_srcdir=$ac_dots$srcdir/$ac_subdir ;; + esac + + # Check for guested configure; otherwise get Cygnus style configure. + if test -f $ac_sub_srcdir/configure.gnu; then + echo + $SHELL $ac_sub_srcdir/configure.gnu --help=recursive + elif test -f $ac_sub_srcdir/configure; then + echo + $SHELL $ac_sub_srcdir/configure --help=recursive + elif test -f $ac_sub_srcdir/configure.ac || + test -f $ac_sub_srcdir/configure.in; then + echo + $ac_configure --help + else + echo "$as_me: WARNING: no configuration information is in $ac_subdir" >&2 + fi + cd $ac_popdir + done +fi + +test -n "$ac_init_help" && exit 0 +if $ac_init_version; then + cat <<\EOF + +Copyright 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001 +Free Software Foundation, Inc. +This configure script is free software; the Free Software Foundation +gives unlimited permission to copy, distribute and modify it. +EOF + exit 0 +fi +exec 5>config.log +cat >&5 </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` +hostinfo = `(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` + +PATH = $PATH + +_ASUNAME +} >&5 + +cat >&5 <\?\"\']*) + ac_arg=`echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` + ac_configure_args="$ac_configure_args$ac_sep'$ac_arg'" + ac_sep=" " ;; + *) ac_configure_args="$ac_configure_args$ac_sep$ac_arg" + ac_sep=" " ;; + esac + # Get rid of the leading space. +done + +# 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. +trap 'exit_status=$? + # Save into config.log some information that might help in debugging. + echo >&5 + echo "## ----------------- ##" >&5 + echo "## Cache variables. ##" >&5 + echo "## ----------------- ##" >&5 + echo >&5 + # The following way of writing the cache mishandles newlines in values, +{ + (set) 2>&1 | + case `(ac_space='"'"' '"'"'; set | grep ac_space) 2>&1` in + *ac_space=\ *) + sed -n \ + "s/'"'"'/'"'"'\\\\'"'"''"'"'/g; + s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='"'"'\\2'"'"'/p" + ;; + *) + sed -n \ + "s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1=\\2/p" + ;; + esac; +} >&5 + sed "/^$/d" confdefs.h >conftest.log + if test -s conftest.log; then + echo >&5 + echo "## ------------ ##" >&5 + echo "## confdefs.h. ##" >&5 + echo "## ------------ ##" >&5 + echo >&5 + cat conftest.log >&5 + fi + (echo; echo) >&5 + test "$ac_signal" != 0 && + echo "$as_me: caught signal $ac_signal" >&5 + echo "$as_me: exit $exit_status" >&5 + rm -rf conftest* confdefs* core core.* *.core 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 -rf conftest* confdefs.h +# AIX cpp loses on an empty file, so make sure it contains at least a newline. +echo >confdefs.h + +# Let the site file select an alternate cache file if it wants to. +# Prefer explicitly selected file to automatically selected ones. +if test -z "$CONFIG_SITE"; then + if test "x$prefix" != xNONE; then + CONFIG_SITE="$prefix/share/config.site $prefix/etc/config.site" + else + CONFIG_SITE="$ac_default_prefix/share/config.site $ac_default_prefix/etc/config.site" + fi +fi +for ac_site_file in $CONFIG_SITE; do + if test -r "$ac_site_file"; then + { echo "$as_me:820: loading site script $ac_site_file" >&5 +echo "$as_me: loading site script $ac_site_file" >&6;} + cat "$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 `(set) 2>&1 | + sed -n 's/^ac_env_\([a-zA-Z_0-9]*\)_set=.*/\1/p'`; 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:838: 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:842: 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:848: 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:850: former value: $ac_old_val" >&5 +echo "$as_me: former value: $ac_old_val" >&2;} + { echo "$as_me:852: 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. It doesn't matter if + # we pass some twice (in addition to the command line arguments). + if test "$ac_new_set" = set; then + case $ac_new_val in + *" "*|*" "*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?\"\']*) + ac_arg=$ac_var=`echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` + ac_configure_args="$ac_configure_args '$ac_arg'" + ;; + *) ac_configure_args="$ac_configure_args $ac_var=$ac_new_val" + ;; + esac + fi +done +if $ac_cache_corrupted; then + { echo "$as_me:871: 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:873: 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 + +case `echo "testing\c"; echo 1,2,3`,`echo -n testing; echo 1,2,3` in + *c*,-n*) ECHO_N= ECHO_C=' +' ECHO_T=' ' ;; + *c*,* ) ECHO_N=-n ECHO_C= ECHO_T= ;; + *) ECHO_N= ECHO_C='\c' ECHO_T= ;; +esac +echo "#! $SHELL" >conftest.sh +echo "exit 0" >>conftest.sh +chmod +x conftest.sh +if { (echo "$as_me:893: PATH=\".;.\"; conftest.sh") >&5 + (PATH=".;."; conftest.sh) 2>&5 + ac_status=$? + echo "$as_me:896: \$? = $ac_status" >&5 + (exit $ac_status); }; then + ac_path_separator=';' +else + ac_path_separator=: +fi +PATH_SEPARATOR="$ac_path_separator" +rm -f conftest.sh + +# Check whether --enable-test or --disable-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 regresion 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. It's +primary aim is to quicky report how well boost is configured +for one compiler. + +*** + +EOF + +else + +cat << EOF + +*** + +EOF +fi + +# Check whether --enable-extension or --disable-extension was given. +if test "${enable_extension+set}" = set; then + enableval="$enable_extension" + +case "$enableval" in + no) echo "$as_me:953: 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:957: result: Argument : .$enableval used as extension" >&5 +echo "${ECHO_T}Argument : .$enableval used as extension" >&6 + ac_ext=$enableval +esac + +else + echo "$as_me:963: result: Info : .cpp used as extension for tests" >&5 +echo "${ECHO_T}Info : .cpp used as extension for tests" >&6 + ac_ext=cpp + +fi; + +# Save that, as it is being redefined several times +use_ac_ext=$ac_ext + +ac_ext=cc +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 -n "$ac_tool_prefix"; then + for ac_prog in $CCC g++ c++ gpp aCC CC cxx cc++ cl 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:982: 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 + ac_save_IFS=$IFS; IFS=$ac_path_separator +ac_dummy="$PATH" +for ac_dir in $ac_dummy; do + IFS=$ac_save_IFS + test -z "$ac_dir" && ac_dir=. + $as_executable_p "$ac_dir/$ac_word" || continue +ac_cv_prog_CXX="$ac_tool_prefix$ac_prog" +echo "$as_me:997: found $ac_dir/$ac_word" >&5 +break +done + +fi +fi +CXX=$ac_cv_prog_CXX +if test -n "$CXX"; then + echo "$as_me:1005: result: $CXX" >&5 +echo "${ECHO_T}$CXX" >&6 +else + echo "$as_me:1008: 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 $CCC g++ c++ gpp aCC CC cxx cc++ cl 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:1021: 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 + ac_save_IFS=$IFS; IFS=$ac_path_separator +ac_dummy="$PATH" +for ac_dir in $ac_dummy; do + IFS=$ac_save_IFS + test -z "$ac_dir" && ac_dir=. + $as_executable_p "$ac_dir/$ac_word" || continue +ac_cv_prog_ac_ct_CXX="$ac_prog" +echo "$as_me:1036: found $ac_dir/$ac_word" >&5 +break +done + +fi +fi +ac_ct_CXX=$ac_cv_prog_ac_ct_CXX +if test -n "$ac_ct_CXX"; then + echo "$as_me:1044: result: $ac_ct_CXX" >&5 +echo "${ECHO_T}$ac_ct_CXX" >&6 +else + echo "$as_me:1047: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + test -n "$ac_ct_CXX" && break +done +test -n "$ac_ct_CXX" || ac_ct_CXX="g++" + + CXX=$ac_ct_CXX +fi + +# Provide some information about the compiler. +echo "$as_me:1059:" \ + "checking for C++ compiler version" >&5 +ac_compiler=`set X $ac_compile; echo $2` +{ (eval echo "$as_me:1062: \"$ac_compiler --version &5\"") >&5 + (eval $ac_compiler --version &5) 2>&5 + ac_status=$? + echo "$as_me:1065: \$? = $ac_status" >&5 + (exit $ac_status); } +{ (eval echo "$as_me:1067: \"$ac_compiler -v &5\"") >&5 + (eval $ac_compiler -v &5) 2>&5 + ac_status=$? + echo "$as_me:1070: \$? = $ac_status" >&5 + (exit $ac_status); } +{ (eval echo "$as_me:1072: \"$ac_compiler -V &5\"") >&5 + (eval $ac_compiler -V &5) 2>&5 + ac_status=$? + echo "$as_me:1075: \$? = $ac_status" >&5 + (exit $ac_status); } + +cat >conftest.$ac_ext <<_ACEOF +#line 1079 "configure" +#include "confdefs.h" + +int +main () +{ + + ; + return 0; +} +_ACEOF +ac_clean_files_save=$ac_clean_files +ac_clean_files="$ac_clean_files a.out a.exe" +# 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:1095: checking for C++ compiler default output" >&5 +echo $ECHO_N "checking for C++ compiler default output... $ECHO_C" >&6 +ac_link_default=`echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'` +if { (eval echo "$as_me:1098: \"$ac_link_default\"") >&5 + (eval $ac_link_default) 2>&5 + ac_status=$? + echo "$as_me:1101: \$? = $ac_status" >&5 + (exit $ac_status); }; then + # Find the output, starting from the most likely. This scheme is +# not robust to junk in `.', hence go to wildcards (a.*) only as a last +# resort. +for ac_file in `ls a.exe conftest.exe 2>/dev/null; + ls a.out conftest 2>/dev/null; + ls a.* conftest.* 2>/dev/null`; do + case $ac_file in + *.$ac_ext | *.o | *.obj | *.xcoff | *.tds | *.d | *.pdb ) ;; + a.out ) # We found the default executable, but exeext='' is most + # certainly right. + break;; + *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` + # FIXME: I believe we export ac_cv_exeext for Libtool --akim. + export ac_cv_exeext + break;; + * ) break;; + esac +done +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +{ { echo "$as_me:1124: error: C++ compiler cannot create executables" >&5 +echo "$as_me: error: C++ compiler cannot create executables" >&2;} + { (exit 77); exit 77; }; } +fi + +ac_exeext=$ac_cv_exeext +echo "$as_me:1130: result: $ac_file" >&5 +echo "${ECHO_T}$ac_file" >&6 + +# Check the compiler produces executables we can run. If not, either +# the compiler is broken, or we cross compile. +echo "$as_me:1135: 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' + { (eval echo "$as_me:1141: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:1144: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + cross_compiling=no + else + if test "$cross_compiling" = maybe; then + cross_compiling=yes + else + { { echo "$as_me:1151: error: cannot run C++ compiled programs. +If you meant to cross compile, use \`--host'." >&5 +echo "$as_me: error: cannot run C++ compiled programs. +If you meant to cross compile, use \`--host'." >&2;} + { (exit 1); exit 1; }; } + fi + fi +fi +echo "$as_me:1159: result: yes" >&5 +echo "${ECHO_T}yes" >&6 + +rm -f a.out a.exe conftest$ac_cv_exeext +ac_clean_files=$ac_clean_files_save +# Check the compiler produces executables we can run. If not, either +# the compiler is broken, or we cross compile. +echo "$as_me:1166: checking whether we are cross compiling" >&5 +echo $ECHO_N "checking whether we are cross compiling... $ECHO_C" >&6 +echo "$as_me:1168: result: $cross_compiling" >&5 +echo "${ECHO_T}$cross_compiling" >&6 + +echo "$as_me:1171: checking for executable suffix" >&5 +echo $ECHO_N "checking for executable suffix... $ECHO_C" >&6 +if { (eval echo "$as_me:1173: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:1176: \$? = $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 `(ls conftest.exe; ls conftest; ls conftest.*) 2>/dev/null`; do + case $ac_file in + *.$ac_ext | *.o | *.obj | *.xcoff | *.tds | *.d | *.pdb ) ;; + *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` + export ac_cv_exeext + break;; + * ) break;; + esac +done +else + { { echo "$as_me:1192: error: cannot compute EXEEXT: cannot compile and link" >&5 +echo "$as_me: error: cannot compute EXEEXT: cannot compile and link" >&2;} + { (exit 1); exit 1; }; } +fi + +rm -f conftest$ac_cv_exeext +echo "$as_me:1198: 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:1204: checking for object suffix" >&5 +echo $ECHO_N "checking for object suffix... $ECHO_C" >&6 +if test "${ac_cv_objext+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line 1210 "configure" +#include "confdefs.h" + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.o conftest.obj +if { (eval echo "$as_me:1222: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:1225: \$? = $ac_status" >&5 + (exit $ac_status); }; then + for ac_file in `(ls conftest.o conftest.obj; ls conftest.*) 2>/dev/null`; do + case $ac_file in + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb ) ;; + *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'` + break;; + esac +done +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +{ { echo "$as_me:1237: error: cannot compute OBJEXT: cannot compile" >&5 +echo "$as_me: error: cannot compute OBJEXT: cannot compile" >&2;} + { (exit 1); exit 1; }; } +fi + +rm -f conftest.$ac_cv_objext conftest.$ac_ext +fi +echo "$as_me:1244: result: $ac_cv_objext" >&5 +echo "${ECHO_T}$ac_cv_objext" >&6 +OBJEXT=$ac_cv_objext +ac_objext=$OBJEXT +echo "$as_me:1248: 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 +#line 1254 "configure" +#include "confdefs.h" + +int +main () +{ +#ifndef __GNUC__ + choke me +#endif + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:1269: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:1272: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:1275: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:1278: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_compiler_gnu=yes +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +ac_compiler_gnu=no +fi +rm -f conftest.$ac_objext conftest.$ac_ext +ac_cv_cxx_compiler_gnu=$ac_compiler_gnu + +fi +echo "$as_me:1290: 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 +CXXFLAGS="-g" +echo "$as_me:1296: 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 + cat >conftest.$ac_ext <<_ACEOF +#line 1302 "configure" +#include "confdefs.h" + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:1314: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:1317: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:1320: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:1323: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_prog_cxx_g=yes +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +ac_cv_prog_cxx_g=no +fi +rm -f conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:1333: 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 +for ac_declaration in \ + ''\ + '#include ' \ + 'extern "C" void std::exit (int) throw (); using std::exit;' \ + 'extern "C" void std::exit (int); using std::exit;' \ + 'extern "C" void exit (int) throw ();' \ + 'extern "C" void exit (int);' \ + 'void exit (int);' +do + cat >conftest.$ac_ext <<_ACEOF +#line 1360 "configure" +#include "confdefs.h" +#include +$ac_declaration +int +main () +{ +exit (42); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:1373: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:1376: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:1379: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:1382: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + : +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +continue +fi +rm -f conftest.$ac_objext conftest.$ac_ext + cat >conftest.$ac_ext <<_ACEOF +#line 1392 "configure" +#include "confdefs.h" +$ac_declaration +int +main () +{ +exit (42); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:1404: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:1407: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:1410: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:1413: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + break +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +fi +rm -f conftest.$ac_objext conftest.$ac_ext +done +rm -f conftest* +if test -n "$ac_declaration"; then + echo '#ifdef __cplusplus' >>confdefs.h + echo $ac_declaration >>confdefs.h + echo '#endif' >>confdefs.h +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=cc +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 $enable_test = 'yes'; then +CXXFLAGS="-I../../ -I./test $CXXFLAGS" +else +CXXFLAGS="-I../../ -I./test $CXXFLAGS -DBOOST_NO_CONFIG" +fi + +echo "$as_me:1449: checking for main in -lpthread" >&5 +echo $ECHO_N "checking for main in -lpthread... $ECHO_C" >&6 +if test "${ac_cv_lib_pthread_main+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 +#line 1457 "configure" +#include "confdefs.h" + +int +main () +{ +main (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:1469: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:1472: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:1475: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:1478: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_lib_pthread_main=yes +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +ac_cv_lib_pthread_main=no +fi +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +echo "$as_me:1489: result: $ac_cv_lib_pthread_main" >&5 +echo "${ECHO_T}$ac_cv_lib_pthread_main" >&6 +if test $ac_cv_lib_pthread_main = yes; then + cat >>confdefs.h <&5 +echo $ECHO_N "checking for main in -lm... $ECHO_C" >&6 +if test "${ac_cv_lib_m_main+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 +#line 1509 "configure" +#include "confdefs.h" + +int +main () +{ +main (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:1521: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:1524: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:1527: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:1530: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_lib_m_main=yes +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +ac_cv_lib_m_main=no +fi +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +echo "$as_me:1541: result: $ac_cv_lib_m_main" >&5 +echo "${ECHO_T}$ac_cv_lib_m_main" >&6 +if test $ac_cv_lib_m_main = yes; then + cat >>confdefs.h <&5 +echo $ECHO_N "checking $title (pass expected) ... $ECHO_C" >&6 + else + echo "$as_me:1574: checking $title " >&5 +echo $ECHO_N "checking $title ... $ECHO_C" >&6 + fi + cat >conftest.$ac_ext <<_ACEOF +#line 1578 "configure" +#include "confdefs.h" + +#include +#include +#include "test.hpp" + +#ifndef $macroname +#include "boost_$basename.cxx" +#else +namespace ${namespace} = empty_boost; +#endif + +int cpp_main( int, char *[] ) +{ + return ${namespace}::test(); +} +#define main _main + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:1606: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:1609: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:1612: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:1615: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + echo "$as_me:1617: result: OK" >&5 +echo "${ECHO_T}OK" >&6 + +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +echo "$as_me:1623: result: Failed" >&5 +echo "${ECHO_T}Failed" >&6 + required_defs="$macroname $required_defs" + +fi +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext + + if test $enable_test = 'yes'; then + + ac_ext=$use_ac_ext + echo "$as_me:1633: checking $title (fail expected) " >&5 +echo $ECHO_N "checking $title (fail expected) ... $ECHO_C" >&6 + cat >conftest.$ac_ext <<_ACEOF +#line 1636 "configure" +#include "confdefs.h" + +#include +#include +#include "test.hpp" + +#ifdef $macroname +#include "boost_$basename.cxx" +#else +#error "this file should not compile" +#endif + +int cpp_main( int, char *[] ) +{ + return ${namespace}::test(); +} +#define main _main + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:1664: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:1667: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:1670: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:1673: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + echo "$as_me:1675: result: failed" >&5 +echo "${ECHO_T}failed" >&6 + required_undefs="$macroname $required_undefs" + +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +echo "$as_me:1682: result: OK" >&5 +echo "${ECHO_T}OK" >&6 + +fi +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext + + fi + +done + +# +# enumerate optional test files and test each one: +# +for file in ./test/boost_has*.cxx; do + + basename=`echo $file | sed 's/.*boost_\(.*\)\.cxx/\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 [:upper:] [:lower:]` + +# echo $file +# echo $basename +# echo $macroname +# echo $title + + ac_ext=$use_ac_ext + if test $enable_test = 'yes'; then + echo "$as_me:1709: checking $title (pass expected) " >&5 +echo $ECHO_N "checking $title (pass expected) ... $ECHO_C" >&6 + cat >conftest.$ac_ext <<_ACEOF +#line 1712 "configure" +#include "confdefs.h" + +#include +#include +#include "test.hpp" + +#ifdef $macroname +#include "boost_$basename.cxx" +#else +namespace ${namespace} = empty_boost; +#endif + +int cpp_main( int, char *[] ) +{ + return ${namespace}::test(); +} +#define main _main + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:1740: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:1743: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:1746: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:1749: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + echo "$as_me:1751: result: OK" >&5 +echo "${ECHO_T}OK" >&6 + +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +echo "$as_me:1757: result: Failed" >&5 +echo "${ECHO_T}Failed" >&6 + required_undefs="$macroname $required_undefs" + +fi +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext + + echo "$as_me:1764: checking $title (fail expected) " >&5 +echo $ECHO_N "checking $title (fail expected) ... $ECHO_C" >&6 + cat >conftest.$ac_ext <<_ACEOF +#line 1767 "configure" +#include "confdefs.h" + +#include +#include +#include "test.hpp" + +#ifndef $macroname +#include "boost_$basename.cxx" +#else +#error "this file should not compile" +#endif + +int cpp_main( int, char *[] ) +{ + return ${namespace}::test(); +} +#define main _main + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:1795: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:1798: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:1801: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:1804: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + + echo "$as_me:1807: result: failed" >&5 +echo "${ECHO_T}failed" >&6 + required_defs="$macroname $required_defs" + +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 + + echo "$as_me:1815: result: OK" >&5 +echo "${ECHO_T}OK" >&6 + +fi +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext + + else + + ac_ext=$use_ac_ext + echo "$as_me:1824: checking $title" >&5 +echo $ECHO_N "checking $title... $ECHO_C" >&6 + cat >conftest.$ac_ext <<_ACEOF +#line 1827 "configure" +#include "confdefs.h" + +#include +#include +#include "test.hpp" + +#include "boost_$basename.cxx" + +int cpp_main( int, char *[] ) +{ + return ${namespace}::test(); +} +#define main _main + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:1851: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:1854: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:1857: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:1860: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + + echo "$as_me:1863: result: Yes" >&5 +echo "${ECHO_T}Yes" >&6 + required_defs="$macroname $required_defs" + +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 + + echo "$as_me:1871: result: no" >&5 +echo "${ECHO_T}no" >&6 + +fi +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext + + 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 +else +echo the following macros need to be defined +echo $required_defs +fi +if test "$required_undefs" = ""; then +echo no boost macros need to be undefined +else +echo "the following macros need to be undef'ed" +echo $required_undefs +fi + +else + +date_string=`date` + +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: +#define BOOST_NO_CONFIG + +// 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 << EOF + +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! + +EOF + +cat_conts=`cat user.hpp` + +fi + +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}' + +# VPATH may cause trouble with some makes, so we remove $(srcdir), +# ${srcdir} and @srcdir@ from VPATH if srcdir is ".", strip leading and +# trailing colons and then remove the whole line if VPATH becomes empty +# (actually we leave an empty line to preserve line numbers). +if test "x$srcdir" = x.; then + ac_vpsub='/^[ ]*VPATH[ ]*=/{ +s/:*\$(srcdir):*/:/; +s/:*\${srcdir}:*/:/; +s/:*@srcdir@:*/:/; +s/^\([^=]*=[ ]*\):*/\1/; +s/:*$//; +s/^[^=]*=[ ]*$//; +}' +fi + +# 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 we branch to the quote section. Otherwise, +# look for a macro that doesn't take arguments. +cat >confdef2opt.sed <<\EOF +t clear +: clear +s,^[ ]*#[ ]*define[ ][ ]*\([^ (][^ (]*([^)]*)\)[ ]*\(.*\),-D\1=\2,g +t quote +s,^[ ]*#[ ]*define[ ][ ]*\([^ ][^ ]*\)[ ]*\(.*\),-D\1=\2,g +t quote +d +: quote +s,[ `~#$^&*(){}\\|;'"<>?],\\&,g +s,\[,\\&,g +s,\],\\&,g +s,\$,$$,g +p +EOF +# We use echo to avoid assuming a particular line-breaking character. +# The extra dot is to prevent the shell from consuming trailing +# line-breaks from the sub-command output. A line-break within +# single-quotes doesn't work because, if this script is created in a +# platform that uses two characters for line-breaks (e.g., DOS), tr +# would break. +ac_LF_and_DOT=`echo; echo .` +DEFS=`sed -n -f confdef2opt.sed confdefs.h | tr "$ac_LF_and_DOT" ' .'` +rm -f confdef2opt.sed + +: ${CONFIG_STATUS=./config.status} +ac_clean_files_save=$ac_clean_files +ac_clean_files="$ac_clean_files $CONFIG_STATUS" +{ echo "$as_me:2018: creating $CONFIG_STATUS" >&5 +echo "$as_me: creating $CONFIG_STATUS" >&6;} +cat >$CONFIG_STATUS <<_ACEOF +#! $SHELL +# Generated automatically by configure. +# 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 +SHELL=\${CONFIG_SHELL-$SHELL} +ac_cs_invocation="\$0 \$@" + +_ACEOF + +cat >>$CONFIG_STATUS <<\_ACEOF +# Be Bourne compatible +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then + emulate sh + NULLCMD=: +elif test -n "${BASH_VERSION+set}" && (set -o posix) >/dev/null 2>&1; then + set -o posix +fi + +# Name of the executable. +as_me=`echo "$0" |sed 's,.*[\\/],,'` + +if expr a : '\(a\)' >/dev/null 2>&1; then + as_expr=expr +else + as_expr=false +fi + +rm -f conf$$ conf$$.exe conf$$.file +echo >conf$$.file +if ln -s conf$$.file conf$$ 2>/dev/null; then + # We could just check for DJGPP; but this test a) works b) is more generic + # and c) will remain valid once DJGPP supports symlinks (DJGPP 2.04). + if test -f conf$$.exe; then + # Don't use ln at all; we don't have any links + as_ln_s='cp -p' + else + as_ln_s='ln -s' + fi +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$$.file + +as_executable_p="test -f" + +# Support unset when possible. +if (FOO=FOO; unset FOO) >/dev/null 2>&1; then + as_unset=unset +else + as_unset=false +fi + +# NLS nuisances. +$as_unset LANG || test "${LANG+set}" != set || { LANG=C; export LANG; } +$as_unset LC_ALL || test "${LC_ALL+set}" != set || { LC_ALL=C; export LC_ALL; } +$as_unset LC_TIME || test "${LC_TIME+set}" != set || { LC_TIME=C; export LC_TIME; } +$as_unset LC_CTYPE || test "${LC_CTYPE+set}" != set || { LC_CTYPE=C; export LC_CTYPE; } +$as_unset LANGUAGE || test "${LANGUAGE+set}" != set || { LANGUAGE=C; export LANGUAGE; } +$as_unset LC_COLLATE || test "${LC_COLLATE+set}" != set || { LC_COLLATE=C; export LC_COLLATE; } +$as_unset LC_NUMERIC || test "${LC_NUMERIC+set}" != set || { LC_NUMERIC=C; export LC_NUMERIC; } +$as_unset LC_MESSAGES || test "${LC_MESSAGES+set}" != set || { LC_MESSAGES=C; export LC_MESSAGES; } + +# IFS +# We need space, tab and new line, in precisely that order. +as_nl=' +' +IFS=" $as_nl" + +# CDPATH. +$as_unset CDPATH || test "${CDPATH+set}" != set || { CDPATH=:; export CDPATH; } + +exec 6>&1 + +_ACEOF + +# Files that config.status was made for. +if test -n "$ac_config_files"; then + echo "config_files=\"$ac_config_files\"" >>$CONFIG_STATUS +fi + +if test -n "$ac_config_headers"; then + echo "config_headers=\"$ac_config_headers\"" >>$CONFIG_STATUS +fi + +if test -n "$ac_config_links"; then + echo "config_links=\"$ac_config_links\"" >>$CONFIG_STATUS +fi + +if test -n "$ac_config_commands"; then + echo "config_commands=\"$ac_config_commands\"" >>$CONFIG_STATUS +fi + +cat >>$CONFIG_STATUS <<\EOF + +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, then exit + -d, --debug don't remove temporary files + --recheck update $as_me by reconfiguring in the same conditions + +Configuration commands: +$config_commands + +Report bugs to ." +EOF + +cat >>$CONFIG_STATUS <>$CONFIG_STATUS <<\EOF +# 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[^=]*=\(.*\)'` + shift + set dummy "$ac_option" "$ac_optarg" ${1+"$@"} + shift + ;; + -*);; + *) # This is not an option, so the user has probably given explicit + # arguments. + ac_need_defaults=false;; + esac + + case $1 in + # Handling of the options. +EOF +cat >>$CONFIG_STATUS <>$CONFIG_STATUS <<\EOF + --version | --vers* | -V ) + echo "$ac_cs_version"; exit 0 ;; + --he | --h) + # Conflict between --help and --header + { { echo "$as_me:2183: error: ambiguous option: $1 +Try \`$0 --help' for more information." >&5 +echo "$as_me: error: ambiguous option: $1 +Try \`$0 --help' for more information." >&2;} + { (exit 1); exit 1; }; };; + --help | --hel | -h ) + echo "$ac_cs_usage"; exit 0 ;; + --debug | --d* | -d ) + debug=: ;; + --file | --fil | --fi | --f ) + shift + CONFIG_FILES="$CONFIG_FILES $1" + ac_need_defaults=false;; + --header | --heade | --head | --hea ) + shift + CONFIG_HEADERS="$CONFIG_HEADERS $1" + ac_need_defaults=false;; + + # This is an error. + -*) { { echo "$as_me:2202: error: unrecognized option: $1 +Try \`$0 --help' for more information." >&5 +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" ;; + + esac + shift +done + +exec 5>>config.log +cat >&5 << _ACEOF + +## ----------------------- ## +## Running config.status. ## +## ----------------------- ## + +This file was extended by $as_me 2.52, executed with + CONFIG_FILES = $CONFIG_FILES + CONFIG_HEADERS = $CONFIG_HEADERS + CONFIG_LINKS = $CONFIG_LINKS + CONFIG_COMMANDS = $CONFIG_COMMANDS + > $ac_cs_invocation +on `(hostname || uname -n) 2>/dev/null | sed 1q` + +_ACEOF +EOF + +cat >>$CONFIG_STATUS <>$CONFIG_STATUS <<\EOF +for ac_config_target in $ac_config_targets +do + case "$ac_config_target" in + # Handling of arguments. + "default" ) CONFIG_COMMANDS="$CONFIG_COMMANDS default" ;; + *) { { echo "$as_me:2247: 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 + +# Create a temporary directory, and hook for its removal unless debugging. +$debug || +{ + trap 'exit_status=$?; rm -rf $tmp && exit $exit_status' 0 + trap '{ (exit 1); exit 1; }' 1 2 13 15 +} + +# Create a (secure) tmp directory for tmp files. +: ${TMPDIR=/tmp} +{ + tmp=`(umask 077 && mktemp -d -q "$TMPDIR/csXXXXXX") 2>/dev/null` && + test -n "$tmp" && test -d "$tmp" +} || +{ + tmp=$TMPDIR/cs$$-$RANDOM + (umask 077 && mkdir $tmp) +} || +{ + echo "$me: cannot create a temporary directory in $TMPDIR" >&2 + { (exit 1); exit 1; } +} + +EOF + +cat >>$CONFIG_STATUS <<\EOF + +# +# CONFIG_COMMANDS section. +# +for ac_file in : $CONFIG_COMMANDS; do test "x$ac_file" = x: && continue + ac_dest=`echo "$ac_file" | sed 's,:.*,,'` + ac_source=`echo "$ac_file" | sed 's,[^:]*:,,'` + + case $ac_dest in + default ) +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 +EOF + +cat >>$CONFIG_STATUS <<\EOF + +{ (exit 0); exit 0; } +EOF +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=: + exec 5>/dev/null + $SHELL $CONFIG_STATUS || 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 + diff --git a/include/boost/config.hpp b/include/boost/config.hpp index 5d259661..68c236f3 100644 --- a/include/boost/config.hpp +++ b/include/boost/config.hpp @@ -1,6 +1,6 @@ // Boost config.hpp configuration header file ------------------------------// -// (C) Copyright Boost.org 1999. Permission to copy, use, modify, sell and +// (C) Copyright Boost.org 2001. Permission to copy, use, modify, sell and // distribute this software is granted provided this copyright notice appears // in all copies. This software is provided "as is" without express or implied // warranty, and with no claim as to its suitability for any purpose. @@ -9,659 +9,52 @@ // Boost config.hpp policy and rationale documentation has been moved to // http://www.boost.org/libs/config - -// Revision History (excluding minor changes for specific compilers) -// 29 Mar 01 BOOST_NO_EXPLICIT_FUNCTION_TEMPLATE_ARGUMENTS (Daryle Walker) -// 16 Mar 01 Added BOOST_VERSION (Jens Maurer) -// 06 Mar 01 Refactored EDG checks for Intel C++ (Dave Abrahams) -// 04 Mar 01 Factored EDG checks, added BOOST_NO_ARGUMENT_DEPENDENT_LOOKUP -// for Intel C++ 5.0 (Dave Abrahams) -// 17 Feb 01 BOOST_NO_CV_SPECIALIZATIONS -// BOOST_NO_CV_VOID_SPECIALIZATIONS (John Maddock) -// 11 Feb 01 Added BOOST_STATIC_CONSTANT (Dave Abrahams) -// 20 Jan 01 BOOST_NO_LIMITS_COMPILE_TIME_CONSTANTS moved here from -// cast.hpp. Added missing BOOST_NO_STRINGSTREAM which some -// boost code seemed to depend on. (Dave Abrahams) -// 13 Jan 01 SGI MIPSpro and Compaq Tru64 Unix compiler support added -// (Jens Maurer) -// 13 Jan 01 BOOST_NO_ARGUMENT_DEPENDENT_LOOKUP (Jens Maurer) -// 17 Nov 00 BOOST_NO_AUTO_PTR (John Maddock) -// 4 Oct 00 BOOST_NO_STD_MIN_MAX (Jeremy Siek) -// 29 Sep 00 BOOST_NO_INTEGRAL_INT64_T (Jens Maurer) -// 25 Sep 00 BOOST_NO_STD_ALLOCATOR (Jeremy Siek) -// 18 SEP 00 BOOST_NO_SLIST, BOOST_NO_HASH, -// BOOST_NO_TEMPLATED_ITERATOR_CONSTRUCTORS -// BOOST_NO_LIMITS (Jeremy Siek) -// 1 Sep 00 BOOST_NO_PRIVATE_IN_AGGREGATE added. (Mark Rodgers) -// 23 Jul 00 Fixed spelling of BOOST_NO_INCLASS_MEMBER_INITIALIZATION in -// comment (Dave Abrahams). -// 10 Jul 00 BOOST_NO_POINTER_TO_MEMBER_CONST added (Mark Rodgers) -// 26 Jun 00 BOOST_NO_STD_ITERATOR, BOOST_MSVC_STD_ITERATOR, -// BOOST_NO_STD_ITERATOR_TRAITS, BOOST_NO_USING_TEMPLATE, -// added (Jeremy Siek) -// 20 Jun 00 BOOST_MSVC added (Aleksey Gurtovoy) -// 14 Jun 00 BOOST_NO_DEPENDENT_TYPES_IN_TEMPLATE_VALUE_PARAMETERS (Jens M.) -// 22 Mar 00 BOOST_MSVC6_MEMBER_TEMPLATES added (Dave Abrahams) -// 18 Feb 00 BOOST_NO_INCLASS_MEMBER_INITIALIZATION added (Jens Maurer) -// 26 Jan 00 Borland compiler support added (John Maddock) -// 26 Jan 00 Sun compiler support added (Jörg Schaible) -// 30 Dec 99 BOOST_NMEMBER_TEMPLATES compatibility moved here from -// smart_ptr.hpp. (Dave Abrahams) -// 15 Nov 99 BOOST_NO_OPERATORS_IN_NAMESPACE, -// BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION added (Beman Dawes) -// 11 Oct 99 BOOST_NO_STDC_NAMESPACE refined; supplied -// 29 Sep 99 BOOST_NO_STDC_NAMESPACE added (Ed Brey) -// 24 Sep 99 BOOST_DECL added (Ed Brey) -// 10 Aug 99 Endedness flags added, GNU CC support added -// 22 Jul 99 Initial version - +// +// CAUTION: This file is intended to be completely stable - +// DO NOT MODIFY THIS FILE! +// #ifndef BOOST_CONFIG_HPP #define BOOST_CONFIG_HPP -#define BOOST_VERSION 102500 - -// BOOST_VERSION % 100 is the sub-minor version -// BOOST_VERSION / 100 % 1000 is the minor version -// BOOST_VERSION / 100000 is the major version - - -// Conformance Flag Macros -------------------------------------------------// -// -// Conformance flag macros should identify the absence of C++ Standard -// conformance rather than its presence. This ensures that standard conforming -// compilers do not require a lot of configuration flag macros. It places the -// burden where it should be, on non-conforming compilers. In the future, -// hopefully, less rather than more conformance flags will have to be defined. - -// BOOST_NO_CV_SPECIALIZATIONS: if template specializations for cv-qualified -// types conflict with a specialization for unqualififed type. - -// BOOST_NO_CV_VOID_SPECIALIZATIONS: if template specializations for cv-void -// types conflict with a specialization for void. - -// BOOST_NO_ARGUMENT_DEPENDENT_LOOKUP: Compiler does not implement -// argument-dependent lookup (also named Koenig lookup); see std::3.4.2 -// [basic.koenig.lookup] - -// BOOST_NO_DEPENDENT_TYPES_IN_TEMPLATE_VALUE_PARAMETERS: Template value -// parameters cannot have a dependent type, for example -// "template class X { ... };" - -// BOOST_NO_EXPLICIT_FUNCTION_TEMPLATE_ARGUMENTS: Can only use deduced -// template arguments when calling function template instantiations. - -// BOOST_NO_INCLASS_MEMBER_INITIALIZATION: Compiler violates std::9.4.2/4. - -// BOOST_NO_INT64_T: does not support 64-bit integer -// types. (Set by rather than ). - -// BOOST_NO_INTEGRAL_INT64_T: int64_t as defined by is -// not an integral type. - -// BOOST_NO_LIMITS_COMPILE_TIME_CONSTANTS: constants such as -// numeric_limits::is_signed are not available for use at compile-time. - -// BOOST_NO_MEMBER_TEMPLATES: Member template functions not fully supported. -// Also see BOOST_MSVC6_MEMBER_TEMPLATES in the Compiler Control section below. - -// BOOST_NO_MEMBER_TEMPLATE_FRIENDS: Member template friend syntax -// ("template friend class frd;") described in the C++ Standard, -// 14.5.3, not supported. - -// BOOST_NO_OPERATORS_IN_NAMESPACE: 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. - -// BOOST_NO_POINTER_TO_MEMBER_CONST: 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. - -// BOOST_NO_PRIVATE_IN_AGGREGATE: The compiler misreads 8.5.1, treating classes -// as non-aggregate if they contain private or protected member functions. - -// BOOST_NO_STD_ITERATOR: The C++ implementation fails to provide the -// std::iterator class. - -// BOOST_NO_STD_ITERATOR_TRAITS: 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_STDC_NAMESPACE: The contents of C++ standard headers for C library -// functions (the headers) have not been placed in namespace std. -// Because the use of std::size_t is so common, a specific workaround for -// (and thus std::size_t) is provided in this header (see below). -// For other headers, a workaround must be provided in the boost header: -// -// #include // for abs -// #ifdef BOOST_NO_STDC_NAMESPACE -// namespace std { using ::abs; } -// #endif - -// BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION. Class template partial -// specialization (14.5.4 [temp.class.spec]) not supported. - -// BOOST_NO_USING_TEMPLATE: The compiler will not accept a using declaration -// that imports a template from the global namespace into a named namespace. -// Probably Borland specific. - -// BOOST_NO_AUTO_PTR: If the compiler / library supplies non-standard or broken -// std::auto_ptr. - -// BOOST_WEAK_FUNCTION_TEMPLATE_ORDERING: The compiler does not perform -// function template ordering or its function template ordering is incorrect. -// -// template void f(T); // #1 -// template void f(T (*)(U)); // #2 -// void bar(int); -// f(&bar); // should choose #2. - -// BOOST_NO_DEPENDENT_NESTED_DERIVATIONS: The compiler fails to compile -// a nested class that has a dependent base class: -// template -// struct foo : public T { -// template -// struct bar : public T, public U {}; -// }; - -// -// Compiler Control or Information Macros ----------------------------------// -// -// Compilers often supply features outside of the C++ Standard which need to be -// controlled or detected. As usual, reasonable default behavior should occur -// if any of these macros are not defined. - -// BOOST_DECL: Certain compilers for Microsoft operating systems require -// non-standard class and function decoration if dynamic load library linking -// is desired. BOOST_DECL supplies that decoration. Boost does not require -// use of BOOST_DECL - it is non-standard and to be avoided if practical to do -// so. Even compilers requiring it for DLL's only require it in certain cases. -// -// BOOST_DECL_EXPORTS: User defined, usually via command line or IDE, -// it causes BOOST_DECL to be defined as __declspec(dllexport). -// -// BOOST_DECL_IMPORTS: User defined, usually via command line or IDE, -// it causes BOOST_DECL to be defined as __declspec(dllimport). -// -// If neither BOOST_DECL_EXPORTS nor BOOST_DECL_IMPORTS is defined, or if -// the compiler does not require __declspec() decoration, BOOST_DECL is -// defined as a null string. - -// BOOST_MSVC6_MEMBER_TEMPLATES: 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. - -// BOOST_MSVC: defined as _MSC_VER for the Microsoft compiler only. In general, -// boost headers should test for a specific conformance flag macro (for -// example, BOOST_NO_MEMBER_TEMPLATE_FRIENDS) rather than a specific compiler. -// VC++ is a special case, however, since many libraries try to support it yet -// it has so many conformance issues that sometimes it is just easier to test -// for it directly. On the other hand, the obvious way to do this doesn't work, -// as many non-Microsoft compilers define _MSC_VER. Thus BOOST_MSVC. - -// BOOST_MSVC_STD_ITERATOR: Microsoft's broken version of std::iterator -// is being used. - -// BOOST_SYSTEM_HAS_STDINT_H: There are no 1998 C++ Standard headers -// or , although the 1999 C Standard does include . -// If is present, 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). - -// BOOST_NO_SLIST: The C++ implementation does not provide the slist class. - -// BOOST_NO_STRINGSTREAM: The C++ implementation does not provide the header. - -// BOOST_NO_HASH: The C++ implementation does not provide the hash_set -// or hash_map classes. - -// BOOST_STD_EXTENSION_NAMESPACE: The name of the namespace in which the slist, -// hash_set and/or hash_map templates are defined in this implementation (if any). - -// BOOST_NO_TEMPLATED_ITERATOR_CONSTRUCTORS: The standard library does not provide -// templated iterator constructors for its containers. - -// BOOST_NO_LIMITS: The C++ implementation does not provide the header. - -// BOOST_NO_INTRINSIC_WCHAR_T: 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_STD_ALLOCATOR: The C++ standard library does not provide -// a standards conforming std::allocator. - -// BOOST_NO_STD_MIN_MAX: The C++ standard library does not provide -// the min() and max() template functions that should be in . - -// Common compiler front-ends precede all compiler checks ------------------// - -// Edison Design Group front-ends -# if defined(__EDG_VERSION__) -# if __EDG_VERSION__ <= 241 -# define BOOST_NO_ARGUMENT_DEPENDENT_LOOKUP -# endif - -# endif - -// Compiler-specific checks -------------------------------------------------// -// Compilers are listed in alphabetic order by vendor name -// (except VC++ must be last - see below) - -// Borland ------------------------------------------------------------------// - -#if defined __BORLANDC__ -# define BOOST_NO_SLIST -# define BOOST_NO_HASH -// pull in standard library version: -# include -# if __BORLANDC__ <= 0x0551 -# define BOOST_NO_DEPENDENT_NESTED_DERIVATIONS -# define BOOST_NO_INTEGRAL_INT64_T -# define BOOST_NO_PRIVATE_IN_AGGREGATE -# endif -# if __BORLANDC__ <= 0x0550 -// Borland C++ Builder 4 and 5: -# define BOOST_NO_MEMBER_TEMPLATE_FRIENDS -# define BOOST_NO_USING_TEMPLATE -# if __BORLANDC__ == 0x0550 -// Borland C++ Builder 5, command-line compiler 5.5: -# define BOOST_NO_OPERATORS_IN_NAMESPACE -# endif -# endif -# if defined BOOST_DECL_EXPORTS -# if defined BOOST_DECL_IMPORTS -# error Not valid to define both BOOST_DECL_EXPORTS and BOOST_DECL_IMPORTS -# endif -# define BOOST_DECL __declspec(dllexport) -# elif defined BOOST_DECL_IMPORTS -# define BOOST_DECL __declspec(dllimport) -# else -# define BOOST_DECL -# endif -#if (__BORLANDC__ == 0x550) || (__BORLANDC__ == 0x551) -// is partly broken, some macos define symbols that are really in -// namespace std, so you end up having to use illegal constructs like -// std::DBL_MAX, as a fix we'll just include float.h and have done with: -#include +// if we don't have a user config, then use the default location: +#if !defined(BOOST_USER_CONFIG) && !defined(BOOST_NO_USER_CONFIG) +# define BOOST_USER_CONFIG #endif -# define BOOST_NO_CV_SPECIALIZATIONS -# define BOOST_NO_CV_VOID_SPECIALIZATIONS - -// Comeau C++ ----------------------------------------------------------------// - -# elif defined __COMO__ -# if __COMO_VERSION__ <= 4245 -# define BOOST_FUNCTION_USE_VIRTUAL_FUNCTIONS -# if defined(_MSC_VER) && _MSC_VER <= 1200 -# define BOOST_NO_STDC_NAMESPACE -# endif -# endif - -// Compaq Tru64 Unix cxx --------------------------------------------------- - -# elif defined __DECCXX -# define BOOST_NO_SLIST -# define BOOST_NO_HASH - -// GNU CC (also known as GCC and G++) --------------------------------------// - -# elif defined __GNUC__ -# if __GNUC__ == 2 && __GNUC_MINOR__ == 91 - // egcs 1.1 won't parse smart_ptr.hpp without this: -# define BOOST_NO_AUTO_PTR -# endif -# if __GNUC__ == 2 && __GNUC_MINOR__ <= 97 -# include // not sure this is the right way to do this -JGS -# if defined(__BASTRING__) && !defined(__GLIBCPP__) && !defined(_CXXRT_STD) && !defined(__SGI_STL) // need to ask Dietmar about this -JGS - // this should only detect the stdlibc++ that ships with gcc, and - // not any replacements that may be installed... -# define BOOST_NO_STD_ITERATOR -# define BOOST_NO_LIMITS -# endif -# if !defined(_CXXRT_STD) && !defined(__SGI_STL_OWN_IOSTREAMS) -# define BOOST_NO_STRINGSTREAM -# endif -# define BOOST_NO_MEMBER_TEMPLATE_FRIENDS -# define BOOST_NO_OPERATORS_IN_NAMESPACE -# define BOOST_WEAK_FUNCTION_TEMPLATE_ORDERING -# endif -# if __GNUC__ == 2 && __GNUC_MINOR__ <= 8 -# define BOOST_NO_MEMBER_TEMPLATES -# endif -# if __GNUC__ >= 3 -# include -# if defined(__GLIBCPP__) - // The new GNU C++ library has slist, hash_map, hash_set headers - // in , but client code assumes they're in <*> --- Jens M. -# define BOOST_NO_SLIST -# define BOOST_NO_HASH -# endif -# endif - -// Greenhills C++ -----------------------------------------------------------// - -#elif defined __ghs -# define BOOST_NO_SLIST -# define BOOST_NO_HASH - -// HP aCC ------------------------------------------------------------------- - -# elif defined __HP_aCC -# define BOOST_NO_SLIST -# define BOOST_NO_HASH -# define BOOST_NO_DEPENDENT_TYPES_IN_TEMPLATE_VALUE_PARAMETERS -# define BOOST_NO_OPERATORS_IN_NAMESPACE - // (support for HP aCC is not complete, see the regression test results) - -// Intel on Linux -----------------------------------------------------------// - -#elif defined __ICC -# include -# ifdef _CPPLIB_VER - // shipped with Dinkumware 3.10, which has a different hash_map -# define BOOST_NO_HASH -# endif - -// Intel on Windows --------------------------------------------------------// - -# elif defined __ICL -# if __ICL <= 600 - // Intel C++ 5.0.1 uses EDG 2.45, but fails to activate Koenig lookup - // in the frontend even in "strict" mode. (reported by Kirk Klobe) - // Intel C++ 6.0 (currently in Beta test) doesn't have any front-end - // changes at all. (reported by Kirk Klobe) -# ifndef BOOST_NO_ARGUMENT_DEPENDENT_LOOKUP -# define BOOST_NO_ARGUMENT_DEPENDENT_LOOKUP -# endif -# define BOOST_WEAK_FUNCTION_TEMPLATE_ORDERING -# define BOOST_NO_INTRINSIC_WCHAR_T // tentative addition - required for VC6 compatibility? (added by JM 19 Feb 2001) -# endif -# include // not sure this is the right way to do this -JGS -# if __SGI_STL_PORT >= 0x400 || __SGI_STL_PORT >= 0x321 && defined(__STL_USE_NAMESPACES) - // a perfectly good implementation of std::iterator is supplied -# elif defined(__SGI_STL_ITERATOR) -# define BOOST_NO_STD_ITERATOR // No std::iterator in this case -# elif defined(_CPPLIB_VER) && (_CPPLIB_VER >= 306) -# // full dinkumware 3.06 and above -# define BOOST_NO_HASH -# define BOOST_NO_STD_ITERATOR_TRAITS -# if !_GLOBAL_USING // can be defined in yvals.h -# define BOOST_NO_STDC_NAMESPACE -# endif -# else // assume using dinkumware's STL that comes with VC++ 6.0 -# define BOOST_MSVC_STD_ITERATOR -# define BOOST_NO_STD_ITERATOR_TRAITS -# define BOOST_NO_STDC_NAMESPACE -# define BOOST_NO_SLIST -# define BOOST_NO_HASH -# define BOOST_NO_TEMPLATED_ITERATOR_CONSTRUCTORS -# define BOOST_NO_STD_ALLOCATOR -# define BOOST_NO_STD_MIN_MAX -# endif - -// Kai C++ ---------------------------------------------------------------- - -#elif defined __KCC -# define BOOST_NO_SLIST -# define BOOST_NO_HASH - -# if __KCC_VERSION <= 4001 - // at least on Sun, the contents of is not in namespace std -# define BOOST_NO_STDC_NAMESPACE -# endif - -// Metrowerks CodeWarrior -------------------------------------------------// - -# elif defined __MWERKS__ -# if __MWERKS__ <= 0x2405 // 7 -# define BOOST_NO_MEMBER_TEMPLATE_FRIENDS -# endif -# if __MWERKS__ <= 0x2401 // 6.2 -# define BOOST_WEAK_FUNCTION_TEMPLATE_ORDERING -# endif -# if __MWERKS__ <= 0x2301 // 5.3 -# define BOOST_NO_POINTER_TO_MEMBER_CONST -# define BOOST_NO_DEPENDENT_TYPES_IN_TEMPLATE_VALUE_PARAMETERS -# define BOOST_NO_HASH -# endif -# if __MWERKS__ >= 0x2400 -# define BOOST_STD_EXTENSION_NAMESPACE Metrowerks -# endif -# if __MWERKS__ >= 0x2300 -# define BOOST_SYSTEM_HAS_STDINT_H -# endif -# if defined BOOST_DECL_EXPORTS -# if defined BOOST_DECL_IMPORTS -# error Not valid to define both BOOST_DECL_EXPORTS and BOOST_DECL_IMPORTS -# endif -# define BOOST_DECL __declspec(dllexport) -# elif defined BOOST_DECL_IMPORTS -# define BOOST_DECL __declspec(dllimport) -# else -# define BOOST_DECL -# endif - -// SGI MIPSpro C++ ---------------------------------------------------------// - -# elif defined __sgi - // This is a generic STLport condition and could be moved elsewhere. -# include -# if defined(__SGI_STL_PORT) && !defined(__STL_MEMBER_TEMPLATE_CLASSES) && !defined(_STLP_MEMBER_TEMPLATE_CLASSES) -# define BOOST_NO_STD_ALLOCATOR -# endif - -// Sun Workshop Compiler C++ -----------------------------------------------// - -# elif defined __SUNPRO_CC -# if __SUNPRO_CC <= 0x520 -# define BOOST_NO_SLIST -# define BOOST_NO_HASH -# define BOOST_NO_STD_ITERATOR_TRAITS -# define BOOST_NO_STD_ALLOCATOR - - // although sunpro 5.1 supports the syntax for - // inline initialization it often gets the value - // wrong, especially where the value is computed - // from other constants (J Maddock 6th May 2001) -# define BOOST_NO_INCLASS_MEMBER_INITIALIZATION - - // although sunpro 5.1 supports the syntax for - // partial specialization, it often seems to - // bind to the wrong specialization. Better - // to disable it until suppport becomes more stable - // (J Maddock 6th May 2001). -# define BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION - - // integral constant expressions with 64 bit numbers fail -# define BOOST_NO_INTEGRAL_INT64_T -# endif -# if __SUNPRO_CC <= 0x500 -# define BOOST_NO_MEMBER_TEMPLATES -# define BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION -# endif - -// Microsoft Visual C++ (excluding Intel/EDG front end) -------------------- -// -// Must remain the last #elif since some other vendors (Metrowerks, for -// example) also #define _MSC_VER - -# elif defined _MSC_VER -# define BOOST_MSVC _MSC_VER - - // turn off the warnings before we #include anything -# pragma warning( disable : 4786 ) // ident trunc to '255' chars in debug info -# pragma warning( disable : 4503 ) // warning: decorated name length exceeded - -# if _MSC_VER <= 1200 // 1200 == VC++ 6.0 -# define BOOST_NO_INCLASS_MEMBER_INITIALIZATION -# define BOOST_NO_PRIVATE_IN_AGGREGATE -# define BOOST_NO_ARGUMENT_DEPENDENT_LOOKUP -# define BOOST_NO_EXPLICIT_FUNCTION_TEMPLATE_ARGUMENTS - -# define BOOST_NO_INTEGRAL_INT64_T -# define BOOST_NO_INTRINSIC_WCHAR_T - -// VC++ 6.0 has member templates but they have numerous problems including -// cases of silent failure, so for safety we define: -# define BOOST_NO_MEMBER_TEMPLATES -// For VC++ experts wishing to attempt workarounds, we define: -# define BOOST_MSVC6_MEMBER_TEMPLATES - -# define BOOST_NO_MEMBER_TEMPLATE_FRIENDS -# define BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION -# define BOOST_NO_DEPENDENT_TYPES_IN_TEMPLATE_VALUE_PARAMETERS -# define BOOST_WEAK_FUNCTION_TEMPLATE_ORDERING -# include // not sure this is the right way to do this -JGS -# if __SGI_STL_PORT >= 0x400 || __SGI_STL_PORT >= 0x321 && defined(__STL_USE_NAMESPACES) - // a perfectly good implementation of std::iterator is supplied - // A conforming allocator is supplied, but the compiler cannot cope - // when using "rebind". (Douglas Gregor) -# define BOOST_NO_STD_ALLOCATOR -# elif defined(__SGI_STL_ITERATOR) -# define BOOST_NO_STD_ITERATOR // No std::iterator in this case -# elif defined(_CPPLIB_VER) && (_CPPLIB_VER >= 306) - // full dinkumware 3.06 and above -# define BOOST_NO_HASH -# define BOOST_NO_STD_ITERATOR_TRAITS -# ifndef _GLOBAL_USING // can be defined in yvals.h -# define BOOST_NO_STDC_NAMESPACE -# endif -# if _CPPLIB_VER < 308 // fix due to kensai@pacbell.net -# define BOOST_MSVC_STD_ITERATOR -# endif -# else -# define BOOST_MSVC_STD_ITERATOR -# define BOOST_NO_SLIST -# define BOOST_NO_HASH -# define BOOST_NO_TEMPLATED_ITERATOR_CONSTRUCTORS -# define BOOST_NO_STD_ALLOCATOR -# ifndef _CPPLIB_VER - // Updated Dinkum library defines this, and provides - // its own min and max definitions. -# define BOOST_NO_STD_MIN_MAX -# undef min -# undef max -# endif -# ifndef NOMINMAX - // avoid spurious NOMINMAX redefinition warning -# define NOMINMAX -# endif -# endif -# define BOOST_NO_STD_ITERATOR_TRAITS -# define BOOST_NO_CV_VOID_SPECIALIZATIONS - - -// Make sure at least one standard library header is included so that library -// implementation detection will work, even if no standard headers have been -// included in front of a boost header. (Ed Brey 5 Jun 00) -# include - -// Determine if the standard library implementation is already pulling names -// into std. STLport defines the following if so. (Ed Brey 5 Jun 00) -# if !defined( __STL_IMPORT_VENDOR_CSTD ) || defined( __STL_NO_CSTD_FUNCTION_IMPORTS ) -# define BOOST_NO_STDC_NAMESPACE -# endif - -# endif - -# if defined BOOST_DECL_EXPORTS -# if defined BOOST_DECL_IMPORTS -# error Not valid to define both BOOST_DECL_EXPORTS and BOOST_DECL_IMPORTS -# endif -# define BOOST_DECL __declspec(dllexport) -# elif defined BOOST_DECL_IMPORTS -# define BOOST_DECL __declspec(dllimport) -# else -# define BOOST_DECL -# endif - -# endif // Microsoft (excluding Intel/EDG frontend) - -# ifndef BOOST_DECL -# define BOOST_DECL // default for compilers not needing this decoration. -# endif - -// end of compiler specific portion ----------------------------------------// - -#if defined(BOOST_NO_LIMITS) || (defined(_RWSTD_VER) && defined(__BORLANDC__) && _RWSTD_VER < 0x020300) || (defined(__SGI_STL_PORT) && __SGI_STL_PORT <= 0x410 && defined(__STL_STATIC_CONST_INIT_BUG)) -// STLPort 4.0 doesn't define the static constants in numeric_limits<> so that they -// can be used at compile time if the compiler bug indicated by -// __STL_STATIC_CONST_INIT_BUG is present. - -// Rogue wave STL (C++ Builder) also has broken numeric_limits -// with default template defining members out of line. -// However, Compaq C++ also uses RogueWave (version 0x0203) and it's ok. -# define BOOST_NO_LIMITS_COMPILE_TIME_CONSTANTS +// include it first: +#ifdef BOOST_USER_CONFIG +# include BOOST_USER_CONFIG #endif -#if defined(__hpux) -// HP-UX has a nice stdint.h in a different location, see boost/cstdint.hpp -# define BOOST_SYSTEM_HAS_STDINT_H +// if we don't have a compiler config set, try and find one: +#if !defined(BOOST_COMPILER_CONFIG) && !defined(BOOST_NO_COMPILER_CONFIG) && !defined(BOOST_NO_CONFIG) +# include +#endif +// if we don't have a std library config set, try and find one: +#if !defined(BOOST_STDLIB_CONFIG) && !defined(BOOST_NO_STDLIB_CONFIG) && !defined(BOOST_NO_CONFIG) +# include +#endif +// if we don't have a platform config set, try and find one: +#if !defined(BOOST_PLATFORM_CONFIG) && !defined(BOOST_NO_PLATFORM_CONFIG) && !defined(BOOST_NO_CONFIG) +# include #endif -#ifdef __APPLE_CC__ -#define BOOST_NO_INTRINSIC_WCHAR_T + +// if we have a compiler config, include it now: +#ifdef BOOST_COMPILER_CONFIG +# include BOOST_COMPILER_CONFIG +#endif +// if we have a std library config, include it now: +#ifdef BOOST_STDLIB_CONFIG +# include BOOST_STDLIB_CONFIG +#endif +// if we have a platform config, include it now: +#ifdef BOOST_PLATFORM_CONFIG +# include BOOST_PLATFORM_CONFIG #endif -#ifndef BOOST_STD_EXTENSION_NAMESPACE -# define BOOST_STD_EXTENSION_NAMESPACE std -#endif - -// Check for old name "BOOST_NMEMBER_TEMPLATES" for compatibility -----------// -// Don't use BOOST_NMEMBER_TEMPLATES. It is deprecated and will be removed soon. -#if defined( BOOST_NMEMBER_TEMPLATES ) && !defined( BOOST_NO_MEMBER_TEMPLATES ) - #define BOOST_NO_MEMBER_TEMPLATES -#endif - -// BOOST_NO_STDC_NAMESPACE workaround --------------------------------------// -// -// Because std::size_t usage is so common, even in boost headers which do not -// otherwise use the C library, the workaround is included here so -// that ugly workaround code need not appear in many other boost headers. -// NOTE WELL: This is a workaround for non-conforming compilers; -// must still be #included in the usual places so that inclusion -// works as expected with standard conforming compilers. The resulting -// double inclusion of is harmless. - -# ifdef BOOST_NO_STDC_NAMESPACE -# include - namespace std { using ::ptrdiff_t; using ::size_t; } - // using ::wchar_t; removed since wchar_t is a C++ built-in type (Ed Brey) -# endif - -#ifdef BOOST_NO_STD_MIN_MAX -namespace std { - template - inline const _Tp& min(const _Tp& __a, const _Tp& __b) { - return __b < __a ? __b : __a; - } - template - inline const _Tp& max(const _Tp& __a, const _Tp& __b) { - return __a < __b ? __b : __a; - } -#ifdef BOOST_MSVC - inline long min(long __a, long __b) { - return __b < __a ? __b : __a; - } - inline long max(long __a, long __b) { - return __a < __b ? __b : __a; - } -#endif -} -#endif - -// BOOST_STATIC_CONSTANT workaround --------------------------------------- // -// 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. -#ifdef BOOST_NO_INCLASS_MEMBER_INITIALIZATION -# define BOOST_STATIC_CONSTANT(type, assignment) enum { assignment } -#else -# define BOOST_STATIC_CONSTANT(type, assignment) static const type assignment -#endif +// get config suffix code: +#include #endif // BOOST_CONFIG_HPP @@ -671,3 +64,6 @@ namespace std { + + + diff --git a/include/boost/config/compiler/borland.hpp b/include/boost/config/compiler/borland.hpp new file mode 100644 index 00000000..1246b75b --- /dev/null +++ b/include/boost/config/compiler/borland.hpp @@ -0,0 +1,55 @@ +// (C) Copyright Boost.org 2001. Permission to copy, use, modify, sell and +// distribute this software is granted provided this copyright notice appears +// in all copies. This software is provided "as is" without express or implied +// warranty, and with no claim as to its suitability for any purpose. + +// See http://www.boost.org for most recent version. + +// Borland C++ compiler setup: + +# if __BORLANDC__ <= 0x0550 +// Borland C++ Builder 4 and 5: +# define BOOST_NO_MEMBER_TEMPLATE_FRIENDS +# if __BORLANDC__ == 0x0550 +// Borland C++ Builder 5, command-line compiler 5.5: +# define BOOST_NO_OPERATORS_IN_NAMESPACE +# endif +# endif + +#if (__BORLANDC__ >= 0x550) +// is partly broken, some macos define symbols that are really in +// namespace std, so you end up having to use illegal constructs like +// std::DBL_MAX, as a fix we'll just include float.h and have done with: +#include +#endif + +// Version 5.51: +#if (__BORLANDC__ <= 0x551) || !defined(BOOST_STRICT_CONFIG) +# define BOOST_NO_CV_SPECIALIZATIONS +# define BOOST_NO_CV_VOID_SPECIALIZATIONS +# define BOOST_NO_INTEGRAL_INT64_T +# define BOOST_NO_PRIVATE_IN_AGGREGATE +# define BOOST_NO_DEPENDENT_NESTED_DERIVATIONS +# define BOOST_NO_SWPRINTF +# define BOOST_NO_USING_TEMPLATE +#endif + +#define BOOST_COMPILER "Borland C++ version " BOOST_STRINGIZE(__BORLANDC__) + +// +// versions check: +// we don't support Borland prior to version 5.4: +#if __BORLANDC__ < 0x540 +# error "Compiler not supported or configured - please reconfigure" +#endif +// +// last known and checked version is 5.51: +#if (__BORLANDC__ > 0x551) +# if defined(BOOST_ASSERT_CONFIG) +# error "Unknown compiler version - please run the configure tests and report the results" +# else +# pragma message( "Unknown compiler version - please run the configure tests and report the results") +# endif +#endif + + diff --git a/include/boost/config/compiler/comeau.hpp b/include/boost/config/compiler/comeau.hpp new file mode 100644 index 00000000..5c4cc81c --- /dev/null +++ b/include/boost/config/compiler/comeau.hpp @@ -0,0 +1,36 @@ +// (C) Copyright Boost.org 2001. Permission to copy, use, modify, sell and +// distribute this software is granted provided this copyright notice appears +// in all copies. This software is provided "as is" without express or implied +// warranty, and with no claim as to its suitability for any purpose. + +// See http://www.boost.org for most recent version. + +// Comeau C++ compiler setup: + +#include "boost/config/compiler/common_edg.hpp" + +#if (__COMO_VERSION__ <= 4245) || !defined(BOOST_STRICT_CONFIG) +# define BOOST_FUNCTION_USE_VIRTUAL_FUNCTIONS +# if defined(_MSC_VER) && _MSC_VER <= 1200 +# define BOOST_NO_STDC_NAMESPACE +# endif +#endif + +#define BOOST_COMPILER "Comeau compiler version " BOOST_STRINGIZE(__COMO_VERSION__) + +// +// versions check: +// we don't know Comeau prior to version 4245: +#if __COMO_VERSION__ < 4245 +# error "Compiler not configured - please reconfigure" +#endif +// +// last known and checked version is 4245: +#if (__COMO_VERSION__ > 4245) +# if defined(BOOST_ASSERT_CONFIG) +# error "Unknown compiler version - please run the configure tests and report the results" +# endif +#endif + + + diff --git a/include/boost/config/compiler/common_edg.hpp b/include/boost/config/compiler/common_edg.hpp new file mode 100644 index 00000000..b80c4c79 --- /dev/null +++ b/include/boost/config/compiler/common_edg.hpp @@ -0,0 +1,18 @@ +// (C) Copyright Boost.org 2001. Permission to copy, use, modify, sell and +// distribute this software is granted provided this copyright notice appears +// in all copies. This software is provided "as is" without express or implied +// warranty, and with no claim as to its suitability for any purpose. + +// See http://www.boost.org for most recent version. + +// +// Options common to all edg based compilers. +// +// This is included from within the individual compiler mini-configs. + + +#if (__EDG_VERSION__ <= 241) && !defined(BOOST_NO_ARGUMENT_DEPENDENT_LOOKUP) +# define BOOST_NO_ARGUMENT_DEPENDENT_LOOKUP +#endif + + diff --git a/include/boost/config/compiler/compaq_cxx.hpp b/include/boost/config/compiler/compaq_cxx.hpp new file mode 100644 index 00000000..8d09ff46 --- /dev/null +++ b/include/boost/config/compiler/compaq_cxx.hpp @@ -0,0 +1,18 @@ +// (C) Copyright Boost.org 2001. Permission to copy, use, modify, sell and +// distribute this software is granted provided this copyright notice appears +// in all copies. This software is provided "as is" without express or implied +// warranty, and with no claim as to its suitability for any purpose. + +// See http://www.boost.org for most recent version. + +// Dec Alpha True64 C++ compiler setup: + +#define BOOST_COMPILER "Dec Alpha True64 " BOOST_STRINGIZE(__DECCXX_VER) + +#include "boost/config/compiler/common_edg.hpp" + +// +// versions check: +// Nothing to do here? + + diff --git a/include/boost/config/compiler/gcc.hpp b/include/boost/config/compiler/gcc.hpp new file mode 100644 index 00000000..cb3c9cfd --- /dev/null +++ b/include/boost/config/compiler/gcc.hpp @@ -0,0 +1,59 @@ +// (C) Copyright Boost.org 2001. Permission to copy, use, modify, sell and +// distribute this software is granted provided this copyright notice appears +// in all copies. This software is provided "as is" without express or implied +// warranty, and with no claim as to its suitability for any purpose. + +// See http://www.boost.org for most recent version. + +// GNU C++ compiler setup: + +# if __GNUC__ == 2 && __GNUC_MINOR__ == 91 + // egcs 1.1 won't parse smart_ptr.hpp without this: +# define BOOST_NO_AUTO_PTR +# endif +# if __GNUC__ == 2 && __GNUC_MINOR__ < 95 + // + // Prior to gcc 2.95 member templates only partly + // work - define BOOST_MSVC6_MEMBER_TEMPLATES + // instead since inline member templates mostly work. + // +# define BOOST_NO_MEMBER_TEMPLATES +# if __GNUC_MINOR__ >= 9 +# define BOOST_MSVC6_MEMBER_TEMPLATES +# endif +# endif + +# if __GNUC__ == 2 && __GNUC_MINOR__ <= 97 +# define BOOST_NO_MEMBER_TEMPLATE_FRIENDS +# define BOOST_NO_OPERATORS_IN_NAMESPACE +# endif + +// +// define BOOST_NO_INTRINSIC_WCHAR_T for gcc platforms known not to +// have wchar_t as an intrinsic type: +// +#if defined(__APPLE__) || defined(__FreeBSD__) || defined(__NetBSD__) || defined(__OpenBSD__) +# define BOOST_NO_INTRINSIC_WCHAR_T +#endif + +#define BOOST_COMPILER "GNU C++ version " BOOST_STRINGIZE(__GNUC__) "." BOOST_STRINGIZE(__GNUC_MINOR__) + +// +// versions check: +// we don't know gcc prior to version 2.90: +#if (__GNUC__ == 2) && (__GNUC_MINOR__ < 90) +# error "Compiler not configured - please reconfigure" +#endif +// +// last known and checked version is 3.0: +#if (__GNUC__ > 3) || ((__GNUC__ == 3) && (__GNUC_MINOR__ > 0)) +# if defined(BOOST_ASSERT_CONFIG) +# error "Unknown compiler version - please run the configure tests and report the results" +# else +# warning "Unknown compiler version - please run the configure tests and report the results" +# endif +#endif + + + + diff --git a/include/boost/config/compiler/greenhills.hpp b/include/boost/config/compiler/greenhills.hpp new file mode 100644 index 00000000..793ef522 --- /dev/null +++ b/include/boost/config/compiler/greenhills.hpp @@ -0,0 +1,27 @@ +// (C) Copyright Boost.org 2001. Permission to copy, use, modify, sell and +// distribute this software is granted provided this copyright notice appears +// in all copies. This software is provided "as is" without express or implied +// warranty, and with no claim as to its suitability for any purpose. + +// See http://www.boost.org for most recent version. + +// Greenhills C++ compiler setup: + +#define BOOST_COMPILER "Greenhills C++ version " BOOST_STRINGIZE(__ghs) + +#include "boost/config/compiler/common_edg.hpp" + +// +// versions check: +// we don't support Greenhills prior to version 0: +#if __ghs < 0 +# error "Compiler not supported or configured - please reconfigure" +#endif +// +// last known and checked version is 0: +#if (__ghs > 0) +# if defined(BOOST_ASSERT_CONFIG) +# error "Unknown compiler version - please run the configure tests and report the results" +# endif +#endif + diff --git a/include/boost/config/compiler/hp_acc.hpp b/include/boost/config/compiler/hp_acc.hpp new file mode 100644 index 00000000..2813ec11 --- /dev/null +++ b/include/boost/config/compiler/hp_acc.hpp @@ -0,0 +1,36 @@ +// (C) Copyright Boost.org 2001. Permission to copy, use, modify, sell and +// distribute this software is granted provided this copyright notice appears +// in all copies. This software is provided "as is" without express or implied +// warranty, and with no claim as to its suitability for any purpose. + +// See http://www.boost.org for most recent version. + +// HP aCC C++ compiler setup: + +// THIS FILE IS INCOMPLETE: WE NEED THE CORRECT VERSION CHECKS ADDING!!! +#if (__HP_aCC <= 0) || !defined(BOOST_STRICT_CONFIG) +# define BOOST_NO_DEPENDENT_TYPES_IN_TEMPLATE_VALUE_PARAMETERS +# define BOOST_NO_OPERATORS_IN_NAMESPACE +# if !defined(_NAMESPACE_STD) +# define BOOST_NO_STD_LOCALE +# define BOOST_NO_STRINGSTREAM +# endif +#endif + + +#define BOOST_COMPILER "HP aCC version " BOOST_STRINGIZE(__HP_aCC) + +// +// versions check: +// we don't support HP aCC prior to version 0: +#if __HP_aCC < 0 +# error "Compiler not supported or configured - please reconfigure" +#endif +// +// last known and checked version is 0: +#if (__HP_aCC > 0) +# if defined(BOOST_ASSERT_CONFIG) +# error "Unknown compiler version - please run the configure tests and report the results" +# endif +#endif + diff --git a/include/boost/config/compiler/intel.hpp b/include/boost/config/compiler/intel.hpp new file mode 100644 index 00000000..87cef75d --- /dev/null +++ b/include/boost/config/compiler/intel.hpp @@ -0,0 +1,56 @@ +// (C) Copyright Boost.org 2001. Permission to copy, use, modify, sell and +// distribute this software is granted provided this copyright notice appears +// in all copies. This software is provided "as is" without express or implied +// warranty, and with no claim as to its suitability for any purpose. + +// See http://www.boost.org for most recent version. + +// Intel compiler setup: + +#include "boost/config/compiler/common_edg.hpp" + +#ifdef __ICL +# define BOOST_COMPILER "Intel C++ version " BOOST_STRINGIZE(__ICL) +# define BOOST_INTEL_CXX_VERSION __ICL +#else +# define BOOST_COMPILER "Intel C++ version " BOOST_STRINGIZE(__ICC) +# define BOOST_INTEL_CXX_VERSION __ICC +#endif + +#if BOOST_INTEL_CXX_VERSION <= 600 +# define BOOST_WEAK_FUNCTION_TEMPLATE_ORDERING + // Intel C++ 5.0.1 uses EDG 2.45, but fails to activate Koenig lookup + // in the frontend even in "strict" mode. (reported by Kirk Klobe) + // Intel C++ 6.0 (currently in Beta test) doesn't have any front-end + // changes at all. (reported by Kirk Klobe) +# ifndef BOOST_NO_ARGUMENT_DEPENDENT_LOOKUP +# define BOOST_NO_ARGUMENT_DEPENDENT_LOOKUP +# endif + +#endif + +#ifdef _MSC_VER +# ifndef _NATIVE_WCHAR_T_DEFINED +# define BOOST_NO_INTRINSIC_WCHAR_T +# endif +# define BOOST_NO_SWPRINTF +#endif + + +// +// versions check: +// we don't support Intel prior to version 5.0: +#if BOOST_INTEL_CXX_VERSION < 500 +# error "Compiler not supported or configured - please reconfigure" +#endif +// +// last known and checked version is 500: +#if (BOOST_INTEL_CXX_VERSION > 500) +# if defined(BOOST_ASSERT_CONFIG) +# error "Unknown compiler version - please run the configure tests and report the results" +# elif defined(_MSC_VER) +# warning "Unknown compiler version - please run the configure tests and report the results" +# endif +#endif + + diff --git a/include/boost/config/compiler/kai.hpp b/include/boost/config/compiler/kai.hpp new file mode 100644 index 00000000..6b8ab84b --- /dev/null +++ b/include/boost/config/compiler/kai.hpp @@ -0,0 +1,27 @@ +// (C) Copyright Boost.org 2001. Permission to copy, use, modify, sell and +// distribute this software is granted provided this copyright notice appears +// in all copies. This software is provided "as is" without express or implied +// warranty, and with no claim as to its suitability for any purpose. + +// See http://www.boost.org for most recent version. + +// Kai C++ compiler setup: + +#include "boost/config/compiler/common_edg.hpp" + +# if (__KCC_VERSION <= 4001) || !defined(BOOST_STRICT_CONFIG) + // at least on Sun, the contents of is not in namespace std +# define BOOST_NO_STDC_NAMESPACE +# endif + +#define BOOST_COMPILER "Kai C++ version " BOOST_STRINGIZE(__KCC_VERSION) + +// +// last known and checked version is 4001: +#if (__KCC_VERSION > 4001) +# if defined(BOOST_ASSERT_CONFIG) +# error "Unknown compiler version - please run the configure tests and report the results" +# endif +#endif + + diff --git a/include/boost/config/compiler/metrowerks.hpp b/include/boost/config/compiler/metrowerks.hpp new file mode 100644 index 00000000..b58ce504 --- /dev/null +++ b/include/boost/config/compiler/metrowerks.hpp @@ -0,0 +1,50 @@ +// (C) Copyright Boost.org 2001. Permission to copy, use, modify, sell and +// distribute this software is granted provided this copyright notice appears +// in all copies. This software is provided "as is" without express or implied +// warranty, and with no claim as to its suitability for any purpose. + +// See http://www.boost.org for most recent version. + +// Metrowerks C++ compiler setup: + +# if __MWERKS__ <= 0x2301 // 5.3 +# define BOOST_WEAK_FUNCTION_TEMPLATE_ORDERING +# define BOOST_NO_POINTER_TO_MEMBER_CONST +# define BOOST_NO_DEPENDENT_TYPES_IN_TEMPLATE_VALUE_PARAMETERS +# define BOOST_NO_MEMBER_TEMPLATE_KEYWORD +# endif + +# if __MWERKS__ <= 0x2401 // 6.2 +# define BOOST_WEAK_FUNCTION_TEMPLATE_ORDERING +# endif + +# if(__MWERKS__ <= 0x2405) || !defined(BOOST_STRICT_CONFIG) // 7 +# define BOOST_NO_MEMBER_TEMPLATE_FRIENDS +# endif + +#if !__option(wchar_type) +# define BOOST_NO_INTRINSIC_WCHAR_T +#endif + + +#define BOOST_COMPILER "Metrowerks CodeWarrior C++ version " BOOST_STRINGIZE(__MWERKS__) + +// +// versions check: +// we don't support Metrowerks prior to version 5.3: +#if __MWERKS__ < 0x2301 +# error "Compiler not supported or configured - please reconfigure" +#endif +// +// last known and checked version is 0x890: +#if (__MWERKS__ > 0x2405) +# if defined(BOOST_ASSERT_CONFIG) +# error "Unknown compiler version - please run the configure tests and report the results" +# endif +#endif + + + + + + diff --git a/include/boost/config/compiler/mpw.hpp b/include/boost/config/compiler/mpw.hpp new file mode 100644 index 00000000..3cd979a0 --- /dev/null +++ b/include/boost/config/compiler/mpw.hpp @@ -0,0 +1,49 @@ +// (C) Copyright Boost.org 2001. Permission to copy, use, modify, sell and +// distribute this software is granted provided this copyright notice appears +// in all copies. This software is provided "as is" without express or implied +// warranty, and with no claim as to its suitability for any purpose. + +// See http://www.boost.org for most recent version. + +// MPW C++ compilers setup: + +# if defined(__SC__) +# define BOOST_COMPILER "MPW SCpp version " BOOST_STRINGIZE(__SC__) +# elif defined(__MRC__) +# define BOOST_COMPILER "MPW MrCpp version " BOOST_STRINGIZE(__MRC__) +# else +# error "Using MPW compiler configuration by mistake. Please update." +# endif + +// +// MPW 8.90: +// +#if (MPW_CPLUS <= 0x890) || !defined(BOOST_STRICT_CONFIG) +# define BOOST_NO_CV_SPECIALIZATIONS +# define BOOST_NO_DEPENDENT_NESTED_DERIVATIONS +# define BOOST_NO_DEPENDENT_TYPES_IN_TEMPLATE_VALUE_PARAMETERS +# define BOOST_NO_INCLASS_MEMBER_INITIALIZATION +# define BOOST_NO_INTRINSIC_WCHAR_T +# define BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION +# define BOOST_NO_USING_TEMPLATE + +# define BOOST_NO_CWCHAR +# define BOOST_NO_LIMITS_COMPILE_TIME_CONSTANTS + +# define BOOST_NO_STD_ALLOCATOR /* actually a bug with const reference overloading */ +#endif + +// +// versions check: +// we don't support MPW prior to version 8.9: +#if MPW_CPLUS < 0x890 +# error "Compiler not supported or configured - please reconfigure" +#endif +// +// last known and checked version is 0x890: +#if (MPW_CPLUS > 0x890) +# if defined(BOOST_ASSERT_CONFIG) +# error "Unknown compiler version - please run the configure tests and report the results" +# endif +#endif + diff --git a/include/boost/config/compiler/sgi_mipspro.hpp b/include/boost/config/compiler/sgi_mipspro.hpp new file mode 100644 index 00000000..2ba47c96 --- /dev/null +++ b/include/boost/config/compiler/sgi_mipspro.hpp @@ -0,0 +1,16 @@ +// (C) Copyright Boost.org 2001. Permission to copy, use, modify, sell and +// distribute this software is granted provided this copyright notice appears +// in all copies. This software is provided "as is" without express or implied +// warranty, and with no claim as to its suitability for any purpose. + +// See http://www.boost.org for most recent version. + +// SGI C++ compiler setup: + +#define BOOST_COMPILER "SGI Irix compiler version " BOOST_STRINGIZE(_COMPILER_VERSION) + +#include "boost/config/compiler/common_edg.hpp" + +// +// version check: +// probably nothing to do here? diff --git a/include/boost/config/compiler/sunpro_cc.hpp b/include/boost/config/compiler/sunpro_cc.hpp new file mode 100644 index 00000000..925475a4 --- /dev/null +++ b/include/boost/config/compiler/sunpro_cc.hpp @@ -0,0 +1,47 @@ +// (C) Copyright Boost.org 2001. Permission to copy, use, modify, sell and +// distribute this software is granted provided this copyright notice appears +// in all copies. This software is provided "as is" without express or implied +// warranty, and with no claim as to its suitability for any purpose. + +// See http://www.boost.org for most recent version. + +// Sun C++ compiler setup: + +# if __SUNPRO_CC >= 0x520 + // + // Sunpro 5.1 and later: + // + // although sunpro 5.1 supports the syntax for + // inline initialization it often gets the value + // wrong, especially where the value is computed + // from other constants (J Maddock 6th May 2001) +# define BOOST_NO_INCLASS_MEMBER_INITIALIZATION + // although sunpro 5.1 supports the syntax for + // partial specialization, it often seems to + // bind to the wrong specialization. Better + // to disable it until suppport becomes more stable + // (J Maddock 6th May 2001). +# define BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION +# endif +# if __SUNPRO_CC <= 0x500 +# define BOOST_NO_MEMBER_TEMPLATES +# define BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION +# endif + +#define BOOST_COMPILER "Sun compiler version " BOOST_STRINGIZE(__SUNPRO_CC) + +// +// versions check: +// we don't support sunpro prior to version 4: +#if __SUNPRO_CC < 0x400 +#error "Compiler not supported or configured - please reconfigure" +#endif +// +// last known and checked version is 0x520: +#if (__SUNPRO_CC > 0x520) +# if defined(BOOST_ASSERT_CONFIG) +# error "Unknown compiler version - please run the configure tests and report the results" +# endif +#endif + + diff --git a/include/boost/config/compiler/vacpp.hpp b/include/boost/config/compiler/vacpp.hpp new file mode 100644 index 00000000..3f35a54b --- /dev/null +++ b/include/boost/config/compiler/vacpp.hpp @@ -0,0 +1,30 @@ +// (C) Copyright Boost.org 2001. Permission to copy, use, modify, sell and +// distribute this software is granted provided this copyright notice appears +// in all copies. This software is provided "as is" without express or implied +// warranty, and with no claim as to its suitability for any purpose. + +// See http://www.boost.org for most recent version. + +// Visual Age (IBM) C++ compiler setup: + +#define BOOST_NO_MEMBER_TEMPLATE_FRIENDS +#define BOOST_NO_INCLASS_MEMBER_INITIALIZATION + +#define BOOST_COMPILER "IBM Visual Age" BOOST_STRINGIZE(__IBMCPP__) + +// +// versions check: +// we don't support Visual age prior to version 5: +#if __IBMCPP__ < 500 +#error "Compiler not supported or configured - please reconfigure" +#endif +// +// last known and checked version is 500: +#if (__IBMCPP__ > 500) +# if defined(BOOST_ASSERT_CONFIG) +# error "Unknown compiler version - please run the configure tests and report the results" +# endif +#endif + + + diff --git a/include/boost/config/compiler/visualc.hpp b/include/boost/config/compiler/visualc.hpp new file mode 100644 index 00000000..3743e03d --- /dev/null +++ b/include/boost/config/compiler/visualc.hpp @@ -0,0 +1,75 @@ +// (C) Copyright Boost.org 2001. Permission to copy, use, modify, sell and +// distribute this software is granted provided this copyright notice appears +// in all copies. This software is provided "as is" without express or implied +// warranty, and with no claim as to its suitability for any purpose. + +// See http://www.boost.org for most recent version. + +// Microsoft Visual C++ compiler setup: + +#define BOOST_MSVC _MSC_VER + +// turn off the warnings before we #include anything +#pragma warning( disable : 4786 ) // ident trunc to '255' chars in debug info +#pragma warning( disable : 4503 ) // warning: decorated name length exceeded + +#if _MSC_VER <= 1200 // 1200 == VC++ 6.0 +# define BOOST_NO_EXPLICIT_FUNCTION_TEMPLATE_ARGUMENTS +# define BOOST_NO_DEPENDENT_TYPES_IN_TEMPLATE_VALUE_PARAMETERS +#endif + +#if (_MSC_VER <= 1300) || !defined(BOOST_STRICT_CONFIG) // VC7 Beta 2 or later +# define BOOST_NO_INCLASS_MEMBER_INITIALIZATION +# define BOOST_NO_PRIVATE_IN_AGGREGATE +# define BOOST_NO_ARGUMENT_DEPENDENT_LOOKUP +# define BOOST_NO_INTEGRAL_INT64_T + +// VC++ 6/7 has member templates but they have numerous problems including +// cases of silent failure, so for safety we define: +# define BOOST_NO_MEMBER_TEMPLATES +// For VC++ experts wishing to attempt workarounds, we define: +# define BOOST_MSVC6_MEMBER_TEMPLATES + +# define BOOST_NO_MEMBER_TEMPLATE_FRIENDS +# define BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION +# define BOOST_NO_CV_VOID_SPECIALIZATIONS +# define BOOST_WEAK_FUNCTION_TEMPLATE_ORDERING +# define BOOST_NO_USING_TEMPLATE +# define BOOST_NO_SWPRINTF +# define BOOST_NO_POINTER_TO_MEMBER_CONST + // + // disable man/max macros if defined: + // +# ifdef min +# undef min +# endif +# ifdef max +# undef max +# endif + // disable man/max macro defines on vc6: + // +# define NOMINMAX +#endif + +#ifndef _NATIVE_WCHAR_T_DEFINED +# define BOOST_NO_INTRINSIC_WCHAR_T +#endif + +#define BOOST_COMPILER "Microsoft Visual C++ version " BOOST_STRINGIZE(_MSC_VER) + +// +// versions check: +// we don't support Visual C++ prior to version 6: +#if _MSC_VER < 1200 +#error "Compiler not supported or configured - please reconfigure" +#endif +// +// last known and checked version is 1300: +#if (_MSC_VER > 1300) +# if defined(BOOST_ASSERT_CONFIG) +# error "Unknown compiler version - please run the configure tests and report the results" +# else +# warning "Unknown compiler version - please run the configure tests and report the results" +# endif +#endif + diff --git a/include/boost/config/platform/aix.hpp b/include/boost/config/platform/aix.hpp new file mode 100644 index 00000000..60784e10 --- /dev/null +++ b/include/boost/config/platform/aix.hpp @@ -0,0 +1,16 @@ +// (C) Copyright Boost.org 2001. Permission to copy, use, modify, sell and +// distribute this software is granted provided this copyright notice appears +// in all copies. This software is provided "as is" without express or implied +// warranty, and with no claim as to its suitability for any purpose. + +// See http://www.boost.org for most recent version. + +// IBM/Aix specific config options: + +#define BOOST_PLATFORM "IBM Aix" + +#define BOOST_HAS_UNISTD_H +#define BOOST_HAS_PTHREADS +#define BOOST_HAS_NL_TYPES_H + + diff --git a/include/boost/config/platform/beos.hpp b/include/boost/config/platform/beos.hpp new file mode 100644 index 00000000..13ca5279 --- /dev/null +++ b/include/boost/config/platform/beos.hpp @@ -0,0 +1,23 @@ +// (C) Copyright Boost.org 2001. Permission to copy, use, modify, sell and +// distribute this software is granted provided this copyright notice appears +// in all copies. This software is provided "as is" without express or implied +// warranty, and with no claim as to its suitability for any purpose. + +// See http://www.boost.org for most recent version. + +// BeOS specific config options: + +#define BOOST_PLATFORM "BeOS" + +#define BOOST_NO_CWCHAR +#define BOOST_NO_CWCTYPE +#define BOOST_HAS_UNISTD_H + +#define BOOST_HAS_BETHREADS + +#ifndef BOOST_DISABLE_THREADS +# define BOOST_HAS_THREADS +#endif + + + diff --git a/include/boost/config/platform/bsd.hpp b/include/boost/config/platform/bsd.hpp new file mode 100644 index 00000000..12160486 --- /dev/null +++ b/include/boost/config/platform/bsd.hpp @@ -0,0 +1,36 @@ +// (C) Copyright Boost.org 2001. Permission to copy, use, modify, sell and +// distribute this software is granted provided this copyright notice appears +// in all copies. This software is provided "as is" without express or implied +// warranty, and with no claim as to its suitability for any purpose. + +// See http://www.boost.org for most recent version. + +// generic BSD config options: + +#if !defined(__FreeBSD__) && !defined(__NetBSD__) && !defined(__OpenBSD__) +#error "This platform is not BSD" +#endif + +#ifdef __FreeBSD__ +#define BOOST_PLATFORM "FreeBSD " BOOST_STRINGIZE(__FreeBSD__) +#elif defined(__NetBSD__) +#define BOOST_PLATFORM "NetBSD " BOOST_STRINGIZE(__NetBSD__) +#elif defined(__OpenBSD__) +#define BOOST_PLATFORM "OpenBSD " BOOST_STRINGIZE(__OpenBSD__) +#endif + +// +// is this the correct version check? +// FreeBSD has but does not +// advertise the fact in : +// +#if defined(__FreeBSD__) && (__FreeBSD__ >= 4) +# define BOOST_HAS_NL_TYPES_H +#endif + +// +// no wide character support: +// +#define BOOST_NO_CWCHAR + + diff --git a/include/boost/config/platform/cygwin.hpp b/include/boost/config/platform/cygwin.hpp new file mode 100644 index 00000000..9ba1b629 --- /dev/null +++ b/include/boost/config/platform/cygwin.hpp @@ -0,0 +1,16 @@ +// (C) Copyright Boost.org 2001. Permission to copy, use, modify, sell and +// distribute this software is granted provided this copyright notice appears +// in all copies. This software is provided "as is" without express or implied +// warranty, and with no claim as to its suitability for any purpose. + +// See http://www.boost.org for most recent version. + +// cygwin specific config options: + +#define BOOST_PLATFORM "Cygwin" +#define BOOST_NO_CWCTYPE +#define BOOST_NO_CWCHAR +#define BOOST_NO_SWPRINTF + + + diff --git a/include/boost/config/platform/hpux.hpp b/include/boost/config/platform/hpux.hpp new file mode 100644 index 00000000..8a9b8a19 --- /dev/null +++ b/include/boost/config/platform/hpux.hpp @@ -0,0 +1,14 @@ +// (C) Copyright Boost.org 2001. Permission to copy, use, modify, sell and +// distribute this software is granted provided this copyright notice appears +// in all copies. This software is provided "as is" without express or implied +// warranty, and with no claim as to its suitability for any purpose. + +// See http://www.boost.org for most recent version. + +// hpux specific config options: + +#define BOOST_PLATFORM "HP Unix" +#define BOOST_HAS_STDINT_H + +#define BOOST_NO_SWPRINTF + diff --git a/include/boost/config/platform/irix.hpp b/include/boost/config/platform/irix.hpp new file mode 100644 index 00000000..b8d2362c --- /dev/null +++ b/include/boost/config/platform/irix.hpp @@ -0,0 +1,13 @@ +// (C) Copyright Boost.org 2001. Permission to copy, use, modify, sell and +// distribute this software is granted provided this copyright notice appears +// in all copies. This software is provided "as is" without express or implied +// warranty, and with no claim as to its suitability for any purpose. + +// See http://www.boost.org for most recent version. + +// SGI Irix specific config options: + +#define BOOST_PLATFORM "SGI Irix" + +#define BOOST_NO_SWPRINTF + diff --git a/include/boost/config/platform/linux.hpp b/include/boost/config/platform/linux.hpp new file mode 100644 index 00000000..857bc757 --- /dev/null +++ b/include/boost/config/platform/linux.hpp @@ -0,0 +1,50 @@ +// (C) Copyright Boost.org 2001. Permission to copy, use, modify, sell and +// distribute this software is granted provided this copyright notice appears +// in all copies. This software is provided "as is" without express or implied +// warranty, and with no claim as to its suitability for any purpose. + +// See http://www.boost.org for most recent version. + +// linux specific config options: + +#define BOOST_PLATFORM "linux" + +// +// stdint.h added to glibc 2.1.1 +// We can only test for 2.1 though: +// +#if defined(__GLIBC__) && ((__GLIBC__ > 2) || ((__GLIBC__ == 2) && (__GLIBC_MINOR__ >= 1))) +#define BOOST_HAS_STDINT_H +#endif +#define BOOST_NO_SWPRINTF + +#ifndef __GNUC__ +// +// if the compiler is not gcc we still need to be able to parse +// the GNU system headers, some of which (mainly ) +// use GNU specific extensions: +// +# ifndef __extension__ +# define __extension__ +# endif +# ifndef __const__ +# define __const__ const +# endif +# ifndef __volatile__ +# define __volatile__ volatile +# endif +# ifndef __signed__ +# define __signed__ signed +# endif +# ifndef __typeof__ +# define __typeof__ typeof +# endif +# ifndef __inline__ +# define __inline__ inline +# endif +#endif + + + + + diff --git a/include/boost/config/platform/macos.hpp b/include/boost/config/platform/macos.hpp new file mode 100644 index 00000000..0f8a160f --- /dev/null +++ b/include/boost/config/platform/macos.hpp @@ -0,0 +1,26 @@ +// (C) Copyright Boost.org 2001. Permission to copy, use, modify, sell and +// distribute this software is granted provided this copyright notice appears +// in all copies. This software is provided "as is" without express or implied +// warranty, and with no claim as to its suitability for any purpose. + +// See http://www.boost.org for most recent version. + +// Mac OS specific config options: + +#define BOOST_PLATFORM "Mac OS" + +// if __MACH__, we're using the BSD standard C library, not the MSL +#if defined(__MACH__) +# define BOOST_HAS_UNISTD_H +# define BOOST_NO_CWCHAR +# define BOOST_NO_STDC_NAMESPACE +# ifndef BOOST_HAS_STDINT_H +# define BOOST_HAS_STDINT_H +# endif +#endif + + + + + + diff --git a/include/boost/config/platform/sunpro.hpp b/include/boost/config/platform/sunpro.hpp new file mode 100644 index 00000000..e23cb138 --- /dev/null +++ b/include/boost/config/platform/sunpro.hpp @@ -0,0 +1,13 @@ +// (C) Copyright Boost.org 2001. Permission to copy, use, modify, sell and +// distribute this software is granted provided this copyright notice appears +// in all copies. This software is provided "as is" without express or implied +// warranty, and with no claim as to its suitability for any purpose. + +// See http://www.boost.org for most recent version. + +// sun specific config options: + +#define BOOST_PLATFORM "sun" + + + diff --git a/include/boost/config/platform/win32.hpp b/include/boost/config/platform/win32.hpp new file mode 100644 index 00000000..1ee4bdcd --- /dev/null +++ b/include/boost/config/platform/win32.hpp @@ -0,0 +1,28 @@ +// (C) Copyright Boost.org 2001. Permission to copy, use, modify, sell and +// distribute this software is granted provided this copyright notice appears +// in all copies. This software is provided "as is" without express or implied +// warranty, and with no claim as to its suitability for any purpose. + +// See http://www.boost.org for most recent version. + +// Win32 specific config options: + +#define BOOST_PLATFORM "Win32" + +#if defined BOOST_DECL_EXPORTS +# if defined BOOST_DECL_IMPORTS +# error Not valid to define both BOOST_DECL_EXPORTS and BOOST_DECL_IMPORTS +# endif +# define BOOST_DECL __declspec(dllexport) +#elif defined BOOST_DECL_IMPORTS +# define BOOST_DECL __declspec(dllimport) +#else +# define BOOST_DECL +#endif + +#if defined(__GNUC__) && !defined(BOOST_NO_SWPRINTF) +# define BOOST_NO_SWPRINTF +#endif + +#define BOOST_HAS_WINTHREADS + diff --git a/include/boost/config/posix_features.hpp b/include/boost/config/posix_features.hpp new file mode 100644 index 00000000..b23d8992 --- /dev/null +++ b/include/boost/config/posix_features.hpp @@ -0,0 +1,33 @@ +// (C) Copyright Boost.org 2001. Permission to copy, use, modify, sell and +// distribute this software is granted provided this copyright notice appears +// in all copies. This software is provided "as is" without express or implied +// warranty, and with no claim as to its suitability for any purpose. + +// See http://www.boost.org for most recent version. + +// All POSIX feature tests go in this file: + +# ifdef BOOST_HAS_UNISTD_H +# include + + // XOpen has , but is this the correct version check? +# if defined(_XOPEN_VERSION) && (_XOPEN_VERSION >= 3) +# define BOOST_HAS_NL_TYPES_H +# endif + + // POSIX version 6 requires +# if defined(_POSIX_VERSION) && (_POSIX_VERSION >= 200100) +# define BOOST_HAS_STDINT_H +# endif + + // POSIX defines _POSIX_THREADS > 0 for pthread support, + // however some platforms define _POSIX_THREADS without + // a value, hence the (_POSIX_THREADS+0 >= 0) check. + // Strictly speeking this may catch platforms with a + // non-functioning stub , but such occurrences should + // occur very rarely if at all... +# if defined(_POSIX_THREADS) && (_POSIX_THREADS+0 >= 0) +# define BOOST_HAS_PTHREADS +# endif + +# endif diff --git a/include/boost/config/select_compiler_config.hpp b/include/boost/config/select_compiler_config.hpp new file mode 100644 index 00000000..eba7f454 --- /dev/null +++ b/include/boost/config/select_compiler_config.hpp @@ -0,0 +1,77 @@ +// Boost compiler configuration selection header file + +// (C) Copyright Boost.org 2001. Permission to copy, use, modify, sell and +// distribute this software is granted provided this copyright notice appears +// in all copies. This software is provided "as is" without express or implied +// warranty, and with no claim as to its suitability for any purpose. + +// See http://www.boost.org for most recent version. + +// locate which compiler we are using and define +// BOOST_COMPILER_CONFIG as needed: + +#if defined __GNUC__ +// GNU C++: +# define BOOST_COMPILER_CONFIG + +#elif defined __KCC +// Kai C++ +# define BOOST_COMPILER_CONFIG + +#elif defined __sgi +// SGI MIPSpro C++ +# define BOOST_COMPILER_CONFIG + +#elif defined __DECCXX +// Compaq Tru64 Unix cxx +# define BOOST_COMPILER_CONFIG + +#elif defined __ghs +// Greenhills C++ +# define BOOST_COMPILER_CONFIG + +#elif defined __BORLANDC__ +// Borland +# define BOOST_COMPILER_CONFIG + +#elif defined(__ICL) || defined(__ICC) +// Intel +# define BOOST_COMPILER_CONFIG + +#elif defined __MWERKS__ +// Metrowerks CodeWarrior +# define BOOST_COMPILER_CONFIG + +#elif defined __SUNPRO_CC +// Sun Workshop Compiler C++ +# define BOOST_COMPILER_CONFIG + +#elif defined __HP_aCC +// HP aCC +# define BOOST_COMPILER_CONFIG + +#elif defined(__MRC__) || defined(__SC__) +// MPW MrCpp or SCpp +# define BOOST_COMPILER_CONFIG + +#elif defined(__IBMCPP__) +// IBM Visual Age +# define BOOST_COMPILER_CONFIG + +# elif defined __COMO__ +// Comeau C++ +# define BOOST_COMPILER_CONFIG + +#elif defined _MSC_VER +// Microsoft Visual C++ +// +// Must remain the last #elif since some other vendors (Metrowerks, for +// example) also #define _MSC_VER +# define BOOST_COMPILER_CONFIG + +#elif defined (BOOST_ASSERT_CONFIG) +// this must come last - generate an error if we don't +// recognise the compiler: +# error "Unknown compiler - please configure and report the results to boost.org" + +#endif diff --git a/include/boost/config/select_platform_config.hpp b/include/boost/config/select_platform_config.hpp new file mode 100644 index 00000000..974e5c50 --- /dev/null +++ b/include/boost/config/select_platform_config.hpp @@ -0,0 +1,62 @@ +// Boost compiler configuration selection header file + +// (C) Copyright Boost.org 2001. Permission to copy, use, modify, sell and +// distribute this software is granted provided this copyright notice appears +// in all copies. This software is provided "as is" without express or implied +// warranty, and with no claim as to its suitability for any purpose. + +// See http://www.boost.org for most recent version. + +// locate which platform we are on and define BOOST_PLATFORM_CONFIG as needed. +// Note that we define the headers to include using "header_name" not +// in order to prevent macro expansion within the header +// name (for example "linux" is a macro on linux systems). + +#if defined(linux) || defined(__linux) +// linux: +# define BOOST_PLATFORM_CONFIG "boost/config/platform/linux.hpp" + +#elif defined(__FreeBSD__) || defined(__NetBSD__) || defined(__OpenBSD__) +// BSD: +# define BOOST_PLATFORM_CONFIG "boost/config/platform/bsd.hpp" + +#elif defined(sun) || defined(__sun) +// solaris: +# define BOOST_PLATFORM_CONFIG "boost/config/platform/solaris.hpp" + +#elif defined(__sgi) +// SGI Irix: +# define BOOST_PLATFORM_CONFIG "boost/config/platform/irix.hpp" + +#elif defined(__hpux) +// hp unix: +# define BOOST_PLATFORM_CONFIG "boost/config/platform/hpux.hpp" + +#elif defined(__CYGWIN__) +// cygwin is not win32: +# define BOOST_PLATFORM_CONFIG "boost/config/platform/cygwin.hpp" + +#elif defined(_WIN32) || defined(__WIN32__) || defined(WIN32) +// win32: +# define BOOST_PLATFORM_CONFIG "boost/config/platform/win32.hpp" + +#elif defined(__BEOS__) +// BeOS +# define BOOST_PLATFORM_CONFIG "boost/config/platform/beos.hpp" + +#elif defined(macintosh) || defined(__APPLE__) || defined(__APPLE_CC__) +// MacOS +# define BOOST_PLATFORM_CONFIG "boost/config/platform/macos.hpp" + +#elif defined(__IBMCPP__) +// IBM +# define BOOST_PLATFORM_CONFIG "boost/config/platform/aix.hpp" + +#elif defined (BOOST_ASSERT_CONFIG) +// this must come last - generate an error if we don't +// recognise the platform: +# error "Unknown platform - please configure and report the results to boost.org" + +#endif + + diff --git a/include/boost/config/select_stdlib_config.hpp b/include/boost/config/select_stdlib_config.hpp new file mode 100644 index 00000000..a60c337a --- /dev/null +++ b/include/boost/config/select_stdlib_config.hpp @@ -0,0 +1,57 @@ +// Boost compiler configuration selection header file + +// (C) Copyright Boost.org 2001. Permission to copy, use, modify, sell and +// distribute this software is granted provided this copyright notice appears +// in all copies. This software is provided "as is" without express or implied +// warranty, and with no claim as to its suitability for any purpose. + +// See http://www.boost.org for most recent version. + +// locate which std lib we are using and define BOOST_STDLIB_CONFIG as needed: + +// we need to include a std lib header here in order to detect which +// library is in use, use as it's about the smallest +// of the std lib headers - do not rely on this header being included - +// users can short-circuit this header if they know whose std lib +// they are using. + +#include + +#if defined(__SGI_STL_PORT) +// STLPort library; this _must_ come first, otherwise since +// STLport typically sits on top of some other library, we +// can end up detecting that first rather than STLport: +# define BOOST_STDLIB_CONFIG + +#elif defined(__STD_RWCOMPILER_H__) || defined(_RWSTD_VER) +// Rogue Wave library: +# define BOOST_STDLIB_CONFIG + +#elif (defined(_YVALS) && !defined(__IBMCPP__)) || defined(_CPPLIB_VER) +// Dinkumware Library: +# define BOOST_STDLIB_CONFIG + +#elif defined(__GLIBCPP__) +// GNU libstdc++ 3 +# define BOOST_STDLIB_CONFIG + +#elif defined(__STL_CONFIG_H) +// generic SGI STL +# define BOOST_STDLIB_CONFIG + +#elif defined(__MSL_CPP__) +// MSL standard lib: +# define BOOST_STDLIB_CONFIG + +# elif defined(__IBMCPP__) +// take the default VACPP std lib +# define BOOST_STDLIB_CONFIG + +#elif defined (BOOST_ASSERT_CONFIG) +// this must come last - generate an error if we don't +// recognise the library: +# error "Unknown standard library - please configure and report the results to boost.org" + +#endif + + diff --git a/include/boost/config/stdlib/dinkumware.hpp b/include/boost/config/stdlib/dinkumware.hpp new file mode 100644 index 00000000..318601df --- /dev/null +++ b/include/boost/config/stdlib/dinkumware.hpp @@ -0,0 +1,68 @@ +// (C) Copyright Boost.org 2001. Permission to copy, use, modify, sell and +// distribute this software is granted provided this copyright notice appears +// in all copies. This software is provided "as is" without express or implied +// warranty, and with no claim as to its suitability for any purpose. + +// See http://www.boost.org for most recent version. + +// Dinkumware standard library config: + +#if !defined(_YVALS) && !defined(_CPPLIB_VER) +#include +#if !defined(_YVALS) && !defined(_CPPLIB_VER) +#error This is not the Dinkumware lib! +#endif +#endif + + +#if defined(_CPPLIB_VER) && (_CPPLIB_VER >= 306) + // full dinkumware 3.06 and above + // fully conforming provided the compiler supports it: +# if !(defined(_GLOBAL_USING) && (_GLOBAL_USING > 0)) && !defined(_STD) // can be defined in yvals.h +# define BOOST_NO_STDC_NAMESPACE +# endif +# if defined(_MSC_VER) && (_MSC_VER < 1300) + // if this lib version is set up for vc6 then there is no std::use_facet: +# define BOOST_NO_STD_USE_FACET +# define BOOST_HAS_TWO_ARG_USE_FACET +# endif +// 3.06 appears to have (non-sgi versions of) & , but no +//# define BOOST_HAS_SLIST +#else +# define BOOST_MSVC_STD_ITERATOR 1 +# define BOOST_NO_STD_ITERATOR +# define BOOST_NO_TEMPLATED_ITERATOR_CONSTRUCTORS +# define BOOST_NO_STD_ALLOCATOR +# define BOOST_NO_STDC_NAMESPACE +# define BOOST_NO_STD_USE_FACET +# define BOOST_NO_STD_OUTPUT_ITERATOR_ASSIGN +# define BOOST_HAS_MACRO_USE_FACET +# ifndef _CPPLIB_VER + // Updated Dinkum library defines this, and provides + // its own min and max definitions. +# define BOOST_NO_STD_MIN_MAX +# undef min +# undef max +# endif +# ifndef NOMINMAX + // avoid spurious NOMINMAX redefinition warning +# define NOMINMAX +# endif +#endif + +#if defined(_MSC_VER) && (_MSC_VER <= 1200) + // if we're using a dinkum lib that's + // been configured for VC6 then there is + // no iterator traits (true even for icl) +# define BOOST_NO_STD_ITERATOR_TRAITS +#endif + +#ifdef _CPPLIB_VER +# define BOOST_STDLIB "Dinkumware standard library version " BOOST_STRINGIZE(_CPPLIB_VER) +#else +# define BOOST_STDLIB "Dinkumware standard library version 1.x" +#endif + + + + diff --git a/include/boost/config/stdlib/libstdcpp3.hpp b/include/boost/config/stdlib/libstdcpp3.hpp new file mode 100644 index 00000000..c6f38dbb --- /dev/null +++ b/include/boost/config/stdlib/libstdcpp3.hpp @@ -0,0 +1,19 @@ +// (C) Copyright Boost.org 2001. Permission to copy, use, modify, sell and +// distribute this software is granted provided this copyright notice appears +// in all copies. This software is provided "as is" without express or implied +// warranty, and with no claim as to its suitability for any purpose. + +// See http://www.boost.org for most recent version. + +// config for libstdc++ v3 +// not much to go in here: + +#define BOOST_STDLIB "GNU libstdc++ version " BOOST_STRINGIZE(__GLIBCPP__) + +#ifndef _GLIBCPP_USE_WCHAR_T +# define BOOST_NO_CWCHAR +# define BOOST_NO_CWCTYPE +#endif + + + diff --git a/include/boost/config/stdlib/msl.hpp b/include/boost/config/stdlib/msl.hpp new file mode 100644 index 00000000..49abda0d --- /dev/null +++ b/include/boost/config/stdlib/msl.hpp @@ -0,0 +1,46 @@ +// (C) Copyright Boost.org 2001. Permission to copy, use, modify, sell and +// distribute this software is granted provided this copyright notice appears +// in all copies. This software is provided "as is" without express or implied +// warranty, and with no claim as to its suitability for any purpose. + +// See http://www.boost.org for most recent version. + +// Metrowerks standard library: + +#ifndef __MSL_CPP__ +# include +# ifndef __MSL_CPP__ +# error This is not the MSL standard library! +# endif +#endif + +#if __MSL_CPP__ >= 0x6000 // Pro 6 +# define BOOST_HAS_HASH +# define BOOST_STD_EXTENSION_NAMESPACE Metrowerks +#endif +#define BOOST_HAS_SLIST + +#if __MSL_CPP__ < 0x6209 +# define BOOST_NO_STD_MESSAGES +#endif + +// check C lib version for +#include + +#if defined(__MSL__) && (__MSL__ >= 0x5000) +# define BOOST_HAS_STDINT_H +# if defined(macintosh) +# define BOOST_HAS_UNISTD_H +# endif +#endif + + +#define BOOST_STDLIB "Metrowerks Standard Library version " BOOST_STRINGIZE(__MSL_CPP__) + + + + + + + + diff --git a/include/boost/config/stdlib/roguewave.hpp b/include/boost/config/stdlib/roguewave.hpp new file mode 100644 index 00000000..132724c3 --- /dev/null +++ b/include/boost/config/stdlib/roguewave.hpp @@ -0,0 +1,102 @@ +// (C) Copyright Boost.org 2001. Permission to copy, use, modify, sell and +// distribute this software is granted provided this copyright notice appears +// in all copies. This software is provided "as is" without express or implied +// warranty, and with no claim as to its suitability for any purpose. + +// See http://www.boost.org for most recent version. + +// Rogue Wave std lib: + +#if !defined(__STD_RWCOMPILER_H__) && !defined(_RWSTD_VER) +# include +# if !defined(__STD_RWCOMPILER_H__) && !defined(_RWSTD_VER) +# error This is not the Rogue Wave standard library +# endif +#endif +// +// figure out a consistent version number: +// +#ifndef _RWSTD_VER +# define BOOST_RWSTD_VER 0x010000 +#elif _RWSTD_VER < 0x010000 +# define BOOST_RWSTD_VER (_RWSTD_VER << 8) +#else +# define BOOST_RWSTD_VER _RWSTD_VER +#endif + +#ifndef _RWSTD_VER +# define BOOST_STDLIB "Rogue Wave standard library version (Unknown version)" +#else +# define BOOST_STDLIB "Rogue Wave standard library version " BOOST_STRINGIZE(_RWSTD_VER) +#endif + +// +// Prior to version 2.2.0 the primary template for std::numeric_limits +// does not have compile time constants, even though specialisations of that +// template do... +// +#if BOOST_RWSTD_VER < 0x020200 +# define BOOST_NO_LIMITS_COMPILE_TIME_CONSTANTS +#endif + +// +// No std::iterator if it can't figure out default template args: +// +#if defined(_RWSTD_NO_SIMPLE_DEFAULT_TEMPLATES) || defined(RWSTD_NO_SIMPLE_DEFAULT_TEMPLATES) || (BOOST_RWSTD_VER < 0x020000) +# define BOOST_NO_STD_ITERATOR +#endif + +// +// No iterator traits without partial specialisation: +// +#if defined(_RWSTD_NO_CLASS_PARTIAL_SPEC) || defined(RWSTD_NO_CLASS_PARTIAL_SPEC) +# define BOOST_NO_STD_ITERATOR_TRAITS +#endif + +// +// Prior to version 2.0, std::auto_ptr was buggy, and their were no +// new-style iostreams, and no conformant std::allocator: +// +#if (BOOST_RWSTD_VER < 0x020000) +# define BOOST_NO_AUTO_PTR +# define BOOST_NO_STRINGSTREAM +# define BOOST_NO_STD_ALLOCATOR +# define BOOST_NO_STD_LOCALE +#endif + +// +// No template iterator constructors without member template support: +// +#if defined(RWSTD_NO_MEMBER_TEMPLATES) || defined(_RWSTD_NO_MEMBER_TEMPLATES) +# define BOOST_NO_TEMPLATED_ITERATOR_CONSTRUCTORS +#endif + +// +// RW defines _RWSTD_ALLOCATOR if the allocator is conformant and in use: +// +#if !defined(_RWSTD_ALLOCATOR) +# define BOOST_NO_STD_ALLOCATOR +#endif + +// +// If we have a std::locale, we still may not have std::use_facet: +// +#if defined(_RWSTD_NO_TEMPLATE_ON_RETURN_TYPE) && !defined(BOOST_NO_STD_LOCALE) +# define BOOST_NO_STD_USE_FACET +# define BOOST_HAS_TWO_ARG_USE_FACET +#endif + +// +// There's no std::distance prior to version 2, or without +// partial specialisation support: +// +#if (BOOST_RWSTD_VER < 0x020000) || defined(_RWSTD_NO_CLASS_PARTIAL_SPEC) + #define BOOST_NO_STD_DISTANCE +#endif + +// Some versions of the rogue wave library, don't have assignable +// OutputIterators: +#if BOOST_RWSTD_VER < 0x020100 +# define BOOST_NO_STD_OUTPUT_ITERATOR_ASSIGN +#endif + diff --git a/include/boost/config/stdlib/sgi.hpp b/include/boost/config/stdlib/sgi.hpp new file mode 100644 index 00000000..2349088e --- /dev/null +++ b/include/boost/config/stdlib/sgi.hpp @@ -0,0 +1,81 @@ +// (C) Copyright Boost.org 2001. Permission to copy, use, modify, sell and +// distribute this software is granted provided this copyright notice appears +// in all copies. This software is provided "as is" without express or implied +// warranty, and with no claim as to its suitability for any purpose. + +// See http://www.boost.org for most recent version. + +// generic SGI STL: + +#if !defined(__STL_CONFIG_H) +# include +# if !defined(__STL_CONFIG_H) +# error "This is not the SGI STL!" +# endif +#endif + +// +// no std::iterator traits without partial specialisation: +// +#if !defined(__STL_CLASS_PARTIAL_SPECIALIZATION) +# define BOOST_NO_STD_ITERATOR_TRAITS +#endif + +// +// No std::stringstream with gcc < 3 +// +#if defined(__GNUC__) && (__GNUC__ < 3) && (__GNUC_MINOR__ < 95) && !defined(__STL_USE_NEW_IOSTREAMS) + // Note that we only set this for gnu C++ prior to 2.95 since the + // latest patches for that release do contain a minimal + // If you are running a 2.95 release prior to 2.95.3 then this will need + // setting, but there is no way to detect that automatically (other + // than by running the configure script). +# define BOOST_NO_STRINGSTREAM +#endif + +// +// Assume no std::locale without own iostreams (this may be an +// incorrect assumption in some cases): +// +#ifndef __SGI_STL_OWN_IOSTREAMS +# define BOOST_NO_STD_LOCALE +#endif + +// +// No template iterator constructors, or std::allocator +// without member templates: +// +#if !defined(__STL_MEMBER_TEMPLATES) +# define BOOST_NO_TEMPLATED_ITERATOR_CONSTRUCTORS +# define BOOST_NO_STD_ALLOCATOR +#endif + +// +// we always have SGI style hash_set, hash_map, and slist: +// +#define BOOST_HAS_HASH +#define BOOST_HAS_SLIST + +// +// If this is GNU libstdc++2, then no and no std::wstring: +// +#if (defined(__GNUC__) && (__GNUC__ < 3)) +# include +# if defined(__BASTRING__) +# define BOOST_NO_LIMITS +# define BOOST_NO_STD_WSTRING +# endif +#endif + +// +// there is no standard iterator unless we have namespace support: +// +#if !defined(__STL_USE_NAMESPACES) +# define BOOST_NO_STD_ITERATOR +#endif + +#define BOOST_STDLIB "SGI standard library" + + + + diff --git a/include/boost/config/stdlib/stlport.hpp b/include/boost/config/stdlib/stlport.hpp new file mode 100644 index 00000000..e2e3d74d --- /dev/null +++ b/include/boost/config/stdlib/stlport.hpp @@ -0,0 +1,91 @@ +// (C) Copyright Boost.org 2001. Permission to copy, use, modify, sell and +// distribute this software is granted provided this copyright notice appears +// in all copies. This software is provided "as is" without express or implied +// warranty, and with no claim as to its suitability for any purpose. + +// See http://www.boost.org for most recent version. + +// STLPort standard library config: + +#if !defined(__SGI_STL_PORT) +# include +# if !defined(__SGI_STL_PORT) +# error "This is not STLPort!" +# endif +#endif + +// +// __STL_STATIC_CONST_INIT_BUG implies BOOST_NO_LIMITS_COMPILE_TIME_CONSTANTS +// for versions prior to 4.1(beta) +// +#if (defined(__STL_STATIC_CONST_INIT_BUG) || defined(_STLP_STATIC_CONST_INIT_BUG)) && (__SGI_STL_PORT <= 0x400) +# define BOOST_NO_LIMITS_COMPILE_TIME_CONSTANTS +#endif + +// +// If STLport thinks that there is no partial specialisation, then there is no +// std::iterator traits: +// +#if !(defined(_STLP_CLASS_PARTIAL_SPECIALIZATION) || defined(__STL_CLASS_PARTIAL_SPECIALIZATION)) +# define BOOST_NO_STD_ITERATOR_TRAITS +#endif + +// +// No new style iostreams on GCC without STLport's iostreams enabled: +// +#if (defined(__GNUC__) && (__GNUC__ < 3)) && !(defined(__SGI_STL_OWN_IOSTREAMS) || defined(_STLP_OWN_IOSTREAMS)) +# define BOOST_NO_STRINGSTREAM +#endif + +// +// No new iostreams implies no std::locale, and no std::stringstream: +// +#if defined(__STL_NO_IOSTREAMS) || defined(__STL_NO_NEW_IOSTREAMS) || defined(_STLP_NO_IOSTREAMS) || defined(_STLP_NO_NEW_IOSTREAMS) +# define BOOST_NO_STD_LOCALE +# define BOOST_NO_STRINGSTREAM +#endif + +// +// Without member template support enabled, their are no template +// iterate constructors, and no std::allocator: +// +#if !(defined(__STL_MEMBER_TEMPLATES) || defined(_STLP_MEMBER_TEMPLATES)) +# define BOOST_NO_TEMPLATED_ITERATOR_CONSTRUCTORS +# define BOOST_NO_STD_ALLOCATOR +#endif + +// +// we always have SGI style hash_set, hash_map, and slist: +// +#define BOOST_HAS_HASH +#define BOOST_HAS_SLIST + +// +// STLport does a good job of importing names into namespace std::, +// but doesn't always get them all, define BOOST_NO_STDC_NAMESPACE, since our +// workaround does not conflict with STLports: +// +#if defined(__STL_IMPORT_VENDOR_CSTD) || defined(__STL_USE_OWN_NAMESPACE) || defined(_STLP_IMPORT_VENDOR_CSTD) || defined(_STLP_USE_OWN_NAMESPACE) +# define BOOST_NO_STDC_NAMESPACE +#endif + +// +// std::reverse_iterate behaves like VC6's under some circumstances: +// +#if defined (_STLP_USE_OLD_HP_ITERATOR_QUERIES) || defined (__STL_USE_OLD_HP_ITERATOR_QUERIES)\ + || (!defined ( _STLP_CLASS_PARTIAL_SPECIALIZATION ) && !defined ( __STL_CLASS_PARTIAL_SPECIALIZATION )) +# define BOOST_MSVC_STD_ITERATOR +#endif + +// +// std::use_facet may be non-standard, uses a class instead: +// +#if defined(__STL_NO_EXPLICIT_FUNCTION_TMPL_ARGS) || defined(_STLP_NO_EXPLICIT_FUNCTION_TMPL_ARGS) +# define BOOST_NO_STD_USE_FACET +# define BOOST_HAS_STLP_USE_FACET +#endif + + +#define BOOST_STDLIB "STLPort standard library version " BOOST_STRINGIZE(__SGI_STL_PORT) + + diff --git a/include/boost/config/stdlib/vacpp.hpp b/include/boost/config/stdlib/vacpp.hpp new file mode 100644 index 00000000..ad4d2fc4 --- /dev/null +++ b/include/boost/config/stdlib/vacpp.hpp @@ -0,0 +1,13 @@ +// (C) Copyright Boost.org 2001. Permission to copy, use, modify, sell and +// distribute this software is granted provided this copyright notice appears +// in all copies. This software is provided "as is" without express or implied +// warranty, and with no claim as to its suitability for any purpose. + +// See http://www.boost.org for most recent version. + +#define BOOST_HAS_MACRO_USE_FACET +#define BOOST_NO_STD_ALLOCATOR + +#define BOOST_STDLIB "Visual Age default standard library" + + diff --git a/include/boost/config/suffix.hpp b/include/boost/config/suffix.hpp new file mode 100644 index 00000000..ca52a58a --- /dev/null +++ b/include/boost/config/suffix.hpp @@ -0,0 +1,293 @@ +// Boost config.hpp configuration header file ------------------------------// + +// (C) Copyright Boost.org 2001. Permission to copy, use, modify, sell and +// distribute this software is granted provided this copyright notice appears +// in all copies. This software is provided "as is" without express or implied +// warranty, and with no claim as to its suitability for any purpose. + +// See http://www.boost.org for most recent version. + +// Boost config.hpp policy and rationale documentation has been moved to +// http://www.boost.org/libs/config +// +// This file is intended to be stable, and relatively unchanging. +// It should contain boilerplate code only - no compiler specific +// code unless it is unavoidable - no changes unless unavoidable. + +#ifndef BOOST_CONFIG_SUFFIX_HPP +#define BOOST_CONFIG_SUFFIX_HPP + +# ifndef BOOST_DECL +# define BOOST_DECL // default for compilers not needing this decoration. +# endif + +// +// Assume any extensions are in namespace std:: unless stated otherwise: +// +# ifndef BOOST_STD_EXTENSION_NAMESPACE +# define BOOST_STD_EXTENSION_NAMESPACE std +# endif + +// +// If cv-qualified specializations are not allowed, then neither are cv-void ones: +// +# if defined(BOOST_NO_CV_SPECIALIZATIONS) \ + && !defined(BOOST_NO_CV_VOID_SPECIALIZATIONS) +# define BOOST_NO_CV_VOID_SPECIALIZATIONS +# endif + +// +// If there is no numeric_limits template, then it can't have any compile time +// constants either! +// +# if defined(BOOST_NO_LIMITS) \ + && !defined(BOOST_NO_LIMITS_COMPILE_TIME_CONSTANTS) +# define BOOST_NO_LIMITS_COMPILE_TIME_CONSTANTS +# endif + +// +// if member templates are supported then so is the +// VC6 subset of member templates: +// +# if !defined(BOOST_NO_MEMBER_TEMPLATES) \ + && !defined(BOOST_MSVC6_MEMBER_TEMPLATES) +# define BOOST_MSVC6_MEMBER_TEMPLATES +# endif + +// +// Without partial specialization, std::iterator_traits can't work: +// +# if defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION) \ + && !defined(BOOST_NO_STD_ITERATOR_TRAITS) +# define BOOST_NO_STD_ITERATOR_TRAITS +# endif + +// +// Without member template support, we can't have template constructors +// in the standard library either: +// +# if defined(BOOST_NO_MEMBER_TEMPLATES) \ + && !defined(BOOST_MSVC6_MEMBER_TEMPLATES) \ + && !defined(BOOST_NO_TEMPLATED_ITERATOR_CONSTRUCTORS) +# define BOOST_NO_TEMPLATED_ITERATOR_CONSTRUCTORS +# endif + +// +// Without member template support, we can't have a conforming +// std::allocator template either: +// +# if defined(BOOST_NO_MEMBER_TEMPLATES) && !defined(BOOST_NO_STD_ALLOCATOR) +# define BOOST_NO_STD_ALLOCATOR +# endif + +// +// We can't have a working std::use_facet if there is no std::locale: +// +# if defined(BOOST_NO_STD_LOCALE) && !defined(BOOST_NO_STD_USE_FACET) +# define BOOST_NO_STD_USE_FACET +# endif + +// +// We can't have a std::messages facet if there is no std::locale: +// +# if defined(BOOST_NO_STD_LOCALE) && !defined(BOOST_NO_STD_MESSAGES) +# define BOOST_NO_STD_MESSAGES +# endif + +// +// We can't have a if there is no : +// +# if defined(BOOST_NO_CWCHAR) && !defined(BOOST_NO_CWCTYPE) +# define BOOST_NO_CWCTYPE +# endif + +// +// We can't have a swprintf if there is no : +// +# if defined(BOOST_NO_CWCHAR) && !defined(BOOST_NO_SWPRINTF) +# define BOOST_NO_SWPRINTF +# endif + + +// +// if the platform claims to be Unix, then it had better behave like Unix! +// +# if defined(unix) \ + || defined(__unix) \ + || defined(_XOPEN_SOURCE) \ + || defined(_POSIX_SOURCE) + +# ifndef BOOST_HAS_UNISTD_H +# define BOOST_HAS_UNISTD_H +# endif +# endif + +// +// If we have a then some optins can be deduced from it: +// +# ifdef BOOST_HAS_UNISTD_H +# include +# endif +// +// Turn on threading support if the compiler thinks that its in +// multithreaded mode. We put this here because there are only a +// limited number of macros that identify this (if there's any missing +// from here then add to the appropriate compiler section): +// +#if (defined(__MT__) || defined(_MT) || defined(_REENTRANT) \ + || defined(_PTHREADS)) && !defined(BOOST_DISABLE_THREADS) +# define BOOST_HAS_THREADS +#endif +// +// turn threading support off if BOOST_DISABLE_THREADS is defined: +#if defined(BOOST_DISABLE_THREADS) && defined(BOOST_HAS_THREADS) +# undef BOOST_HAS_THREADS +#endif + +// +// If the compiler claims to be C99 conformant, then it had better +// have a : +// +# if defined(__STDC_VERSION__) && (__STDC_VERSION__ >= 199901) +# define BOOST_HAS_STDINT_H +# endif + +// Define BOOST_NO_SLIST and BOOST_NO_HASH if required. +// Note that this is for backwards compatiblity only. +# ifndef BOOST_HAS_SLIST +# define BOOST_NO_SLIST +# endif + +# ifndef BOOST_HAS_HASH +# define BOOST_NO_HASH +# endif + +// BOOST_NO_STDC_NAMESPACE workaround --------------------------------------// +// +// Because std::size_t usage is so common, even in boost headers which do not +// otherwise use the C library, the workaround is included here so +// that ugly workaround code need not appear in many other boost headers. +// NOTE WELL: This is a workaround for non-conforming compilers; +// must still be #included in the usual places so that inclusion +// works as expected with standard conforming compilers. The resulting +// double inclusion of is harmless. + +# ifdef BOOST_NO_STDC_NAMESPACE +# include + namespace std { using ::ptrdiff_t; using ::size_t; } +# endif + +# ifdef BOOST_NO_STD_MIN_MAX + +namespace std { + template + inline const _Tp& min(const _Tp& __a, const _Tp& __b) { + return __b < __a ? __b : __a; + } + template + inline const _Tp& max(const _Tp& __a, const _Tp& __b) { + return __a < __b ? __b : __a; + } +# ifdef BOOST_MSVC + inline long min(long __a, long __b) { + return __b < __a ? __b : __a; + } + inline long max(long __a, long __b) { + return __a < __b ? __b : __a; + } +# endif +} +# endif + +// BOOST_STATIC_CONSTANT workaround --------------------------------------- // +// 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. +# ifdef BOOST_NO_INCLASS_MEMBER_INITIALIZATION +# define BOOST_STATIC_CONSTANT(type, assignment) enum { assignment } +# else +# define BOOST_STATIC_CONSTANT(type, assignment) static const type assignment +# endif + + +// BOOST_USE_FACET workaround ----------------------------------------------// +// 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. +// Usage: +// replace +// std::use_facet(loc); +// with +// BOOST_USE_FACET(Type, loc); +// Note do not add a std:: prefix to the front of BOOST_USE_FACET! +// +#if defined(BOOST_NO_STD_USE_FACET) +# ifdef BOOST_HAS_TWO_ARG_USE_FACET +# define BOOST_USE_FACET(Type, loc) std::use_facet(loc, static_cast(0)) +# elif defined(BOOST_HAS_MACRO_USE_FACET) +# define BOOST_USE_FACET(Type, loc) std::_USE(loc, Type) +# elif defined(BOOST_HAS_STLP_USE_FACET) +# define BOOST_USE_FACET(Type, loc) (*std::_Use_facet(loc)) +# endif +#else +# define BOOST_USE_FACET(Type, loc) std::use_facet< Type >(loc) +#endif + +// BOOST_NESTED_TEMPLATE workaround ------------------------------------------// +// Member templates are supported by some compilers even though they can't use +// the A::template member syntax, as a workaround replace: +// +// typedef typename A::template rebind binder; +// +// with: +// +// typedef typename A::BOOST_NESTED_TEMPLATE rebind binder; +// +#ifndef BOOST_NO_MEMBER_TEMPLATE_KEYWORD +# define BOOST_NESTED_TEMPLATE template +#else +# define BOOST_NESTED_TEMPLATE +#endif + +// +// Helper macro BOOST_STRINGIZE: +// Converts the parameter X to a string after macro replacement +// on X has been performed. +// +#define BOOST_STRINGIZE(X) BOOST_DO_STRINGIZE(X) +#define BOOST_DO_STRINGIZE(X) #X + +// +// Helper macro BOOST_JOIN: +// The following 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). The key +// is that macro expansion of macro arguments does not +// occur in BOOST_DO_JOIN2 but does in BOOST_DO_JOIN. +#define BOOST_JOIN( X, Y ) BOOST_DO_JOIN( X, Y ) +#define BOOST_DO_JOIN( X, Y ) BOOST_DO_JOIN2(X,Y) +#define BOOST_DO_JOIN2( X, Y ) X##Y + + +// +// set some default values for compiler/library/platform names +// these are for debugging config setup only: +// +# ifndef BOOST_COMPILER +# define BOOST_COMPILER "Unknown ISO C++ Compiler" +# endif +# ifndef BOOST_STDLIB +# define BOOST_STDLIB "Unknown ISO standard library" +# endif +# ifndef BOOST_PLATFORM +# if defined(unix) || defined(__unix) || defined(_XOPEN_SOURCE) \ + || defined(_POSIX_SOURCE) +# define BOOST_PLATFORM "Generic Unix" +# else +# define BOOST_PLATFORM "Unknown" +# endif +# endif + +#endif + diff --git a/include/boost/config/user.hpp b/include/boost/config/user.hpp new file mode 100644 index 00000000..e565e931 --- /dev/null +++ b/include/boost/config/user.hpp @@ -0,0 +1,58 @@ +// (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: +// + +// define this to locate a compiler config file: +// #define BOOST_COMPILER_CONFIG + +// define this to locate a stdlib config file: +// #define BOOST_STDLIB_CONFIG + +// define this to locate a platform config file: +// #define BOOST_PLATFORM_CONFIG + +// define this to disable compiler config, +// use if your compiler config has nothing to set: +// #define BOOST_NO_COMPILER_CONFIG + +// define this to disable stdlib config, +// use if your stdlib config has nothing to set: +// #define BOOST_NO_STDLIB_CONFIG + +// define this to disable platform config, +// use if your platform config has nothing to set: +// #define BOOST_NO_PLATFORM_CONFIG + +// define this to disable all config options, +// excluding the user config. Use if your +// setup is fully ISO compliant, and has no +// useful extentions, or for autoconf generated +// setups: +// #define BOOST_NO_CONFIG + +// define this to make the config "optimistic" +// about unknown compiler versions. Normally +// unknown compiler versions are assumed to have +// all the defects of the last known version, however +// setting this flag, causes the config to assume +// that unknown compiler versions are fully conformant +// with the standard: +// #define BOOST_STRICT_CONFIC + +// define this to cause the config to halt compilation +// with a #error if it encounters anything unknown - +// either an unknown compiler version or an unknown +// compiler/platform/library: +// #define BOOST_ASSERT_CONFIG + + +// define if you want to disable threading support, even +// when available: +// #define BOOST_DISABLE_THREADS + + diff --git a/include/boost/version.hpp b/include/boost/version.hpp new file mode 100644 index 00000000..ab35ac8b --- /dev/null +++ b/include/boost/version.hpp @@ -0,0 +1,26 @@ +// Boost config.hpp configuration header file ------------------------------// + +// (C) Copyright Boost.org 1999. Permission to copy, use, modify, sell and +// distribute this software is granted provided this copyright notice appears +// in all copies. This software is provided "as is" without express or implied +// warranty, and with no claim as to its suitability for any purpose. + +// See http://www.boost.org for most recent version. + +#ifndef BOOST_VERSION_HPP +#define BOOST_VERSION_HPP + +// +// Caution, this is the only boost header that is guarenteed +// to change with every boost release, including this header +// will cause a recompile every time a new boost version is +// released. +// +// BOOST_VERSION % 100 is the sub-minor version +// BOOST_VERSION / 100 % 1000 is the minor version +// BOOST_VERSION / 100000 is the major version + +#define BOOST_VERSION 102400 + +#endif + diff --git a/index.htm b/index.htm deleted file mode 100644 index 72106f54..00000000 --- a/index.htm +++ /dev/null @@ -1,89 +0,0 @@ - - - - - - -Configuration Header - - - - - - - - - - - - - -
c++boost.gif (8819 bytes)HomeLibrariesPeopleFAQMore
-

Configuration Header boost/config.hpp

-

The boost/config.hpp 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 is this header reduces the number of -files which 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.

-

Boost config.hpp policy

-

For Library Users:

-
    -
  • Boost library users are never required to #include boost/config.hpp, and - are discouraged from including it on their own.
  • -
  • Boost library users can request support for additional platforms be added - to config.hpp by emailing config@boost.org - describing their request.
  • -
-

For Library Implementors:

-
    -
  • Boost library implementors are not required to #include boost/config.hpp, - and are not required in any way to support compilers which do not comply - with the C++ Standard (ISO/IEC 14882).
  • -
  • If a library implementor wishes to support some nonconforming 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 implementor 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.
  • -
-

General:

-
    -
  • 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.
  • -
-

Documentation

-

See boost/config.hpp; it is designed to -be self documenting.

-

Test program

-

The config_test.cpp program can be used to -verify which #defines are in effect for your compiler.

-

The limits_test.cpp program can also be helpful -in diagnosing configuration problems.

-
-

Revised 22 May 2001

- - - - diff --git a/test/boost_has_2arg_use_facet.ipp b/test/boost_has_2arg_use_facet.ipp new file mode 100644 index 00000000..97f89528 --- /dev/null +++ b/test/boost_has_2arg_use_facet.ipp @@ -0,0 +1,28 @@ +// (C) Copyright John Maddock 2001. Permission to copy, use, modify, sell and +// distribute this software is granted provided this copyright notice appears +// in all copies. This software is provided "as is" without express or implied +// warranty, and with no claim as to its suitability for any purpose. + +// 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 + + +namespace boost_has_two_arg_use_facet{ + +int test() +{ + std::locale l; + const std::ctype& ct = std::use_facet(l, (const std::ctype*)0); + return 0; +} + +} + + + + diff --git a/test/boost_has_bethreads.ipp b/test/boost_has_bethreads.ipp new file mode 100644 index 00000000..689b5a06 --- /dev/null +++ b/test/boost_has_bethreads.ipp @@ -0,0 +1,31 @@ +// (C) Copyright John Maddock 2001. Permission to copy, use, modify, sell and +// distribute this software is granted provided this copyright notice appears +// in all copies. This software is provided "as is" without express or implied +// warranty, and with no claim as to its suitability for any purpose. + +// MACRO: BOOST_HAS_BETHREADS +// TITLE: BeOS Threads +// DESCRIPTION: The platform supports BeOS style threads. + +#include + + +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/test/boost_has_hash.ipp b/test/boost_has_hash.ipp new file mode 100644 index 00000000..3ba4709d --- /dev/null +++ b/test/boost_has_hash.ipp @@ -0,0 +1,44 @@ +// (C) Copyright John Maddock 2001. Permission to copy, use, modify, sell and +// distribute this software is granted provided this copyright notice appears +// in all copies. This software is provided "as is" without express or implied +// warranty, and with no claim as to its suitability for any purpose. + +// MACRO: BOOST_HAS_HASH +// TITLE: and +// DESCRIPTION: The C++ implementation provides the (SGI) hash_set +// or hash_map classes. + +#include +#include + +#ifndef BOOST_STD_EXTENSION_NAMESPACE +#define BOOST_STD_EXTENSION_NAMESPACE std +#endif + +namespace boost_has_hash{ + +template +void foo(const BOOST_STD_EXTENSION_NAMESPACE::hash_set& ) +{ +} + +template +void foo(const BOOST_STD_EXTENSION_NAMESPACE::hash_map& ) +{ +} + +int test() +{ + BOOST_STD_EXTENSION_NAMESPACE::hash_set hs; + foo(hs); + BOOST_STD_EXTENSION_NAMESPACE::hash_map hm; + foo(hm); + return 0; +} + +} + + + + + diff --git a/test/boost_has_macro_use_facet.ipp b/test/boost_has_macro_use_facet.ipp new file mode 100644 index 00000000..3a748333 --- /dev/null +++ b/test/boost_has_macro_use_facet.ipp @@ -0,0 +1,32 @@ +// (C) Copyright John Maddock 2001. Permission to copy, use, modify, sell and +// distribute this software is granted provided this copyright notice appears +// in all copies. This software is provided "as is" without express or implied +// warranty, and with no claim as to its suitability for any purpose. + +// 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 + +#ifndef _USE +#error "macro _USE not defined" +#endif + +namespace boost_has_macro_use_facet{ + +int test() +{ + std::locale l; + const std::ctype& ct = std::_USE(l, std::ctype); + return 0; +} + +} + + + + + diff --git a/test/boost_has_nl_types_h.ipp b/test/boost_has_nl_types_h.ipp new file mode 100644 index 00000000..791ad304 --- /dev/null +++ b/test/boost_has_nl_types_h.ipp @@ -0,0 +1,26 @@ +// (C) Copyright John Maddock 2001. Permission to copy, use, modify, sell and +// distribute this software is granted provided this copyright notice appears +// in all copies. This software is provided "as is" without express or implied +// warranty, and with no claim as to its suitability for any purpose. + +// MACRO: BOOST_HAS_NL_TYPES_H +// TITLE: +// DESCRIPTION: The platform has an . + +#include + + +namespace boost_has_nl_types_h{ + +int test() +{ + nl_catd cat = catopen("foo", 0); + if(cat >= 0) catclose(cat); + return 0; +} + +} + + + + diff --git a/test/boost_has_pthreads.ipp b/test/boost_has_pthreads.ipp new file mode 100644 index 00000000..afc4661d --- /dev/null +++ b/test/boost_has_pthreads.ipp @@ -0,0 +1,32 @@ +// (C) Copyright John Maddock 2001. Permission to copy, use, modify, sell and +// distribute this software is granted provided this copyright notice appears +// in all copies. This software is provided "as is" without express or implied +// warranty, and with no claim as to its suitability for any purpose. + +// MACRO: BOOST_HAS_PTHREADS +// TITLE: POSIX Threads +// DESCRIPTION: The platform supports POSIX style threads. + +#include + + +namespace boost_has_pthreads{ + +int test() +{ + pthread_mutex_t mut; + int result = pthread_mutex_init(&mut, 0); + if(0 == result) + { + pthread_mutex_lock(&mut); + pthread_mutex_unlock(&mut); + pthread_mutex_destroy(&mut); + } + return 0; +} + +} + + + + diff --git a/test/boost_has_slist.ipp b/test/boost_has_slist.ipp new file mode 100644 index 00000000..4c7ad28b --- /dev/null +++ b/test/boost_has_slist.ipp @@ -0,0 +1,36 @@ +// (C) Copyright John Maddock 2001. Permission to copy, use, modify, sell and +// distribute this software is granted provided this copyright notice appears +// in all copies. This software is provided "as is" without express or implied +// warranty, and with no claim as to its suitability for any purpose. + +// MACRO: BOOST_HAS_SLIST +// TITLE: +// DESCRIPTION: The C++ implementation provides the (SGI) slist class. + +#include + +#ifndef BOOST_STD_EXTENSION_NAMESPACE +#define BOOST_STD_EXTENSION_NAMESPACE std +#endif + +namespace boost_has_slist{ + +template +void foo(const BOOST_STD_EXTENSION_NAMESPACE::slist& ) +{ +} + + +int test() +{ + BOOST_STD_EXTENSION_NAMESPACE::slist l; + foo(l); + return 0; +} + +} + + + + + diff --git a/test/boost_has_stdint_h.ipp b/test/boost_has_stdint_h.ipp new file mode 100644 index 00000000..91fb8d3c --- /dev/null +++ b/test/boost_has_stdint_h.ipp @@ -0,0 +1,36 @@ +// (C) Copyright John Maddock 2001. Permission to copy, use, modify, sell and +// distribute this software is granted provided this copyright notice appears +// in all copies. This software is provided "as is" without express or implied +// warranty, and with no claim as to its suitability for any purpose. + +// MACRO: BOOST_HAS_STDINT_H +// TITLE: stdint.h +// DESCRIPTION: There are no 1998 C++ Standard headers +// or , although the 1999 C Standard does +// include . +// If is present, 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). + +#include + +namespace boost_has_stdint_h{ + +int test() +{ + int8_t i = 0; + int_fast8_t j = 0; + int_least8_t k = 0; + (void)i; + (void)j; + (void)k; + + return 0; +} + +} + + + + diff --git a/test/boost_has_stlp_use_facet.ipp b/test/boost_has_stlp_use_facet.ipp new file mode 100644 index 00000000..7c386753 --- /dev/null +++ b/test/boost_has_stlp_use_facet.ipp @@ -0,0 +1,28 @@ +// (C) Copyright John Maddock 2001. Permission to copy, use, modify, sell and +// distribute this software is granted provided this copyright notice appears +// in all copies. This software is provided "as is" without express or implied +// warranty, and with no claim as to its suitability for any purpose. + +// 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 + + +namespace boost_has_stlp_use_facet{ + +int test() +{ + std::locale l; + const std::ctype& ct = *std::_Use_facet >(l); + return 0; +} + +} + + + + diff --git a/test/boost_has_unistd_h.ipp b/test/boost_has_unistd_h.ipp new file mode 100644 index 00000000..f1ccaf53 --- /dev/null +++ b/test/boost_has_unistd_h.ipp @@ -0,0 +1,23 @@ +// (C) Copyright John Maddock 2001. Permission to copy, use, modify, sell and +// distribute this software is granted provided this copyright notice appears +// in all copies. This software is provided "as is" without express or implied +// warranty, and with no claim as to its suitability for any purpose. + +// MACRO: BOOST_HAS_UNISTD_H +// TITLE: +// DESCRIPTION: The Platform provides . + +#include + +namespace boost_has_unistd_h{ + +int test() +{ + return 0; +} + +} + + + + diff --git a/test/boost_has_vc6_mem_templ.ipp b/test/boost_has_vc6_mem_templ.ipp new file mode 100644 index 00000000..f5091584 --- /dev/null +++ b/test/boost_has_vc6_mem_templ.ipp @@ -0,0 +1,55 @@ +// (C) Copyright John Maddock 2001. Permission to copy, use, modify, sell and +// distribute this software is granted provided this copyright notice appears +// in all copies. This software is provided "as is" without express or implied +// warranty, and with no claim as to its suitability for any purpose. + +// 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 +struct foo +{ + template + struct nested + { + typedef foo other; + }; + template + void mfoo(const U&) + { + } +}; + +template +void vc6_mem_test(T i) +{ + foo f1; + typedef foo ifoo; + f1.mfoo(i); + typedef typename ifoo::BOOST_NESTED_TEMPLATE nested 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/test/boost_has_vc_iterator.ipp b/test/boost_has_vc_iterator.ipp new file mode 100644 index 00000000..5fae8827 --- /dev/null +++ b/test/boost_has_vc_iterator.ipp @@ -0,0 +1,37 @@ +// (C) Copyright John Maddock 2001. Permission to copy, use, modify, sell and +// distribute this software is granted provided this copyright notice appears +// in all copies. This software is provided "as is" without express or implied +// warranty, and with no claim as to its suitability for any purpose. + +// MACRO: BOOST_MSVC_STD_ITERATOR +// TITLE: microsoft's version of std::iterator +// DESCRIPTION: Microsoft's broken version of std::iterator +// is being used. + +#include + +namespace boost_msvc_std_iterator{ + +int test() +{ + typedef std::iterator< + std::random_access_iterator_tag, + int + > iterator_type_2; + typedef std::reverse_iterator 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/test/boost_has_winthreads.ipp b/test/boost_has_winthreads.ipp new file mode 100644 index 00000000..22d2f05d --- /dev/null +++ b/test/boost_has_winthreads.ipp @@ -0,0 +1,31 @@ +// (C) Copyright John Maddock 2001. Permission to copy, use, modify, sell and +// distribute this software is granted provided this copyright notice appears +// in all copies. This software is provided "as is" without express or implied +// warranty, and with no claim as to its suitability for any purpose. + +// MACRO: BOOST_HAS_WINTHREADS +// TITLE: MS Windows threads +// DESCRIPTION: The platform supports MS Windows style threads. + +#include + + +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/test/boost_no_arg_dep_lookup.ipp b/test/boost_no_arg_dep_lookup.ipp new file mode 100644 index 00000000..a83e22d5 --- /dev/null +++ b/test/boost_no_arg_dep_lookup.ipp @@ -0,0 +1,34 @@ +// (C) Copyright John Maddock 2001. Permission to copy, use, modify, sell and +// distribute this software is granted provided this copyright notice appears +// in all copies. This software is provided "as is" without express or implied +// warranty, and with no claim as to its suitability for any purpose. + +// 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/test/boost_no_auto_ptr.ipp b/test/boost_no_auto_ptr.ipp new file mode 100644 index 00000000..c5bc18ee --- /dev/null +++ b/test/boost_no_auto_ptr.ipp @@ -0,0 +1,50 @@ +// (C) Copyright John Maddock 2001. Permission to copy, use, modify, sell and +// distribute this software is granted provided this copyright notice appears +// in all copies. This software is provided "as is" without express or implied +// warranty, and with no claim as to its suitability for any purpose. + +// MACRO: BOOST_NO_AUTO_PTR +// TITLE: std::auto_ptr +// DESCRIPTION: If the compiler / library supplies non-standard or broken +// std::auto_ptr. + +#include + +namespace boost_no_auto_ptr{ + +template +class my_ptr +{ + T* p; +public: + my_ptr(std::auto_ptr& r) + { + p = r.release(); + } + my_ptr& operator=(std::auto_ptr& r) + { + delete p; + p = r.release(); + return *this; + } + ~my_ptr() + { + delete p; + } +}; + + +int test() +{ + std::auto_ptr ap1(new int); + my_ptr mp(ap1); + std::auto_ptr ap2(new int); + mp = ap2; + + return 0; +} + +} + + + diff --git a/test/boost_no_cv_spec.ipp b/test/boost_no_cv_spec.ipp new file mode 100644 index 00000000..56154e78 --- /dev/null +++ b/test/boost_no_cv_spec.ipp @@ -0,0 +1,44 @@ +// (C) Copyright John Maddock 2001. Permission to copy, use, modify, sell and +// distribute this software is granted provided this copyright notice appears +// in all copies. This software is provided "as is" without express or implied +// warranty, and with no claim as to its suitability for any purpose. + +// 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 +struct is_int +{ +}; + +template <> +struct is_int +{}; + +template <> +struct is_int +{}; + +template <> +struct is_int +{}; + +template <> +struct is_int +{}; + +int test() +{ + return 0; +} + + +} + + + diff --git a/test/boost_no_cv_void_spec.ipp b/test/boost_no_cv_void_spec.ipp new file mode 100644 index 00000000..b895c5ad --- /dev/null +++ b/test/boost_no_cv_void_spec.ipp @@ -0,0 +1,42 @@ +// (C) Copyright John Maddock 2001. Permission to copy, use, modify, sell and +// distribute this software is granted provided this copyright notice appears +// in all copies. This software is provided "as is" without express or implied +// warranty, and with no claim as to its suitability for any purpose. + +// 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 +struct is_void +{ +}; + +template <> +struct is_void +{}; + +template <> +struct is_void +{}; + +template <> +struct is_void +{}; + +template <> +struct is_void +{}; + +int test() +{ + return 0; +} + +} + + diff --git a/test/boost_no_cwchar.ipp b/test/boost_no_cwchar.ipp new file mode 100644 index 00000000..7a03024b --- /dev/null +++ b/test/boost_no_cwchar.ipp @@ -0,0 +1,30 @@ +// (C) Copyright John Maddock 2001. Permission to copy, use, modify, sell and +// distribute this software is granted provided this copyright notice appears +// in all copies. This software is provided "as is" without express or implied +// warranty, and with no claim as to its suitability for any purpose. + +// MACRO: BOOST_NO_CWCHAR +// TITLE: and +// DESCRIPTION: The Platform does not provide and . + +#include +#include + +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/test/boost_no_cwctype.ipp b/test/boost_no_cwctype.ipp new file mode 100644 index 00000000..c82bdb2d --- /dev/null +++ b/test/boost_no_cwctype.ipp @@ -0,0 +1,44 @@ +// (C) Copyright John Maddock 2001. Permission to copy, use, modify, sell and +// distribute this software is granted provided this copyright notice appears +// in all copies. This software is provided "as is" without express or implied +// warranty, and with no claim as to its suitability for any purpose. + +// MACRO: BOOST_NO_CWCTYPE +// TITLE: and +// DESCRIPTION: The Platform does not provide and . + +// +// Note that some platforms put these prototypes in the wrong headers, +// we have to include prretty well all the string headers on the chance that +// one of them will contain what we want!! +// +#include +#include +#include +#include +#include +#include + +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/test/boost_no_dep_nested_class.ipp b/test/boost_no_dep_nested_class.ipp new file mode 100644 index 00000000..779b2229 --- /dev/null +++ b/test/boost_no_dep_nested_class.ipp @@ -0,0 +1,55 @@ +// (C) Copyright John Maddock 2001. Permission to copy, use, modify, sell and +// distribute this software is granted provided this copyright notice appears +// in all copies. This software is provided "as is" without express or implied +// warranty, and with no claim as to its suitability for any purpose. + +// 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 +// struct foo : { +// template +// 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 +struct foo +{ + template + struct bar : public foo + {}; +}; + +template +void foo_test(T) +{ + typedef foo foo_type; + typedef typename foo_type::BOOST_NESTED_TEMPLATE bar bar_type; + foo ft; + bar_type bt; + (void)bt; + (void)ft; +}; + +int test() +{ + foo_test(UDT1()); + return 0; +} + +} + + + + + diff --git a/test/boost_no_dep_val_param.ipp b/test/boost_no_dep_val_param.ipp new file mode 100644 index 00000000..08447431 --- /dev/null +++ b/test/boost_no_dep_val_param.ipp @@ -0,0 +1,33 @@ +// (C) Copyright John Maddock 2001. Permission to copy, use, modify, sell and +// distribute this software is granted provided this copyright notice appears +// in all copies. This software is provided "as is" without express or implied +// warranty, and with no claim as to its suitability for any purpose. + +// 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 X { ... }; + + +namespace boost_no_dependent_types_in_template_value_parameters{ + +template +class X +{}; + +template +struct typifier +{ + typedef T type; +}; + +int test() +{ + X > x; + return 0; +} + +} + diff --git a/test/boost_no_exp_func_tem_arg.ipp b/test/boost_no_exp_func_tem_arg.ipp new file mode 100644 index 00000000..2b1f4c2d --- /dev/null +++ b/test/boost_no_exp_func_tem_arg.ipp @@ -0,0 +1,35 @@ +// (C) Copyright John Maddock 2001. Permission to copy, use, modify, sell and +// distribute this software is granted provided this copyright notice appears +// in all copies. This software is provided "as is" without express or implied +// warranty, and with no claim as to its suitability for any purpose. + +// 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{ + +template +bool foo(int j) +{ + return (i == j); +} + +int test() +{ + if(0 == foo<8>(8)) return -1; + if(0 == foo<4>(4)) return -1; + if(0 == foo<5>(5)) return -1; + return 0; +} + +} + + + diff --git a/test/boost_no_func_tmp_order.ipp b/test/boost_no_func_tmp_order.ipp new file mode 100644 index 00000000..0dea5dcb --- /dev/null +++ b/test/boost_no_func_tmp_order.ipp @@ -0,0 +1,46 @@ +// (C) Copyright John Maddock 2001. Permission to copy, use, modify, sell and +// distribute this software is granted provided this copyright notice appears +// in all copies. This software is provided "as is" without express or implied +// warranty, and with no claim as to its suitability for any purpose. + +// MACRO: BOOST_WEAK_FUNCTION_TEMPLATE_ORDERING +// TITLE: weak function template ordering +// DESCRIPTION: The compiler does not perform +// function template ordering or its function +// template ordering is incorrect. +// +// template void f(T); // #1 +// template void f(T (*)(U)); // #2 +// void bar(int); +// f(&bar); // should choose #2. + + +namespace boost_weak_function_template_ordering{ + +template +bool f(T) +{ + return false; +} + +template +bool f(T (*)(U)) +{ + return true; +} + +void bar(int) +{ +} + +int test() +{ + int i = 0; + return f(i) || !f(&bar); +} + +} + + + + diff --git a/test/boost_no_inline_memb_init.ipp b/test/boost_no_inline_memb_init.ipp new file mode 100644 index 00000000..9e15125d --- /dev/null +++ b/test/boost_no_inline_memb_init.ipp @@ -0,0 +1,52 @@ +// (C) Copyright John Maddock 2001. Permission to copy, use, modify, sell and +// distribute this software is granted provided this copyright notice appears +// in all copies. This software is provided "as is" without express or implied +// warranty, and with no claim as to its suitability for any purpose. + +// 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 +struct ice_or_helper +{ + static const bool value = true; +}; +template <> +struct ice_or_helper +{ + static const bool value = false; +}; + +template +struct ice_or +{ + static const bool value = ice_or_helper::value; +}; + +template +struct is_int +{ + static const bool value = false; +}; + +template <> +struct is_int +{ + static const bool value = true; +}; + +int test() +{ + typedef int a1[ice_or< is_int::value, is_int::value>::value ? 1 : -1]; + return 0; +} + +} + diff --git a/test/boost_no_iter_construct.ipp b/test/boost_no_iter_construct.ipp new file mode 100644 index 00000000..224138cc --- /dev/null +++ b/test/boost_no_iter_construct.ipp @@ -0,0 +1,35 @@ +// (C) Copyright John Maddock 2001. Permission to copy, use, modify, sell and +// distribute this software is granted provided this copyright notice appears +// in all copies. This software is provided "as is" without express or implied +// warranty, and with no claim as to its suitability for any purpose. + +// MACRO: BOOST_NO_TEMPLATED_ITERATOR_CONSTRUCTORS +// TITLE: template iterator-constructors +// DESCRIPTION: The standard library does not provide +// templated iterator constructors for its containers. + +#include +#include +#include + +namespace boost_no_templated_iterator_constructors{ + +int test() +{ + std::vector v1; + std::deque d1; + std::list l1; + + // + // now try constructors: + std::vector v2(d1.begin(), d1.end()); + std::deque d2(v1.begin(), v1.end()); + std::list l2(d1.begin(), d1.end()); + + return 0; +} + +} + + + diff --git a/test/boost_no_limits.ipp b/test/boost_no_limits.ipp new file mode 100644 index 00000000..a419596b --- /dev/null +++ b/test/boost_no_limits.ipp @@ -0,0 +1,31 @@ +// (C) Copyright John Maddock 2001. Permission to copy, use, modify, sell and +// distribute this software is granted provided this copyright notice appears +// in all copies. This software is provided "as is" without express or implied +// warranty, and with no claim as to its suitability for any purpose. + +// MACRO: BOOST_NO_LIMITS +// TITLE: +// DESCRIPTION: The C++ implementation does not provide the header. + +#include + +namespace boost_no_limits{ + +int test() +{ + if(0 == std::numeric_limits::is_specialized) return -1; + if(0 == std::numeric_limits::is_specialized) return -1; + if(0 == std::numeric_limits::is_specialized) return -1; + if(0 == std::numeric_limits::is_specialized) return -1; + if(0 == std::numeric_limits::is_specialized) return -1; + if(0 == std::numeric_limits::is_specialized) return -1; + if(0 == std::numeric_limits::is_specialized) return -1; + if(0 == std::numeric_limits::is_specialized) return -1; + return 0; +} + +} + + + + diff --git a/test/boost_no_limits_const_exp.ipp b/test/boost_no_limits_const_exp.ipp new file mode 100644 index 00000000..42f750ca --- /dev/null +++ b/test/boost_no_limits_const_exp.ipp @@ -0,0 +1,39 @@ +// (C) Copyright John Maddock 2001. Permission to copy, use, modify, sell and +// distribute this software is granted provided this copyright notice appears +// in all copies. This software is provided "as is" without express or implied +// warranty, and with no claim as to its suitability for any purpose. + +// MACRO: BOOST_NO_LIMITS_COMPILE_TIME_CONSTANTS +// TITLE: compile time constants in +// DESCRIPTION: constants such as numeric_limits::is_signed +// are not available for use at compile-time. + +#include + +namespace boost_no_limits_compile_time_constants{ + +struct UDT{}; + +template +struct assert_ice +{ + enum { value = i }; +}; + +int test() +{ + assert_ice< ::std::numeric_limits::is_signed > one; + assert_ice< ::std::numeric_limits::is_specialized > two; + assert_ice< ::std::numeric_limits::is_specialized > three; + assert_ice< ::std::numeric_limits::is_signed > four; + (void)one; + (void)two; + (void)three; + (void)four; + return 0; +} + +} + + + diff --git a/test/boost_no_mem_tem_keyword.ipp b/test/boost_no_mem_tem_keyword.ipp new file mode 100644 index 00000000..7c7024d0 --- /dev/null +++ b/test/boost_no_mem_tem_keyword.ipp @@ -0,0 +1,65 @@ +// (C) Copyright John Maddock 2001. Permission to copy, use, modify, sell and +// distribute this software is granted provided this copyright notice appears +// in all copies. This software is provided "as is" without express or implied +// warranty, and with no claim as to its suitability for any purpose. + +// 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 +struct foo +{ + template + struct nested + { + typedef foo other; + }; + template + void mfoo(const U&); +}; + +template +template +void foo::mfoo(const U&) +{ +} + +template +void test_proc(T i) +{ + foo f1; + typedef foo ifoo; + f1.mfoo(i); + f1.template mfoo(i); + typedef typename ifoo::template nested bound_t; + typedef typename bound_t::other other; + other o; +} + +#else +template +void test_proc(T) +{ +} +#endif + +int test() +{ + test_proc(0); + return 0; +} + + +} + + + + + + + diff --git a/test/boost_no_mem_templ_frnds.ipp b/test/boost_no_mem_templ_frnds.ipp new file mode 100644 index 00000000..a41d6232 --- /dev/null +++ b/test/boost_no_mem_templ_frnds.ipp @@ -0,0 +1,67 @@ +// (C) Copyright John Maddock 2001. Permission to copy, use, modify, sell and +// distribute this software is granted provided this copyright notice appears +// in all copies. This software is provided "as is" without express or implied +// warranty, and with no claim as to its suitability for any purpose. + +// MACRO: BOOST_NO_MEMBER_TEMPLATE_FRIENDS +// TITLE: member template friends +// DESCRIPTION: Member template friend syntax +// ("template friend class frd;") +// described in the C++ Standard, +// 14.5.3, not supported. + + +namespace boost_no_member_template_friends{ + +template +class foobar; + +template +class foo; + +template +bool must_be_friend_proc(const foo& f); + +template +class foo +{ +private: + template friend class foobar; + template friend class foo; + template friend bool must_be_friend_proc(const foo& f); + int i; +public: + foo(){ i = 0; } + template + foo(const foo& f){ i = f.i; } +}; + +template +bool must_be_friend_proc(const foo& f) +{ return f.i != 0; } + +template +class foobar +{ + int i; +public: + template + foobar(const foo& f) + { i = f.i; } +}; + + +int test() +{ + foo fi; + foo fd(fi); + foobar fb(fi); + return 0; +} + +} + + + + + diff --git a/test/boost_no_mem_templates.ipp b/test/boost_no_mem_templates.ipp new file mode 100644 index 00000000..78de0ef7 --- /dev/null +++ b/test/boost_no_mem_templates.ipp @@ -0,0 +1,60 @@ +// (C) Copyright John Maddock 2001. Permission to copy, use, modify, sell and +// distribute this software is granted provided this copyright notice appears +// in all copies. This software is provided "as is" without express or implied +// warranty, and with no claim as to its suitability for any purpose. + +// 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 +struct foo +{ + template + struct nested + { + typedef foo other; + }; + template + void mfoo(const U&); +}; + +template +template +void foo::mfoo(const U&) +{ +} + +template +void test_proc(T i) +{ + foo f1; + typedef foo ifoo; + f1.mfoo(i); + //f1.template mfoo(i); + typedef typename ifoo::BOOST_NESTED_TEMPLATE nested bound_t; + typedef typename bound_t::other other; + other o; +} + +int test() +{ + test_proc(0); + return 0; +} + + +} + + + + + + diff --git a/test/boost_no_ops_in_namespace.ipp b/test/boost_no_ops_in_namespace.ipp new file mode 100644 index 00000000..8f4d740d --- /dev/null +++ b/test/boost_no_ops_in_namespace.ipp @@ -0,0 +1,80 @@ +// (C) Copyright David Abrahams 1999. Permission to copy, use, +// modify, sell and distribute this software is granted provided this +// copyright notice appears in all copies. This software is provided +// "as is" without express or implied warranty, and with no claim as +// to its suitability for any purpose. + +// (C) Copyright Jeremy Siek 1999. Permission to copy, use, modify, +// sell and distribute this software is granted provided this +// copyright notice appears in all copies. This software is provided +// "as is" without express or implied warranty, and with no claim as +// to its suitability for any purpose. + +// (C) Copyright John Maddock 2001. Permission to copy, use, modify, sell and +// distribute this software is granted provided this copyright notice appears +// in all copies. This software is provided "as is" without express or implied +// warranty, and with no claim as to its suitability for any purpose. + +// 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 +// +template +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 +{ + 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/test/boost_no_partial_spec.ipp b/test/boost_no_partial_spec.ipp new file mode 100644 index 00000000..82be047d --- /dev/null +++ b/test/boost_no_partial_spec.ipp @@ -0,0 +1,53 @@ +// (C) Copyright John Maddock 2001. Permission to copy, use, modify, sell and +// distribute this software is granted provided this copyright notice appears +// in all copies. This software is provided "as is" without express or implied +// warranty, and with no claim as to its suitability for any purpose. + +// 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 +struct partial1 +{ + typedef T& type; +}; + +template +struct partial1 +{ + typedef T& type; +}; + +template +struct partial2 +{ + typedef T& type; +}; + +template +struct partial2 +{ + typedef T type; +}; + + +int test() +{ + int i = 0; + partial1::type p1 = i; + partial2::type p2 = i; + (void)p1; + (void)p2; + (void)i; + return 0; +} + +} + + + diff --git a/test/boost_no_priv_aggregate.ipp b/test/boost_no_priv_aggregate.ipp new file mode 100644 index 00000000..fab52207 --- /dev/null +++ b/test/boost_no_priv_aggregate.ipp @@ -0,0 +1,34 @@ +// (C) Copyright John Maddock 2001. Permission to copy, use, modify, sell and +// distribute this software is granted provided this copyright notice appears +// in all copies. This software is provided "as is" without express or implied +// warranty, and with no claim as to its suitability for any purpose. + +// 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: + int i; + int j; +}; + + +int test() +{ + t inst = { 0, 0, }; + return 0; +} + +} + + + diff --git a/test/boost_no_ptr_mem_const.ipp b/test/boost_no_ptr_mem_const.ipp new file mode 100644 index 00000000..a95dced7 --- /dev/null +++ b/test/boost_no_ptr_mem_const.ipp @@ -0,0 +1,91 @@ +// Copyright (c) 2000 +// Cadenza New Zealand Ltd +// +// Permission to use, copy, modify, distribute and sell this software +// and its documentation for any purpose is hereby granted without +// fee, provided that the above copyright notice appears in all copies +// and that both the copyright notice and this permission notice +// appear in supporting documentation. Cadenza New Zealand Ltd makes +// no representations about the suitability of this software for any +// purpose. It is provided "as is" without express or implied +// warranty. + +// (C) Copyright John Maddock 2001. Permission to copy, use, modify, sell and +// distribute this software is granted provided this copyright notice appears +// in all copies. This software is provided "as is" without express or implied +// warranty, and with no claim as to its suitability for any purpose. + +// 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 + +namespace boost_no_pointer_to_member_const{ + +template +class const_mem_fun_t : public std::unary_function +{ +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 const_mem_fun1_t : public std::binary_function +{ +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 +inline const_mem_fun_t mem_fun(S (T::*f)() const) +{ + return const_mem_fun_t(f); +} + +template +inline const_mem_fun1_t mem_fun(S (T::*f)(A) const) +{ + return const_mem_fun1_t(f); +} + +class tester +{ +public: + void foo1()const{} + int foo2(int i)const{ return i*2; } +}; + + +int test() +{ + mem_fun(&tester::foo1); + mem_fun(&tester::foo2); + return 0; +} + +} + + + diff --git a/test/boost_no_sstream.ipp b/test/boost_no_sstream.ipp new file mode 100644 index 00000000..90c03242 --- /dev/null +++ b/test/boost_no_sstream.ipp @@ -0,0 +1,26 @@ +// (C) Copyright John Maddock 2001. Permission to copy, use, modify, sell and +// distribute this software is granted provided this copyright notice appears +// in all copies. This software is provided "as is" without express or implied +// warranty, and with no claim as to its suitability for any purpose. + +// MACRO: BOOST_NO_STRINGSTREAM +// TITLE: +// DESCRIPTION: The C++ implementation does not provide the header. + +#include +#include + +namespace boost_no_stringstream{ + +int test() +{ + std::stringstream ss; + ss << "abc"; + std::string s = ss.str(); + return (s != "abc"); +} + +} + + + diff --git a/test/boost_no_std_allocator.ipp b/test/boost_no_std_allocator.ipp new file mode 100644 index 00000000..2d6469d8 --- /dev/null +++ b/test/boost_no_std_allocator.ipp @@ -0,0 +1,66 @@ +// (C) Copyright John Maddock 2001. Permission to copy, use, modify, sell and +// distribute this software is granted provided this copyright notice appears +// in all copies. This software is provided "as is" without express or implied +// warranty, and with no claim as to its suitability for any purpose. + +// 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 + +namespace boost_no_std_allocator{ + +template +int foo(const T& i) +{ + typedef std::allocator 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 binder_t; + typedef typename binder_t::other alloc2_t; + + alloc1_t a1; + alloc1_t a2(a1); + + pointer p = a1.allocate(1,0); + 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 foo(0); +} + +} + + + + diff --git a/test/boost_no_std_distance.ipp b/test/boost_no_std_distance.ipp new file mode 100644 index 00000000..b6323ab5 --- /dev/null +++ b/test/boost_no_std_distance.ipp @@ -0,0 +1,28 @@ +// (C) Copyright John Maddock 2001. Permission to copy, use, modify, sell and +// distribute this software is granted provided this copyright notice appears +// in all copies. This software is provided "as is" without express or implied +// warranty, and with no claim as to its suitability for any purpose. + +// MACRO: BOOST_NO_STD_DISTANCE +// TITLE: std::distance +// DESCRIPTION: The platform does not have a conforming version of std::distance. + +#include +#include + + +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/test/boost_no_std_iter_traits.ipp b/test/boost_no_std_iter_traits.ipp new file mode 100644 index 00000000..7410914d --- /dev/null +++ b/test/boost_no_std_iter_traits.ipp @@ -0,0 +1,76 @@ +// (C) Copyright John Maddock 2001. Permission to copy, use, modify, sell and +// distribute this software is granted provided this copyright notice appears +// in all copies. This software is provided "as is" without express or implied +// warranty, and with no claim as to its suitability for any purpose. + +// 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 + +namespace boost_no_std_iterator_traits{ + +struct UDT_iterator +{ + typedef int value_type; + typedef std::ptrdiff_t difference_type; + typedef int* pointer; + typedef int& reference; + typedef std::input_iterator_tag iterator_category; +}; + +struct UDT{}; + + +int test() +{ + std::iterator_traits::value_type v = 0; + std::iterator_traits::difference_type d = 0; + std::iterator_traits::pointer p = &v; + std::iterator_traits::reference r = v; + std::iterator_traits::iterator_category cat; + + std::iterator_traits::value_type v2; + std::iterator_traits::difference_type d2 = 0; + std::iterator_traits::pointer p2 = &v2; + std::iterator_traits::reference r2 = v2; + std::iterator_traits::iterator_category cat2; + + std::iterator_traits::value_type v3; + std::iterator_traits::difference_type d3 = 0; + std::iterator_traits::pointer p3 = &v3; + std::iterator_traits::reference r3 = v3; + std::iterator_traits::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/test/boost_no_std_iterator.ipp b/test/boost_no_std_iterator.ipp new file mode 100644 index 00000000..2e0b484d --- /dev/null +++ b/test/boost_no_std_iterator.ipp @@ -0,0 +1,64 @@ +// (C) Copyright John Maddock 2001. Permission to copy, use, modify, sell and +// distribute this software is granted provided this copyright notice appears +// in all copies. This software is provided "as is" without express or implied +// warranty, and with no claim as to its suitability for any purpose. + +// MACRO: BOOST_NO_STD_ITERATOR +// TITLE: std::iterator +// DESCRIPTION: The C++ implementation fails to provide the +// std::iterator class. + +#include +#include + +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/test/boost_no_std_locale.ipp b/test/boost_no_std_locale.ipp new file mode 100644 index 00000000..756b947d --- /dev/null +++ b/test/boost_no_std_locale.ipp @@ -0,0 +1,33 @@ +// (C) Copyright John Maddock 2001. Permission to copy, use, modify, sell and +// distribute this software is granted provided this copyright notice appears +// in all copies. This software is provided "as is" without express or implied +// warranty, and with no claim as to its suitability for any purpose. + +// MACRO: BOOST_NO_STD_LOCALE +// TITLE: std::locale +// DESCRIPTION: The standard library lacks std::locale. + +#include + +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* pct = 0; + (void)l1; + (void)pct; + return 0; +} + +} + + + + diff --git a/test/boost_no_std_messages.ipp b/test/boost_no_std_messages.ipp new file mode 100644 index 00000000..c51db069 --- /dev/null +++ b/test/boost_no_std_messages.ipp @@ -0,0 +1,26 @@ +// (C) Copyright John Maddock 2001. Permission to copy, use, modify, sell and +// distribute this software is granted provided this copyright notice appears +// in all copies. This software is provided "as is" without express or implied +// warranty, and with no claim as to its suitability for any purpose. + +// MACRO: BOOST_NO_STD_MESSAGES +// TITLE: std::messages +// DESCRIPTION: The standard library lacks a conforming std::messages facet. + +#include + + +namespace boost_no_std_messages{ + +int test() +{ + const std::messages* pmf = 0; + (void)pmf; + return 0; +} + +} + + + + diff --git a/test/boost_no_std_min_max.ipp b/test/boost_no_std_min_max.ipp new file mode 100644 index 00000000..d595208f --- /dev/null +++ b/test/boost_no_std_min_max.ipp @@ -0,0 +1,30 @@ +// (C) Copyright John Maddock 2001. Permission to copy, use, modify, sell and +// distribute this software is granted provided this copyright notice appears +// in all copies. This software is provided "as is" without express or implied +// warranty, and with no claim as to its suitability for any purpose. + +// 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 . + +#include + +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/test/boost_no_std_oi_assign.ipp b/test/boost_no_std_oi_assign.ipp new file mode 100644 index 00000000..b13e95da --- /dev/null +++ b/test/boost_no_std_oi_assign.ipp @@ -0,0 +1,37 @@ +// (C) Copyright John Maddock 2001. Permission to copy, use, modify, sell and +// distribute this software is granted provided this copyright notice appears +// in all copies. This software is provided "as is" without express or implied +// warranty, and with no claim as to its suitability for any purpose. + +// 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 +#include +#include + + +namespace boost_no_std_output_iterator_assign { + +int test() +{ + std::list l; + std::back_insert_iterator > bi1(l); + std::back_insert_iterator > bi2(l); + bi1 = bi2; + + std::front_insert_iterator > fi1(l); + std::front_insert_iterator > fi2(l); + fi1 = fi2; + + std::ostream_iterator osi1(std::cout); + std::ostream_iterator osi2(std::cout); + osi1 = osi2; + + return 0; +} + +} + \ No newline at end of file diff --git a/test/boost_no_std_use_facet.ipp b/test/boost_no_std_use_facet.ipp new file mode 100644 index 00000000..96111fb5 --- /dev/null +++ b/test/boost_no_std_use_facet.ipp @@ -0,0 +1,26 @@ +// (C) Copyright John Maddock 2001. Permission to copy, use, modify, sell and +// distribute this software is granted provided this copyright notice appears +// in all copies. This software is provided "as is" without express or implied +// warranty, and with no claim as to its suitability for any purpose. + +// MACRO: BOOST_NO_STD_USE_FACET +// TITLE: std::use_facet +// DESCRIPTION: The standard library lacks a conforming std::use_facet. + +#include + +namespace boost_no_std_use_facet{ + +int test() +{ + std::locale l; + const std::ctype& ct = std::use_facet >(l); + (void)ct; + return 0; +} + +} + + + + diff --git a/test/boost_no_std_wstring.ipp b/test/boost_no_std_wstring.ipp new file mode 100644 index 00000000..737cf83b --- /dev/null +++ b/test/boost_no_std_wstring.ipp @@ -0,0 +1,25 @@ +// (C) Copyright John Maddock 2001. Permission to copy, use, modify, sell and +// distribute this software is granted provided this copyright notice appears +// in all copies. This software is provided "as is" without express or implied +// warranty, and with no claim as to its suitability for any purpose. + +// MACRO: BOOST_NO_STD_WSTRING +// TITLE: std::wstring +// DESCRIPTION: The standard library lacks std::wstring. + +#include + +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/test/boost_no_stdc_namespace.ipp b/test/boost_no_stdc_namespace.ipp new file mode 100644 index 00000000..13652b04 --- /dev/null +++ b/test/boost_no_stdc_namespace.ipp @@ -0,0 +1,41 @@ +// (C) Copyright John Maddock 2001. Permission to copy, use, modify, sell and +// distribute this software is granted provided this copyright notice appears +// in all copies. This software is provided "as is" without express or implied +// warranty, and with no claim as to its suitability for any purpose. + +// MACRO: BOOST_NO_STDC_NAMESPACE +// TITLE: std:: namespace for C API's +// DESCRIPTION: The contents of C++ standard headers for C library +// functions (the 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 +#include +#include + +#undef isspace +#undef isalpha +#undef ispunct + +namespace boost_no_stdc_namespace{ + + +int test() +{ + char c = 0; + std::isspace(c); + std::isalpha(c); + std::ispunct(c); + std::strlen(&c); + std::clock(); + + return 0; +} + +} + + + diff --git a/test/boost_no_swprintf.ipp b/test/boost_no_swprintf.ipp new file mode 100644 index 00000000..21960df2 --- /dev/null +++ b/test/boost_no_swprintf.ipp @@ -0,0 +1,28 @@ +// (C) Copyright John Maddock 2001. Permission to copy, use, modify, sell and +// distribute this software is granted provided this copyright notice appears +// in all copies. This software is provided "as is" without express or implied +// warranty, and with no claim as to its suitability for any purpose. + +// MACRO: BOOST_NO_SWPRINTF +// TITLE: swprintf +// DESCRIPTION: The platform does not have a conforming version of swprintf. + +#include +#include + + +namespace boost_no_swprintf{ + +int test() +{ + wchar_t buf[10]; + swprintf(buf, 10, L"%d", 10); + return 0; +} + +} + + + + + diff --git a/test/boost_no_using_template.ipp b/test/boost_no_using_template.ipp new file mode 100644 index 00000000..e0bb5022 --- /dev/null +++ b/test/boost_no_using_template.ipp @@ -0,0 +1,43 @@ +// (C) Copyright John Maddock 2001. Permission to copy, use, modify, sell and +// distribute this software is granted provided this copyright notice appears +// in all copies. This software is provided "as is" without express or implied +// warranty, and with no claim as to its suitability for any purpose. + +// MACRO: BOOST_NO_USING_TEMPLATE +// TITLE: using template declarations +// DESCRIPTION: The compiler will not accept a using declaration +// that imports a template from the global namespace +// into a named namespace. Probably Borland specific. + +template +int global_foo(T) +{ + return 0; +} + +template +struct op +{ + friend op operator +(const op&, const op&) + { + return op(); + }; +}; + +namespace boost_no_using_template{ + +using ::global_foo; +using ::op; + +int test() +{ + boost_no_using_template::op a; + boost_no_using_template::op b; + a+b; + return boost_no_using_template::global_foo(0); +} + +} + + + diff --git a/test/boost_no_wchar_t.ipp b/test/boost_no_wchar_t.ipp new file mode 100644 index 00000000..66027e17 --- /dev/null +++ b/test/boost_no_wchar_t.ipp @@ -0,0 +1,40 @@ +// (C) Copyright John Maddock 2001. Permission to copy, use, modify, sell and +// distribute this software is granted provided this copyright notice appears +// in all copies. This software is provided "as is" without express or implied +// warranty, and with no claim as to its suitability for any purpose. + +// 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. + +#include + +namespace boost_no_intrinsic_wchar_t{ + +template +struct is_int{}; + +template <> struct is_int{}; +template <> struct is_int{}; +template <> struct is_int{}; +template <> struct is_int{}; +template <> struct is_int{}; +template <> struct is_int{}; +template <> struct is_int{}; +template <> struct is_int{}; +template <> struct is_int{}; +template <> struct is_int{}; + +int test() +{ + return 0; +} + +} + + + diff --git a/test/config_info.cpp b/test/config_info.cpp new file mode 100644 index 00000000..73a7db0b --- /dev/null +++ b/test/config_info.cpp @@ -0,0 +1,862 @@ +// Boost config.hpp configuration test program file -----------------------// + +// (C) Copyright Boost.org 2000. Permission to copy, use, modify, sell and +// distribute this software is granted provided this copyright notice appears +// in all copies. This software is provided "as is" without express or implied +// warranty, and with no claim as to its suitability for any purpose. + +// See http://www.boost.org for the most recent version. + +#include +#include +#include +#include +#include +#include + +#ifdef BOOST_HAS_UNISTD_H +#include +#endif + +unsigned int indent = 4; +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 +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 +void print_byte_order(const char* what, T t) +{ + T val = 0; + unsigned i; + for(i = 1; i < sizeof(T); ++i) + { + val |= (CHAR_BIT * i) << (CHAR_BIT * i); + } + const char* p = reinterpret_cast(&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 +void print_sign(const char* what, T t) +{ + t = -1; + for(unsigned i = 0; i < indent; ++i) std::cout.put(' '); + std::cout << "Type " << what << " is " << ((t < 0) ? "signed" : "unsigned") << 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(_WCHAR_T_DEFINED); + PRINT_MACRO(_Windows); + PRINT_MACRO(__WIN32__); + PRINT_MACRO(_WIN32); + PRINT_MACRO(WIN32); + PRINT_MACRO(_RTLDLL); + PRINT_MACRO(__DEBUG); + // 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(_MT); + // GNUC options: + PRINT_MACRO(__GNUC__); + PRINT_MACRO(__GNUC_MINOR__); + PRINT_MACRO(__STDC_VERSION__); + PRINT_MACRO(__GNUG__); + PRINT_MACRO(__STRICT_ANSI__); + PRINT_MACRO(__VERSION__); + PRINT_MACRO(__OPTIMIZE__); + PRINT_MACRO(__CHAR_UNSIGNED__); + PRINT_MACRO(__REGISTER_PREFIX__); + PRINT_MACRO(__USER_LABEL_PREFIX__); + PRINT_MACRO(__INTEL__); + 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); + // HP aCC: + PRINT_MACRO(__HP_aCC); + 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); + // SGI IRIX: + PRINT_MACRO(__sgi); + PRINT_MACRO(_COMPILER_VERSION); + PRINT_MACRO(__EDG_ABI_COMPATIBILITY_VERSION); + PRINT_MACRO(_BOOL); + PRINT_MACRO(_WCHAR_T); + // 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__); + // misc compilers not covered so far: + PRINT_MACRO(__EDG_VERSION__); + PRINT_MACRO(__ICC); + PRINT_MACRO(__ICL); + PRINT_MACRO(__INTEL_COMPILER); + PRINT_MACRO(__USLC__); + PRINT_MACRO(__DECCXX); + PRINT_MACRO(__IBMCPP__); + PRINT_MACRO(_REENTRANT); + PRINT_MACRO(_PTHREADS); + PRINT_MACRO(__STDC_HOSTED__); +} + +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_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_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); +} + +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(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); + // 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(_FILE_OFFSET_BITS); + 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); + // 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); +} + +void print_boost_macros() +{ + std::cout << "Boost version " << BOOST_STRINGIZE(BOOST_VERSION) << std::endl; + PRINT_MACRO(BOOST_DECL); + PRINT_MACRO(BOOST_HAS_BETHREADS); + PRINT_MACRO(BOOST_HAS_HASH); + PRINT_MACRO(BOOST_HAS_MACRO_USE_FACET); + PRINT_MACRO(BOOST_HAS_NL_TYPES_H); + PRINT_MACRO(BOOST_HAS_PTHREADS); + PRINT_MACRO(BOOST_HAS_SLIST); + PRINT_MACRO(BOOST_HAS_STLP_USE_FACET); + PRINT_MACRO(BOOST_HAS_THREADS); + PRINT_MACRO(BOOST_HAS_TWO_ARG_USE_FACET); + PRINT_MACRO(BOOST_HAS_UNISTD_H); + PRINT_MACRO(BOOST_HAS_WINTHREADS); + PRINT_MACRO(BOOST_MSVC); + PRINT_MACRO(BOOST_MSVC_STD_ITERATOR); + PRINT_MACRO(BOOST_MSVC6_MEMBER_TEMPLATES); + PRINT_MACRO(BOOST_NO_ARGUMENT_DEPENDENT_LOOKUP); + PRINT_MACRO(BOOST_NO_AUTO_PTR); + 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_DEPENDENT_TYPES_IN_TEMPLATE_VALUE_PARAMETERS); + PRINT_MACRO(BOOST_NO_EXPLICIT_FUNCTION_TEMPLATE_ARGUMENTS); + PRINT_MACRO(BOOST_NO_HASH); + PRINT_MACRO(BOOST_NO_INCLASS_MEMBER_INITIALIZATION); + PRINT_MACRO(BOOST_NO_INT64_T); + PRINT_MACRO(BOOST_NO_INTEGRAL_INT64_T); + PRINT_MACRO(BOOST_NO_INTRINSIC_WCHAR_T); + PRINT_MACRO(BOOST_NO_LIMITS); + PRINT_MACRO(BOOST_NO_LIMITS_COMPILE_TIME_CONSTANTS); + PRINT_MACRO(BOOST_NO_MEMBER_TEMPLATE_KEYWORD); + PRINT_MACRO(BOOST_NO_MEMBER_TEMPLATE_FRIENDS); + PRINT_MACRO(BOOST_NO_MEMBER_TEMPLATES); + PRINT_MACRO(BOOST_NO_OPERATORS_IN_NAMESPACE); + PRINT_MACRO(BOOST_NO_POINTER_TO_MEMBER_CONST); + PRINT_MACRO(BOOST_NO_PRIVATE_IN_AGGREGATE); + PRINT_MACRO(BOOST_NO_SLIST); + PRINT_MACRO(BOOST_NO_STD_ALLOCATOR); + 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_USE_FACET); + PRINT_MACRO(BOOST_NO_STD_WSTRING); + PRINT_MACRO(BOOST_NO_STDC_NAMESPACE); + PRINT_MACRO(BOOST_NO_STRINGSTREAM); + PRINT_MACRO(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION); + PRINT_MACRO(BOOST_NO_TEMPLATED_ITERATOR_CONSTRUCTORS); + PRINT_MACRO(BOOST_DISABLE_THREADS); + PRINT_MACRO(BOOST_NO_USING_TEMPLATE); + PRINT_MACRO(BOOST_STD_EXTENSION_NAMESPACE); + PRINT_MACRO(BOOST_HAS_STDINT_H); +} + +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/test/config_test.cpp b/test/config_test.cpp new file mode 100644 index 00000000..2a430e2c --- /dev/null +++ b/test/config_test.cpp @@ -0,0 +1,318 @@ +// (C) Copyright Boost.org 1999. Permission to copy, use, modify, sell and +// distribute this software is granted provided this copyright notice appears +// in all copies. This software is provided "as is" without express or implied +// warranty, and with no claim as to its suitability for any purpose. + +// Test file for config setup +// This file should compile, if it does not then +// one or more macros need to be defined. +// see boost_*.cxx for more details + +// Do not edit this file, it was generated automatically by +// ../tools/generate from boost_*.cxx on +// Sun Sep 16 11:09:13 2001 + +#include +#define BOOST_INCLUDE_MAIN +#include +#include "test.hpp" + +#ifndef BOOST_NO_ARGUMENT_DEPENDENT_LOOKUP +#include "boost_no_arg_dep_lookup.cxx" +#else +namespace boost_no_argument_dependent_lookup = empty_boost; +#endif +#ifndef BOOST_NO_AUTO_PTR +#include "boost_no_auto_ptr.cxx" +#else +namespace boost_no_auto_ptr = empty_boost; +#endif +#ifndef BOOST_NO_CV_SPECIALIZATIONS +#include "boost_no_cv_spec.cxx" +#else +namespace boost_no_cv_specializations = empty_boost; +#endif +#ifndef BOOST_NO_CV_VOID_SPECIALIZATIONS +#include "boost_no_cv_void_spec.cxx" +#else +namespace boost_no_cv_void_specializations = empty_boost; +#endif +#ifndef BOOST_NO_CWCHAR +#include "boost_no_cwchar.cxx" +#else +namespace boost_no_cwchar = empty_boost; +#endif +#ifndef BOOST_NO_CWCTYPE +#include "boost_no_cwctype.cxx" +#else +namespace boost_no_cwctype = empty_boost; +#endif +#ifndef BOOST_NO_DEPENDENT_NESTED_DERIVATIONS +#include "boost_no_dep_nested_class.cxx" +#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.cxx" +#else +namespace boost_no_dependent_types_in_template_value_parameters = empty_boost; +#endif +#ifndef BOOST_NO_EXPLICIT_FUNCTION_TEMPLATE_ARGUMENTS +#include "boost_no_exp_func_tem_arg.cxx" +#else +namespace boost_no_explicit_function_template_arguments = empty_boost; +#endif +#ifndef BOOST_WEAK_FUNCTION_TEMPLATE_ORDERING +#include "boost_no_func_tmp_order.cxx" +#else +namespace boost_weak_function_template_ordering = empty_boost; +#endif +#ifndef BOOST_NO_INCLASS_MEMBER_INITIALIZATION +#include "boost_no_inline_memb_init.cxx" +#else +namespace boost_no_inclass_member_initialization = empty_boost; +#endif +#ifndef BOOST_NO_TEMPLATED_ITERATOR_CONSTRUCTORS +#include "boost_no_iter_construct.cxx" +#else +namespace boost_no_templated_iterator_constructors = empty_boost; +#endif +#ifndef BOOST_NO_LIMITS +#include "boost_no_limits.cxx" +#else +namespace boost_no_limits = empty_boost; +#endif +#ifndef BOOST_NO_LIMITS_COMPILE_TIME_CONSTANTS +#include "boost_no_limits_const_exp.cxx" +#else +namespace boost_no_limits_compile_time_constants = empty_boost; +#endif +#ifndef BOOST_NO_MEMBER_TEMPLATE_KEYWORD +#include "boost_no_mem_tem_keyword.cxx" +#else +namespace boost_no_member_template_keyword = empty_boost; +#endif +#ifndef BOOST_NO_MEMBER_TEMPLATE_FRIENDS +#include "boost_no_mem_templ_frnds.cxx" +#else +namespace boost_no_member_template_friends = empty_boost; +#endif +#ifndef BOOST_NO_MEMBER_TEMPLATES +#include "boost_no_mem_templates.cxx" +#else +namespace boost_no_member_templates = empty_boost; +#endif +#ifndef BOOST_NO_OPERATORS_IN_NAMESPACE +#include "boost_no_ops_in_namespace.cxx" +#else +namespace boost_no_operators_in_namespace = empty_boost; +#endif +#ifndef BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION +#include "boost_no_partial_spec.cxx" +#else +namespace boost_no_template_partial_specialization = empty_boost; +#endif +#ifndef BOOST_NO_PRIVATE_IN_AGGREGATE +#include "boost_no_priv_aggregate.cxx" +#else +namespace boost_no_private_in_aggregate = empty_boost; +#endif +#ifndef BOOST_NO_POINTER_TO_MEMBER_CONST +#include "boost_no_ptr_mem_const.cxx" +#else +namespace boost_no_pointer_to_member_const = empty_boost; +#endif +#ifndef BOOST_NO_STRINGSTREAM +#include "boost_no_sstream.cxx" +#else +namespace boost_no_stringstream = empty_boost; +#endif +#ifndef BOOST_NO_STD_ALLOCATOR +#include "boost_no_std_allocator.cxx" +#else +namespace boost_no_std_allocator = empty_boost; +#endif +#ifndef BOOST_NO_STD_DISTANCE +#include "boost_no_std_distance.cxx" +#else +namespace boost_no_std_distance = empty_boost; +#endif +#ifndef BOOST_NO_STD_ITERATOR_TRAITS +#include "boost_no_std_iter_traits.cxx" +#else +namespace boost_no_std_iterator_traits = empty_boost; +#endif +#ifndef BOOST_NO_STD_ITERATOR +#include "boost_no_std_iterator.cxx" +#else +namespace boost_no_std_iterator = empty_boost; +#endif +#ifndef BOOST_NO_STD_LOCALE +#include "boost_no_std_locale.cxx" +#else +namespace boost_no_std_locale = empty_boost; +#endif +#ifndef BOOST_NO_STD_MESSAGES +#include "boost_no_std_messages.cxx" +#else +namespace boost_no_std_messages = empty_boost; +#endif +#ifndef BOOST_NO_STD_MIN_MAX +#include "boost_no_std_min_max.cxx" +#else +namespace boost_no_std_min_max = empty_boost; +#endif +#ifndef BOOST_NO_STD_OUTPUT_ITERATOR_ASSIGN +#include "boost_no_std_oi_assign.cxx" +#else +namespace boost_no_std_output_iterator_assign = empty_boost; +#endif +#ifndef BOOST_NO_STD_USE_FACET +#include "boost_no_std_use_facet.cxx" +#else +namespace boost_no_std_use_facet = empty_boost; +#endif +#ifndef BOOST_NO_STD_WSTRING +#include "boost_no_std_wstring.cxx" +#else +namespace boost_no_std_wstring = empty_boost; +#endif +#ifndef BOOST_NO_STDC_NAMESPACE +#include "boost_no_stdc_namespace.cxx" +#else +namespace boost_no_stdc_namespace = empty_boost; +#endif +#ifndef BOOST_NO_SWPRINTF +#include "boost_no_swprintf.cxx" +#else +namespace boost_no_swprintf = empty_boost; +#endif +#ifndef BOOST_NO_USING_TEMPLATE +#include "boost_no_using_template.cxx" +#else +namespace boost_no_using_template = empty_boost; +#endif +#ifndef BOOST_NO_INTRINSIC_WCHAR_T +#include "boost_no_wchar_t.cxx" +#else +namespace boost_no_intrinsic_wchar_t = empty_boost; +#endif +#ifdef BOOST_HAS_TWO_ARG_USE_FACET +#include "boost_has_2arg_use_facet.cxx" +#else +namespace boost_has_two_arg_use_facet = empty_boost; +#endif +#ifdef BOOST_HAS_BETHREADS +#include "boost_has_bethreads.cxx" +#else +namespace boost_has_bethreads = empty_boost; +#endif +#ifdef BOOST_HAS_HASH +#include "boost_has_hash.cxx" +#else +namespace boost_has_hash = empty_boost; +#endif +#ifdef BOOST_HAS_MACRO_USE_FACET +#include "boost_has_macro_use_facet.cxx" +#else +namespace boost_has_macro_use_facet = empty_boost; +#endif +#ifdef BOOST_HAS_NL_TYPES_H +#include "boost_has_nl_types_h.cxx" +#else +namespace boost_has_nl_types_h = empty_boost; +#endif +#ifdef BOOST_HAS_PTHREADS +#include "boost_has_pthreads.cxx" +#else +namespace boost_has_pthreads = empty_boost; +#endif +#ifdef BOOST_HAS_SLIST +#include "boost_has_slist.cxx" +#else +namespace boost_has_slist = empty_boost; +#endif +#ifdef BOOST_HAS_STDINT_H +#include "boost_has_stdint_h.cxx" +#else +namespace boost_has_stdint_h = empty_boost; +#endif +#ifdef BOOST_HAS_STLP_USE_FACET +#include "boost_has_stlp_use_facet.cxx" +#else +namespace boost_has_stlp_use_facet = empty_boost; +#endif +#ifdef BOOST_HAS_UNISTD_H +#include "boost_has_unistd_h.cxx" +#else +namespace boost_has_unistd_h = empty_boost; +#endif +#ifdef BOOST_MSVC6_MEMBER_TEMPLATES +#include "boost_has_vc6_mem_templ.cxx" +#else +namespace boost_msvc6_member_templates = empty_boost; +#endif +#ifdef BOOST_MSVC_STD_ITERATOR +#include "boost_has_vc_iterator.cxx" +#else +namespace boost_msvc_std_iterator = empty_boost; +#endif +#ifdef BOOST_HAS_WINTHREADS +#include "boost_has_winthreads.cxx" +#else +namespace boost_has_winthreads = empty_boost; +#endif + +int test_main( int, char *[] ) +{ + BOOST_TEST(0 == boost_no_intrinsic_wchar_t::test()); + BOOST_TEST(0 == boost_no_using_template::test()); + BOOST_TEST(0 == boost_no_swprintf::test()); + BOOST_TEST(0 == boost_no_stdc_namespace::test()); + BOOST_TEST(0 == boost_no_std_wstring::test()); + BOOST_TEST(0 == boost_no_std_use_facet::test()); + BOOST_TEST(0 == boost_no_std_output_iterator_assign::test()); + BOOST_TEST(0 == boost_no_std_min_max::test()); + BOOST_TEST(0 == boost_no_std_messages::test()); + BOOST_TEST(0 == boost_no_std_locale::test()); + BOOST_TEST(0 == boost_no_std_iterator::test()); + BOOST_TEST(0 == boost_no_std_iterator_traits::test()); + BOOST_TEST(0 == boost_no_std_distance::test()); + BOOST_TEST(0 == boost_no_std_allocator::test()); + BOOST_TEST(0 == boost_no_stringstream::test()); + BOOST_TEST(0 == boost_no_pointer_to_member_const::test()); + BOOST_TEST(0 == boost_no_private_in_aggregate::test()); + BOOST_TEST(0 == boost_no_template_partial_specialization::test()); + BOOST_TEST(0 == boost_no_operators_in_namespace::test()); + BOOST_TEST(0 == boost_no_member_templates::test()); + BOOST_TEST(0 == boost_no_member_template_friends::test()); + BOOST_TEST(0 == boost_no_member_template_keyword::test()); + BOOST_TEST(0 == boost_no_limits_compile_time_constants::test()); + BOOST_TEST(0 == boost_no_limits::test()); + BOOST_TEST(0 == boost_no_templated_iterator_constructors::test()); + BOOST_TEST(0 == boost_no_inclass_member_initialization::test()); + BOOST_TEST(0 == boost_weak_function_template_ordering::test()); + BOOST_TEST(0 == boost_no_explicit_function_template_arguments::test()); + BOOST_TEST(0 == boost_no_dependent_types_in_template_value_parameters::test()); + BOOST_TEST(0 == boost_no_dependent_nested_derivations::test()); + BOOST_TEST(0 == boost_no_cwctype::test()); + BOOST_TEST(0 == boost_no_cwchar::test()); + BOOST_TEST(0 == boost_no_cv_void_specializations::test()); + BOOST_TEST(0 == boost_no_cv_specializations::test()); + BOOST_TEST(0 == boost_no_auto_ptr::test()); + BOOST_TEST(0 == boost_no_argument_dependent_lookup::test()); + BOOST_TEST(0 == boost_has_winthreads::test()); + BOOST_TEST(0 == boost_msvc_std_iterator::test()); + BOOST_TEST(0 == boost_msvc6_member_templates::test()); + BOOST_TEST(0 == boost_has_unistd_h::test()); + BOOST_TEST(0 == boost_has_stlp_use_facet::test()); + BOOST_TEST(0 == boost_has_stdint_h::test()); + BOOST_TEST(0 == boost_has_slist::test()); + BOOST_TEST(0 == boost_has_pthreads::test()); + BOOST_TEST(0 == boost_has_nl_types_h::test()); + BOOST_TEST(0 == boost_has_macro_use_facet::test()); + BOOST_TEST(0 == boost_has_hash::test()); + BOOST_TEST(0 == boost_has_bethreads::test()); + BOOST_TEST(0 == boost_has_two_arg_use_facet::test()); + return 0; +} diff --git a/test/has_2arg_use_facet_fail.cpp b/test/has_2arg_use_facet_fail.cpp new file mode 100644 index 00000000..566184c5 --- /dev/null +++ b/test/has_2arg_use_facet_fail.cpp @@ -0,0 +1,36 @@ + +// (C) Copyright Boost.org 1999. Permission to copy, use, modify, sell and +// distribute this software is granted provided this copyright notice appears +// in all copies. This software is provided "as is" without express or implied +// warranty, and with no claim as to its suitability for any purpose. + +// 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 may be defined. +// see boost_has_2arg_use_facet.cxx for more details + +// Do not edit this file, it was generated automatically by +// ../tools/generate from boost_has_2arg_use_facet.cxx on +// Mon Sep 10 12:18:12 2001 + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include +#include +#include "test.hpp" + +#ifndef BOOST_HAS_TWO_ARG_USE_FACET +#include "boost_has_2arg_use_facet.cxx" +#else +#error "this file should not compile" +#endif + +int cpp_main( int, char *[] ) +{ + return boost_has_two_arg_use_facet::test(); +} + diff --git a/test/has_2arg_use_facet_pass.cpp b/test/has_2arg_use_facet_pass.cpp new file mode 100644 index 00000000..b9e01d33 --- /dev/null +++ b/test/has_2arg_use_facet_pass.cpp @@ -0,0 +1,36 @@ + +// (C) Copyright Boost.org 1999. Permission to copy, use, modify, sell and +// distribute this software is granted provided this copyright notice appears +// in all copies. This software is provided "as is" without express or implied +// warranty, and with no claim as to its suitability for any purpose. + +// 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 boost_has_2arg_use_facet.cxx for more details + +// Do not edit this file, it was generated automatically by +// ../tools/generate from boost_has_2arg_use_facet.cxx on +// Mon Sep 10 12:18:12 2001 + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include +#include +#include "test.hpp" + +#ifdef BOOST_HAS_TWO_ARG_USE_FACET +#include "boost_has_2arg_use_facet.cxx" +#else +namespace boost_has_two_arg_use_facet = empty_boost; +#endif + +int cpp_main( int, char *[] ) +{ + return boost_has_two_arg_use_facet::test(); +} + diff --git a/test/has_bethreads_fail.cpp b/test/has_bethreads_fail.cpp new file mode 100644 index 00000000..8eaf40bd --- /dev/null +++ b/test/has_bethreads_fail.cpp @@ -0,0 +1,36 @@ + +// (C) Copyright Boost.org 1999. Permission to copy, use, modify, sell and +// distribute this software is granted provided this copyright notice appears +// in all copies. This software is provided "as is" without express or implied +// warranty, and with no claim as to its suitability for any purpose. + +// Test file for macro BOOST_HAS_BETHREADS +// This file should not compile, if it does then +// BOOST_HAS_BETHREADS may be defined. +// see boost_has_bethreads.cxx for more details + +// Do not edit this file, it was generated automatically by +// ../tools/generate from boost_has_bethreads.cxx on +// Mon Sep 10 12:18:12 2001 + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include +#include +#include "test.hpp" + +#ifndef BOOST_HAS_BETHREADS +#include "boost_has_bethreads.cxx" +#else +#error "this file should not compile" +#endif + +int cpp_main( int, char *[] ) +{ + return boost_has_bethreads::test(); +} + diff --git a/test/has_bethreads_pass.cpp b/test/has_bethreads_pass.cpp new file mode 100644 index 00000000..54f89b36 --- /dev/null +++ b/test/has_bethreads_pass.cpp @@ -0,0 +1,36 @@ + +// (C) Copyright Boost.org 1999. Permission to copy, use, modify, sell and +// distribute this software is granted provided this copyright notice appears +// in all copies. This software is provided "as is" without express or implied +// warranty, and with no claim as to its suitability for any purpose. + +// Test file for macro BOOST_HAS_BETHREADS +// This file should compile, if it does not then +// BOOST_HAS_BETHREADS should not be defined. +// see boost_has_bethreads.cxx for more details + +// Do not edit this file, it was generated automatically by +// ../tools/generate from boost_has_bethreads.cxx on +// Mon Sep 10 12:18:12 2001 + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include +#include +#include "test.hpp" + +#ifdef BOOST_HAS_BETHREADS +#include "boost_has_bethreads.cxx" +#else +namespace boost_has_bethreads = empty_boost; +#endif + +int cpp_main( int, char *[] ) +{ + return boost_has_bethreads::test(); +} + diff --git a/test/has_hash_fail.cpp b/test/has_hash_fail.cpp new file mode 100644 index 00000000..a80bc932 --- /dev/null +++ b/test/has_hash_fail.cpp @@ -0,0 +1,36 @@ + +// (C) Copyright Boost.org 1999. Permission to copy, use, modify, sell and +// distribute this software is granted provided this copyright notice appears +// in all copies. This software is provided "as is" without express or implied +// warranty, and with no claim as to its suitability for any purpose. + +// Test file for macro BOOST_HAS_HASH +// This file should not compile, if it does then +// BOOST_HAS_HASH may be defined. +// see boost_has_hash.cxx for more details + +// Do not edit this file, it was generated automatically by +// ../tools/generate from boost_has_hash.cxx on +// Mon Sep 10 12:18:12 2001 + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include +#include +#include "test.hpp" + +#ifndef BOOST_HAS_HASH +#include "boost_has_hash.cxx" +#else +#error "this file should not compile" +#endif + +int cpp_main( int, char *[] ) +{ + return boost_has_hash::test(); +} + diff --git a/test/has_hash_pass.cpp b/test/has_hash_pass.cpp new file mode 100644 index 00000000..220cbbed --- /dev/null +++ b/test/has_hash_pass.cpp @@ -0,0 +1,36 @@ + +// (C) Copyright Boost.org 1999. Permission to copy, use, modify, sell and +// distribute this software is granted provided this copyright notice appears +// in all copies. This software is provided "as is" without express or implied +// warranty, and with no claim as to its suitability for any purpose. + +// Test file for macro BOOST_HAS_HASH +// This file should compile, if it does not then +// BOOST_HAS_HASH should not be defined. +// see boost_has_hash.cxx for more details + +// Do not edit this file, it was generated automatically by +// ../tools/generate from boost_has_hash.cxx on +// Mon Sep 10 12:18:12 2001 + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include +#include +#include "test.hpp" + +#ifdef BOOST_HAS_HASH +#include "boost_has_hash.cxx" +#else +namespace boost_has_hash = empty_boost; +#endif + +int cpp_main( int, char *[] ) +{ + return boost_has_hash::test(); +} + diff --git a/test/has_macro_use_facet_fail.cpp b/test/has_macro_use_facet_fail.cpp new file mode 100644 index 00000000..04127f8c --- /dev/null +++ b/test/has_macro_use_facet_fail.cpp @@ -0,0 +1,36 @@ + +// (C) Copyright Boost.org 1999. Permission to copy, use, modify, sell and +// distribute this software is granted provided this copyright notice appears +// in all copies. This software is provided "as is" without express or implied +// warranty, and with no claim as to its suitability for any purpose. + +// Test file for macro BOOST_HAS_MACRO_USE_FACET +// This file should not compile, if it does then +// BOOST_HAS_MACRO_USE_FACET may be defined. +// see boost_has_macro_use_facet.cxx for more details + +// Do not edit this file, it was generated automatically by +// ../tools/generate from boost_has_macro_use_facet.cxx on +// Mon Sep 10 12:18:12 2001 + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include +#include +#include "test.hpp" + +#ifndef BOOST_HAS_MACRO_USE_FACET +#include "boost_has_macro_use_facet.cxx" +#else +#error "this file should not compile" +#endif + +int cpp_main( int, char *[] ) +{ + return boost_has_macro_use_facet::test(); +} + diff --git a/test/has_macro_use_facet_pass.cpp b/test/has_macro_use_facet_pass.cpp new file mode 100644 index 00000000..350f190e --- /dev/null +++ b/test/has_macro_use_facet_pass.cpp @@ -0,0 +1,36 @@ + +// (C) Copyright Boost.org 1999. Permission to copy, use, modify, sell and +// distribute this software is granted provided this copyright notice appears +// in all copies. This software is provided "as is" without express or implied +// warranty, and with no claim as to its suitability for any purpose. + +// 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 boost_has_macro_use_facet.cxx for more details + +// Do not edit this file, it was generated automatically by +// ../tools/generate from boost_has_macro_use_facet.cxx on +// Mon Sep 10 12:18:12 2001 + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include +#include +#include "test.hpp" + +#ifdef BOOST_HAS_MACRO_USE_FACET +#include "boost_has_macro_use_facet.cxx" +#else +namespace boost_has_macro_use_facet = empty_boost; +#endif + +int cpp_main( int, char *[] ) +{ + return boost_has_macro_use_facet::test(); +} + diff --git a/test/has_nl_types_h_fail.cpp b/test/has_nl_types_h_fail.cpp new file mode 100644 index 00000000..bbb362ef --- /dev/null +++ b/test/has_nl_types_h_fail.cpp @@ -0,0 +1,36 @@ + +// (C) Copyright Boost.org 1999. Permission to copy, use, modify, sell and +// distribute this software is granted provided this copyright notice appears +// in all copies. This software is provided "as is" without express or implied +// warranty, and with no claim as to its suitability for any purpose. + +// Test file for macro BOOST_HAS_NL_TYPES_H +// This file should not compile, if it does then +// BOOST_HAS_NL_TYPES_H may be defined. +// see boost_has_nl_types_h.cxx for more details + +// Do not edit this file, it was generated automatically by +// ../tools/generate from boost_has_nl_types_h.cxx on +// Mon Sep 10 12:18:12 2001 + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include +#include +#include "test.hpp" + +#ifndef BOOST_HAS_NL_TYPES_H +#include "boost_has_nl_types_h.cxx" +#else +#error "this file should not compile" +#endif + +int cpp_main( int, char *[] ) +{ + return boost_has_nl_types_h::test(); +} + diff --git a/test/has_nl_types_h_pass.cpp b/test/has_nl_types_h_pass.cpp new file mode 100644 index 00000000..0e322d60 --- /dev/null +++ b/test/has_nl_types_h_pass.cpp @@ -0,0 +1,36 @@ + +// (C) Copyright Boost.org 1999. Permission to copy, use, modify, sell and +// distribute this software is granted provided this copyright notice appears +// in all copies. This software is provided "as is" without express or implied +// warranty, and with no claim as to its suitability for any purpose. + +// 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 boost_has_nl_types_h.cxx for more details + +// Do not edit this file, it was generated automatically by +// ../tools/generate from boost_has_nl_types_h.cxx on +// Mon Sep 10 12:18:12 2001 + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include +#include +#include "test.hpp" + +#ifdef BOOST_HAS_NL_TYPES_H +#include "boost_has_nl_types_h.cxx" +#else +namespace boost_has_nl_types_h = empty_boost; +#endif + +int cpp_main( int, char *[] ) +{ + return boost_has_nl_types_h::test(); +} + diff --git a/test/has_pthreads_fail.cpp b/test/has_pthreads_fail.cpp new file mode 100644 index 00000000..62df782f --- /dev/null +++ b/test/has_pthreads_fail.cpp @@ -0,0 +1,36 @@ + +// (C) Copyright Boost.org 1999. Permission to copy, use, modify, sell and +// distribute this software is granted provided this copyright notice appears +// in all copies. This software is provided "as is" without express or implied +// warranty, and with no claim as to its suitability for any purpose. + +// Test file for macro BOOST_HAS_PTHREADS +// This file should not compile, if it does then +// BOOST_HAS_PTHREADS may be defined. +// see boost_has_pthreads.cxx for more details + +// Do not edit this file, it was generated automatically by +// ../tools/generate from boost_has_pthreads.cxx on +// Mon Sep 10 12:18:12 2001 + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include +#include +#include "test.hpp" + +#ifndef BOOST_HAS_PTHREADS +#include "boost_has_pthreads.cxx" +#else +#error "this file should not compile" +#endif + +int cpp_main( int, char *[] ) +{ + return boost_has_pthreads::test(); +} + diff --git a/test/has_pthreads_pass.cpp b/test/has_pthreads_pass.cpp new file mode 100644 index 00000000..1e78f20e --- /dev/null +++ b/test/has_pthreads_pass.cpp @@ -0,0 +1,36 @@ + +// (C) Copyright Boost.org 1999. Permission to copy, use, modify, sell and +// distribute this software is granted provided this copyright notice appears +// in all copies. This software is provided "as is" without express or implied +// warranty, and with no claim as to its suitability for any purpose. + +// Test file for macro BOOST_HAS_PTHREADS +// This file should compile, if it does not then +// BOOST_HAS_PTHREADS should not be defined. +// see boost_has_pthreads.cxx for more details + +// Do not edit this file, it was generated automatically by +// ../tools/generate from boost_has_pthreads.cxx on +// Mon Sep 10 12:18:12 2001 + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include +#include +#include "test.hpp" + +#ifdef BOOST_HAS_PTHREADS +#include "boost_has_pthreads.cxx" +#else +namespace boost_has_pthreads = empty_boost; +#endif + +int cpp_main( int, char *[] ) +{ + return boost_has_pthreads::test(); +} + diff --git a/test/has_slist_fail.cpp b/test/has_slist_fail.cpp new file mode 100644 index 00000000..389328ba --- /dev/null +++ b/test/has_slist_fail.cpp @@ -0,0 +1,36 @@ + +// (C) Copyright Boost.org 1999. Permission to copy, use, modify, sell and +// distribute this software is granted provided this copyright notice appears +// in all copies. This software is provided "as is" without express or implied +// warranty, and with no claim as to its suitability for any purpose. + +// Test file for macro BOOST_HAS_SLIST +// This file should not compile, if it does then +// BOOST_HAS_SLIST may be defined. +// see boost_has_slist.cxx for more details + +// Do not edit this file, it was generated automatically by +// ../tools/generate from boost_has_slist.cxx on +// Mon Sep 10 12:18:12 2001 + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include +#include +#include "test.hpp" + +#ifndef BOOST_HAS_SLIST +#include "boost_has_slist.cxx" +#else +#error "this file should not compile" +#endif + +int cpp_main( int, char *[] ) +{ + return boost_has_slist::test(); +} + diff --git a/test/has_slist_pass.cpp b/test/has_slist_pass.cpp new file mode 100644 index 00000000..e89df45b --- /dev/null +++ b/test/has_slist_pass.cpp @@ -0,0 +1,36 @@ + +// (C) Copyright Boost.org 1999. Permission to copy, use, modify, sell and +// distribute this software is granted provided this copyright notice appears +// in all copies. This software is provided "as is" without express or implied +// warranty, and with no claim as to its suitability for any purpose. + +// Test file for macro BOOST_HAS_SLIST +// This file should compile, if it does not then +// BOOST_HAS_SLIST should not be defined. +// see boost_has_slist.cxx for more details + +// Do not edit this file, it was generated automatically by +// ../tools/generate from boost_has_slist.cxx on +// Mon Sep 10 12:18:12 2001 + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include +#include +#include "test.hpp" + +#ifdef BOOST_HAS_SLIST +#include "boost_has_slist.cxx" +#else +namespace boost_has_slist = empty_boost; +#endif + +int cpp_main( int, char *[] ) +{ + return boost_has_slist::test(); +} + diff --git a/test/has_stdint_h_fail.cpp b/test/has_stdint_h_fail.cpp new file mode 100644 index 00000000..fa2908f8 --- /dev/null +++ b/test/has_stdint_h_fail.cpp @@ -0,0 +1,36 @@ + +// (C) Copyright Boost.org 1999. Permission to copy, use, modify, sell and +// distribute this software is granted provided this copyright notice appears +// in all copies. This software is provided "as is" without express or implied +// warranty, and with no claim as to its suitability for any purpose. + +// Test file for macro BOOST_HAS_STDINT_H +// This file should not compile, if it does then +// BOOST_HAS_STDINT_H may be defined. +// see boost_has_stdint_h.cxx for more details + +// Do not edit this file, it was generated automatically by +// ../tools/generate from boost_has_stdint_h.cxx on +// Mon Sep 10 12:18:12 2001 + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include +#include +#include "test.hpp" + +#ifndef BOOST_HAS_STDINT_H +#include "boost_has_stdint_h.cxx" +#else +#error "this file should not compile" +#endif + +int cpp_main( int, char *[] ) +{ + return boost_has_stdint_h::test(); +} + diff --git a/test/has_stdint_h_pass.cpp b/test/has_stdint_h_pass.cpp new file mode 100644 index 00000000..f66eb1bf --- /dev/null +++ b/test/has_stdint_h_pass.cpp @@ -0,0 +1,36 @@ + +// (C) Copyright Boost.org 1999. Permission to copy, use, modify, sell and +// distribute this software is granted provided this copyright notice appears +// in all copies. This software is provided "as is" without express or implied +// warranty, and with no claim as to its suitability for any purpose. + +// 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 boost_has_stdint_h.cxx for more details + +// Do not edit this file, it was generated automatically by +// ../tools/generate from boost_has_stdint_h.cxx on +// Mon Sep 10 12:18:12 2001 + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include +#include +#include "test.hpp" + +#ifdef BOOST_HAS_STDINT_H +#include "boost_has_stdint_h.cxx" +#else +namespace boost_has_stdint_h = empty_boost; +#endif + +int cpp_main( int, char *[] ) +{ + return boost_has_stdint_h::test(); +} + diff --git a/test/has_stlp_use_facet_fail.cpp b/test/has_stlp_use_facet_fail.cpp new file mode 100644 index 00000000..229d90bd --- /dev/null +++ b/test/has_stlp_use_facet_fail.cpp @@ -0,0 +1,36 @@ + +// (C) Copyright Boost.org 1999. Permission to copy, use, modify, sell and +// distribute this software is granted provided this copyright notice appears +// in all copies. This software is provided "as is" without express or implied +// warranty, and with no claim as to its suitability for any purpose. + +// Test file for macro BOOST_HAS_STLP_USE_FACET +// This file should not compile, if it does then +// BOOST_HAS_STLP_USE_FACET may be defined. +// see boost_has_stlp_use_facet.cxx for more details + +// Do not edit this file, it was generated automatically by +// ../tools/generate from boost_has_stlp_use_facet.cxx on +// Mon Sep 10 12:18:12 2001 + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include +#include +#include "test.hpp" + +#ifndef BOOST_HAS_STLP_USE_FACET +#include "boost_has_stlp_use_facet.cxx" +#else +#error "this file should not compile" +#endif + +int cpp_main( int, char *[] ) +{ + return boost_has_stlp_use_facet::test(); +} + diff --git a/test/has_stlp_use_facet_pass.cpp b/test/has_stlp_use_facet_pass.cpp new file mode 100644 index 00000000..9b2ee064 --- /dev/null +++ b/test/has_stlp_use_facet_pass.cpp @@ -0,0 +1,36 @@ + +// (C) Copyright Boost.org 1999. Permission to copy, use, modify, sell and +// distribute this software is granted provided this copyright notice appears +// in all copies. This software is provided "as is" without express or implied +// warranty, and with no claim as to its suitability for any purpose. + +// 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 boost_has_stlp_use_facet.cxx for more details + +// Do not edit this file, it was generated automatically by +// ../tools/generate from boost_has_stlp_use_facet.cxx on +// Mon Sep 10 12:18:12 2001 + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include +#include +#include "test.hpp" + +#ifdef BOOST_HAS_STLP_USE_FACET +#include "boost_has_stlp_use_facet.cxx" +#else +namespace boost_has_stlp_use_facet = empty_boost; +#endif + +int cpp_main( int, char *[] ) +{ + return boost_has_stlp_use_facet::test(); +} + diff --git a/test/has_unistd_h_fail.cpp b/test/has_unistd_h_fail.cpp new file mode 100644 index 00000000..24dd93ae --- /dev/null +++ b/test/has_unistd_h_fail.cpp @@ -0,0 +1,36 @@ + +// (C) Copyright Boost.org 1999. Permission to copy, use, modify, sell and +// distribute this software is granted provided this copyright notice appears +// in all copies. This software is provided "as is" without express or implied +// warranty, and with no claim as to its suitability for any purpose. + +// Test file for macro BOOST_HAS_UNISTD_H +// This file should not compile, if it does then +// BOOST_HAS_UNISTD_H may be defined. +// see boost_has_unistd_h.cxx for more details + +// Do not edit this file, it was generated automatically by +// ../tools/generate from boost_has_unistd_h.cxx on +// Mon Sep 10 12:18:12 2001 + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include +#include +#include "test.hpp" + +#ifndef BOOST_HAS_UNISTD_H +#include "boost_has_unistd_h.cxx" +#else +#error "this file should not compile" +#endif + +int cpp_main( int, char *[] ) +{ + return boost_has_unistd_h::test(); +} + diff --git a/test/has_unistd_h_pass.cpp b/test/has_unistd_h_pass.cpp new file mode 100644 index 00000000..67414cc7 --- /dev/null +++ b/test/has_unistd_h_pass.cpp @@ -0,0 +1,36 @@ + +// (C) Copyright Boost.org 1999. Permission to copy, use, modify, sell and +// distribute this software is granted provided this copyright notice appears +// in all copies. This software is provided "as is" without express or implied +// warranty, and with no claim as to its suitability for any purpose. + +// 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 boost_has_unistd_h.cxx for more details + +// Do not edit this file, it was generated automatically by +// ../tools/generate from boost_has_unistd_h.cxx on +// Mon Sep 10 12:18:12 2001 + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include +#include +#include "test.hpp" + +#ifdef BOOST_HAS_UNISTD_H +#include "boost_has_unistd_h.cxx" +#else +namespace boost_has_unistd_h = empty_boost; +#endif + +int cpp_main( int, char *[] ) +{ + return boost_has_unistd_h::test(); +} + diff --git a/test/has_vc6_mem_templ_fail.cpp b/test/has_vc6_mem_templ_fail.cpp new file mode 100644 index 00000000..5cfb6817 --- /dev/null +++ b/test/has_vc6_mem_templ_fail.cpp @@ -0,0 +1,36 @@ + +// (C) Copyright Boost.org 1999. Permission to copy, use, modify, sell and +// distribute this software is granted provided this copyright notice appears +// in all copies. This software is provided "as is" without express or implied +// warranty, and with no claim as to its suitability for any purpose. + +// Test file for macro BOOST_MSVC6_MEMBER_TEMPLATES +// This file should not compile, if it does then +// BOOST_MSVC6_MEMBER_TEMPLATES may be defined. +// see boost_has_vc6_mem_templ.cxx for more details + +// Do not edit this file, it was generated automatically by +// ../tools/generate from boost_has_vc6_mem_templ.cxx on +// Mon Sep 10 12:18:12 2001 + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include +#include +#include "test.hpp" + +#ifndef BOOST_MSVC6_MEMBER_TEMPLATES +#include "boost_has_vc6_mem_templ.cxx" +#else +#error "this file should not compile" +#endif + +int cpp_main( int, char *[] ) +{ + return boost_msvc6_member_templates::test(); +} + diff --git a/test/has_vc6_mem_templ_pass.cpp b/test/has_vc6_mem_templ_pass.cpp new file mode 100644 index 00000000..7dc469c7 --- /dev/null +++ b/test/has_vc6_mem_templ_pass.cpp @@ -0,0 +1,36 @@ + +// (C) Copyright Boost.org 1999. Permission to copy, use, modify, sell and +// distribute this software is granted provided this copyright notice appears +// in all copies. This software is provided "as is" without express or implied +// warranty, and with no claim as to its suitability for any purpose. + +// 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 boost_has_vc6_mem_templ.cxx for more details + +// Do not edit this file, it was generated automatically by +// ../tools/generate from boost_has_vc6_mem_templ.cxx on +// Mon Sep 10 12:18:12 2001 + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include +#include +#include "test.hpp" + +#ifdef BOOST_MSVC6_MEMBER_TEMPLATES +#include "boost_has_vc6_mem_templ.cxx" +#else +namespace boost_msvc6_member_templates = empty_boost; +#endif + +int cpp_main( int, char *[] ) +{ + return boost_msvc6_member_templates::test(); +} + diff --git a/test/has_vc_iterator_fail.cpp b/test/has_vc_iterator_fail.cpp new file mode 100644 index 00000000..15fcbd46 --- /dev/null +++ b/test/has_vc_iterator_fail.cpp @@ -0,0 +1,36 @@ + +// (C) Copyright Boost.org 1999. Permission to copy, use, modify, sell and +// distribute this software is granted provided this copyright notice appears +// in all copies. This software is provided "as is" without express or implied +// warranty, and with no claim as to its suitability for any purpose. + +// Test file for macro BOOST_MSVC_STD_ITERATOR +// This file should not compile, if it does then +// BOOST_MSVC_STD_ITERATOR may be defined. +// see boost_has_vc_iterator.cxx for more details + +// Do not edit this file, it was generated automatically by +// ../tools/generate from boost_has_vc_iterator.cxx on +// Mon Sep 10 12:18:12 2001 + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include +#include +#include "test.hpp" + +#ifndef BOOST_MSVC_STD_ITERATOR +#include "boost_has_vc_iterator.cxx" +#else +#error "this file should not compile" +#endif + +int cpp_main( int, char *[] ) +{ + return boost_msvc_std_iterator::test(); +} + diff --git a/test/has_vc_iterator_pass.cpp b/test/has_vc_iterator_pass.cpp new file mode 100644 index 00000000..d02cec96 --- /dev/null +++ b/test/has_vc_iterator_pass.cpp @@ -0,0 +1,36 @@ + +// (C) Copyright Boost.org 1999. Permission to copy, use, modify, sell and +// distribute this software is granted provided this copyright notice appears +// in all copies. This software is provided "as is" without express or implied +// warranty, and with no claim as to its suitability for any purpose. + +// 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 boost_has_vc_iterator.cxx for more details + +// Do not edit this file, it was generated automatically by +// ../tools/generate from boost_has_vc_iterator.cxx on +// Mon Sep 10 12:18:12 2001 + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include +#include +#include "test.hpp" + +#ifdef BOOST_MSVC_STD_ITERATOR +#include "boost_has_vc_iterator.cxx" +#else +namespace boost_msvc_std_iterator = empty_boost; +#endif + +int cpp_main( int, char *[] ) +{ + return boost_msvc_std_iterator::test(); +} + diff --git a/test/has_winthreads_fail.cpp b/test/has_winthreads_fail.cpp new file mode 100644 index 00000000..0c22097d --- /dev/null +++ b/test/has_winthreads_fail.cpp @@ -0,0 +1,36 @@ + +// (C) Copyright Boost.org 1999. Permission to copy, use, modify, sell and +// distribute this software is granted provided this copyright notice appears +// in all copies. This software is provided "as is" without express or implied +// warranty, and with no claim as to its suitability for any purpose. + +// Test file for macro BOOST_HAS_WINTHREADS +// This file should not compile, if it does then +// BOOST_HAS_WINTHREADS may be defined. +// see boost_has_winthreads.cxx for more details + +// Do not edit this file, it was generated automatically by +// ../tools/generate from boost_has_winthreads.cxx on +// Mon Sep 10 12:18:12 2001 + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include +#include +#include "test.hpp" + +#ifndef BOOST_HAS_WINTHREADS +#include "boost_has_winthreads.cxx" +#else +#error "this file should not compile" +#endif + +int cpp_main( int, char *[] ) +{ + return boost_has_winthreads::test(); +} + diff --git a/test/has_winthreads_pass.cpp b/test/has_winthreads_pass.cpp new file mode 100644 index 00000000..5027f25e --- /dev/null +++ b/test/has_winthreads_pass.cpp @@ -0,0 +1,36 @@ + +// (C) Copyright Boost.org 1999. Permission to copy, use, modify, sell and +// distribute this software is granted provided this copyright notice appears +// in all copies. This software is provided "as is" without express or implied +// warranty, and with no claim as to its suitability for any purpose. + +// Test file for macro BOOST_HAS_WINTHREADS +// This file should compile, if it does not then +// BOOST_HAS_WINTHREADS should not be defined. +// see boost_has_winthreads.cxx for more details + +// Do not edit this file, it was generated automatically by +// ../tools/generate from boost_has_winthreads.cxx on +// Mon Sep 10 12:18:12 2001 + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include +#include +#include "test.hpp" + +#ifdef BOOST_HAS_WINTHREADS +#include "boost_has_winthreads.cxx" +#else +namespace boost_has_winthreads = empty_boost; +#endif + +int cpp_main( int, char *[] ) +{ + return boost_has_winthreads::test(); +} + diff --git a/limits_test.cpp b/test/limits_test.cpp similarity index 100% rename from limits_test.cpp rename to test/limits_test.cpp diff --git a/test/no_arg_dep_lookup_fail.cpp b/test/no_arg_dep_lookup_fail.cpp new file mode 100644 index 00000000..52fcba19 --- /dev/null +++ b/test/no_arg_dep_lookup_fail.cpp @@ -0,0 +1,36 @@ + +// (C) Copyright Boost.org 1999. Permission to copy, use, modify, sell and +// distribute this software is granted provided this copyright notice appears +// in all copies. This software is provided "as is" without express or implied +// warranty, and with no claim as to its suitability for any purpose. + +// Test file for macro BOOST_NO_ARGUMENT_DEPENDENT_LOOKUP +// This file should not compile, if it does then +// BOOST_NO_ARGUMENT_DEPENDENT_LOOKUP need not be defined. +// see boost_no_arg_dep_lookup.cxx for more details + +// Do not edit this file, it was generated automatically by +// ../tools/generate from boost_no_arg_dep_lookup.cxx on +// Mon Sep 10 12:18:12 2001 + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include +#include +#include "test.hpp" + +#ifdef BOOST_NO_ARGUMENT_DEPENDENT_LOOKUP +#include "boost_no_arg_dep_lookup.cxx" +#else +#error "this file should not compile" +#endif + +int cpp_main( int, char *[] ) +{ + return boost_no_argument_dependent_lookup::test(); +} + diff --git a/test/no_arg_dep_lookup_pass.cpp b/test/no_arg_dep_lookup_pass.cpp new file mode 100644 index 00000000..a09c6e85 --- /dev/null +++ b/test/no_arg_dep_lookup_pass.cpp @@ -0,0 +1,36 @@ + +// (C) Copyright Boost.org 1999. Permission to copy, use, modify, sell and +// distribute this software is granted provided this copyright notice appears +// in all copies. This software is provided "as is" without express or implied +// warranty, and with no claim as to its suitability for any purpose. + +// Test file for macro BOOST_NO_ARGUMENT_DEPENDENT_LOOKUP +// This file should compile, if it does not then +// BOOST_NO_ARGUMENT_DEPENDENT_LOOKUP needs to be defined. +// see boost_no_arg_dep_lookup.cxx for more details + +// Do not edit this file, it was generated automatically by +// ../tools/generate from boost_no_arg_dep_lookup.cxx on +// Mon Sep 10 12:18:12 2001 + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include +#include +#include "test.hpp" + +#ifndef BOOST_NO_ARGUMENT_DEPENDENT_LOOKUP +#include "boost_no_arg_dep_lookup.cxx" +#else +namespace boost_no_argument_dependent_lookup = empty_boost; +#endif + +int cpp_main( int, char *[] ) +{ + return boost_no_argument_dependent_lookup::test(); +} + diff --git a/test/no_auto_ptr_fail.cpp b/test/no_auto_ptr_fail.cpp new file mode 100644 index 00000000..a6530360 --- /dev/null +++ b/test/no_auto_ptr_fail.cpp @@ -0,0 +1,36 @@ + +// (C) Copyright Boost.org 1999. Permission to copy, use, modify, sell and +// distribute this software is granted provided this copyright notice appears +// in all copies. This software is provided "as is" without express or implied +// warranty, and with no claim as to its suitability for any purpose. + +// Test file for macro BOOST_NO_AUTO_PTR +// This file should not compile, if it does then +// BOOST_NO_AUTO_PTR need not be defined. +// see boost_no_auto_ptr.cxx for more details + +// Do not edit this file, it was generated automatically by +// ../tools/generate from boost_no_auto_ptr.cxx on +// Mon Sep 10 12:18:12 2001 + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include +#include +#include "test.hpp" + +#ifdef BOOST_NO_AUTO_PTR +#include "boost_no_auto_ptr.cxx" +#else +#error "this file should not compile" +#endif + +int cpp_main( int, char *[] ) +{ + return boost_no_auto_ptr::test(); +} + diff --git a/test/no_auto_ptr_pass.cpp b/test/no_auto_ptr_pass.cpp new file mode 100644 index 00000000..6f92beb1 --- /dev/null +++ b/test/no_auto_ptr_pass.cpp @@ -0,0 +1,36 @@ + +// (C) Copyright Boost.org 1999. Permission to copy, use, modify, sell and +// distribute this software is granted provided this copyright notice appears +// in all copies. This software is provided "as is" without express or implied +// warranty, and with no claim as to its suitability for any purpose. + +// Test file for macro BOOST_NO_AUTO_PTR +// This file should compile, if it does not then +// BOOST_NO_AUTO_PTR needs to be defined. +// see boost_no_auto_ptr.cxx for more details + +// Do not edit this file, it was generated automatically by +// ../tools/generate from boost_no_auto_ptr.cxx on +// Mon Sep 10 12:18:12 2001 + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include +#include +#include "test.hpp" + +#ifndef BOOST_NO_AUTO_PTR +#include "boost_no_auto_ptr.cxx" +#else +namespace boost_no_auto_ptr = empty_boost; +#endif + +int cpp_main( int, char *[] ) +{ + return boost_no_auto_ptr::test(); +} + diff --git a/test/no_cv_spec_fail.cpp b/test/no_cv_spec_fail.cpp new file mode 100644 index 00000000..723014e6 --- /dev/null +++ b/test/no_cv_spec_fail.cpp @@ -0,0 +1,36 @@ + +// (C) Copyright Boost.org 1999. Permission to copy, use, modify, sell and +// distribute this software is granted provided this copyright notice appears +// in all copies. This software is provided "as is" without express or implied +// warranty, and with no claim as to its suitability for any purpose. + +// Test file for macro BOOST_NO_CV_SPECIALIZATIONS +// This file should not compile, if it does then +// BOOST_NO_CV_SPECIALIZATIONS need not be defined. +// see boost_no_cv_spec.cxx for more details + +// Do not edit this file, it was generated automatically by +// ../tools/generate from boost_no_cv_spec.cxx on +// Mon Sep 10 12:18:12 2001 + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include +#include +#include "test.hpp" + +#ifdef BOOST_NO_CV_SPECIALIZATIONS +#include "boost_no_cv_spec.cxx" +#else +#error "this file should not compile" +#endif + +int cpp_main( int, char *[] ) +{ + return boost_no_cv_specializations::test(); +} + diff --git a/test/no_cv_spec_pass.cpp b/test/no_cv_spec_pass.cpp new file mode 100644 index 00000000..f0df0079 --- /dev/null +++ b/test/no_cv_spec_pass.cpp @@ -0,0 +1,36 @@ + +// (C) Copyright Boost.org 1999. Permission to copy, use, modify, sell and +// distribute this software is granted provided this copyright notice appears +// in all copies. This software is provided "as is" without express or implied +// warranty, and with no claim as to its suitability for any purpose. + +// Test file for macro BOOST_NO_CV_SPECIALIZATIONS +// This file should compile, if it does not then +// BOOST_NO_CV_SPECIALIZATIONS needs to be defined. +// see boost_no_cv_spec.cxx for more details + +// Do not edit this file, it was generated automatically by +// ../tools/generate from boost_no_cv_spec.cxx on +// Mon Sep 10 12:18:12 2001 + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include +#include +#include "test.hpp" + +#ifndef BOOST_NO_CV_SPECIALIZATIONS +#include "boost_no_cv_spec.cxx" +#else +namespace boost_no_cv_specializations = empty_boost; +#endif + +int cpp_main( int, char *[] ) +{ + return boost_no_cv_specializations::test(); +} + diff --git a/test/no_cv_void_spec_fail.cpp b/test/no_cv_void_spec_fail.cpp new file mode 100644 index 00000000..1bafaeca --- /dev/null +++ b/test/no_cv_void_spec_fail.cpp @@ -0,0 +1,36 @@ + +// (C) Copyright Boost.org 1999. Permission to copy, use, modify, sell and +// distribute this software is granted provided this copyright notice appears +// in all copies. This software is provided "as is" without express or implied +// warranty, and with no claim as to its suitability for any purpose. + +// Test file for macro BOOST_NO_CV_VOID_SPECIALIZATIONS +// This file should not compile, if it does then +// BOOST_NO_CV_VOID_SPECIALIZATIONS need not be defined. +// see boost_no_cv_void_spec.cxx for more details + +// Do not edit this file, it was generated automatically by +// ../tools/generate from boost_no_cv_void_spec.cxx on +// Mon Sep 10 12:18:12 2001 + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include +#include +#include "test.hpp" + +#ifdef BOOST_NO_CV_VOID_SPECIALIZATIONS +#include "boost_no_cv_void_spec.cxx" +#else +#error "this file should not compile" +#endif + +int cpp_main( int, char *[] ) +{ + return boost_no_cv_void_specializations::test(); +} + diff --git a/test/no_cv_void_spec_pass.cpp b/test/no_cv_void_spec_pass.cpp new file mode 100644 index 00000000..c990088e --- /dev/null +++ b/test/no_cv_void_spec_pass.cpp @@ -0,0 +1,36 @@ + +// (C) Copyright Boost.org 1999. Permission to copy, use, modify, sell and +// distribute this software is granted provided this copyright notice appears +// in all copies. This software is provided "as is" without express or implied +// warranty, and with no claim as to its suitability for any purpose. + +// Test file for macro BOOST_NO_CV_VOID_SPECIALIZATIONS +// This file should compile, if it does not then +// BOOST_NO_CV_VOID_SPECIALIZATIONS needs to be defined. +// see boost_no_cv_void_spec.cxx for more details + +// Do not edit this file, it was generated automatically by +// ../tools/generate from boost_no_cv_void_spec.cxx on +// Mon Sep 10 12:18:12 2001 + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include +#include +#include "test.hpp" + +#ifndef BOOST_NO_CV_VOID_SPECIALIZATIONS +#include "boost_no_cv_void_spec.cxx" +#else +namespace boost_no_cv_void_specializations = empty_boost; +#endif + +int cpp_main( int, char *[] ) +{ + return boost_no_cv_void_specializations::test(); +} + diff --git a/test/no_cwchar_fail.cpp b/test/no_cwchar_fail.cpp new file mode 100644 index 00000000..af652e9a --- /dev/null +++ b/test/no_cwchar_fail.cpp @@ -0,0 +1,36 @@ + +// (C) Copyright Boost.org 1999. Permission to copy, use, modify, sell and +// distribute this software is granted provided this copyright notice appears +// in all copies. This software is provided "as is" without express or implied +// warranty, and with no claim as to its suitability for any purpose. + +// Test file for macro BOOST_NO_CWCHAR +// This file should not compile, if it does then +// BOOST_NO_CWCHAR need not be defined. +// see boost_no_cwchar.cxx for more details + +// Do not edit this file, it was generated automatically by +// ../tools/generate from boost_no_cwchar.cxx on +// Mon Sep 10 12:18:12 2001 + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include +#include +#include "test.hpp" + +#ifdef BOOST_NO_CWCHAR +#include "boost_no_cwchar.cxx" +#else +#error "this file should not compile" +#endif + +int cpp_main( int, char *[] ) +{ + return boost_no_cwchar::test(); +} + diff --git a/test/no_cwchar_pass.cpp b/test/no_cwchar_pass.cpp new file mode 100644 index 00000000..886d7c32 --- /dev/null +++ b/test/no_cwchar_pass.cpp @@ -0,0 +1,36 @@ + +// (C) Copyright Boost.org 1999. Permission to copy, use, modify, sell and +// distribute this software is granted provided this copyright notice appears +// in all copies. This software is provided "as is" without express or implied +// warranty, and with no claim as to its suitability for any purpose. + +// Test file for macro BOOST_NO_CWCHAR +// This file should compile, if it does not then +// BOOST_NO_CWCHAR needs to be defined. +// see boost_no_cwchar.cxx for more details + +// Do not edit this file, it was generated automatically by +// ../tools/generate from boost_no_cwchar.cxx on +// Mon Sep 10 12:18:12 2001 + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include +#include +#include "test.hpp" + +#ifndef BOOST_NO_CWCHAR +#include "boost_no_cwchar.cxx" +#else +namespace boost_no_cwchar = empty_boost; +#endif + +int cpp_main( int, char *[] ) +{ + return boost_no_cwchar::test(); +} + diff --git a/test/no_cwctype_fail.cpp b/test/no_cwctype_fail.cpp new file mode 100644 index 00000000..8a7ecc58 --- /dev/null +++ b/test/no_cwctype_fail.cpp @@ -0,0 +1,36 @@ + +// (C) Copyright Boost.org 1999. Permission to copy, use, modify, sell and +// distribute this software is granted provided this copyright notice appears +// in all copies. This software is provided "as is" without express or implied +// warranty, and with no claim as to its suitability for any purpose. + +// Test file for macro BOOST_NO_CWCTYPE +// This file should not compile, if it does then +// BOOST_NO_CWCTYPE need not be defined. +// see boost_no_cwctype.cxx for more details + +// Do not edit this file, it was generated automatically by +// ../tools/generate from boost_no_cwctype.cxx on +// Mon Sep 10 12:18:12 2001 + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include +#include +#include "test.hpp" + +#ifdef BOOST_NO_CWCTYPE +#include "boost_no_cwctype.cxx" +#else +#error "this file should not compile" +#endif + +int cpp_main( int, char *[] ) +{ + return boost_no_cwctype::test(); +} + diff --git a/test/no_cwctype_pass.cpp b/test/no_cwctype_pass.cpp new file mode 100644 index 00000000..aa479f93 --- /dev/null +++ b/test/no_cwctype_pass.cpp @@ -0,0 +1,36 @@ + +// (C) Copyright Boost.org 1999. Permission to copy, use, modify, sell and +// distribute this software is granted provided this copyright notice appears +// in all copies. This software is provided "as is" without express or implied +// warranty, and with no claim as to its suitability for any purpose. + +// Test file for macro BOOST_NO_CWCTYPE +// This file should compile, if it does not then +// BOOST_NO_CWCTYPE needs to be defined. +// see boost_no_cwctype.cxx for more details + +// Do not edit this file, it was generated automatically by +// ../tools/generate from boost_no_cwctype.cxx on +// Mon Sep 10 12:18:12 2001 + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include +#include +#include "test.hpp" + +#ifndef BOOST_NO_CWCTYPE +#include "boost_no_cwctype.cxx" +#else +namespace boost_no_cwctype = empty_boost; +#endif + +int cpp_main( int, char *[] ) +{ + return boost_no_cwctype::test(); +} + diff --git a/test/no_dep_nested_class_fail.cpp b/test/no_dep_nested_class_fail.cpp new file mode 100644 index 00000000..77be6dc8 --- /dev/null +++ b/test/no_dep_nested_class_fail.cpp @@ -0,0 +1,36 @@ + +// (C) Copyright Boost.org 1999. Permission to copy, use, modify, sell and +// distribute this software is granted provided this copyright notice appears +// in all copies. This software is provided "as is" without express or implied +// warranty, and with no claim as to its suitability for any purpose. + +// Test file for macro BOOST_NO_DEPENDENT_NESTED_DERIVATIONS +// This file should not compile, if it does then +// BOOST_NO_DEPENDENT_NESTED_DERIVATIONS need not be defined. +// see boost_no_dep_nested_class.cxx for more details + +// Do not edit this file, it was generated automatically by +// ../tools/generate from boost_no_dep_nested_class.cxx on +// Mon Sep 10 12:18:12 2001 + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include +#include +#include "test.hpp" + +#ifdef BOOST_NO_DEPENDENT_NESTED_DERIVATIONS +#include "boost_no_dep_nested_class.cxx" +#else +#error "this file should not compile" +#endif + +int cpp_main( int, char *[] ) +{ + return boost_no_dependent_nested_derivations::test(); +} + diff --git a/test/no_dep_nested_class_pass.cpp b/test/no_dep_nested_class_pass.cpp new file mode 100644 index 00000000..a81c0dd5 --- /dev/null +++ b/test/no_dep_nested_class_pass.cpp @@ -0,0 +1,36 @@ + +// (C) Copyright Boost.org 1999. Permission to copy, use, modify, sell and +// distribute this software is granted provided this copyright notice appears +// in all copies. This software is provided "as is" without express or implied +// warranty, and with no claim as to its suitability for any purpose. + +// Test file for macro BOOST_NO_DEPENDENT_NESTED_DERIVATIONS +// This file should compile, if it does not then +// BOOST_NO_DEPENDENT_NESTED_DERIVATIONS needs to be defined. +// see boost_no_dep_nested_class.cxx for more details + +// Do not edit this file, it was generated automatically by +// ../tools/generate from boost_no_dep_nested_class.cxx on +// Mon Sep 10 12:18:12 2001 + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include +#include +#include "test.hpp" + +#ifndef BOOST_NO_DEPENDENT_NESTED_DERIVATIONS +#include "boost_no_dep_nested_class.cxx" +#else +namespace boost_no_dependent_nested_derivations = empty_boost; +#endif + +int cpp_main( int, char *[] ) +{ + return boost_no_dependent_nested_derivations::test(); +} + diff --git a/test/no_dep_val_param_fail.cpp b/test/no_dep_val_param_fail.cpp new file mode 100644 index 00000000..060f41c6 --- /dev/null +++ b/test/no_dep_val_param_fail.cpp @@ -0,0 +1,36 @@ + +// (C) Copyright Boost.org 1999. Permission to copy, use, modify, sell and +// distribute this software is granted provided this copyright notice appears +// in all copies. This software is provided "as is" without express or implied +// warranty, and with no claim as to its suitability for any purpose. + +// 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 need not be defined. +// see boost_no_dep_val_param.cxx for more details + +// Do not edit this file, it was generated automatically by +// ../tools/generate from boost_no_dep_val_param.cxx on +// Mon Sep 10 12:18:12 2001 + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include +#include +#include "test.hpp" + +#ifdef BOOST_NO_DEPENDENT_TYPES_IN_TEMPLATE_VALUE_PARAMETERS +#include "boost_no_dep_val_param.cxx" +#else +#error "this file should not compile" +#endif + +int cpp_main( int, char *[] ) +{ + return boost_no_dependent_types_in_template_value_parameters::test(); +} + diff --git a/test/no_dep_val_param_pass.cpp b/test/no_dep_val_param_pass.cpp new file mode 100644 index 00000000..3b9e9683 --- /dev/null +++ b/test/no_dep_val_param_pass.cpp @@ -0,0 +1,36 @@ + +// (C) Copyright Boost.org 1999. Permission to copy, use, modify, sell and +// distribute this software is granted provided this copyright notice appears +// in all copies. This software is provided "as is" without express or implied +// warranty, and with no claim as to its suitability for any purpose. + +// 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 needs to be defined. +// see boost_no_dep_val_param.cxx for more details + +// Do not edit this file, it was generated automatically by +// ../tools/generate from boost_no_dep_val_param.cxx on +// Mon Sep 10 12:18:12 2001 + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include +#include +#include "test.hpp" + +#ifndef BOOST_NO_DEPENDENT_TYPES_IN_TEMPLATE_VALUE_PARAMETERS +#include "boost_no_dep_val_param.cxx" +#else +namespace boost_no_dependent_types_in_template_value_parameters = empty_boost; +#endif + +int cpp_main( int, char *[] ) +{ + return boost_no_dependent_types_in_template_value_parameters::test(); +} + diff --git a/test/no_exp_func_tem_arg_fail.cpp b/test/no_exp_func_tem_arg_fail.cpp new file mode 100644 index 00000000..f6047332 --- /dev/null +++ b/test/no_exp_func_tem_arg_fail.cpp @@ -0,0 +1,36 @@ + +// (C) Copyright Boost.org 1999. Permission to copy, use, modify, sell and +// distribute this software is granted provided this copyright notice appears +// in all copies. This software is provided "as is" without express or implied +// warranty, and with no claim as to its suitability for any purpose. + +// 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 need not be defined. +// see boost_no_exp_func_tem_arg.cxx for more details + +// Do not edit this file, it was generated automatically by +// ../tools/generate from boost_no_exp_func_tem_arg.cxx on +// Mon Sep 10 12:18:12 2001 + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include +#include +#include "test.hpp" + +#ifdef BOOST_NO_EXPLICIT_FUNCTION_TEMPLATE_ARGUMENTS +#include "boost_no_exp_func_tem_arg.cxx" +#else +#error "this file should not compile" +#endif + +int cpp_main( int, char *[] ) +{ + return boost_no_explicit_function_template_arguments::test(); +} + diff --git a/test/no_exp_func_tem_arg_pass.cpp b/test/no_exp_func_tem_arg_pass.cpp new file mode 100644 index 00000000..335a111f --- /dev/null +++ b/test/no_exp_func_tem_arg_pass.cpp @@ -0,0 +1,36 @@ + +// (C) Copyright Boost.org 1999. Permission to copy, use, modify, sell and +// distribute this software is granted provided this copyright notice appears +// in all copies. This software is provided "as is" without express or implied +// warranty, and with no claim as to its suitability for any purpose. + +// 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 needs to be defined. +// see boost_no_exp_func_tem_arg.cxx for more details + +// Do not edit this file, it was generated automatically by +// ../tools/generate from boost_no_exp_func_tem_arg.cxx on +// Mon Sep 10 12:18:12 2001 + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include +#include +#include "test.hpp" + +#ifndef BOOST_NO_EXPLICIT_FUNCTION_TEMPLATE_ARGUMENTS +#include "boost_no_exp_func_tem_arg.cxx" +#else +namespace boost_no_explicit_function_template_arguments = empty_boost; +#endif + +int cpp_main( int, char *[] ) +{ + return boost_no_explicit_function_template_arguments::test(); +} + diff --git a/test/no_func_tmp_order_fail.cpp b/test/no_func_tmp_order_fail.cpp new file mode 100644 index 00000000..c9d9689b --- /dev/null +++ b/test/no_func_tmp_order_fail.cpp @@ -0,0 +1,36 @@ + +// (C) Copyright Boost.org 1999. Permission to copy, use, modify, sell and +// distribute this software is granted provided this copyright notice appears +// in all copies. This software is provided "as is" without express or implied +// warranty, and with no claim as to its suitability for any purpose. + +// Test file for macro BOOST_WEAK_FUNCTION_TEMPLATE_ORDERING +// This file should not compile, if it does then +// BOOST_WEAK_FUNCTION_TEMPLATE_ORDERING need not be defined. +// see boost_no_func_tmp_order.cxx for more details + +// Do not edit this file, it was generated automatically by +// ../tools/generate from boost_no_func_tmp_order.cxx on +// Mon Sep 10 12:18:12 2001 + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include +#include +#include "test.hpp" + +#ifdef BOOST_WEAK_FUNCTION_TEMPLATE_ORDERING +#include "boost_no_func_tmp_order.cxx" +#else +#error "this file should not compile" +#endif + +int cpp_main( int, char *[] ) +{ + return boost_weak_function_template_ordering::test(); +} + diff --git a/test/no_func_tmp_order_pass.cpp b/test/no_func_tmp_order_pass.cpp new file mode 100644 index 00000000..5beeddcf --- /dev/null +++ b/test/no_func_tmp_order_pass.cpp @@ -0,0 +1,36 @@ + +// (C) Copyright Boost.org 1999. Permission to copy, use, modify, sell and +// distribute this software is granted provided this copyright notice appears +// in all copies. This software is provided "as is" without express or implied +// warranty, and with no claim as to its suitability for any purpose. + +// Test file for macro BOOST_WEAK_FUNCTION_TEMPLATE_ORDERING +// This file should compile, if it does not then +// BOOST_WEAK_FUNCTION_TEMPLATE_ORDERING needs to be defined. +// see boost_no_func_tmp_order.cxx for more details + +// Do not edit this file, it was generated automatically by +// ../tools/generate from boost_no_func_tmp_order.cxx on +// Mon Sep 10 12:18:12 2001 + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include +#include +#include "test.hpp" + +#ifndef BOOST_WEAK_FUNCTION_TEMPLATE_ORDERING +#include "boost_no_func_tmp_order.cxx" +#else +namespace boost_weak_function_template_ordering = empty_boost; +#endif + +int cpp_main( int, char *[] ) +{ + return boost_weak_function_template_ordering::test(); +} + diff --git a/test/no_inline_memb_init_fail.cpp b/test/no_inline_memb_init_fail.cpp new file mode 100644 index 00000000..65bc9498 --- /dev/null +++ b/test/no_inline_memb_init_fail.cpp @@ -0,0 +1,36 @@ + +// (C) Copyright Boost.org 1999. Permission to copy, use, modify, sell and +// distribute this software is granted provided this copyright notice appears +// in all copies. This software is provided "as is" without express or implied +// warranty, and with no claim as to its suitability for any purpose. + +// Test file for macro BOOST_NO_INCLASS_MEMBER_INITIALIZATION +// This file should not compile, if it does then +// BOOST_NO_INCLASS_MEMBER_INITIALIZATION need not be defined. +// see boost_no_inline_memb_init.cxx for more details + +// Do not edit this file, it was generated automatically by +// ../tools/generate from boost_no_inline_memb_init.cxx on +// Mon Sep 10 12:18:12 2001 + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include +#include +#include "test.hpp" + +#ifdef BOOST_NO_INCLASS_MEMBER_INITIALIZATION +#include "boost_no_inline_memb_init.cxx" +#else +#error "this file should not compile" +#endif + +int cpp_main( int, char *[] ) +{ + return boost_no_inclass_member_initialization::test(); +} + diff --git a/test/no_inline_memb_init_pass.cpp b/test/no_inline_memb_init_pass.cpp new file mode 100644 index 00000000..0701b492 --- /dev/null +++ b/test/no_inline_memb_init_pass.cpp @@ -0,0 +1,36 @@ + +// (C) Copyright Boost.org 1999. Permission to copy, use, modify, sell and +// distribute this software is granted provided this copyright notice appears +// in all copies. This software is provided "as is" without express or implied +// warranty, and with no claim as to its suitability for any purpose. + +// Test file for macro BOOST_NO_INCLASS_MEMBER_INITIALIZATION +// This file should compile, if it does not then +// BOOST_NO_INCLASS_MEMBER_INITIALIZATION needs to be defined. +// see boost_no_inline_memb_init.cxx for more details + +// Do not edit this file, it was generated automatically by +// ../tools/generate from boost_no_inline_memb_init.cxx on +// Mon Sep 10 12:18:12 2001 + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include +#include +#include "test.hpp" + +#ifndef BOOST_NO_INCLASS_MEMBER_INITIALIZATION +#include "boost_no_inline_memb_init.cxx" +#else +namespace boost_no_inclass_member_initialization = empty_boost; +#endif + +int cpp_main( int, char *[] ) +{ + return boost_no_inclass_member_initialization::test(); +} + diff --git a/test/no_iter_construct_fail.cpp b/test/no_iter_construct_fail.cpp new file mode 100644 index 00000000..7790a5de --- /dev/null +++ b/test/no_iter_construct_fail.cpp @@ -0,0 +1,36 @@ + +// (C) Copyright Boost.org 1999. Permission to copy, use, modify, sell and +// distribute this software is granted provided this copyright notice appears +// in all copies. This software is provided "as is" without express or implied +// warranty, and with no claim as to its suitability for any purpose. + +// Test file for macro BOOST_NO_TEMPLATED_ITERATOR_CONSTRUCTORS +// This file should not compile, if it does then +// BOOST_NO_TEMPLATED_ITERATOR_CONSTRUCTORS need not be defined. +// see boost_no_iter_construct.cxx for more details + +// Do not edit this file, it was generated automatically by +// ../tools/generate from boost_no_iter_construct.cxx on +// Mon Sep 10 12:18:12 2001 + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include +#include +#include "test.hpp" + +#ifdef BOOST_NO_TEMPLATED_ITERATOR_CONSTRUCTORS +#include "boost_no_iter_construct.cxx" +#else +#error "this file should not compile" +#endif + +int cpp_main( int, char *[] ) +{ + return boost_no_templated_iterator_constructors::test(); +} + diff --git a/test/no_iter_construct_pass.cpp b/test/no_iter_construct_pass.cpp new file mode 100644 index 00000000..1840d247 --- /dev/null +++ b/test/no_iter_construct_pass.cpp @@ -0,0 +1,36 @@ + +// (C) Copyright Boost.org 1999. Permission to copy, use, modify, sell and +// distribute this software is granted provided this copyright notice appears +// in all copies. This software is provided "as is" without express or implied +// warranty, and with no claim as to its suitability for any purpose. + +// Test file for macro BOOST_NO_TEMPLATED_ITERATOR_CONSTRUCTORS +// This file should compile, if it does not then +// BOOST_NO_TEMPLATED_ITERATOR_CONSTRUCTORS needs to be defined. +// see boost_no_iter_construct.cxx for more details + +// Do not edit this file, it was generated automatically by +// ../tools/generate from boost_no_iter_construct.cxx on +// Mon Sep 10 12:18:12 2001 + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include +#include +#include "test.hpp" + +#ifndef BOOST_NO_TEMPLATED_ITERATOR_CONSTRUCTORS +#include "boost_no_iter_construct.cxx" +#else +namespace boost_no_templated_iterator_constructors = empty_boost; +#endif + +int cpp_main( int, char *[] ) +{ + return boost_no_templated_iterator_constructors::test(); +} + diff --git a/test/no_limits_const_exp_fail.cpp b/test/no_limits_const_exp_fail.cpp new file mode 100644 index 00000000..a7fd96a5 --- /dev/null +++ b/test/no_limits_const_exp_fail.cpp @@ -0,0 +1,36 @@ + +// (C) Copyright Boost.org 1999. Permission to copy, use, modify, sell and +// distribute this software is granted provided this copyright notice appears +// in all copies. This software is provided "as is" without express or implied +// warranty, and with no claim as to its suitability for any purpose. + +// 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 need not be defined. +// see boost_no_limits_const_exp.cxx for more details + +// Do not edit this file, it was generated automatically by +// ../tools/generate from boost_no_limits_const_exp.cxx on +// Mon Sep 10 12:18:12 2001 + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include +#include +#include "test.hpp" + +#ifdef BOOST_NO_LIMITS_COMPILE_TIME_CONSTANTS +#include "boost_no_limits_const_exp.cxx" +#else +#error "this file should not compile" +#endif + +int cpp_main( int, char *[] ) +{ + return boost_no_limits_compile_time_constants::test(); +} + diff --git a/test/no_limits_const_exp_pass.cpp b/test/no_limits_const_exp_pass.cpp new file mode 100644 index 00000000..63dd7408 --- /dev/null +++ b/test/no_limits_const_exp_pass.cpp @@ -0,0 +1,36 @@ + +// (C) Copyright Boost.org 1999. Permission to copy, use, modify, sell and +// distribute this software is granted provided this copyright notice appears +// in all copies. This software is provided "as is" without express or implied +// warranty, and with no claim as to its suitability for any purpose. + +// 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 needs to be defined. +// see boost_no_limits_const_exp.cxx for more details + +// Do not edit this file, it was generated automatically by +// ../tools/generate from boost_no_limits_const_exp.cxx on +// Mon Sep 10 12:18:12 2001 + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include +#include +#include "test.hpp" + +#ifndef BOOST_NO_LIMITS_COMPILE_TIME_CONSTANTS +#include "boost_no_limits_const_exp.cxx" +#else +namespace boost_no_limits_compile_time_constants = empty_boost; +#endif + +int cpp_main( int, char *[] ) +{ + return boost_no_limits_compile_time_constants::test(); +} + diff --git a/test/no_limits_fail.cpp b/test/no_limits_fail.cpp new file mode 100644 index 00000000..a6db4454 --- /dev/null +++ b/test/no_limits_fail.cpp @@ -0,0 +1,36 @@ + +// (C) Copyright Boost.org 1999. Permission to copy, use, modify, sell and +// distribute this software is granted provided this copyright notice appears +// in all copies. This software is provided "as is" without express or implied +// warranty, and with no claim as to its suitability for any purpose. + +// Test file for macro BOOST_NO_LIMITS +// This file should not compile, if it does then +// BOOST_NO_LIMITS need not be defined. +// see boost_no_limits.cxx for more details + +// Do not edit this file, it was generated automatically by +// ../tools/generate from boost_no_limits.cxx on +// Mon Sep 10 12:18:12 2001 + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include +#include +#include "test.hpp" + +#ifdef BOOST_NO_LIMITS +#include "boost_no_limits.cxx" +#else +#error "this file should not compile" +#endif + +int cpp_main( int, char *[] ) +{ + return boost_no_limits::test(); +} + diff --git a/test/no_limits_pass.cpp b/test/no_limits_pass.cpp new file mode 100644 index 00000000..5f2a646b --- /dev/null +++ b/test/no_limits_pass.cpp @@ -0,0 +1,36 @@ + +// (C) Copyright Boost.org 1999. Permission to copy, use, modify, sell and +// distribute this software is granted provided this copyright notice appears +// in all copies. This software is provided "as is" without express or implied +// warranty, and with no claim as to its suitability for any purpose. + +// Test file for macro BOOST_NO_LIMITS +// This file should compile, if it does not then +// BOOST_NO_LIMITS needs to be defined. +// see boost_no_limits.cxx for more details + +// Do not edit this file, it was generated automatically by +// ../tools/generate from boost_no_limits.cxx on +// Mon Sep 10 12:18:12 2001 + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include +#include +#include "test.hpp" + +#ifndef BOOST_NO_LIMITS +#include "boost_no_limits.cxx" +#else +namespace boost_no_limits = empty_boost; +#endif + +int cpp_main( int, char *[] ) +{ + return boost_no_limits::test(); +} + diff --git a/test/no_mem_tem_keyword_fail.cpp b/test/no_mem_tem_keyword_fail.cpp new file mode 100644 index 00000000..6321b2df --- /dev/null +++ b/test/no_mem_tem_keyword_fail.cpp @@ -0,0 +1,36 @@ + +// (C) Copyright Boost.org 1999. Permission to copy, use, modify, sell and +// distribute this software is granted provided this copyright notice appears +// in all copies. This software is provided "as is" without express or implied +// warranty, and with no claim as to its suitability for any purpose. + +// Test file for macro BOOST_NO_MEMBER_TEMPLATE_KEYWORD +// This file should not compile, if it does then +// BOOST_NO_MEMBER_TEMPLATE_KEYWORD need not be defined. +// see boost_no_mem_tem_keyword.cxx for more details + +// Do not edit this file, it was generated automatically by +// ../tools/generate from boost_no_mem_tem_keyword.cxx on +// Mon Sep 10 12:18:12 2001 + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include +#include +#include "test.hpp" + +#ifdef BOOST_NO_MEMBER_TEMPLATE_KEYWORD +#include "boost_no_mem_tem_keyword.cxx" +#else +#error "this file should not compile" +#endif + +int cpp_main( int, char *[] ) +{ + return boost_no_member_template_keyword::test(); +} + diff --git a/test/no_mem_tem_keyword_pass.cpp b/test/no_mem_tem_keyword_pass.cpp new file mode 100644 index 00000000..917a60c7 --- /dev/null +++ b/test/no_mem_tem_keyword_pass.cpp @@ -0,0 +1,36 @@ + +// (C) Copyright Boost.org 1999. Permission to copy, use, modify, sell and +// distribute this software is granted provided this copyright notice appears +// in all copies. This software is provided "as is" without express or implied +// warranty, and with no claim as to its suitability for any purpose. + +// Test file for macro BOOST_NO_MEMBER_TEMPLATE_KEYWORD +// This file should compile, if it does not then +// BOOST_NO_MEMBER_TEMPLATE_KEYWORD needs to be defined. +// see boost_no_mem_tem_keyword.cxx for more details + +// Do not edit this file, it was generated automatically by +// ../tools/generate from boost_no_mem_tem_keyword.cxx on +// Mon Sep 10 12:18:12 2001 + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include +#include +#include "test.hpp" + +#ifndef BOOST_NO_MEMBER_TEMPLATE_KEYWORD +#include "boost_no_mem_tem_keyword.cxx" +#else +namespace boost_no_member_template_keyword = empty_boost; +#endif + +int cpp_main( int, char *[] ) +{ + return boost_no_member_template_keyword::test(); +} + diff --git a/test/no_mem_templ_frnds_fail.cpp b/test/no_mem_templ_frnds_fail.cpp new file mode 100644 index 00000000..ce443667 --- /dev/null +++ b/test/no_mem_templ_frnds_fail.cpp @@ -0,0 +1,36 @@ + +// (C) Copyright Boost.org 1999. Permission to copy, use, modify, sell and +// distribute this software is granted provided this copyright notice appears +// in all copies. This software is provided "as is" without express or implied +// warranty, and with no claim as to its suitability for any purpose. + +// Test file for macro BOOST_NO_MEMBER_TEMPLATE_FRIENDS +// This file should not compile, if it does then +// BOOST_NO_MEMBER_TEMPLATE_FRIENDS need not be defined. +// see boost_no_mem_templ_frnds.cxx for more details + +// Do not edit this file, it was generated automatically by +// ../tools/generate from boost_no_mem_templ_frnds.cxx on +// Mon Sep 10 12:18:12 2001 + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include +#include +#include "test.hpp" + +#ifdef BOOST_NO_MEMBER_TEMPLATE_FRIENDS +#include "boost_no_mem_templ_frnds.cxx" +#else +#error "this file should not compile" +#endif + +int cpp_main( int, char *[] ) +{ + return boost_no_member_template_friends::test(); +} + diff --git a/test/no_mem_templ_frnds_pass.cpp b/test/no_mem_templ_frnds_pass.cpp new file mode 100644 index 00000000..a51f1b47 --- /dev/null +++ b/test/no_mem_templ_frnds_pass.cpp @@ -0,0 +1,36 @@ + +// (C) Copyright Boost.org 1999. Permission to copy, use, modify, sell and +// distribute this software is granted provided this copyright notice appears +// in all copies. This software is provided "as is" without express or implied +// warranty, and with no claim as to its suitability for any purpose. + +// Test file for macro BOOST_NO_MEMBER_TEMPLATE_FRIENDS +// This file should compile, if it does not then +// BOOST_NO_MEMBER_TEMPLATE_FRIENDS needs to be defined. +// see boost_no_mem_templ_frnds.cxx for more details + +// Do not edit this file, it was generated automatically by +// ../tools/generate from boost_no_mem_templ_frnds.cxx on +// Mon Sep 10 12:18:12 2001 + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include +#include +#include "test.hpp" + +#ifndef BOOST_NO_MEMBER_TEMPLATE_FRIENDS +#include "boost_no_mem_templ_frnds.cxx" +#else +namespace boost_no_member_template_friends = empty_boost; +#endif + +int cpp_main( int, char *[] ) +{ + return boost_no_member_template_friends::test(); +} + diff --git a/test/no_mem_templates_fail.cpp b/test/no_mem_templates_fail.cpp new file mode 100644 index 00000000..33740272 --- /dev/null +++ b/test/no_mem_templates_fail.cpp @@ -0,0 +1,36 @@ + +// (C) Copyright Boost.org 1999. Permission to copy, use, modify, sell and +// distribute this software is granted provided this copyright notice appears +// in all copies. This software is provided "as is" without express or implied +// warranty, and with no claim as to its suitability for any purpose. + +// Test file for macro BOOST_NO_MEMBER_TEMPLATES +// This file should not compile, if it does then +// BOOST_NO_MEMBER_TEMPLATES need not be defined. +// see boost_no_mem_templates.cxx for more details + +// Do not edit this file, it was generated automatically by +// ../tools/generate from boost_no_mem_templates.cxx on +// Mon Sep 10 12:18:12 2001 + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include +#include +#include "test.hpp" + +#ifdef BOOST_NO_MEMBER_TEMPLATES +#include "boost_no_mem_templates.cxx" +#else +#error "this file should not compile" +#endif + +int cpp_main( int, char *[] ) +{ + return boost_no_member_templates::test(); +} + diff --git a/test/no_mem_templates_pass.cpp b/test/no_mem_templates_pass.cpp new file mode 100644 index 00000000..9109840c --- /dev/null +++ b/test/no_mem_templates_pass.cpp @@ -0,0 +1,36 @@ + +// (C) Copyright Boost.org 1999. Permission to copy, use, modify, sell and +// distribute this software is granted provided this copyright notice appears +// in all copies. This software is provided "as is" without express or implied +// warranty, and with no claim as to its suitability for any purpose. + +// Test file for macro BOOST_NO_MEMBER_TEMPLATES +// This file should compile, if it does not then +// BOOST_NO_MEMBER_TEMPLATES needs to be defined. +// see boost_no_mem_templates.cxx for more details + +// Do not edit this file, it was generated automatically by +// ../tools/generate from boost_no_mem_templates.cxx on +// Mon Sep 10 12:18:12 2001 + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include +#include +#include "test.hpp" + +#ifndef BOOST_NO_MEMBER_TEMPLATES +#include "boost_no_mem_templates.cxx" +#else +namespace boost_no_member_templates = empty_boost; +#endif + +int cpp_main( int, char *[] ) +{ + return boost_no_member_templates::test(); +} + diff --git a/test/no_ops_in_namespace_fail.cpp b/test/no_ops_in_namespace_fail.cpp new file mode 100644 index 00000000..15104e28 --- /dev/null +++ b/test/no_ops_in_namespace_fail.cpp @@ -0,0 +1,36 @@ + +// (C) Copyright Boost.org 1999. Permission to copy, use, modify, sell and +// distribute this software is granted provided this copyright notice appears +// in all copies. This software is provided "as is" without express or implied +// warranty, and with no claim as to its suitability for any purpose. + +// Test file for macro BOOST_NO_OPERATORS_IN_NAMESPACE +// This file should not compile, if it does then +// BOOST_NO_OPERATORS_IN_NAMESPACE need not be defined. +// see boost_no_ops_in_namespace.cxx for more details + +// Do not edit this file, it was generated automatically by +// ../tools/generate from boost_no_ops_in_namespace.cxx on +// Mon Sep 10 12:18:12 2001 + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include +#include +#include "test.hpp" + +#ifdef BOOST_NO_OPERATORS_IN_NAMESPACE +#include "boost_no_ops_in_namespace.cxx" +#else +#error "this file should not compile" +#endif + +int cpp_main( int, char *[] ) +{ + return boost_no_operators_in_namespace::test(); +} + diff --git a/test/no_ops_in_namespace_pass.cpp b/test/no_ops_in_namespace_pass.cpp new file mode 100644 index 00000000..fcb6ac4b --- /dev/null +++ b/test/no_ops_in_namespace_pass.cpp @@ -0,0 +1,36 @@ + +// (C) Copyright Boost.org 1999. Permission to copy, use, modify, sell and +// distribute this software is granted provided this copyright notice appears +// in all copies. This software is provided "as is" without express or implied +// warranty, and with no claim as to its suitability for any purpose. + +// Test file for macro BOOST_NO_OPERATORS_IN_NAMESPACE +// This file should compile, if it does not then +// BOOST_NO_OPERATORS_IN_NAMESPACE needs to be defined. +// see boost_no_ops_in_namespace.cxx for more details + +// Do not edit this file, it was generated automatically by +// ../tools/generate from boost_no_ops_in_namespace.cxx on +// Mon Sep 10 12:18:12 2001 + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include +#include +#include "test.hpp" + +#ifndef BOOST_NO_OPERATORS_IN_NAMESPACE +#include "boost_no_ops_in_namespace.cxx" +#else +namespace boost_no_operators_in_namespace = empty_boost; +#endif + +int cpp_main( int, char *[] ) +{ + return boost_no_operators_in_namespace::test(); +} + diff --git a/test/no_partial_spec_fail.cpp b/test/no_partial_spec_fail.cpp new file mode 100644 index 00000000..78c0d5ae --- /dev/null +++ b/test/no_partial_spec_fail.cpp @@ -0,0 +1,36 @@ + +// (C) Copyright Boost.org 1999. Permission to copy, use, modify, sell and +// distribute this software is granted provided this copyright notice appears +// in all copies. This software is provided "as is" without express or implied +// warranty, and with no claim as to its suitability for any purpose. + +// Test file for macro BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION +// This file should not compile, if it does then +// BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION need not be defined. +// see boost_no_partial_spec.cxx for more details + +// Do not edit this file, it was generated automatically by +// ../tools/generate from boost_no_partial_spec.cxx on +// Mon Sep 10 12:18:12 2001 + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include +#include +#include "test.hpp" + +#ifdef BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION +#include "boost_no_partial_spec.cxx" +#else +#error "this file should not compile" +#endif + +int cpp_main( int, char *[] ) +{ + return boost_no_template_partial_specialization::test(); +} + diff --git a/test/no_partial_spec_pass.cpp b/test/no_partial_spec_pass.cpp new file mode 100644 index 00000000..bd668a7d --- /dev/null +++ b/test/no_partial_spec_pass.cpp @@ -0,0 +1,36 @@ + +// (C) Copyright Boost.org 1999. Permission to copy, use, modify, sell and +// distribute this software is granted provided this copyright notice appears +// in all copies. This software is provided "as is" without express or implied +// warranty, and with no claim as to its suitability for any purpose. + +// Test file for macro BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION +// This file should compile, if it does not then +// BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION needs to be defined. +// see boost_no_partial_spec.cxx for more details + +// Do not edit this file, it was generated automatically by +// ../tools/generate from boost_no_partial_spec.cxx on +// Mon Sep 10 12:18:12 2001 + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include +#include +#include "test.hpp" + +#ifndef BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION +#include "boost_no_partial_spec.cxx" +#else +namespace boost_no_template_partial_specialization = empty_boost; +#endif + +int cpp_main( int, char *[] ) +{ + return boost_no_template_partial_specialization::test(); +} + diff --git a/test/no_priv_aggregate_fail.cpp b/test/no_priv_aggregate_fail.cpp new file mode 100644 index 00000000..e79aa44f --- /dev/null +++ b/test/no_priv_aggregate_fail.cpp @@ -0,0 +1,36 @@ + +// (C) Copyright Boost.org 1999. Permission to copy, use, modify, sell and +// distribute this software is granted provided this copyright notice appears +// in all copies. This software is provided "as is" without express or implied +// warranty, and with no claim as to its suitability for any purpose. + +// Test file for macro BOOST_NO_PRIVATE_IN_AGGREGATE +// This file should not compile, if it does then +// BOOST_NO_PRIVATE_IN_AGGREGATE need not be defined. +// see boost_no_priv_aggregate.cxx for more details + +// Do not edit this file, it was generated automatically by +// ../tools/generate from boost_no_priv_aggregate.cxx on +// Mon Sep 10 12:18:12 2001 + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include +#include +#include "test.hpp" + +#ifdef BOOST_NO_PRIVATE_IN_AGGREGATE +#include "boost_no_priv_aggregate.cxx" +#else +#error "this file should not compile" +#endif + +int cpp_main( int, char *[] ) +{ + return boost_no_private_in_aggregate::test(); +} + diff --git a/test/no_priv_aggregate_pass.cpp b/test/no_priv_aggregate_pass.cpp new file mode 100644 index 00000000..0ed93625 --- /dev/null +++ b/test/no_priv_aggregate_pass.cpp @@ -0,0 +1,36 @@ + +// (C) Copyright Boost.org 1999. Permission to copy, use, modify, sell and +// distribute this software is granted provided this copyright notice appears +// in all copies. This software is provided "as is" without express or implied +// warranty, and with no claim as to its suitability for any purpose. + +// Test file for macro BOOST_NO_PRIVATE_IN_AGGREGATE +// This file should compile, if it does not then +// BOOST_NO_PRIVATE_IN_AGGREGATE needs to be defined. +// see boost_no_priv_aggregate.cxx for more details + +// Do not edit this file, it was generated automatically by +// ../tools/generate from boost_no_priv_aggregate.cxx on +// Mon Sep 10 12:18:12 2001 + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include +#include +#include "test.hpp" + +#ifndef BOOST_NO_PRIVATE_IN_AGGREGATE +#include "boost_no_priv_aggregate.cxx" +#else +namespace boost_no_private_in_aggregate = empty_boost; +#endif + +int cpp_main( int, char *[] ) +{ + return boost_no_private_in_aggregate::test(); +} + diff --git a/test/no_ptr_mem_const_fail.cpp b/test/no_ptr_mem_const_fail.cpp new file mode 100644 index 00000000..51169989 --- /dev/null +++ b/test/no_ptr_mem_const_fail.cpp @@ -0,0 +1,36 @@ + +// (C) Copyright Boost.org 1999. Permission to copy, use, modify, sell and +// distribute this software is granted provided this copyright notice appears +// in all copies. This software is provided "as is" without express or implied +// warranty, and with no claim as to its suitability for any purpose. + +// 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 need not be defined. +// see boost_no_ptr_mem_const.cxx for more details + +// Do not edit this file, it was generated automatically by +// ../tools/generate from boost_no_ptr_mem_const.cxx on +// Mon Sep 10 12:18:12 2001 + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include +#include +#include "test.hpp" + +#ifdef BOOST_NO_POINTER_TO_MEMBER_CONST +#include "boost_no_ptr_mem_const.cxx" +#else +#error "this file should not compile" +#endif + +int cpp_main( int, char *[] ) +{ + return boost_no_pointer_to_member_const::test(); +} + diff --git a/test/no_ptr_mem_const_pass.cpp b/test/no_ptr_mem_const_pass.cpp new file mode 100644 index 00000000..75764e99 --- /dev/null +++ b/test/no_ptr_mem_const_pass.cpp @@ -0,0 +1,36 @@ + +// (C) Copyright Boost.org 1999. Permission to copy, use, modify, sell and +// distribute this software is granted provided this copyright notice appears +// in all copies. This software is provided "as is" without express or implied +// warranty, and with no claim as to its suitability for any purpose. + +// 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 needs to be defined. +// see boost_no_ptr_mem_const.cxx for more details + +// Do not edit this file, it was generated automatically by +// ../tools/generate from boost_no_ptr_mem_const.cxx on +// Mon Sep 10 12:18:12 2001 + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include +#include +#include "test.hpp" + +#ifndef BOOST_NO_POINTER_TO_MEMBER_CONST +#include "boost_no_ptr_mem_const.cxx" +#else +namespace boost_no_pointer_to_member_const = empty_boost; +#endif + +int cpp_main( int, char *[] ) +{ + return boost_no_pointer_to_member_const::test(); +} + diff --git a/test/no_sstream_fail.cpp b/test/no_sstream_fail.cpp new file mode 100644 index 00000000..e35b524d --- /dev/null +++ b/test/no_sstream_fail.cpp @@ -0,0 +1,36 @@ + +// (C) Copyright Boost.org 1999. Permission to copy, use, modify, sell and +// distribute this software is granted provided this copyright notice appears +// in all copies. This software is provided "as is" without express or implied +// warranty, and with no claim as to its suitability for any purpose. + +// Test file for macro BOOST_NO_STRINGSTREAM +// This file should not compile, if it does then +// BOOST_NO_STRINGSTREAM need not be defined. +// see boost_no_sstream.cxx for more details + +// Do not edit this file, it was generated automatically by +// ../tools/generate from boost_no_sstream.cxx on +// Mon Sep 10 12:18:12 2001 + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include +#include +#include "test.hpp" + +#ifdef BOOST_NO_STRINGSTREAM +#include "boost_no_sstream.cxx" +#else +#error "this file should not compile" +#endif + +int cpp_main( int, char *[] ) +{ + return boost_no_stringstream::test(); +} + diff --git a/test/no_sstream_pass.cpp b/test/no_sstream_pass.cpp new file mode 100644 index 00000000..b015937e --- /dev/null +++ b/test/no_sstream_pass.cpp @@ -0,0 +1,36 @@ + +// (C) Copyright Boost.org 1999. Permission to copy, use, modify, sell and +// distribute this software is granted provided this copyright notice appears +// in all copies. This software is provided "as is" without express or implied +// warranty, and with no claim as to its suitability for any purpose. + +// Test file for macro BOOST_NO_STRINGSTREAM +// This file should compile, if it does not then +// BOOST_NO_STRINGSTREAM needs to be defined. +// see boost_no_sstream.cxx for more details + +// Do not edit this file, it was generated automatically by +// ../tools/generate from boost_no_sstream.cxx on +// Mon Sep 10 12:18:12 2001 + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include +#include +#include "test.hpp" + +#ifndef BOOST_NO_STRINGSTREAM +#include "boost_no_sstream.cxx" +#else +namespace boost_no_stringstream = empty_boost; +#endif + +int cpp_main( int, char *[] ) +{ + return boost_no_stringstream::test(); +} + diff --git a/test/no_std_allocator_fail.cpp b/test/no_std_allocator_fail.cpp new file mode 100644 index 00000000..8c79055a --- /dev/null +++ b/test/no_std_allocator_fail.cpp @@ -0,0 +1,36 @@ + +// (C) Copyright Boost.org 1999. Permission to copy, use, modify, sell and +// distribute this software is granted provided this copyright notice appears +// in all copies. This software is provided "as is" without express or implied +// warranty, and with no claim as to its suitability for any purpose. + +// Test file for macro BOOST_NO_STD_ALLOCATOR +// This file should not compile, if it does then +// BOOST_NO_STD_ALLOCATOR need not be defined. +// see boost_no_std_allocator.cxx for more details + +// Do not edit this file, it was generated automatically by +// ../tools/generate from boost_no_std_allocator.cxx on +// Mon Sep 10 12:18:12 2001 + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include +#include +#include "test.hpp" + +#ifdef BOOST_NO_STD_ALLOCATOR +#include "boost_no_std_allocator.cxx" +#else +#error "this file should not compile" +#endif + +int cpp_main( int, char *[] ) +{ + return boost_no_std_allocator::test(); +} + diff --git a/test/no_std_allocator_pass.cpp b/test/no_std_allocator_pass.cpp new file mode 100644 index 00000000..f56e0675 --- /dev/null +++ b/test/no_std_allocator_pass.cpp @@ -0,0 +1,36 @@ + +// (C) Copyright Boost.org 1999. Permission to copy, use, modify, sell and +// distribute this software is granted provided this copyright notice appears +// in all copies. This software is provided "as is" without express or implied +// warranty, and with no claim as to its suitability for any purpose. + +// Test file for macro BOOST_NO_STD_ALLOCATOR +// This file should compile, if it does not then +// BOOST_NO_STD_ALLOCATOR needs to be defined. +// see boost_no_std_allocator.cxx for more details + +// Do not edit this file, it was generated automatically by +// ../tools/generate from boost_no_std_allocator.cxx on +// Mon Sep 10 12:18:12 2001 + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include +#include +#include "test.hpp" + +#ifndef BOOST_NO_STD_ALLOCATOR +#include "boost_no_std_allocator.cxx" +#else +namespace boost_no_std_allocator = empty_boost; +#endif + +int cpp_main( int, char *[] ) +{ + return boost_no_std_allocator::test(); +} + diff --git a/test/no_std_distance_fail.cpp b/test/no_std_distance_fail.cpp new file mode 100644 index 00000000..b3be83b1 --- /dev/null +++ b/test/no_std_distance_fail.cpp @@ -0,0 +1,36 @@ + +// (C) Copyright Boost.org 1999. Permission to copy, use, modify, sell and +// distribute this software is granted provided this copyright notice appears +// in all copies. This software is provided "as is" without express or implied +// warranty, and with no claim as to its suitability for any purpose. + +// Test file for macro BOOST_NO_STD_DISTANCE +// This file should not compile, if it does then +// BOOST_NO_STD_DISTANCE need not be defined. +// see boost_no_std_distance.cxx for more details + +// Do not edit this file, it was generated automatically by +// ../tools/generate from boost_no_std_distance.cxx on +// Mon Sep 10 12:18:12 2001 + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include +#include +#include "test.hpp" + +#ifdef BOOST_NO_STD_DISTANCE +#include "boost_no_std_distance.cxx" +#else +#error "this file should not compile" +#endif + +int cpp_main( int, char *[] ) +{ + return boost_no_std_distance::test(); +} + diff --git a/test/no_std_distance_pass.cpp b/test/no_std_distance_pass.cpp new file mode 100644 index 00000000..b3fb7f17 --- /dev/null +++ b/test/no_std_distance_pass.cpp @@ -0,0 +1,36 @@ + +// (C) Copyright Boost.org 1999. Permission to copy, use, modify, sell and +// distribute this software is granted provided this copyright notice appears +// in all copies. This software is provided "as is" without express or implied +// warranty, and with no claim as to its suitability for any purpose. + +// Test file for macro BOOST_NO_STD_DISTANCE +// This file should compile, if it does not then +// BOOST_NO_STD_DISTANCE needs to be defined. +// see boost_no_std_distance.cxx for more details + +// Do not edit this file, it was generated automatically by +// ../tools/generate from boost_no_std_distance.cxx on +// Mon Sep 10 12:18:12 2001 + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include +#include +#include "test.hpp" + +#ifndef BOOST_NO_STD_DISTANCE +#include "boost_no_std_distance.cxx" +#else +namespace boost_no_std_distance = empty_boost; +#endif + +int cpp_main( int, char *[] ) +{ + return boost_no_std_distance::test(); +} + diff --git a/test/no_std_iter_traits_fail.cpp b/test/no_std_iter_traits_fail.cpp new file mode 100644 index 00000000..dbc206d4 --- /dev/null +++ b/test/no_std_iter_traits_fail.cpp @@ -0,0 +1,36 @@ + +// (C) Copyright Boost.org 1999. Permission to copy, use, modify, sell and +// distribute this software is granted provided this copyright notice appears +// in all copies. This software is provided "as is" without express or implied +// warranty, and with no claim as to its suitability for any purpose. + +// Test file for macro BOOST_NO_STD_ITERATOR_TRAITS +// This file should not compile, if it does then +// BOOST_NO_STD_ITERATOR_TRAITS need not be defined. +// see boost_no_std_iter_traits.cxx for more details + +// Do not edit this file, it was generated automatically by +// ../tools/generate from boost_no_std_iter_traits.cxx on +// Mon Sep 10 12:18:12 2001 + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include +#include +#include "test.hpp" + +#ifdef BOOST_NO_STD_ITERATOR_TRAITS +#include "boost_no_std_iter_traits.cxx" +#else +#error "this file should not compile" +#endif + +int cpp_main( int, char *[] ) +{ + return boost_no_std_iterator_traits::test(); +} + diff --git a/test/no_std_iter_traits_pass.cpp b/test/no_std_iter_traits_pass.cpp new file mode 100644 index 00000000..c2fb4c84 --- /dev/null +++ b/test/no_std_iter_traits_pass.cpp @@ -0,0 +1,36 @@ + +// (C) Copyright Boost.org 1999. Permission to copy, use, modify, sell and +// distribute this software is granted provided this copyright notice appears +// in all copies. This software is provided "as is" without express or implied +// warranty, and with no claim as to its suitability for any purpose. + +// Test file for macro BOOST_NO_STD_ITERATOR_TRAITS +// This file should compile, if it does not then +// BOOST_NO_STD_ITERATOR_TRAITS needs to be defined. +// see boost_no_std_iter_traits.cxx for more details + +// Do not edit this file, it was generated automatically by +// ../tools/generate from boost_no_std_iter_traits.cxx on +// Mon Sep 10 12:18:12 2001 + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include +#include +#include "test.hpp" + +#ifndef BOOST_NO_STD_ITERATOR_TRAITS +#include "boost_no_std_iter_traits.cxx" +#else +namespace boost_no_std_iterator_traits = empty_boost; +#endif + +int cpp_main( int, char *[] ) +{ + return boost_no_std_iterator_traits::test(); +} + diff --git a/test/no_std_iterator_fail.cpp b/test/no_std_iterator_fail.cpp new file mode 100644 index 00000000..f8610797 --- /dev/null +++ b/test/no_std_iterator_fail.cpp @@ -0,0 +1,36 @@ + +// (C) Copyright Boost.org 1999. Permission to copy, use, modify, sell and +// distribute this software is granted provided this copyright notice appears +// in all copies. This software is provided "as is" without express or implied +// warranty, and with no claim as to its suitability for any purpose. + +// Test file for macro BOOST_NO_STD_ITERATOR +// This file should not compile, if it does then +// BOOST_NO_STD_ITERATOR need not be defined. +// see boost_no_std_iterator.cxx for more details + +// Do not edit this file, it was generated automatically by +// ../tools/generate from boost_no_std_iterator.cxx on +// Mon Sep 10 12:18:12 2001 + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include +#include +#include "test.hpp" + +#ifdef BOOST_NO_STD_ITERATOR +#include "boost_no_std_iterator.cxx" +#else +#error "this file should not compile" +#endif + +int cpp_main( int, char *[] ) +{ + return boost_no_std_iterator::test(); +} + diff --git a/test/no_std_iterator_pass.cpp b/test/no_std_iterator_pass.cpp new file mode 100644 index 00000000..0d109e06 --- /dev/null +++ b/test/no_std_iterator_pass.cpp @@ -0,0 +1,36 @@ + +// (C) Copyright Boost.org 1999. Permission to copy, use, modify, sell and +// distribute this software is granted provided this copyright notice appears +// in all copies. This software is provided "as is" without express or implied +// warranty, and with no claim as to its suitability for any purpose. + +// Test file for macro BOOST_NO_STD_ITERATOR +// This file should compile, if it does not then +// BOOST_NO_STD_ITERATOR needs to be defined. +// see boost_no_std_iterator.cxx for more details + +// Do not edit this file, it was generated automatically by +// ../tools/generate from boost_no_std_iterator.cxx on +// Mon Sep 10 12:18:12 2001 + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include +#include +#include "test.hpp" + +#ifndef BOOST_NO_STD_ITERATOR +#include "boost_no_std_iterator.cxx" +#else +namespace boost_no_std_iterator = empty_boost; +#endif + +int cpp_main( int, char *[] ) +{ + return boost_no_std_iterator::test(); +} + diff --git a/test/no_std_locale_fail.cpp b/test/no_std_locale_fail.cpp new file mode 100644 index 00000000..ed225466 --- /dev/null +++ b/test/no_std_locale_fail.cpp @@ -0,0 +1,36 @@ + +// (C) Copyright Boost.org 1999. Permission to copy, use, modify, sell and +// distribute this software is granted provided this copyright notice appears +// in all copies. This software is provided "as is" without express or implied +// warranty, and with no claim as to its suitability for any purpose. + +// Test file for macro BOOST_NO_STD_LOCALE +// This file should not compile, if it does then +// BOOST_NO_STD_LOCALE need not be defined. +// see boost_no_std_locale.cxx for more details + +// Do not edit this file, it was generated automatically by +// ../tools/generate from boost_no_std_locale.cxx on +// Mon Sep 10 12:18:12 2001 + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include +#include +#include "test.hpp" + +#ifdef BOOST_NO_STD_LOCALE +#include "boost_no_std_locale.cxx" +#else +#error "this file should not compile" +#endif + +int cpp_main( int, char *[] ) +{ + return boost_no_std_locale::test(); +} + diff --git a/test/no_std_locale_pass.cpp b/test/no_std_locale_pass.cpp new file mode 100644 index 00000000..ce9834c9 --- /dev/null +++ b/test/no_std_locale_pass.cpp @@ -0,0 +1,36 @@ + +// (C) Copyright Boost.org 1999. Permission to copy, use, modify, sell and +// distribute this software is granted provided this copyright notice appears +// in all copies. This software is provided "as is" without express or implied +// warranty, and with no claim as to its suitability for any purpose. + +// Test file for macro BOOST_NO_STD_LOCALE +// This file should compile, if it does not then +// BOOST_NO_STD_LOCALE needs to be defined. +// see boost_no_std_locale.cxx for more details + +// Do not edit this file, it was generated automatically by +// ../tools/generate from boost_no_std_locale.cxx on +// Mon Sep 10 12:18:12 2001 + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include +#include +#include "test.hpp" + +#ifndef BOOST_NO_STD_LOCALE +#include "boost_no_std_locale.cxx" +#else +namespace boost_no_std_locale = empty_boost; +#endif + +int cpp_main( int, char *[] ) +{ + return boost_no_std_locale::test(); +} + diff --git a/test/no_std_messages_fail.cpp b/test/no_std_messages_fail.cpp new file mode 100644 index 00000000..93b2348d --- /dev/null +++ b/test/no_std_messages_fail.cpp @@ -0,0 +1,36 @@ + +// (C) Copyright Boost.org 1999. Permission to copy, use, modify, sell and +// distribute this software is granted provided this copyright notice appears +// in all copies. This software is provided "as is" without express or implied +// warranty, and with no claim as to its suitability for any purpose. + +// Test file for macro BOOST_NO_STD_MESSAGES +// This file should not compile, if it does then +// BOOST_NO_STD_MESSAGES need not be defined. +// see boost_no_std_messages.cxx for more details + +// Do not edit this file, it was generated automatically by +// ../tools/generate from boost_no_std_messages.cxx on +// Mon Sep 10 12:18:12 2001 + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include +#include +#include "test.hpp" + +#ifdef BOOST_NO_STD_MESSAGES +#include "boost_no_std_messages.cxx" +#else +#error "this file should not compile" +#endif + +int cpp_main( int, char *[] ) +{ + return boost_no_std_messages::test(); +} + diff --git a/test/no_std_messages_pass.cpp b/test/no_std_messages_pass.cpp new file mode 100644 index 00000000..4b6880bf --- /dev/null +++ b/test/no_std_messages_pass.cpp @@ -0,0 +1,36 @@ + +// (C) Copyright Boost.org 1999. Permission to copy, use, modify, sell and +// distribute this software is granted provided this copyright notice appears +// in all copies. This software is provided "as is" without express or implied +// warranty, and with no claim as to its suitability for any purpose. + +// Test file for macro BOOST_NO_STD_MESSAGES +// This file should compile, if it does not then +// BOOST_NO_STD_MESSAGES needs to be defined. +// see boost_no_std_messages.cxx for more details + +// Do not edit this file, it was generated automatically by +// ../tools/generate from boost_no_std_messages.cxx on +// Mon Sep 10 12:18:12 2001 + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include +#include +#include "test.hpp" + +#ifndef BOOST_NO_STD_MESSAGES +#include "boost_no_std_messages.cxx" +#else +namespace boost_no_std_messages = empty_boost; +#endif + +int cpp_main( int, char *[] ) +{ + return boost_no_std_messages::test(); +} + diff --git a/test/no_std_min_max_fail.cpp b/test/no_std_min_max_fail.cpp new file mode 100644 index 00000000..4ce4a476 --- /dev/null +++ b/test/no_std_min_max_fail.cpp @@ -0,0 +1,36 @@ + +// (C) Copyright Boost.org 1999. Permission to copy, use, modify, sell and +// distribute this software is granted provided this copyright notice appears +// in all copies. This software is provided "as is" without express or implied +// warranty, and with no claim as to its suitability for any purpose. + +// Test file for macro BOOST_NO_STD_MIN_MAX +// This file should not compile, if it does then +// BOOST_NO_STD_MIN_MAX need not be defined. +// see boost_no_std_min_max.cxx for more details + +// Do not edit this file, it was generated automatically by +// ../tools/generate from boost_no_std_min_max.cxx on +// Mon Sep 10 12:18:12 2001 + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include +#include +#include "test.hpp" + +#ifdef BOOST_NO_STD_MIN_MAX +#include "boost_no_std_min_max.cxx" +#else +#error "this file should not compile" +#endif + +int cpp_main( int, char *[] ) +{ + return boost_no_std_min_max::test(); +} + diff --git a/test/no_std_min_max_pass.cpp b/test/no_std_min_max_pass.cpp new file mode 100644 index 00000000..305a8d43 --- /dev/null +++ b/test/no_std_min_max_pass.cpp @@ -0,0 +1,36 @@ + +// (C) Copyright Boost.org 1999. Permission to copy, use, modify, sell and +// distribute this software is granted provided this copyright notice appears +// in all copies. This software is provided "as is" without express or implied +// warranty, and with no claim as to its suitability for any purpose. + +// Test file for macro BOOST_NO_STD_MIN_MAX +// This file should compile, if it does not then +// BOOST_NO_STD_MIN_MAX needs to be defined. +// see boost_no_std_min_max.cxx for more details + +// Do not edit this file, it was generated automatically by +// ../tools/generate from boost_no_std_min_max.cxx on +// Mon Sep 10 12:18:12 2001 + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include +#include +#include "test.hpp" + +#ifndef BOOST_NO_STD_MIN_MAX +#include "boost_no_std_min_max.cxx" +#else +namespace boost_no_std_min_max = empty_boost; +#endif + +int cpp_main( int, char *[] ) +{ + return boost_no_std_min_max::test(); +} + diff --git a/test/no_std_oi_assign_fail.cpp b/test/no_std_oi_assign_fail.cpp new file mode 100644 index 00000000..bc96d8fd --- /dev/null +++ b/test/no_std_oi_assign_fail.cpp @@ -0,0 +1,36 @@ + +// (C) Copyright Boost.org 1999. Permission to copy, use, modify, sell and +// distribute this software is granted provided this copyright notice appears +// in all copies. This software is provided "as is" without express or implied +// warranty, and with no claim as to its suitability for any purpose. + +// 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 need not be defined. +// see boost_no_std_oi_assign.cxx for more details + +// Do not edit this file, it was generated automatically by +// ../tools/generate from boost_no_std_oi_assign.cxx on +// Sun Sep 16 11:09:13 2001 + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include +#include +#include "test.hpp" + +#ifdef BOOST_NO_STD_OUTPUT_ITERATOR_ASSIGN +#include "boost_no_std_oi_assign.cxx" +#else +#error "this file should not compile" +#endif + +int cpp_main( int, char *[] ) +{ + return boost_no_std_output_iterator_assign::test(); +} + diff --git a/test/no_std_oi_assign_pass.cpp b/test/no_std_oi_assign_pass.cpp new file mode 100644 index 00000000..0d81f293 --- /dev/null +++ b/test/no_std_oi_assign_pass.cpp @@ -0,0 +1,36 @@ + +// (C) Copyright Boost.org 1999. Permission to copy, use, modify, sell and +// distribute this software is granted provided this copyright notice appears +// in all copies. This software is provided "as is" without express or implied +// warranty, and with no claim as to its suitability for any purpose. + +// 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 needs to be defined. +// see boost_no_std_oi_assign.cxx for more details + +// Do not edit this file, it was generated automatically by +// ../tools/generate from boost_no_std_oi_assign.cxx on +// Sun Sep 16 11:09:13 2001 + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include +#include +#include "test.hpp" + +#ifndef BOOST_NO_STD_OUTPUT_ITERATOR_ASSIGN +#include "boost_no_std_oi_assign.cxx" +#else +namespace boost_no_std_output_iterator_assign = empty_boost; +#endif + +int cpp_main( int, char *[] ) +{ + return boost_no_std_output_iterator_assign::test(); +} + diff --git a/test/no_std_use_facet_fail.cpp b/test/no_std_use_facet_fail.cpp new file mode 100644 index 00000000..75985683 --- /dev/null +++ b/test/no_std_use_facet_fail.cpp @@ -0,0 +1,36 @@ + +// (C) Copyright Boost.org 1999. Permission to copy, use, modify, sell and +// distribute this software is granted provided this copyright notice appears +// in all copies. This software is provided "as is" without express or implied +// warranty, and with no claim as to its suitability for any purpose. + +// Test file for macro BOOST_NO_STD_USE_FACET +// This file should not compile, if it does then +// BOOST_NO_STD_USE_FACET need not be defined. +// see boost_no_std_use_facet.cxx for more details + +// Do not edit this file, it was generated automatically by +// ../tools/generate from boost_no_std_use_facet.cxx on +// Mon Sep 10 12:18:12 2001 + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include +#include +#include "test.hpp" + +#ifdef BOOST_NO_STD_USE_FACET +#include "boost_no_std_use_facet.cxx" +#else +#error "this file should not compile" +#endif + +int cpp_main( int, char *[] ) +{ + return boost_no_std_use_facet::test(); +} + diff --git a/test/no_std_use_facet_pass.cpp b/test/no_std_use_facet_pass.cpp new file mode 100644 index 00000000..7c4147bc --- /dev/null +++ b/test/no_std_use_facet_pass.cpp @@ -0,0 +1,36 @@ + +// (C) Copyright Boost.org 1999. Permission to copy, use, modify, sell and +// distribute this software is granted provided this copyright notice appears +// in all copies. This software is provided "as is" without express or implied +// warranty, and with no claim as to its suitability for any purpose. + +// Test file for macro BOOST_NO_STD_USE_FACET +// This file should compile, if it does not then +// BOOST_NO_STD_USE_FACET needs to be defined. +// see boost_no_std_use_facet.cxx for more details + +// Do not edit this file, it was generated automatically by +// ../tools/generate from boost_no_std_use_facet.cxx on +// Mon Sep 10 12:18:12 2001 + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include +#include +#include "test.hpp" + +#ifndef BOOST_NO_STD_USE_FACET +#include "boost_no_std_use_facet.cxx" +#else +namespace boost_no_std_use_facet = empty_boost; +#endif + +int cpp_main( int, char *[] ) +{ + return boost_no_std_use_facet::test(); +} + diff --git a/test/no_std_wstring_fail.cpp b/test/no_std_wstring_fail.cpp new file mode 100644 index 00000000..cf93730a --- /dev/null +++ b/test/no_std_wstring_fail.cpp @@ -0,0 +1,36 @@ + +// (C) Copyright Boost.org 1999. Permission to copy, use, modify, sell and +// distribute this software is granted provided this copyright notice appears +// in all copies. This software is provided "as is" without express or implied +// warranty, and with no claim as to its suitability for any purpose. + +// Test file for macro BOOST_NO_STD_WSTRING +// This file should not compile, if it does then +// BOOST_NO_STD_WSTRING need not be defined. +// see boost_no_std_wstring.cxx for more details + +// Do not edit this file, it was generated automatically by +// ../tools/generate from boost_no_std_wstring.cxx on +// Mon Sep 10 12:18:12 2001 + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include +#include +#include "test.hpp" + +#ifdef BOOST_NO_STD_WSTRING +#include "boost_no_std_wstring.cxx" +#else +#error "this file should not compile" +#endif + +int cpp_main( int, char *[] ) +{ + return boost_no_std_wstring::test(); +} + diff --git a/test/no_std_wstring_pass.cpp b/test/no_std_wstring_pass.cpp new file mode 100644 index 00000000..6000a525 --- /dev/null +++ b/test/no_std_wstring_pass.cpp @@ -0,0 +1,36 @@ + +// (C) Copyright Boost.org 1999. Permission to copy, use, modify, sell and +// distribute this software is granted provided this copyright notice appears +// in all copies. This software is provided "as is" without express or implied +// warranty, and with no claim as to its suitability for any purpose. + +// Test file for macro BOOST_NO_STD_WSTRING +// This file should compile, if it does not then +// BOOST_NO_STD_WSTRING needs to be defined. +// see boost_no_std_wstring.cxx for more details + +// Do not edit this file, it was generated automatically by +// ../tools/generate from boost_no_std_wstring.cxx on +// Mon Sep 10 12:18:12 2001 + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include +#include +#include "test.hpp" + +#ifndef BOOST_NO_STD_WSTRING +#include "boost_no_std_wstring.cxx" +#else +namespace boost_no_std_wstring = empty_boost; +#endif + +int cpp_main( int, char *[] ) +{ + return boost_no_std_wstring::test(); +} + diff --git a/test/no_stdc_namespace_fail.cpp b/test/no_stdc_namespace_fail.cpp new file mode 100644 index 00000000..613bdf20 --- /dev/null +++ b/test/no_stdc_namespace_fail.cpp @@ -0,0 +1,36 @@ + +// (C) Copyright Boost.org 1999. Permission to copy, use, modify, sell and +// distribute this software is granted provided this copyright notice appears +// in all copies. This software is provided "as is" without express or implied +// warranty, and with no claim as to its suitability for any purpose. + +// Test file for macro BOOST_NO_STDC_NAMESPACE +// This file should not compile, if it does then +// BOOST_NO_STDC_NAMESPACE need not be defined. +// see boost_no_stdc_namespace.cxx for more details + +// Do not edit this file, it was generated automatically by +// ../tools/generate from boost_no_stdc_namespace.cxx on +// Mon Sep 10 12:18:12 2001 + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include +#include +#include "test.hpp" + +#ifdef BOOST_NO_STDC_NAMESPACE +#include "boost_no_stdc_namespace.cxx" +#else +#error "this file should not compile" +#endif + +int cpp_main( int, char *[] ) +{ + return boost_no_stdc_namespace::test(); +} + diff --git a/test/no_stdc_namespace_pass.cpp b/test/no_stdc_namespace_pass.cpp new file mode 100644 index 00000000..60f651bc --- /dev/null +++ b/test/no_stdc_namespace_pass.cpp @@ -0,0 +1,36 @@ + +// (C) Copyright Boost.org 1999. Permission to copy, use, modify, sell and +// distribute this software is granted provided this copyright notice appears +// in all copies. This software is provided "as is" without express or implied +// warranty, and with no claim as to its suitability for any purpose. + +// Test file for macro BOOST_NO_STDC_NAMESPACE +// This file should compile, if it does not then +// BOOST_NO_STDC_NAMESPACE needs to be defined. +// see boost_no_stdc_namespace.cxx for more details + +// Do not edit this file, it was generated automatically by +// ../tools/generate from boost_no_stdc_namespace.cxx on +// Mon Sep 10 12:18:12 2001 + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include +#include +#include "test.hpp" + +#ifndef BOOST_NO_STDC_NAMESPACE +#include "boost_no_stdc_namespace.cxx" +#else +namespace boost_no_stdc_namespace = empty_boost; +#endif + +int cpp_main( int, char *[] ) +{ + return boost_no_stdc_namespace::test(); +} + diff --git a/test/no_swprintf_fail.cpp b/test/no_swprintf_fail.cpp new file mode 100644 index 00000000..ba1cb9da --- /dev/null +++ b/test/no_swprintf_fail.cpp @@ -0,0 +1,36 @@ + +// (C) Copyright Boost.org 1999. Permission to copy, use, modify, sell and +// distribute this software is granted provided this copyright notice appears +// in all copies. This software is provided "as is" without express or implied +// warranty, and with no claim as to its suitability for any purpose. + +// Test file for macro BOOST_NO_SWPRINTF +// This file should not compile, if it does then +// BOOST_NO_SWPRINTF need not be defined. +// see boost_no_swprintf.cxx for more details + +// Do not edit this file, it was generated automatically by +// ../tools/generate from boost_no_swprintf.cxx on +// Mon Sep 10 12:18:12 2001 + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include +#include +#include "test.hpp" + +#ifdef BOOST_NO_SWPRINTF +#include "boost_no_swprintf.cxx" +#else +#error "this file should not compile" +#endif + +int cpp_main( int, char *[] ) +{ + return boost_no_swprintf::test(); +} + diff --git a/test/no_swprintf_pass.cpp b/test/no_swprintf_pass.cpp new file mode 100644 index 00000000..dbd61307 --- /dev/null +++ b/test/no_swprintf_pass.cpp @@ -0,0 +1,36 @@ + +// (C) Copyright Boost.org 1999. Permission to copy, use, modify, sell and +// distribute this software is granted provided this copyright notice appears +// in all copies. This software is provided "as is" without express or implied +// warranty, and with no claim as to its suitability for any purpose. + +// Test file for macro BOOST_NO_SWPRINTF +// This file should compile, if it does not then +// BOOST_NO_SWPRINTF needs to be defined. +// see boost_no_swprintf.cxx for more details + +// Do not edit this file, it was generated automatically by +// ../tools/generate from boost_no_swprintf.cxx on +// Mon Sep 10 12:18:12 2001 + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include +#include +#include "test.hpp" + +#ifndef BOOST_NO_SWPRINTF +#include "boost_no_swprintf.cxx" +#else +namespace boost_no_swprintf = empty_boost; +#endif + +int cpp_main( int, char *[] ) +{ + return boost_no_swprintf::test(); +} + diff --git a/test/no_using_template_fail.cpp b/test/no_using_template_fail.cpp new file mode 100644 index 00000000..fbe8d996 --- /dev/null +++ b/test/no_using_template_fail.cpp @@ -0,0 +1,36 @@ + +// (C) Copyright Boost.org 1999. Permission to copy, use, modify, sell and +// distribute this software is granted provided this copyright notice appears +// in all copies. This software is provided "as is" without express or implied +// warranty, and with no claim as to its suitability for any purpose. + +// Test file for macro BOOST_NO_USING_TEMPLATE +// This file should not compile, if it does then +// BOOST_NO_USING_TEMPLATE need not be defined. +// see boost_no_using_template.cxx for more details + +// Do not edit this file, it was generated automatically by +// ../tools/generate from boost_no_using_template.cxx on +// Mon Sep 10 12:18:12 2001 + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include +#include +#include "test.hpp" + +#ifdef BOOST_NO_USING_TEMPLATE +#include "boost_no_using_template.cxx" +#else +#error "this file should not compile" +#endif + +int cpp_main( int, char *[] ) +{ + return boost_no_using_template::test(); +} + diff --git a/test/no_using_template_pass.cpp b/test/no_using_template_pass.cpp new file mode 100644 index 00000000..73747a67 --- /dev/null +++ b/test/no_using_template_pass.cpp @@ -0,0 +1,36 @@ + +// (C) Copyright Boost.org 1999. Permission to copy, use, modify, sell and +// distribute this software is granted provided this copyright notice appears +// in all copies. This software is provided "as is" without express or implied +// warranty, and with no claim as to its suitability for any purpose. + +// Test file for macro BOOST_NO_USING_TEMPLATE +// This file should compile, if it does not then +// BOOST_NO_USING_TEMPLATE needs to be defined. +// see boost_no_using_template.cxx for more details + +// Do not edit this file, it was generated automatically by +// ../tools/generate from boost_no_using_template.cxx on +// Mon Sep 10 12:18:12 2001 + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include +#include +#include "test.hpp" + +#ifndef BOOST_NO_USING_TEMPLATE +#include "boost_no_using_template.cxx" +#else +namespace boost_no_using_template = empty_boost; +#endif + +int cpp_main( int, char *[] ) +{ + return boost_no_using_template::test(); +} + diff --git a/test/no_wchar_t_fail.cpp b/test/no_wchar_t_fail.cpp new file mode 100644 index 00000000..6ef5a162 --- /dev/null +++ b/test/no_wchar_t_fail.cpp @@ -0,0 +1,36 @@ + +// (C) Copyright Boost.org 1999. Permission to copy, use, modify, sell and +// distribute this software is granted provided this copyright notice appears +// in all copies. This software is provided "as is" without express or implied +// warranty, and with no claim as to its suitability for any purpose. + +// Test file for macro BOOST_NO_INTRINSIC_WCHAR_T +// This file should not compile, if it does then +// BOOST_NO_INTRINSIC_WCHAR_T need not be defined. +// see boost_no_wchar_t.cxx for more details + +// Do not edit this file, it was generated automatically by +// ../tools/generate from boost_no_wchar_t.cxx on +// Mon Sep 10 12:18:12 2001 + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include +#include +#include "test.hpp" + +#ifdef BOOST_NO_INTRINSIC_WCHAR_T +#include "boost_no_wchar_t.cxx" +#else +#error "this file should not compile" +#endif + +int cpp_main( int, char *[] ) +{ + return boost_no_intrinsic_wchar_t::test(); +} + diff --git a/test/no_wchar_t_pass.cpp b/test/no_wchar_t_pass.cpp new file mode 100644 index 00000000..46cf3d05 --- /dev/null +++ b/test/no_wchar_t_pass.cpp @@ -0,0 +1,36 @@ + +// (C) Copyright Boost.org 1999. Permission to copy, use, modify, sell and +// distribute this software is granted provided this copyright notice appears +// in all copies. This software is provided "as is" without express or implied +// warranty, and with no claim as to its suitability for any purpose. + +// Test file for macro BOOST_NO_INTRINSIC_WCHAR_T +// This file should compile, if it does not then +// BOOST_NO_INTRINSIC_WCHAR_T needs to be defined. +// see boost_no_wchar_t.cxx for more details + +// Do not edit this file, it was generated automatically by +// ../tools/generate from boost_no_wchar_t.cxx on +// Mon Sep 10 12:18:12 2001 + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include +#include +#include "test.hpp" + +#ifndef BOOST_NO_INTRINSIC_WCHAR_T +#include "boost_no_wchar_t.cxx" +#else +namespace boost_no_intrinsic_wchar_t = empty_boost; +#endif + +int cpp_main( int, char *[] ) +{ + return boost_no_intrinsic_wchar_t::test(); +} + diff --git a/test/regression.cfg b/test/regression.cfg new file mode 100644 index 00000000..bbcc176c --- /dev/null +++ b/test/regression.cfg @@ -0,0 +1,105 @@ +// +// regression test script for boost configuration setup +// +run libs/config/test/config_info.cpp +run libs/config/test/config_test.cpp +run libs/config/test/limits_test.cpp + +run libs/config/test/no_arg_dep_lookup_pass.cpp +link-fail libs/config/test/no_arg_dep_lookup_fail.cpp +run libs/config/test/no_auto_ptr_pass.cpp +link-fail libs/config/test/no_auto_ptr_fail.cpp +run libs/config/test/no_cv_spec_pass.cpp +link-fail libs/config/test/no_cv_spec_fail.cpp +run libs/config/test/no_cv_void_spec_pass.cpp +link-fail libs/config/test/no_cv_void_spec_fail.cpp +run libs/config/test/no_cwchar_pass.cpp +link-fail libs/config/test/no_cwchar_fail.cpp +run libs/config/test/no_cwctype_pass.cpp +link-fail libs/config/test/no_cwctype_fail.cpp +run libs/config/test/no_dep_nested_class_pass.cpp +link-fail libs/config/test/no_dep_nested_class_fail.cpp +run libs/config/test/no_dep_val_param_pass.cpp +link-fail libs/config/test/no_dep_val_param_fail.cpp +run libs/config/test/no_exp_func_tem_arg_pass.cpp +link-fail libs/config/test/no_exp_func_tem_arg_fail.cpp +run libs/config/test/no_func_tmp_order_pass.cpp +link-fail libs/config/test/no_func_tmp_order_fail.cpp +run libs/config/test/no_inline_memb_init_pass.cpp +link-fail libs/config/test/no_inline_memb_init_fail.cpp +run libs/config/test/no_iter_construct_pass.cpp +link-fail libs/config/test/no_iter_construct_fail.cpp +run libs/config/test/no_limits_pass.cpp +link-fail libs/config/test/no_limits_fail.cpp +run libs/config/test/no_limits_const_exp_pass.cpp +link-fail libs/config/test/no_limits_const_exp_fail.cpp +run libs/config/test/no_mem_tem_keyword_pass.cpp +link-fail libs/config/test/no_mem_tem_keyword_fail.cpp +run libs/config/test/no_mem_templ_frnds_pass.cpp +link-fail libs/config/test/no_mem_templ_frnds_fail.cpp +run libs/config/test/no_mem_templates_pass.cpp +link-fail libs/config/test/no_mem_templates_fail.cpp +run libs/config/test/no_ops_in_namespace_pass.cpp +link-fail libs/config/test/no_ops_in_namespace_fail.cpp +run libs/config/test/no_partial_spec_pass.cpp +link-fail libs/config/test/no_partial_spec_fail.cpp +run libs/config/test/no_priv_aggregate_pass.cpp +link-fail libs/config/test/no_priv_aggregate_fail.cpp +run libs/config/test/no_ptr_mem_const_pass.cpp +link-fail libs/config/test/no_ptr_mem_const_fail.cpp +run libs/config/test/no_sstream_pass.cpp +link-fail libs/config/test/no_sstream_fail.cpp +run libs/config/test/no_std_allocator_pass.cpp +link-fail libs/config/test/no_std_allocator_fail.cpp +run libs/config/test/no_std_distance_pass.cpp +link-fail libs/config/test/no_std_distance_fail.cpp +run libs/config/test/no_std_iter_traits_pass.cpp +link-fail libs/config/test/no_std_iter_traits_fail.cpp +run libs/config/test/no_std_iterator_pass.cpp +link-fail libs/config/test/no_std_iterator_fail.cpp +run libs/config/test/no_std_locale_pass.cpp +link-fail libs/config/test/no_std_locale_fail.cpp +run libs/config/test/no_std_messages_pass.cpp +link-fail libs/config/test/no_std_messages_fail.cpp +run libs/config/test/no_std_min_max_pass.cpp +link-fail libs/config/test/no_std_min_max_fail.cpp +run libs/config/test/no_std_oi_assign_pass.cpp +link-fail libs/config/test/no_std_oi_assign_fail.cpp +run libs/config/test/no_std_use_facet_pass.cpp +link-fail libs/config/test/no_std_use_facet_fail.cpp +run libs/config/test/no_std_wstring_pass.cpp +link-fail libs/config/test/no_std_wstring_fail.cpp +run libs/config/test/no_stdc_namespace_pass.cpp +link-fail libs/config/test/no_stdc_namespace_fail.cpp +run libs/config/test/no_swprintf_pass.cpp +link-fail libs/config/test/no_swprintf_fail.cpp +run libs/config/test/no_using_template_pass.cpp +link-fail libs/config/test/no_using_template_fail.cpp +run libs/config/test/no_wchar_t_pass.cpp +link-fail libs/config/test/no_wchar_t_fail.cpp +run libs/config/test/has_2arg_use_facet_pass.cpp +link-fail libs/config/test/has_2arg_use_facet_fail.cpp +run libs/config/test/has_bethreads_pass.cpp +link-fail libs/config/test/has_bethreads_fail.cpp +run libs/config/test/has_hash_pass.cpp +link-fail libs/config/test/has_hash_fail.cpp +run libs/config/test/has_macro_use_facet_pass.cpp +link-fail libs/config/test/has_macro_use_facet_fail.cpp +run libs/config/test/has_nl_types_h_pass.cpp +link-fail libs/config/test/has_nl_types_h_fail.cpp +run libs/config/test/has_pthreads_pass.cpp +link-fail libs/config/test/has_pthreads_fail.cpp +run libs/config/test/has_slist_pass.cpp +link-fail libs/config/test/has_slist_fail.cpp +run libs/config/test/has_stdint_h_pass.cpp +link-fail libs/config/test/has_stdint_h_fail.cpp +run libs/config/test/has_stlp_use_facet_pass.cpp +link-fail libs/config/test/has_stlp_use_facet_fail.cpp +run libs/config/test/has_unistd_h_pass.cpp +link-fail libs/config/test/has_unistd_h_fail.cpp +run libs/config/test/has_vc6_mem_templ_pass.cpp +link-fail libs/config/test/has_vc6_mem_templ_fail.cpp +run libs/config/test/has_vc_iterator_pass.cpp +link-fail libs/config/test/has_vc_iterator_fail.cpp +run libs/config/test/has_winthreads_pass.cpp +link-fail libs/config/test/has_winthreads_fail.cpp diff --git a/test/test.hpp b/test/test.hpp new file mode 100644 index 00000000..8597b907 --- /dev/null +++ b/test/test.hpp @@ -0,0 +1,14 @@ + +#ifndef BOOST_CONFIG_TEST_HPP +#define BOOST_CONFIG_TEST_HPP + +namespace empty_boost{ + +int test() +{ + return 0; +} + +} + +#endif diff --git a/tools/configure.in b/tools/configure.in new file mode 100644 index 00000000..daad9f58 --- /dev/null +++ b/tools/configure.in @@ -0,0 +1,401 @@ +# +# the following variable contain our macro diffs: +# +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 regresion 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. It's +primary aim is to quicky report how well boost is configured +for one compiler. + +*** + +EOF + +else + +cat << EOF + +*** + +EOF +fi + +AC_ARG_ENABLE(extension,[--enable-extension=], +[ +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 +] +) + + +# 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 + +if test $enable_test = 'yes'; then +CXXFLAGS="-I../../ -I./test $CXXFLAGS" +else +CXXFLAGS="-I../../ -I./test $CXXFLAGS -DBOOST_NO_CONFIG" +fi + +dnl check for some standard libraries +dnl without these some of the tests may fail: + +AC_HAVE_LIBRARY(pthread) +AC_HAVE_LIBRARY(m) + +# +# enumerate test files and test each one: +# +for file in ./test/boost_no*.cxx; do + + basename=`echo $file | sed 's/.*boost_\(.*\)\.cxx/\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 [[:upper:]] [[:lower:]]` + +#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_LINK( + [ +#include +#include +#include "test.hpp" + +#ifndef $macroname +#include "boost_$basename.cxx" +#else +namespace ${namespace} = empty_boost; +#endif + +int cpp_main( int, char *[] ) +{ + return ${namespace}::test(); +} +#define main _main + ] + , + [] + , + [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_LINK( + [ +#include +#include +#include "test.hpp" + +#ifdef $macroname +#include "boost_$basename.cxx" +#else +#error "this file should not compile" +#endif + +int cpp_main( int, char *[] ) +{ + return ${namespace}::test(); +} +#define main _main + ] + , + [] + , + [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 ./test/boost_has*.cxx; do + + basename=`echo $file | sed 's/.*boost_\(.*\)\.cxx/\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 [[:upper:]] [[:lower:]]` + +# 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_LINK( + [ +#include +#include +#include "test.hpp" + +#ifdef $macroname +#include "boost_$basename.cxx" +#else +namespace ${namespace} = empty_boost; +#endif + +int cpp_main( int, char *[] ) +{ + return ${namespace}::test(); +} +#define main _main + ] + , + [] + , + [AC_MSG_RESULT(OK)] + , + [AC_MSG_RESULT(Failed) + required_undefs="$macroname $required_undefs"] + ) + + AC_MSG_CHECKING($title (fail expected) ) + AC_TRY_LINK( + [ +#include +#include +#include "test.hpp" + +#ifndef $macroname +#include "boost_$basename.cxx" +#else +#error "this file should not compile" +#endif + +int cpp_main( int, char *[] ) +{ + return ${namespace}::test(); +} +#define main _main + ] + , + [] + , + [ + 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_LINK( + [ +#include +#include +#include "test.hpp" + +#include "boost_$basename.cxx" + +int cpp_main( int, char *[] ) +{ + return ${namespace}::test(); +} +#define main _main + ] + , + [] + , + [ + 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 +else +echo the following macros need to be defined +echo $required_defs +fi +if test "$required_undefs" = ""; then +echo no boost macros need to be undefined +else +echo "the following macros need to be undef'ed" +echo $required_undefs +fi + +else + +date_string=`date` + +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: +#define BOOST_NO_CONFIG + + +// 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 << EOF + +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! + +EOF + +cat_conts=`cat user.hpp` + +fi + + +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" +] +) + + + + + + + + + + + diff --git a/tools/generate b/tools/generate new file mode 100644 index 00000000..efac45d0 --- /dev/null +++ b/tools/generate @@ -0,0 +1,329 @@ +#!/bin/sh + +#get date: +date_string=`date` + +# init config file: +cat > ../test/regression.cfg << EOF +// +// regression test script for boost configuration setup +// +run libs/config/test/config_info.cpp +run libs/config/test/config_test.cpp +run libs/config/test/limits_test.cpp + +EOF + +# init main config test file: +cat > ../test/config_test.cpp << EOF +// (C) Copyright Boost.org 1999. Permission to copy, use, modify, sell and +// distribute this software is granted provided this copyright notice appears +// in all copies. This software is provided "as is" without express or implied +// warranty, and with no claim as to its suitability for any purpose. + +// Test file for config setup +// This file should compile, if it does not then +// one or more macros need to be defined. +// see boost_*.cxx for more details + +// Do not edit this file, it was generated automatically by +// ../tools/generate from boost_*.cxx on +// $date_string + +#include +#define BOOST_INCLUDE_MAIN +#include +#include "test.hpp" + +EOF + +all_no="" +all_has="" + +# +# enumerate through the boost_no* test files: +# +for file in ../test/boost_no_*.cxx; do + + basename=`echo $file | sed 's/.*boost_\(.*\)\.cxx/\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 [:upper:] [:lower:]` + +# echo $basename + echo + echo "processing $macroname ..." +# echo $title +# echo $namespace + # now create positive test file: + if test -f "../test/$basename""_pass.cpp"; then + echo "skipping file ../test/$basename""_pass.cpp" + else + echo "generating file ../test/$basename""_pass.cpp" + cat > "../test/$basename""_pass.cpp" << EOF + +// (C) Copyright Boost.org 1999. Permission to copy, use, modify, sell and +// distribute this software is granted provided this copyright notice appears +// in all copies. This software is provided "as is" without express or implied +// warranty, and with no claim as to its suitability for any purpose. + +// Test file for macro $macroname +// This file should compile, if it does not then +// $macroname needs to be defined. +// see boost_$basename.cxx for more details + +// Do not edit this file, it was generated automatically by +// ../tools/generate from boost_$basename.cxx on +// $date_string + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include +#include +#include "test.hpp" + +#ifndef $macroname +#include "boost_$basename.cxx" +#else +namespace ${namespace} = empty_boost; +#endif + +int cpp_main( int, char *[] ) +{ + return ${namespace}::test(); +} + +EOF + + fi + + # now create negative test file: + if test -f "../test/$basename""_fail.cpp"; then + echo "skipping file ../test/$basename""_fail.cpp" + else + echo "generating file ../test/$basename""_fail.cpp" + cat > "../test/$basename""_fail.cpp" << EOF + +// (C) Copyright Boost.org 1999. Permission to copy, use, modify, sell and +// distribute this software is granted provided this copyright notice appears +// in all copies. This software is provided "as is" without express or implied +// warranty, and with no claim as to its suitability for any purpose. + +// Test file for macro $macroname +// This file should not compile, if it does then +// $macroname need not be defined. +// see boost_$basename.cxx for more details + +// Do not edit this file, it was generated automatically by +// ../tools/generate from boost_$basename.cxx on +// $date_string + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include +#include +#include "test.hpp" + +#ifdef $macroname +#include "boost_$basename.cxx" +#else +#error "this file should not compile" +#endif + +int cpp_main( int, char *[] ) +{ + return ${namespace}::test(); +} + +EOF + fi + + # now append to config_test.cpp: + cat >> "../test/config_test.cpp" << EOF +#ifndef $macroname +#include "boost_$basename.cxx" +#else +namespace ${namespace} = empty_boost; +#endif +EOF + all_no="$namespace $all_no" + + # output regression tests: + echo "run libs/config/test/$basename""_pass.cpp" >> ../test/regression.cfg + echo "link-fail libs/config/test/$basename""_fail.cpp" >> ../test/regression.cfg + + +done + +# +# enumerate through the boost_has* test files: +# +for file in ../test/boost_has_*.cxx; do + + basename=`echo $file | sed 's/.*boost_\(.*\)\.cxx/\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 [:upper:] [:lower:]` + +# echo $basename + echo + echo "processing $macroname ..." +# echo $title +# echo $namespace + + # now create positive test file: + if test -f "../test/$basename""_pass.cpp"; then + echo "skipping file ../test/$basename""_pass.cpp" + else + echo "generating file ../test/$basename""_pass.cpp" + cat > "../test/$basename""_pass.cpp" << EOF + +// (C) Copyright Boost.org 1999. Permission to copy, use, modify, sell and +// distribute this software is granted provided this copyright notice appears +// in all copies. This software is provided "as is" without express or implied +// warranty, and with no claim as to its suitability for any purpose. + +// Test file for macro $macroname +// This file should compile, if it does not then +// $macroname should not be defined. +// see boost_$basename.cxx for more details + +// Do not edit this file, it was generated automatically by +// ../tools/generate from boost_$basename.cxx on +// $date_string + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include +#include +#include "test.hpp" + +#ifdef $macroname +#include "boost_$basename.cxx" +#else +namespace ${namespace} = empty_boost; +#endif + +int cpp_main( int, char *[] ) +{ + return ${namespace}::test(); +} + +EOF + fi + + # now create negative test file: + if test -f "../test/$basename""_fail.cpp"; then + echo skipping file "../test/$basename""_fail.cpp" + else + echo generating file "../test/$basename""_fail.cpp" + cat > "../test/$basename""_fail.cpp" << EOF + +// (C) Copyright Boost.org 1999. Permission to copy, use, modify, sell and +// distribute this software is granted provided this copyright notice appears +// in all copies. This software is provided "as is" without express or implied +// warranty, and with no claim as to its suitability for any purpose. + +// Test file for macro $macroname +// This file should not compile, if it does then +// $macroname may be defined. +// see boost_$basename.cxx for more details + +// Do not edit this file, it was generated automatically by +// ../tools/generate from boost_$basename.cxx on +// $date_string + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include +#include +#include "test.hpp" + +#ifndef $macroname +#include "boost_$basename.cxx" +#else +#error "this file should not compile" +#endif + +int cpp_main( int, char *[] ) +{ + return ${namespace}::test(); +} + +EOF + fi + + # now append to config_test.cpp: + cat >> "../test/config_test.cpp" << EOF +#ifdef $macroname +#include "boost_$basename.cxx" +#else +namespace ${namespace} = empty_boost; +#endif +EOF + all_has="$namespace $all_has" + + # output regression tests: + echo "run libs/config/test/$basename""_pass.cpp" >> ../test/regression.cfg + echo "link-fail libs/config/test/$basename""_fail.cpp" >> ../test/regression.cfg + +done + + +# +# finish off config_test.cpp: +# + echo generating "../test/config_test.cpp" + cat >> "../test/config_test.cpp" << EOF + +int test_main( int, char *[] ) +{ +EOF + +for macro in $all_no; do + cat >> "../test/config_test.cpp" << EOF + BOOST_TEST(0 == ${macro}::test()); +EOF + +done +for macro in $all_has; do + cat >> "../test/config_test.cpp" << EOF + BOOST_TEST(0 == ${macro}::test()); +EOF + +done + cat >> "../test/config_test.cpp" << EOF + return 0; +} +EOF + +#rm -f ../config.* +echo "updating configure script..." +autoconf ../tools/configure.in > ../configure +echo + + + + + + + + + +