diff --minimal -Nru a/r2/configure b/r2/configure --- a/r2/configure Mon Aug 19 10:28:48 2002 +++ b/r2/configure Mon Aug 19 10:28:48 2002 @@ -1695,13 +1695,13 @@ ### add settings for non-standard behavior sub setcharacteristics { - # if the system does not have the stringstream class, must use workaround - add_yesno_define("POOMA_NO_STRINGSTREAM", - $no_stringstream); +# # if the system does not have the stringstream class, must use workaround +# add_yesno_define("POOMA_NO_STRINGSTREAM", +# $no_stringstream); - # if the system is missing some of the iostream manipulators, must avoid them - add_yesno_define("POOMA_MISSING_IOMANIPS", - $no_complete_iomanips); +# # if the system is missing some of the iostream manipulators, must avoid them +# add_yesno_define("POOMA_MISSING_IOMANIPS", +# $no_complete_iomanips); # if the C++ compiler does not allow templated friends, must say so add_yesno_define("POOMA_NO_TEMPLATE_FRIENDS", @@ -1716,34 +1716,34 @@ add_yesno_define("POOMA_NO_OSTREAM_ITERATOR_1ARG", $no_ostream_iterator_1arg); - # if the compiler does not allow definitions of placement delete operations - add_yesno_define("POOMA_NO_PLACEMENT_DELETE", - $no_placement_delete); +# # if the compiler does not allow definitions of placement delete operations +# add_yesno_define("POOMA_NO_PLACEMENT_DELETE", +# $no_placement_delete); # should we include extra specializations of some things for small dim? add_yesno_define("POOMA_SMALL_DIM_SPECIALIZATIONS", $small_dim_specializations); - # if the C++ compiler does not allow template parameters to be dependent, - # on others (e.g., template, must say so - add_yesno_define("POOMA_NO_DEPENDENT_TEMPLATE_ARGS", - $no_dependent_templ_args); +# # if the C++ compiler does not allow template parameters to be dependent, +# # on others (e.g., template, must say so +# add_yesno_define("POOMA_NO_DEPENDENT_TEMPLATE_ARGS", +# $no_dependent_templ_args); - # if the C++ library does not have templated complex number class, say so - add_yesno_define("POOMA_NO_TEMPLATED_COMPLEX", - $no_templated_complex); +# # if the C++ library does not have templated complex number class, say so +# add_yesno_define("POOMA_NO_TEMPLATED_COMPLEX", +# $no_templated_complex); - # if the C++ library does not have complex number class in std::, say so - add_yesno_define("POOMA_NO_STD_COMPLEX", - $no_std_complex); +# # if the C++ library does not have complex number class in std::, say so +# add_yesno_define("POOMA_NO_STD_COMPLEX", +# $no_std_complex); # if the C++ library has O_BINARY defined add_yesno_define("POOMA_HAS_O_BINARY_OPEN_MODE", $o_binary_open_mode); - # if the C++ library does not have ios_base class in std::, say so - add_yesno_define("POOMA_NO_STD_IOSBASE", - $no_std_iosbase); +# # if the C++ library does not have ios_base class in std::, say so +# add_yesno_define("POOMA_NO_STD_IOSBASE", +# $no_std_iosbase); # if must include for POSIX file modes, say so add_yesno_define("POOMA_INC_SYS_STAT_H_FOR_FILE_MODES", @@ -2093,6 +2093,8 @@ print FHEADER "#ifndef POOMA_GENERATED_CONFIG_H\n"; print FHEADER "#define POOMA_GENERATED_CONFIG_H\n"; print FHEADER "\n"; + print FHEADER "#include \"PoomaAutoconf.h\"\n"; + print FHEADER "\n"; # go through all the defines, and write them out. First find max length # of macro names to get spacing right @@ -2316,6 +2318,13 @@ close MFILE; } +sub runautoconf +{ + chdir("scripts"); + unlink("config.cache"); + system("env CXX=$cpp ./configure"); + chdir(".."); +} ########################################################################### # @@ -2408,6 +2417,9 @@ ### create dependencies writedependfile; + +### run autoconfiguration part +runautoconf; ### print out final instructions printinstructions; diff --minimal -Nru a/r2/scripts/acconfig.h b/r2/scripts/acconfig.h --- /dev/null Wed Dec 31 16:00:00 1969 +++ b/r2/scripts/acconfig.h Mon Aug 19 10:28:48 2002 @@ -0,0 +1,7 @@ +#undef POOMA_NO_STRINGSTREAM +#undef POOMA_MISSING_IOMANIPS +#undef POOMA_NO_STD_IOSBASE +#undef POOMA_NO_STD_COMPLEX +#undef POOMA_NO_TEMPLATED_COMPLEX +#undef POOMA_NO_DEPENDENT_TEMPLATE_ARGS +#undef POOMA_NO_PLACEMENT_DELETE diff --minimal -Nru a/r2/scripts/configure.in b/r2/scripts/configure.in --- /dev/null Wed Dec 31 16:00:00 1969 +++ b/r2/scripts/configure.in Mon Aug 19 10:28:48 2002 @@ -0,0 +1,123 @@ +AC_INIT(configure.in) +AC_CONFIG_HEADER([../lib/$POOMASUITE/PoomaAutoconf.h]) + +AC_PROG_CXX +AC_PROG_CXXCPP + +AC_LANG_CPLUSPLUS + +dnl +dnl check for IO manipulators +dnl +AC_MSG_CHECKING([wether we have complete IO manipulators]) +AC_TRY_COMPILE([ +#include +#include +], [ + std::cout << std::left; +], [ +AC_MSG_RESULT([yes]) +] , [ +AC_MSG_RESULT([no]) +AC_DEFINE(POOMA_MISSING_IOMANIPS) +]) + +dnl +dnl check for std iosbase +dnl +AC_MSG_CHECKING([wether we have a standard iosbase class]) +AC_TRY_COMPILE([ +#include +#include +class Inform; +inline Inform &operator<<(Inform &o, std::ios_base &(*d)(std::ios_base &)) +{ +} +], [ +], [ +AC_MSG_RESULT([yes]) +] , [ +AC_MSG_RESULT([no]) +AC_DEFINE(POOMA_NO_STD_IOSBASE) +]) + +dnl +dnl check for stringstream +dnl +AC_MSG_CHECKING([wether we have sstream]) +AC_TRY_COMPILE([ +#include +], [ + std::ostringstream *msg; +], [ +AC_MSG_RESULT([yes]) +] , [ +AC_MSG_RESULT([no]) +AC_DEFINE(POOMA_NO_STRINGSTREAM) +]) + +dnl +dnl check for complex in std and templated complex +dnl +AC_MSG_CHECKING([wether we have a complex inside std]) +AC_TRY_COMPILE([ +#include +], [ + std::complex val; +], [ +complexok=yes +AC_MSG_RESULT([yes]) +] , [ +AC_MSG_RESULT([no]) +AC_DEFINE(POOMA_NO_STD_COMPLEX) +]) +if test x$complexok != xyes; then + AC_MSG_CHECKING([wether we have a not-templated complex]) + AC_TRY_COMPILE([ + #include + ], [ + complex val; + ], [ + AC_MSG_RESULT([no]) + ] , [ + AC_MSG_RESULT([yes]) + AC_DEFINE(POOMA_NO_TEMPLATED_COMPLEX) + ]) +fi + +dnl +dnl check for dependent template arguments +dnl +AC_MSG_CHECKING([wether we support dependent template arguments]) +AC_TRY_COMPILE([ +template +class Foo; +template +class Foo { +}; +], [ +], [ +AC_MSG_RESULT([yes]) +] , [ +AC_MSG_RESULT([no]) +AC_DEFINE(POOMA_NO_DEPENDENT_TEMPLATE_ARGS) +]) + +dnl +dnl check for placement delete operator support +dnl +AC_MSG_CHECKING([wether we support delete operators with placement argument]) +AC_TRY_COMPILE([ +class foo { + void operator delete(void *, void *) { } +}; +], [ +], [ +AC_MSG_RESULT([yes]) +] , [ +AC_MSG_RESULT([no]) +AC_DEFINE(POOMA_NO_PLACEMENT_DELETE) +]) + + +AC_OUTPUT()