Paul Davis
449aab3c46
git-svn-id: svn://localhost/ardour2/branches/3.0@3435 d708f5d6-7413-0410-9779-e7cbd77b26cf
196 lines
5.4 KiB
Plaintext
196 lines
5.4 KiB
Plaintext
cv_cxx_has_namespace_std
|
|
## GLIBMM_CXX_HAS_NAMESPACE_STD()
|
|
##
|
|
## Test whether libstdc++ declares namespace std. For safety,
|
|
## also check whether several randomly selected STL symbols
|
|
## are available in namespace std.
|
|
##
|
|
## On success, #define GLIBMM_HAVE_NAMESPACE_STD to 1.
|
|
##
|
|
AC_DEFUN([GLIBMM_CXX_HAS_NAMESPACE_STD],
|
|
[
|
|
AC_CACHE_CHECK(
|
|
[whether C++ library symbols are declared in namespace std],
|
|
[gtkmm_cv_cxx_has_namespace_std],
|
|
[
|
|
AC_TRY_COMPILE(
|
|
[
|
|
#include <algorithm>
|
|
#include <iterator>
|
|
#include <iostream>
|
|
#include <string>
|
|
],[
|
|
using std::min;
|
|
using std::find;
|
|
using std::copy;
|
|
using std::bidirectional_iterator_tag;
|
|
using std::string;
|
|
using std::istream;
|
|
using std::cout;
|
|
],
|
|
[gtkmm_cv_cxx_has_namespace_std="yes"],
|
|
[gtkmm_cv_cxx_has_namespace_std="no"]
|
|
)
|
|
])
|
|
|
|
if test "x${gtkmm_cv_cxx_has_namespace_std}" = "xyes"; then
|
|
{
|
|
AC_DEFINE([GLIBMM_HAVE_NAMESPACE_STD],[1], [Defined when the libstdc++ declares the std-namespace])
|
|
}
|
|
fi
|
|
])
|
|
|
|
|
|
## GLIBMM_CXX_HAS_STD_ITERATOR_TRAITS()
|
|
##
|
|
## Check for standard-conform std::iterator_traits<>, and
|
|
## #define GLIBMM_HAVE_STD_ITERATOR_TRAITS on success.
|
|
##
|
|
AC_DEFUN([GLIBMM_CXX_HAS_STD_ITERATOR_TRAITS],
|
|
[
|
|
AC_REQUIRE([GLIBMM_CXX_HAS_NAMESPACE_STD])
|
|
|
|
AC_CACHE_CHECK(
|
|
[whether the C++ library supports std::iterator_traits],
|
|
[gtkmm_cv_cxx_has_std_iterator_traits],
|
|
[
|
|
AC_TRY_COMPILE(
|
|
[
|
|
#include <iterator>
|
|
#ifdef GLIBMM_HAVE_NAMESPACE_STD
|
|
using namespace std;
|
|
#endif
|
|
],[
|
|
typedef iterator_traits<char*>::value_type ValueType;
|
|
],
|
|
[gtkmm_cv_cxx_has_std_iterator_traits="yes"],
|
|
[gtkmm_cv_cxx_has_std_iterator_traits="no"]
|
|
)
|
|
])
|
|
|
|
if test "x${gtkmm_cv_cxx_has_std_iterator_traits}" = "xyes"; then
|
|
{
|
|
AC_DEFINE([GLIBMM_HAVE_STD_ITERATOR_TRAITS],[1], [Defined if std::iterator_traits<> is standard-conforming])
|
|
}
|
|
fi
|
|
])
|
|
|
|
|
|
## GLIBMM_CXX_HAS_SUN_REVERSE_ITERATOR()
|
|
##
|
|
## Check for Sun libCstd style std::reverse_iterator,
|
|
## and #define GLIBMM_HAVE_SUN_REVERSE_ITERATOR if found.
|
|
##
|
|
AC_DEFUN([GLIBMM_CXX_HAS_SUN_REVERSE_ITERATOR],
|
|
[
|
|
AC_REQUIRE([GLIBMM_CXX_HAS_NAMESPACE_STD])
|
|
|
|
AC_CACHE_CHECK(
|
|
[for non-standard Sun libCstd reverse_iterator],
|
|
[gtkmm_cv_cxx_has_sun_reverse_iterator],
|
|
[
|
|
AC_TRY_COMPILE(
|
|
[
|
|
#include <iterator>
|
|
#ifdef GLIBMM_HAVE_NAMESPACE_STD
|
|
using namespace std;
|
|
#endif
|
|
],[
|
|
typedef reverse_iterator<char*,random_access_iterator_tag,char,char&,char*,int> ReverseIter;
|
|
],
|
|
[gtkmm_cv_cxx_has_sun_reverse_iterator="yes"],
|
|
[gtkmm_cv_cxx_has_sun_reverse_iterator="no"]
|
|
)
|
|
])
|
|
|
|
if test "x${gtkmm_cv_cxx_has_sun_reverse_iterator}" = "xyes"; then
|
|
{
|
|
AC_DEFINE([GLIBMM_HAVE_SUN_REVERSE_ITERATOR],[1], [Defined if std::reverse_iterator is in Sun libCstd style])
|
|
}
|
|
fi
|
|
])
|
|
|
|
|
|
## GLIBMM_CXX_HAS_TEMPLATE_SEQUENCE_CTORS()
|
|
##
|
|
## Check whether the STL containers have templated sequence ctors,
|
|
## and #define GLIBMM_HAVE_TEMPLATE_SEQUENCE_CTORS on success.
|
|
##
|
|
AC_DEFUN([GLIBMM_CXX_HAS_TEMPLATE_SEQUENCE_CTORS],
|
|
[
|
|
AC_REQUIRE([GLIBMM_CXX_HAS_NAMESPACE_STD])
|
|
|
|
AC_CACHE_CHECK(
|
|
[whether STL containers have templated sequence constructors],
|
|
[gtkmm_cv_cxx_has_template_sequence_ctors],
|
|
[
|
|
AC_TRY_COMPILE(
|
|
[
|
|
#include <vector>
|
|
#include <deque>
|
|
#include <list>
|
|
#ifdef GLIBMM_HAVE_NAMESPACE_STD
|
|
using namespace std;
|
|
#endif
|
|
],[
|
|
const int array[8] = { 0, };
|
|
vector<int> test_vector (&array[0], &array[8]);
|
|
deque<short> test_deque (test_vector.begin(), test_vector.end());
|
|
list<long> test_list (test_deque.begin(), test_deque.end());
|
|
test_vector.assign(test_list.begin(), test_list.end());
|
|
],
|
|
[gtkmm_cv_cxx_has_template_sequence_ctors="yes"],
|
|
[gtkmm_cv_cxx_has_template_sequence_ctors="no"]
|
|
)
|
|
])
|
|
|
|
if test "x${gtkmm_cv_cxx_has_template_sequence_ctors}" = "xyes"; then
|
|
{
|
|
AC_DEFINE([GLIBMM_HAVE_TEMPLATE_SEQUENCE_CTORS],[1], [Defined if the STL containers have templated sequence ctors])
|
|
}
|
|
fi
|
|
])
|
|
|
|
## GLIBMM_CXX_ALLOWS_STATIC_INLINE_NPOS()
|
|
##
|
|
## Check whether the a static member variable may be initialized inline to std::string::npos.
|
|
## The MipsPro (IRIX) compiler does not like this.
|
|
## and #define GLIBMM_HAVE_ALLOWS_STATIC_INLINE_NPOS on success.
|
|
##
|
|
AC_DEFUN([GLIBMM_CXX_ALLOWS_STATIC_INLINE_NPOS],
|
|
[
|
|
AC_REQUIRE([GLIBMM_CXX_HAS_NAMESPACE_STD])
|
|
|
|
AC_CACHE_CHECK(
|
|
[whether the compiler allows a static member variable to be initialized inline to std::string::npos],
|
|
[gtkmm_cv_cxx_has_allows_static_inline_npos],
|
|
[
|
|
AC_TRY_COMPILE(
|
|
[
|
|
#include <string>
|
|
#include <iostream>
|
|
|
|
class ustringtest
|
|
{
|
|
public:
|
|
//The MipsPro compiler (IRIX) says "The indicated constant value is not known",
|
|
//so we need to initalize the static member data elsewhere.
|
|
static const std::string::size_type ustringnpos = std::string::npos;
|
|
};
|
|
],[
|
|
std::cout << "npos=" << ustringtest::ustringnpos << std::endl;
|
|
],
|
|
[gtkmm_cv_cxx_has_allows_static_inline_npos="yes"],
|
|
[gtkmm_cv_cxx_has_allows_static_inline_npos="no"]
|
|
)
|
|
])
|
|
|
|
if test "x${gtkmm_cv_cxx_has_allows_static_inline_npos}" = "xyes"; then
|
|
{
|
|
AC_DEFINE([GLIBMM_HAVE_ALLOWS_STATIC_INLINE_NPOS],[1], [Defined if a static member variable may be initialized inline to std::string::npos])
|
|
}
|
|
fi
|
|
])
|
|
|
|
|