481.1.9
by Monty Taylor
Added autoconf tests for location of cstdint and cinttypes. Use those in C++ programs now, so that we don't have to define _STDC_LIMIT_MACROS, etc by hand. Stop, in fact, defining those by hand. |
1 |
# We check two things: where the include file is for hash_map, and |
2 |
# what namespace hash_map lives in within that include file. We |
|
942.1.1
by Monty Taylor
Started transitioning from AC_TRY_COMPILE to AC_COMPILE_IFELSE |
3 |
# include AC_COMPILE_IFELSE for all the combinations we've seen in the |
481.1.9
by Monty Taylor
Added autoconf tests for location of cstdint and cinttypes. Use those in C++ programs now, so that we don't have to define _STDC_LIMIT_MACROS, etc by hand. Stop, in fact, defining those by hand. |
4 |
# wild. We define one of HAVE_HASH_MAP or HAVE_EXT_HASH_MAP depending
|
5 |
# on location, and HASH_NAMESPACE to be the namespace hash_map is
|
|
6 |
# defined in.
|
|
7 |
#
|
|
8 |
# Ideally we'd use AC_CACHE_CHECK, but that only lets us store one value |
|
9 |
# at a time, and we need to store two (filename and namespace). |
|
10 |
# prints messages itself, so we have to do the message-printing ourselves |
|
11 |
# via AC_MSG_CHECKING + AC_MSG_RESULT. (TODO(csilvers): can we cache?) |
|
12 |
||
1192.3.28
by Monty Taylor
pandora-build v0.72 - Moved remaining hard-coded tests into pandora-build |
13 |
AC_DEFUN([PANDORA_CXX_STL_HASH], |
481.1.9
by Monty Taylor
Added autoconf tests for location of cstdint and cinttypes. Use those in C++ programs now, so that we don't have to define _STDC_LIMIT_MACROS, etc by hand. Stop, in fact, defining those by hand. |
14 |
[AC_MSG_CHECKING(the location of hash_map) |
779.2.11
by Monty Taylor
General build cleanup - removed cruft, removed depreated checks. |
15 |
AC_LANG_PUSH(C++)
|
481.1.9
by Monty Taylor
Added autoconf tests for location of cstdint and cinttypes. Use those in C++ programs now, so that we don't have to define _STDC_LIMIT_MACROS, etc by hand. Stop, in fact, defining those by hand. |
16 |
ac_cv_cxx_hash_map=""
|
1126.15.1
by Monty Taylor
Updated stl_hash to not bother checking boost and to check for unordered_map. |
17 |
for location in "" "ext/" "tr1/" ; do
|
481.1.9
by Monty Taylor
Added autoconf tests for location of cstdint and cinttypes. Use those in C++ programs now, so that we don't have to define _STDC_LIMIT_MACROS, etc by hand. Stop, in fact, defining those by hand. |
18 |
for namespace in __gnu_cxx "" std stdext; do
|
1126.15.1
by Monty Taylor
Updated stl_hash to not bother checking boost and to check for unordered_map. |
19 |
for classprefix in unordered hash; do
|
20 |
if test -z "$ac_cv_cxx_hash_map"; then
|
|
21 |
AC_COMPILE_IFELSE(
|
|
22 |
[AC_LANG_PROGRAM([[#include <${location}${classprefix}_map>]], |
|
23 |
[[${namespace}::${classprefix}_map<int, int> t]])], |
|
24 |
[ac_cv_cxx_hash_map="<${location}${classprefix}_map>"; |
|
25 |
ac_cv_cxx_hash_set="<${location}${classprefix}_set>";
|
|
26 |
ac_cv_cxx_hash_namespace="$namespace";
|
|
27 |
ac_cv_cxx_hash_map_class="${classprefix}_map";
|
|
28 |
ac_cv_cxx_hash_set_class="${classprefix}_set"]) |
|
29 |
||
30 |
fi |
|
31 |
done |
|
481.1.9
by Monty Taylor
Added autoconf tests for location of cstdint and cinttypes. Use those in C++ programs now, so that we don't have to define _STDC_LIMIT_MACROS, etc by hand. Stop, in fact, defining those by hand. |
32 |
done |
33 |
done |
|
1126.15.1
by Monty Taylor
Updated stl_hash to not bother checking boost and to check for unordered_map. |
34 |
|
481.1.9
by Monty Taylor
Added autoconf tests for location of cstdint and cinttypes. Use those in C++ programs now, so that we don't have to define _STDC_LIMIT_MACROS, etc by hand. Stop, in fact, defining those by hand. |
35 |
if test -n "$ac_cv_cxx_hash_map"; then |
36 |
AC_DEFINE(HAVE_HASH_MAP, 1, [define if the compiler has hash_map]) |
|
37 |
AC_DEFINE(HAVE_HASH_SET, 1, [define if the compiler has hash_set]) |
|
38 |
AC_DEFINE_UNQUOTED(HASH_MAP_H,$ac_cv_cxx_hash_map, |
|
39 |
[the location of <hash_map>]) |
|
40 |
AC_DEFINE_UNQUOTED(HASH_SET_H,$ac_cv_cxx_hash_set, |
|
41 |
[the location of <hash_set>]) |
|
42 |
AC_DEFINE_UNQUOTED(HASH_NAMESPACE,$ac_cv_cxx_hash_namespace, |
|
43 |
[the namespace of hash_map/hash_set]) |
|
1126.15.1
by Monty Taylor
Updated stl_hash to not bother checking boost and to check for unordered_map. |
44 |
AC_DEFINE_UNQUOTED(HASH_MAP_CLASS,$ac_cv_cxx_hash_map_class, |
45 |
[the classname of hash_map]) |
|
46 |
AC_DEFINE_UNQUOTED(HASH_SET_CLASS,$ac_cv_cxx_hash_set_class, |
|
47 |
[the classname of hash_set]) |
|
481.1.9
by Monty Taylor
Added autoconf tests for location of cstdint and cinttypes. Use those in C++ programs now, so that we don't have to define _STDC_LIMIT_MACROS, etc by hand. Stop, in fact, defining those by hand. |
48 |
AC_MSG_RESULT([$ac_cv_cxx_hash_map]) |
49 |
else |
|
50 |
AC_MSG_RESULT() |
|
51 |
AC_MSG_WARN([could not find an STL hash_map]) |
|
52 |
fi |
|
1126.15.1
by Monty Taylor
Updated stl_hash to not bother checking boost and to check for unordered_map. |
53 |
AC_CACHE_CHECK( |
1223.3.3
by Monty Taylor
Account for older hash_maps |
54 |
[whether hash_map has rehash method], |
55 |
[ac_cv_hash_map_has_rehash], |
|
56 |
[AC_COMPILE_IFELSE( |
|
57 |
[AC_LANG_PROGRAM([[
|
|
58 |
#include HASH_MAP_H
|
|
59 |
using namespace HASH_NAMESPACE;
|
|
60 |
]],[[ |
|
61 |
HASH_MAP_CLASS<int, int> test_hash;
|
|
62 |
test_hash.rehash(100);
|
|
63 |
]])], |
|
64 |
[ac_cv_hash_map_has_rehash=yes], |
|
65 |
[ac_cv_hash_map_has_rehash=no])]) |
|
66 |
AS_IF([test $ac_cv_hash_map_has_rehash = yes],[ |
|
67 |
AC_DEFINE(HASH_MAP_HAS_REHASH, 1, [if hash_map<> hash rehash method]) |
|
68 |
]) |
|
69 |
AC_CACHE_CHECK( |
|
70 |
[whether hash_map has resize method], |
|
71 |
[ac_cv_hash_map_has_resize], |
|
72 |
[AC_COMPILE_IFELSE( |
|
73 |
[AC_LANG_PROGRAM([[
|
|
74 |
#include HASH_MAP_H
|
|
75 |
using namespace HASH_NAMESPACE;
|
|
76 |
]],[[ |
|
77 |
HASH_MAP_CLASS<int, int> test_hash;
|
|
78 |
test_hash.resize(100);
|
|
79 |
]])], |
|
80 |
[ac_cv_hash_map_has_resize=yes], |
|
81 |
[ac_cv_hash_map_has_resize=no])]) |
|
82 |
AS_IF([test $ac_cv_hash_map_has_resize = yes],[ |
|
83 |
AC_DEFINE(HASH_MAP_HAS_RESIZE, 1, [if hash_map<> hash resize method]) |
|
84 |
]) |
|
85 |
AC_CACHE_CHECK( |
|
1126.15.1
by Monty Taylor
Updated stl_hash to not bother checking boost and to check for unordered_map. |
86 |
[whether to redefine hash<string>], |
87 |
[ac_cv_redefine_hash_string], |
|
88 |
[AC_COMPILE_IFELSE( |
|
89 |
[AC_LANG_PROGRAM([[
|
|
90 |
#include HASH_SET_H
|
|
91 |
#include <string>
|
|
92 |
using namespace HASH_NAMESPACE;
|
|
93 |
using namespace std;
|
|
94 |
]],[[ |
|
95 |
string teststr("test");
|
|
96 |
HASH_SET_CLASS<string> test_hash;
|
|
97 |
HASH_SET_CLASS<string>::iterator iter= test_hash.find(teststr);
|
|
98 |
if (iter != test_hash.end())
|
|
99 |
return 1;
|
|
100 |
]])], |
|
101 |
[ac_cv_redefine_hash_string=no], |
|
102 |
[ac_cv_redefine_hash_string=yes])]) |
|
103 |
AS_IF([test $ac_cv_redefine_hash_string = yes],[ |
|
104 |
AC_DEFINE(REDEFINE_HASH_STRING, 1, [if hash<string> needs to be defined]) |
|
105 |
]) |
|
106 |
AC_LANG_POP() |
|
481.1.9
by Monty Taylor
Added autoconf tests for location of cstdint and cinttypes. Use those in C++ programs now, so that we don't have to define _STDC_LIMIT_MACROS, etc by hand. Stop, in fact, defining those by hand. |
107 |
]) |