919.2.19
by Monty Taylor
Added check for shared_ptr in advance of actually thinking about using it. I think this should cover all platforms we care about... but let's doublecheck. |
1 |
# We check two things: where is the memory include file, and in what |
2 |
# namespace does shared_ptr reside. |
|
3 |
# We include AC_COMPILE_IFELSE for all the combinations we've seen in the |
|
4 |
# wild: |
|
5 |
# |
|
6 |
# GCC 4.3: namespace: std:: #include <memory> |
|
7 |
# GCC 4.2: namespace: tr1:: #include <tr1/memory> |
|
8 |
# GCC 4.2: namespace: boost:: #include <boost/shared_ptr.hpp> |
|
9 |
#
|
|
10 |
# We define one of HAVE_HAVE_TR1_SHARED_PTR or HAVE_BOOST_SHARED_PTR |
|
11 |
# depending on location, and SHARED_PTR_NAMESPACE to be the namespace in |
|
12 |
# which shared_ptr is defined. |
|
13 |
#
|
|
14 |
||
15 |
AC_DEFUN([AC_CXX_SHARED_PTR],[ |
|
16 |
AC_REQUIRE([AC_CXX_CHECK_STANDARD]) |
|
17 |
AC_LANG_PUSH(C++) |
|
18 |
AC_CHECK_HEADERS(memory tr1/memory boost/shared_ptr.hpp) |
|
19 |
AC_CACHE_CHECK([the location of shared_ptr header file], |
|
20 |
[ac_cv_shared_ptr_h],[ |
|
919.2.20
by Monty Taylor
Actually add the -std=gnu++0x flag |
21 |
for namespace in std tr1 std::tr1 boost
|
919.2.19
by Monty Taylor
Added check for shared_ptr in advance of actually thinking about using it. I think this should cover all platforms we care about... but let's doublecheck. |
22 |
do
|
23 |
AC_COMPILE_IFELSE(
|
|
24 |
[AC_LANG_PROGRAM([[
|
|
919.2.21
by Monty Taylor
Fixes for c++0x and shared_ptr support for Solaris. |
25 |
#if defined(HAVE_MEMORY)
|
26 |
# include <memory>
|
|
27 |
#endif
|
|
28 |
#if defined(HAVE_TR1_MEMORY)
|
|
29 |
# include <tr1/memory>
|
|
30 |
#endif
|
|
31 |
#if defined(HAVE_BOOST_SHARED_PTR_HPP)
|
|
32 |
# include <boost/shared_ptr.hpp>
|
|
919.2.19
by Monty Taylor
Added check for shared_ptr in advance of actually thinking about using it. I think this should cover all platforms we care about... but let's doublecheck. |
33 |
#endif
|
34 |
#include <string>
|
|
35 |
||
36 |
using $namespace::shared_ptr;
|
|
37 |
using namespace std;
|
|
38 |
]],[[ |
|
39 |
shared_ptr<string> test_ptr(new string("test string"));
|
|
40 |
]])], |
|
41 |
[ |
|
42 |
ac_cv_shared_ptr_namespace="${namespace}"
|
|
43 |
break
|
|
44 |
],[ac_cv_shared_ptr_namespace=no]) |
|
45 |
done |
|
46 |
]) |
|
47 |
if test "$ac_cv_shared_ptr_namespace" = no |
|
48 |
then |
|
923.2.5
by Monty Taylor
Turned shared_ptr check into a warning. Want to leave the check and report in so we can start to figure out where this will or won't be a problem moving forward. |
49 |
AC_MSG_WARN([a usable shared_ptr implementation was not found. Let someone know what your platform is.]) |
50 |
dnl AC_MSG_WARN([a usable shared_ptr implementation is required. If you are on Solaris, please install boost, either via pkg install boost, or pkg-get -i boost. If you are elsewhere, please file a bug]) |
|
919.2.19
by Monty Taylor
Added check for shared_ptr in advance of actually thinking about using it. I think this should cover all platforms we care about... but let's doublecheck. |
51 |
fi |
52 |
AC_DEFINE_UNQUOTED([SHARED_PTR_NAMESPACE], |
|
53 |
${ac_cv_shared_ptr_namespace}, |
|
54 |
[The namespace in which SHARED_PTR can be found]) |
|
55 |
AC_LANG_POP() |
|
56 |
]) |