google_hash 0.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (85) hide show
  1. data/README +21 -0
  2. data/Rakefile +11 -0
  3. data/VERSION +1 -0
  4. data/ext/extconf.rb +15 -0
  5. data/ext/go.cpp +109 -0
  6. data/ext/sparsehash-1.5.2/AUTHORS +2 -0
  7. data/ext/sparsehash-1.5.2/COPYING +28 -0
  8. data/ext/sparsehash-1.5.2/ChangeLog +167 -0
  9. data/ext/sparsehash-1.5.2/INSTALL +236 -0
  10. data/ext/sparsehash-1.5.2/Makefile.am +157 -0
  11. data/ext/sparsehash-1.5.2/Makefile.in +1019 -0
  12. data/ext/sparsehash-1.5.2/NEWS +0 -0
  13. data/ext/sparsehash-1.5.2/README +149 -0
  14. data/ext/sparsehash-1.5.2/README.windows +25 -0
  15. data/ext/sparsehash-1.5.2/TODO +28 -0
  16. data/ext/sparsehash-1.5.2/aclocal.m4 +868 -0
  17. data/ext/sparsehash-1.5.2/compile +99 -0
  18. data/ext/sparsehash-1.5.2/config.guess +1516 -0
  19. data/ext/sparsehash-1.5.2/config.sub +1626 -0
  20. data/ext/sparsehash-1.5.2/configure +8054 -0
  21. data/ext/sparsehash-1.5.2/configure.ac +74 -0
  22. data/ext/sparsehash-1.5.2/depcomp +530 -0
  23. data/ext/sparsehash-1.5.2/doc/dense_hash_map.html +1591 -0
  24. data/ext/sparsehash-1.5.2/doc/dense_hash_set.html +1445 -0
  25. data/ext/sparsehash-1.5.2/doc/designstyle.css +115 -0
  26. data/ext/sparsehash-1.5.2/doc/implementation.html +365 -0
  27. data/ext/sparsehash-1.5.2/doc/index.html +69 -0
  28. data/ext/sparsehash-1.5.2/doc/performance.html +96 -0
  29. data/ext/sparsehash-1.5.2/doc/sparse_hash_map.html +1527 -0
  30. data/ext/sparsehash-1.5.2/doc/sparse_hash_set.html +1376 -0
  31. data/ext/sparsehash-1.5.2/doc/sparsetable.html +1393 -0
  32. data/ext/sparsehash-1.5.2/experimental/Makefile +9 -0
  33. data/ext/sparsehash-1.5.2/experimental/README +14 -0
  34. data/ext/sparsehash-1.5.2/experimental/example.c +54 -0
  35. data/ext/sparsehash-1.5.2/experimental/libchash.c +1537 -0
  36. data/ext/sparsehash-1.5.2/experimental/libchash.h +252 -0
  37. data/ext/sparsehash-1.5.2/google-sparsehash.sln +47 -0
  38. data/ext/sparsehash-1.5.2/install-sh +323 -0
  39. data/ext/sparsehash-1.5.2/m4/acx_pthread.m4 +363 -0
  40. data/ext/sparsehash-1.5.2/m4/google_namespace.m4 +42 -0
  41. data/ext/sparsehash-1.5.2/m4/namespaces.m4 +15 -0
  42. data/ext/sparsehash-1.5.2/m4/stl_hash.m4 +70 -0
  43. data/ext/sparsehash-1.5.2/m4/stl_hash_fun.m4 +36 -0
  44. data/ext/sparsehash-1.5.2/m4/stl_namespace.m4 +25 -0
  45. data/ext/sparsehash-1.5.2/missing +360 -0
  46. data/ext/sparsehash-1.5.2/mkinstalldirs +158 -0
  47. data/ext/sparsehash-1.5.2/packages/deb.sh +74 -0
  48. data/ext/sparsehash-1.5.2/packages/deb/README +7 -0
  49. data/ext/sparsehash-1.5.2/packages/deb/changelog +107 -0
  50. data/ext/sparsehash-1.5.2/packages/deb/compat +1 -0
  51. data/ext/sparsehash-1.5.2/packages/deb/control +17 -0
  52. data/ext/sparsehash-1.5.2/packages/deb/copyright +35 -0
  53. data/ext/sparsehash-1.5.2/packages/deb/docs +16 -0
  54. data/ext/sparsehash-1.5.2/packages/deb/rules +117 -0
  55. data/ext/sparsehash-1.5.2/packages/deb/sparsehash.dirs +2 -0
  56. data/ext/sparsehash-1.5.2/packages/deb/sparsehash.install +2 -0
  57. data/ext/sparsehash-1.5.2/packages/rpm.sh +86 -0
  58. data/ext/sparsehash-1.5.2/packages/rpm/rpm.spec +61 -0
  59. data/ext/sparsehash-1.5.2/src/config.h.in +131 -0
  60. data/ext/sparsehash-1.5.2/src/config.h.include +23 -0
  61. data/ext/sparsehash-1.5.2/src/google/dense_hash_map +310 -0
  62. data/ext/sparsehash-1.5.2/src/google/dense_hash_set +287 -0
  63. data/ext/sparsehash-1.5.2/src/google/sparse_hash_map +294 -0
  64. data/ext/sparsehash-1.5.2/src/google/sparse_hash_set +275 -0
  65. data/ext/sparsehash-1.5.2/src/google/sparsehash/densehashtable.h +1062 -0
  66. data/ext/sparsehash-1.5.2/src/google/sparsehash/sparsehashtable.h +1015 -0
  67. data/ext/sparsehash-1.5.2/src/google/sparsetable +1468 -0
  68. data/ext/sparsehash-1.5.2/src/google/type_traits.h +250 -0
  69. data/ext/sparsehash-1.5.2/src/hashtable_unittest.cc +1375 -0
  70. data/ext/sparsehash-1.5.2/src/simple_test.cc +103 -0
  71. data/ext/sparsehash-1.5.2/src/sparsetable_unittest.cc +696 -0
  72. data/ext/sparsehash-1.5.2/src/time_hash_map.cc +488 -0
  73. data/ext/sparsehash-1.5.2/src/type_traits_unittest.cc +492 -0
  74. data/ext/sparsehash-1.5.2/src/windows/config.h +149 -0
  75. data/ext/sparsehash-1.5.2/src/windows/google/sparsehash/sparseconfig.h +32 -0
  76. data/ext/sparsehash-1.5.2/src/windows/port.cc +63 -0
  77. data/ext/sparsehash-1.5.2/src/windows/port.h +81 -0
  78. data/ext/sparsehash-1.5.2/src/words +8944 -0
  79. data/ext/sparsehash-1.5.2/vsprojects/hashtable_unittest/hashtable_unittest.vcproj +187 -0
  80. data/ext/sparsehash-1.5.2/vsprojects/sparsetable_unittest/sparsetable_unittest.vcproj +172 -0
  81. data/ext/sparsehash-1.5.2/vsprojects/time_hash_map/time_hash_map.vcproj +187 -0
  82. data/ext/sparsehash-1.5.2/vsprojects/type_traits_unittest/type_traits_unittest.vcproj +169 -0
  83. data/ext/test.rb +10 -0
  84. data/test/spec.go +70 -0
  85. metadata +147 -0
File without changes
@@ -0,0 +1,149 @@
1
+ This directory contains several hash-map implementations, similar in
2
+ API to SGI's hash_map class, but with different performance
3
+ characteristics. sparse_hash_map uses very little space overhead, 1-2
4
+ bits per entry. dense_hash_map is very fast, particulary on lookup.
5
+ (sparse_hash_set and dense_hash_set are the set versions of these
6
+ routines.) On the other hand, these classes have requirements that
7
+ may not make them appropriate for all applications.
8
+
9
+ All these implementation use a hashtable with internal quadratic
10
+ probing. This method is space-efficient -- there is no pointer
11
+ overhead -- and time-efficient for good hash functions.
12
+
13
+ COMPILING
14
+ ---------
15
+ To compile test applications with these classes, run ./configure
16
+ followed by make. To install these header files on your system, run
17
+ 'make install'. (On Windows, the instructions are different; see
18
+ README.windows.) See INSTALL for more details.
19
+
20
+ This code should work on any modern C++ system. It has been tested on
21
+ Linux (Ubuntu, Fedora, RedHat, Debian), Solaris 10 x86, FreeBSD 6.0,
22
+ OS X 10.3 and 10.4, and Windows under both VC++7 and VC++8.
23
+
24
+ USING
25
+ -----
26
+ See the html files in the doc directory for small example programs
27
+ that use these classes. It's enough to just include the header file:
28
+
29
+ #include <google/sparse_hash_map> // or sparse_hash_set, dense_hash_map, ...
30
+ google::sparse_hash_set<int, int> number_mapper;
31
+
32
+ and use the class the way you would other hash-map implementations.
33
+ (Though see "API" below for caveats.)
34
+
35
+ By default (you can change it via a flag to ./configure), these hash
36
+ implementations are defined in the google namespace.
37
+
38
+ API
39
+ ---
40
+ The API for sparse_hash_map, dense_hash_map, sparse_hash_set, and
41
+ dense_hash_set, are a superset of the API of SGI's hash_map class.
42
+ See doc/sparse_hash_map.html, et al., for more information about the
43
+ API.
44
+
45
+ The usage of these classes differ from SGI's hash_map, and other
46
+ hashtable implementations, in the following major ways:
47
+
48
+ 1) dense_hash_map requires you to set aside one key value as the
49
+ 'empty bucket' value, set via the set_empty_key() method. This
50
+ *MUST* be called before you can use the dense_hash_map. It is
51
+ illegal to insert any elements into a dense_hash_map whose key is
52
+ equal to the empty-key.
53
+
54
+ 2) For both dense_hash_map and sparse_hash_map, if you wish to delete
55
+ elements from the hashtable, you must set aside a key value as the
56
+ 'deleted bucket' value, set via the set_deleted_key() method. If
57
+ your hash-map is insert-only, there is no need to call this
58
+ method. If you call set_deleted_key(), it is illegal to insert any
59
+ elements into a dense_hash_map or sparse_hash_map whose key is
60
+ equal to the deleted-key.
61
+
62
+ 3) These hash-map implementation support I/O. See below.
63
+
64
+ There are also some smaller differences:
65
+
66
+ 1) The constructor takes an optional argument that specifies the
67
+ number of elements you expect to insert into the hashtable. This
68
+ differs from SGI's hash_map implementation, which takes an optional
69
+ number of buckets.
70
+
71
+ 2) erase() does not immediately reclaim memory. As a consequence,
72
+ erase() does not invalidate any iterators, making loops like this
73
+ correct:
74
+ for (it = ht.begin(); it != ht.end(); ++it)
75
+ if (...) ht.erase(it);
76
+ As another consequence, a series of erase() calls can leave your
77
+ hashtable using more memory than it needs to. The hashtable will
78
+ automatically compact() at the next call to insert(), but to
79
+ manually compact a hashtable, you can call
80
+ ht.resize(0)
81
+
82
+ 3) While sparse_hash_map et al. accept an Allocator template argument,
83
+ they ignore it. They use malloc() and free() for all memory
84
+ allocations.
85
+
86
+ 4) sparse_hash_map et al. do not use exceptions.
87
+
88
+ I/O
89
+ ---
90
+ In addition to the normal hash-map operations, sparse_hash_map can
91
+ read and write hashtables to disk. (dense_hash_map also has the API,
92
+ but it has not yet been implemented, and writes will always fail.)
93
+
94
+ In the simplest case, writing a hashtable is as easy as calling two
95
+ methods on the hashtable:
96
+ ht.write_metadata(fp);
97
+ ht.write_nopointer_data(fp);
98
+
99
+ Reading in this data is equally simple:
100
+ google::sparse_hash_map<...> ht;
101
+ ht.read_metadata(fp);
102
+ ht.read_nopointer_data(fp);
103
+
104
+ The above is sufficient if the key and value do not contain any
105
+ pointers: they are basic C types or agglomorations of basic C types.
106
+ If the key and/or value do contain pointers, you can still store the
107
+ hashtable by replacing write_nopointer_data() with a custom writing
108
+ routine. See sparse_hash_map.html et al. for more information.
109
+
110
+ SPARSETABLE
111
+ -----------
112
+ In addition to the hash-map and hash-set classes, this package also
113
+ provides sparsetable.h, an array implementation that uses space
114
+ proportional to the number of elements in the array, rather than the
115
+ maximum element index. It uses very little space overhead: 1 bit per
116
+ entry. See doc/sparsetable.html for the API.
117
+
118
+ RESOURCE USAGE
119
+ --------------
120
+ * sparse_hash_map has memory overhead of about 2 bits per hash-map
121
+ entry.
122
+ * dense_hash_map has a factor of 2-3 memory overhead: if your
123
+ hashtable data takes X bytes, dense_hash_map will use 3X-4X memory
124
+ total.
125
+
126
+ Hashtables tend to double in size when resizing, creating an
127
+ additional 50% space overhead. dense_hash_map does in fact have a
128
+ significant "high water mark" memory use requirement.
129
+ sparse_hash_map, however, is written to need very little space
130
+ overhead when resizing: only a few bits per hashtable entry.
131
+
132
+ PERFORMANCE
133
+ -----------
134
+ You can compile and run the included file time_hash_map.cc to examine
135
+ the performance of sparse_hash_map, dense_hash_map, and your native
136
+ hash_map implementation on your system. One test against the
137
+ SGI hash_map implementation gave the following timing information for
138
+ a simple find() call:
139
+ SGI hash_map: 22 ns
140
+ dense_hash_map: 13 ns
141
+ sparse_hash_map: 117 ns
142
+ SGI map: 113 ns
143
+
144
+ See doc/performance.html for more detailed charts on resource usage
145
+ and performance data.
146
+
147
+ ---
148
+ 16 March 2005
149
+ (Last updated: 20 March 2007)
@@ -0,0 +1,25 @@
1
+ This project has been ported to Windows. A working solution file
2
+ exists in this directory:
3
+ google-sparsehash.sln
4
+
5
+ You can load this solution file into either VC++ 7.1 (Visual Studio
6
+ 2003) or VC++ 8.0 (Visual Studio 2005) -- in the latter case, it will
7
+ automatically convert the files to the latest format for you.
8
+
9
+ When you build the solution, it will create a number of
10
+ unittests,which you can run by hand (or, more easily, under the Visual
11
+ Studio debugger) to make sure everything is working properly on your
12
+ system. The binaries will end up in a directory called "debug" or
13
+ "release" in the top-level directory (next to the .sln file).
14
+
15
+ Note that these systems are set to build in Debug mode by default.
16
+ You may want to change them to Release mode.
17
+
18
+ I have little experience with Windows programming, so there may be
19
+ better ways to set this up than I've done! If you run across any
20
+ problems, please post to the google-sparsehash Google Group, or report
21
+ them on the google-sparsehash Google Code site:
22
+ http://groups.google.com/group/google-sparsehash
23
+ http://code.google.com/p/google-sparsehash/issues/list
24
+
25
+ -- craig
@@ -0,0 +1,28 @@
1
+ 1) TODO: I/O implementation in densehashtable.h
2
+
3
+ 2) TODO: document SPARSEHASH_STAT_UPDATE macro, and also macros that
4
+ tweak performance. Perhaps add support to these to the API?
5
+
6
+ 3) TODO: support exceptions?
7
+
8
+ 4) BUG: sparsetable's operator[] doesn't work well with printf: you
9
+ need to explicitly cast the result to value_type to print it. (It
10
+ works fine with streams.)
11
+
12
+ 5) TODO: consider rewriting dense_hash_map to use a 'groups' scheme,
13
+ like sparsetable, but without the sparse-allocation within a
14
+ group. This makes resizing have better memory-use properties. The
15
+ downside is that probes across groups might take longer since
16
+ groups are not contiguous in memory. Making groups the same size
17
+ as a cache-line, and ensuring they're loaded on cache-line
18
+ boundaries, might help. Needs careful testing to make sure it
19
+ doesn't hurt performance.
20
+
21
+ 6) TODO: Get the C-only version of sparsehash in experimental/ ready
22
+ for prime-time.
23
+
24
+ 7) TODO: use cmake (www.cmake.org) to make it easy to isntall this on
25
+ a windows system.
26
+
27
+ ---
28
+ 28 February 2007
@@ -0,0 +1,868 @@
1
+ # generated automatically by aclocal 1.9.6 -*- Autoconf -*-
2
+
3
+ # Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
4
+ # 2005 Free Software Foundation, Inc.
5
+ # This file is free software; the Free Software Foundation
6
+ # gives unlimited permission to copy and/or distribute it,
7
+ # with or without modifications, as long as this notice is preserved.
8
+
9
+ # This program is distributed in the hope that it will be useful,
10
+ # but WITHOUT ANY WARRANTY, to the extent permitted by law; without
11
+ # even the implied warranty of MERCHANTABILITY or FITNESS FOR A
12
+ # PARTICULAR PURPOSE.
13
+
14
+ # Copyright (C) 2002, 2003, 2005 Free Software Foundation, Inc.
15
+ #
16
+ # This file is free software; the Free Software Foundation
17
+ # gives unlimited permission to copy and/or distribute it,
18
+ # with or without modifications, as long as this notice is preserved.
19
+
20
+ # AM_AUTOMAKE_VERSION(VERSION)
21
+ # ----------------------------
22
+ # Automake X.Y traces this macro to ensure aclocal.m4 has been
23
+ # generated from the m4 files accompanying Automake X.Y.
24
+ AC_DEFUN([AM_AUTOMAKE_VERSION], [am__api_version="1.9"])
25
+
26
+ # AM_SET_CURRENT_AUTOMAKE_VERSION
27
+ # -------------------------------
28
+ # Call AM_AUTOMAKE_VERSION so it can be traced.
29
+ # This function is AC_REQUIREd by AC_INIT_AUTOMAKE.
30
+ AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION],
31
+ [AM_AUTOMAKE_VERSION([1.9.6])])
32
+
33
+ # AM_AUX_DIR_EXPAND -*- Autoconf -*-
34
+
35
+ # Copyright (C) 2001, 2003, 2005 Free Software Foundation, Inc.
36
+ #
37
+ # This file is free software; the Free Software Foundation
38
+ # gives unlimited permission to copy and/or distribute it,
39
+ # with or without modifications, as long as this notice is preserved.
40
+
41
+ # For projects using AC_CONFIG_AUX_DIR([foo]), Autoconf sets
42
+ # $ac_aux_dir to `$srcdir/foo'. In other projects, it is set to
43
+ # `$srcdir', `$srcdir/..', or `$srcdir/../..'.
44
+ #
45
+ # Of course, Automake must honor this variable whenever it calls a
46
+ # tool from the auxiliary directory. The problem is that $srcdir (and
47
+ # therefore $ac_aux_dir as well) can be either absolute or relative,
48
+ # depending on how configure is run. This is pretty annoying, since
49
+ # it makes $ac_aux_dir quite unusable in subdirectories: in the top
50
+ # source directory, any form will work fine, but in subdirectories a
51
+ # relative path needs to be adjusted first.
52
+ #
53
+ # $ac_aux_dir/missing
54
+ # fails when called from a subdirectory if $ac_aux_dir is relative
55
+ # $top_srcdir/$ac_aux_dir/missing
56
+ # fails if $ac_aux_dir is absolute,
57
+ # fails when called from a subdirectory in a VPATH build with
58
+ # a relative $ac_aux_dir
59
+ #
60
+ # The reason of the latter failure is that $top_srcdir and $ac_aux_dir
61
+ # are both prefixed by $srcdir. In an in-source build this is usually
62
+ # harmless because $srcdir is `.', but things will broke when you
63
+ # start a VPATH build or use an absolute $srcdir.
64
+ #
65
+ # So we could use something similar to $top_srcdir/$ac_aux_dir/missing,
66
+ # iff we strip the leading $srcdir from $ac_aux_dir. That would be:
67
+ # am_aux_dir='\$(top_srcdir)/'`expr "$ac_aux_dir" : "$srcdir//*\(.*\)"`
68
+ # and then we would define $MISSING as
69
+ # MISSING="\${SHELL} $am_aux_dir/missing"
70
+ # This will work as long as MISSING is not called from configure, because
71
+ # unfortunately $(top_srcdir) has no meaning in configure.
72
+ # However there are other variables, like CC, which are often used in
73
+ # configure, and could therefore not use this "fixed" $ac_aux_dir.
74
+ #
75
+ # Another solution, used here, is to always expand $ac_aux_dir to an
76
+ # absolute PATH. The drawback is that using absolute paths prevent a
77
+ # configured tree to be moved without reconfiguration.
78
+
79
+ AC_DEFUN([AM_AUX_DIR_EXPAND],
80
+ [dnl Rely on autoconf to set up CDPATH properly.
81
+ AC_PREREQ([2.50])dnl
82
+ # expand $ac_aux_dir to an absolute path
83
+ am_aux_dir=`cd $ac_aux_dir && pwd`
84
+ ])
85
+
86
+ # AM_CONDITIONAL -*- Autoconf -*-
87
+
88
+ # Copyright (C) 1997, 2000, 2001, 2003, 2004, 2005
89
+ # Free Software Foundation, Inc.
90
+ #
91
+ # This file is free software; the Free Software Foundation
92
+ # gives unlimited permission to copy and/or distribute it,
93
+ # with or without modifications, as long as this notice is preserved.
94
+
95
+ # serial 7
96
+
97
+ # AM_CONDITIONAL(NAME, SHELL-CONDITION)
98
+ # -------------------------------------
99
+ # Define a conditional.
100
+ AC_DEFUN([AM_CONDITIONAL],
101
+ [AC_PREREQ(2.52)dnl
102
+ ifelse([$1], [TRUE], [AC_FATAL([$0: invalid condition: $1])],
103
+ [$1], [FALSE], [AC_FATAL([$0: invalid condition: $1])])dnl
104
+ AC_SUBST([$1_TRUE])
105
+ AC_SUBST([$1_FALSE])
106
+ if $2; then
107
+ $1_TRUE=
108
+ $1_FALSE='#'
109
+ else
110
+ $1_TRUE='#'
111
+ $1_FALSE=
112
+ fi
113
+ AC_CONFIG_COMMANDS_PRE(
114
+ [if test -z "${$1_TRUE}" && test -z "${$1_FALSE}"; then
115
+ AC_MSG_ERROR([[conditional "$1" was never defined.
116
+ Usually this means the macro was only invoked conditionally.]])
117
+ fi])])
118
+
119
+
120
+ # Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005
121
+ # Free Software Foundation, Inc.
122
+ #
123
+ # This file is free software; the Free Software Foundation
124
+ # gives unlimited permission to copy and/or distribute it,
125
+ # with or without modifications, as long as this notice is preserved.
126
+
127
+ # serial 8
128
+
129
+ # There are a few dirty hacks below to avoid letting `AC_PROG_CC' be
130
+ # written in clear, in which case automake, when reading aclocal.m4,
131
+ # will think it sees a *use*, and therefore will trigger all it's
132
+ # C support machinery. Also note that it means that autoscan, seeing
133
+ # CC etc. in the Makefile, will ask for an AC_PROG_CC use...
134
+
135
+
136
+ # _AM_DEPENDENCIES(NAME)
137
+ # ----------------------
138
+ # See how the compiler implements dependency checking.
139
+ # NAME is "CC", "CXX", "GCJ", or "OBJC".
140
+ # We try a few techniques and use that to set a single cache variable.
141
+ #
142
+ # We don't AC_REQUIRE the corresponding AC_PROG_CC since the latter was
143
+ # modified to invoke _AM_DEPENDENCIES(CC); we would have a circular
144
+ # dependency, and given that the user is not expected to run this macro,
145
+ # just rely on AC_PROG_CC.
146
+ AC_DEFUN([_AM_DEPENDENCIES],
147
+ [AC_REQUIRE([AM_SET_DEPDIR])dnl
148
+ AC_REQUIRE([AM_OUTPUT_DEPENDENCY_COMMANDS])dnl
149
+ AC_REQUIRE([AM_MAKE_INCLUDE])dnl
150
+ AC_REQUIRE([AM_DEP_TRACK])dnl
151
+
152
+ ifelse([$1], CC, [depcc="$CC" am_compiler_list=],
153
+ [$1], CXX, [depcc="$CXX" am_compiler_list=],
154
+ [$1], OBJC, [depcc="$OBJC" am_compiler_list='gcc3 gcc'],
155
+ [$1], GCJ, [depcc="$GCJ" am_compiler_list='gcc3 gcc'],
156
+ [depcc="$$1" am_compiler_list=])
157
+
158
+ AC_CACHE_CHECK([dependency style of $depcc],
159
+ [am_cv_$1_dependencies_compiler_type],
160
+ [if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then
161
+ # We make a subdir and do the tests there. Otherwise we can end up
162
+ # making bogus files that we don't know about and never remove. For
163
+ # instance it was reported that on HP-UX the gcc test will end up
164
+ # making a dummy file named `D' -- because `-MD' means `put the output
165
+ # in D'.
166
+ mkdir conftest.dir
167
+ # Copy depcomp to subdir because otherwise we won't find it if we're
168
+ # using a relative directory.
169
+ cp "$am_depcomp" conftest.dir
170
+ cd conftest.dir
171
+ # We will build objects and dependencies in a subdirectory because
172
+ # it helps to detect inapplicable dependency modes. For instance
173
+ # both Tru64's cc and ICC support -MD to output dependencies as a
174
+ # side effect of compilation, but ICC will put the dependencies in
175
+ # the current directory while Tru64 will put them in the object
176
+ # directory.
177
+ mkdir sub
178
+
179
+ am_cv_$1_dependencies_compiler_type=none
180
+ if test "$am_compiler_list" = ""; then
181
+ am_compiler_list=`sed -n ['s/^#*\([a-zA-Z0-9]*\))$/\1/p'] < ./depcomp`
182
+ fi
183
+ for depmode in $am_compiler_list; do
184
+ # Setup a source with many dependencies, because some compilers
185
+ # like to wrap large dependency lists on column 80 (with \), and
186
+ # we should not choose a depcomp mode which is confused by this.
187
+ #
188
+ # We need to recreate these files for each test, as the compiler may
189
+ # overwrite some of them when testing with obscure command lines.
190
+ # This happens at least with the AIX C compiler.
191
+ : > sub/conftest.c
192
+ for i in 1 2 3 4 5 6; do
193
+ echo '#include "conftst'$i'.h"' >> sub/conftest.c
194
+ # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with
195
+ # Solaris 8's {/usr,}/bin/sh.
196
+ touch sub/conftst$i.h
197
+ done
198
+ echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf
199
+
200
+ case $depmode in
201
+ nosideeffect)
202
+ # after this tag, mechanisms are not by side-effect, so they'll
203
+ # only be used when explicitly requested
204
+ if test "x$enable_dependency_tracking" = xyes; then
205
+ continue
206
+ else
207
+ break
208
+ fi
209
+ ;;
210
+ none) break ;;
211
+ esac
212
+ # We check with `-c' and `-o' for the sake of the "dashmstdout"
213
+ # mode. It turns out that the SunPro C++ compiler does not properly
214
+ # handle `-M -o', and we need to detect this.
215
+ if depmode=$depmode \
216
+ source=sub/conftest.c object=sub/conftest.${OBJEXT-o} \
217
+ depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \
218
+ $SHELL ./depcomp $depcc -c -o sub/conftest.${OBJEXT-o} sub/conftest.c \
219
+ >/dev/null 2>conftest.err &&
220
+ grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 &&
221
+ grep sub/conftest.${OBJEXT-o} sub/conftest.Po > /dev/null 2>&1 &&
222
+ ${MAKE-make} -s -f confmf > /dev/null 2>&1; then
223
+ # icc doesn't choke on unknown options, it will just issue warnings
224
+ # or remarks (even with -Werror). So we grep stderr for any message
225
+ # that says an option was ignored or not supported.
226
+ # When given -MP, icc 7.0 and 7.1 complain thusly:
227
+ # icc: Command line warning: ignoring option '-M'; no argument required
228
+ # The diagnosis changed in icc 8.0:
229
+ # icc: Command line remark: option '-MP' not supported
230
+ if (grep 'ignoring option' conftest.err ||
231
+ grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else
232
+ am_cv_$1_dependencies_compiler_type=$depmode
233
+ break
234
+ fi
235
+ fi
236
+ done
237
+
238
+ cd ..
239
+ rm -rf conftest.dir
240
+ else
241
+ am_cv_$1_dependencies_compiler_type=none
242
+ fi
243
+ ])
244
+ AC_SUBST([$1DEPMODE], [depmode=$am_cv_$1_dependencies_compiler_type])
245
+ AM_CONDITIONAL([am__fastdep$1], [
246
+ test "x$enable_dependency_tracking" != xno \
247
+ && test "$am_cv_$1_dependencies_compiler_type" = gcc3])
248
+ ])
249
+
250
+
251
+ # AM_SET_DEPDIR
252
+ # -------------
253
+ # Choose a directory name for dependency files.
254
+ # This macro is AC_REQUIREd in _AM_DEPENDENCIES
255
+ AC_DEFUN([AM_SET_DEPDIR],
256
+ [AC_REQUIRE([AM_SET_LEADING_DOT])dnl
257
+ AC_SUBST([DEPDIR], ["${am__leading_dot}deps"])dnl
258
+ ])
259
+
260
+
261
+ # AM_DEP_TRACK
262
+ # ------------
263
+ AC_DEFUN([AM_DEP_TRACK],
264
+ [AC_ARG_ENABLE(dependency-tracking,
265
+ [ --disable-dependency-tracking speeds up one-time build
266
+ --enable-dependency-tracking do not reject slow dependency extractors])
267
+ if test "x$enable_dependency_tracking" != xno; then
268
+ am_depcomp="$ac_aux_dir/depcomp"
269
+ AMDEPBACKSLASH='\'
270
+ fi
271
+ AM_CONDITIONAL([AMDEP], [test "x$enable_dependency_tracking" != xno])
272
+ AC_SUBST([AMDEPBACKSLASH])
273
+ ])
274
+
275
+ # Generate code to set up dependency tracking. -*- Autoconf -*-
276
+
277
+ # Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005
278
+ # Free Software Foundation, Inc.
279
+ #
280
+ # This file is free software; the Free Software Foundation
281
+ # gives unlimited permission to copy and/or distribute it,
282
+ # with or without modifications, as long as this notice is preserved.
283
+
284
+ #serial 3
285
+
286
+ # _AM_OUTPUT_DEPENDENCY_COMMANDS
287
+ # ------------------------------
288
+ AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS],
289
+ [for mf in $CONFIG_FILES; do
290
+ # Strip MF so we end up with the name of the file.
291
+ mf=`echo "$mf" | sed -e 's/:.*$//'`
292
+ # Check whether this is an Automake generated Makefile or not.
293
+ # We used to match only the files named `Makefile.in', but
294
+ # some people rename them; so instead we look at the file content.
295
+ # Grep'ing the first line is not enough: some people post-process
296
+ # each Makefile.in and add a new line on top of each file to say so.
297
+ # So let's grep whole file.
298
+ if grep '^#.*generated by automake' $mf > /dev/null 2>&1; then
299
+ dirpart=`AS_DIRNAME("$mf")`
300
+ else
301
+ continue
302
+ fi
303
+ # Extract the definition of DEPDIR, am__include, and am__quote
304
+ # from the Makefile without running `make'.
305
+ DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"`
306
+ test -z "$DEPDIR" && continue
307
+ am__include=`sed -n 's/^am__include = //p' < "$mf"`
308
+ test -z "am__include" && continue
309
+ am__quote=`sed -n 's/^am__quote = //p' < "$mf"`
310
+ # When using ansi2knr, U may be empty or an underscore; expand it
311
+ U=`sed -n 's/^U = //p' < "$mf"`
312
+ # Find all dependency output files, they are included files with
313
+ # $(DEPDIR) in their names. We invoke sed twice because it is the
314
+ # simplest approach to changing $(DEPDIR) to its actual value in the
315
+ # expansion.
316
+ for file in `sed -n "
317
+ s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \
318
+ sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do
319
+ # Make sure the directory exists.
320
+ test -f "$dirpart/$file" && continue
321
+ fdir=`AS_DIRNAME(["$file"])`
322
+ AS_MKDIR_P([$dirpart/$fdir])
323
+ # echo "creating $dirpart/$file"
324
+ echo '# dummy' > "$dirpart/$file"
325
+ done
326
+ done
327
+ ])# _AM_OUTPUT_DEPENDENCY_COMMANDS
328
+
329
+
330
+ # AM_OUTPUT_DEPENDENCY_COMMANDS
331
+ # -----------------------------
332
+ # This macro should only be invoked once -- use via AC_REQUIRE.
333
+ #
334
+ # This code is only required when automatic dependency tracking
335
+ # is enabled. FIXME. This creates each `.P' file that we will
336
+ # need in order to bootstrap the dependency handling code.
337
+ AC_DEFUN([AM_OUTPUT_DEPENDENCY_COMMANDS],
338
+ [AC_CONFIG_COMMANDS([depfiles],
339
+ [test x"$AMDEP_TRUE" != x"" || _AM_OUTPUT_DEPENDENCY_COMMANDS],
340
+ [AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir"])
341
+ ])
342
+
343
+ # Copyright (C) 1996, 1997, 2000, 2001, 2003, 2005
344
+ # Free Software Foundation, Inc.
345
+ #
346
+ # This file is free software; the Free Software Foundation
347
+ # gives unlimited permission to copy and/or distribute it,
348
+ # with or without modifications, as long as this notice is preserved.
349
+
350
+ # serial 8
351
+
352
+ # AM_CONFIG_HEADER is obsolete. It has been replaced by AC_CONFIG_HEADERS.
353
+ AU_DEFUN([AM_CONFIG_HEADER], [AC_CONFIG_HEADERS($@)])
354
+
355
+ # Do all the work for Automake. -*- Autoconf -*-
356
+
357
+ # Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005
358
+ # Free Software Foundation, Inc.
359
+ #
360
+ # This file is free software; the Free Software Foundation
361
+ # gives unlimited permission to copy and/or distribute it,
362
+ # with or without modifications, as long as this notice is preserved.
363
+
364
+ # serial 12
365
+
366
+ # This macro actually does too much. Some checks are only needed if
367
+ # your package does certain things. But this isn't really a big deal.
368
+
369
+ # AM_INIT_AUTOMAKE(PACKAGE, VERSION, [NO-DEFINE])
370
+ # AM_INIT_AUTOMAKE([OPTIONS])
371
+ # -----------------------------------------------
372
+ # The call with PACKAGE and VERSION arguments is the old style
373
+ # call (pre autoconf-2.50), which is being phased out. PACKAGE
374
+ # and VERSION should now be passed to AC_INIT and removed from
375
+ # the call to AM_INIT_AUTOMAKE.
376
+ # We support both call styles for the transition. After
377
+ # the next Automake release, Autoconf can make the AC_INIT
378
+ # arguments mandatory, and then we can depend on a new Autoconf
379
+ # release and drop the old call support.
380
+ AC_DEFUN([AM_INIT_AUTOMAKE],
381
+ [AC_PREREQ([2.58])dnl
382
+ dnl Autoconf wants to disallow AM_ names. We explicitly allow
383
+ dnl the ones we care about.
384
+ m4_pattern_allow([^AM_[A-Z]+FLAGS$])dnl
385
+ AC_REQUIRE([AM_SET_CURRENT_AUTOMAKE_VERSION])dnl
386
+ AC_REQUIRE([AC_PROG_INSTALL])dnl
387
+ # test to see if srcdir already configured
388
+ if test "`cd $srcdir && pwd`" != "`pwd`" &&
389
+ test -f $srcdir/config.status; then
390
+ AC_MSG_ERROR([source directory already configured; run "make distclean" there first])
391
+ fi
392
+
393
+ # test whether we have cygpath
394
+ if test -z "$CYGPATH_W"; then
395
+ if (cygpath --version) >/dev/null 2>/dev/null; then
396
+ CYGPATH_W='cygpath -w'
397
+ else
398
+ CYGPATH_W=echo
399
+ fi
400
+ fi
401
+ AC_SUBST([CYGPATH_W])
402
+
403
+ # Define the identity of the package.
404
+ dnl Distinguish between old-style and new-style calls.
405
+ m4_ifval([$2],
406
+ [m4_ifval([$3], [_AM_SET_OPTION([no-define])])dnl
407
+ AC_SUBST([PACKAGE], [$1])dnl
408
+ AC_SUBST([VERSION], [$2])],
409
+ [_AM_SET_OPTIONS([$1])dnl
410
+ AC_SUBST([PACKAGE], ['AC_PACKAGE_TARNAME'])dnl
411
+ AC_SUBST([VERSION], ['AC_PACKAGE_VERSION'])])dnl
412
+
413
+ _AM_IF_OPTION([no-define],,
414
+ [AC_DEFINE_UNQUOTED(PACKAGE, "$PACKAGE", [Name of package])
415
+ AC_DEFINE_UNQUOTED(VERSION, "$VERSION", [Version number of package])])dnl
416
+
417
+ # Some tools Automake needs.
418
+ AC_REQUIRE([AM_SANITY_CHECK])dnl
419
+ AC_REQUIRE([AC_ARG_PROGRAM])dnl
420
+ AM_MISSING_PROG(ACLOCAL, aclocal-${am__api_version})
421
+ AM_MISSING_PROG(AUTOCONF, autoconf)
422
+ AM_MISSING_PROG(AUTOMAKE, automake-${am__api_version})
423
+ AM_MISSING_PROG(AUTOHEADER, autoheader)
424
+ AM_MISSING_PROG(MAKEINFO, makeinfo)
425
+ AM_PROG_INSTALL_SH
426
+ AM_PROG_INSTALL_STRIP
427
+ AC_REQUIRE([AM_PROG_MKDIR_P])dnl
428
+ # We need awk for the "check" target. The system "awk" is bad on
429
+ # some platforms.
430
+ AC_REQUIRE([AC_PROG_AWK])dnl
431
+ AC_REQUIRE([AC_PROG_MAKE_SET])dnl
432
+ AC_REQUIRE([AM_SET_LEADING_DOT])dnl
433
+ _AM_IF_OPTION([tar-ustar], [_AM_PROG_TAR([ustar])],
434
+ [_AM_IF_OPTION([tar-pax], [_AM_PROG_TAR([pax])],
435
+ [_AM_PROG_TAR([v7])])])
436
+ _AM_IF_OPTION([no-dependencies],,
437
+ [AC_PROVIDE_IFELSE([AC_PROG_CC],
438
+ [_AM_DEPENDENCIES(CC)],
439
+ [define([AC_PROG_CC],
440
+ defn([AC_PROG_CC])[_AM_DEPENDENCIES(CC)])])dnl
441
+ AC_PROVIDE_IFELSE([AC_PROG_CXX],
442
+ [_AM_DEPENDENCIES(CXX)],
443
+ [define([AC_PROG_CXX],
444
+ defn([AC_PROG_CXX])[_AM_DEPENDENCIES(CXX)])])dnl
445
+ ])
446
+ ])
447
+
448
+
449
+ # When config.status generates a header, we must update the stamp-h file.
450
+ # This file resides in the same directory as the config header
451
+ # that is generated. The stamp files are numbered to have different names.
452
+
453
+ # Autoconf calls _AC_AM_CONFIG_HEADER_HOOK (when defined) in the
454
+ # loop where config.status creates the headers, so we can generate
455
+ # our stamp files there.
456
+ AC_DEFUN([_AC_AM_CONFIG_HEADER_HOOK],
457
+ [# Compute $1's index in $config_headers.
458
+ _am_stamp_count=1
459
+ for _am_header in $config_headers :; do
460
+ case $_am_header in
461
+ $1 | $1:* )
462
+ break ;;
463
+ * )
464
+ _am_stamp_count=`expr $_am_stamp_count + 1` ;;
465
+ esac
466
+ done
467
+ echo "timestamp for $1" >`AS_DIRNAME([$1])`/stamp-h[]$_am_stamp_count])
468
+
469
+ # Copyright (C) 2001, 2003, 2005 Free Software Foundation, Inc.
470
+ #
471
+ # This file is free software; the Free Software Foundation
472
+ # gives unlimited permission to copy and/or distribute it,
473
+ # with or without modifications, as long as this notice is preserved.
474
+
475
+ # AM_PROG_INSTALL_SH
476
+ # ------------------
477
+ # Define $install_sh.
478
+ AC_DEFUN([AM_PROG_INSTALL_SH],
479
+ [AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl
480
+ install_sh=${install_sh-"$am_aux_dir/install-sh"}
481
+ AC_SUBST(install_sh)])
482
+
483
+ # Copyright (C) 2003, 2005 Free Software Foundation, Inc.
484
+ #
485
+ # This file is free software; the Free Software Foundation
486
+ # gives unlimited permission to copy and/or distribute it,
487
+ # with or without modifications, as long as this notice is preserved.
488
+
489
+ # serial 2
490
+
491
+ # Check whether the underlying file-system supports filenames
492
+ # with a leading dot. For instance MS-DOS doesn't.
493
+ AC_DEFUN([AM_SET_LEADING_DOT],
494
+ [rm -rf .tst 2>/dev/null
495
+ mkdir .tst 2>/dev/null
496
+ if test -d .tst; then
497
+ am__leading_dot=.
498
+ else
499
+ am__leading_dot=_
500
+ fi
501
+ rmdir .tst 2>/dev/null
502
+ AC_SUBST([am__leading_dot])])
503
+
504
+ # Check to see how 'make' treats includes. -*- Autoconf -*-
505
+
506
+ # Copyright (C) 2001, 2002, 2003, 2005 Free Software Foundation, Inc.
507
+ #
508
+ # This file is free software; the Free Software Foundation
509
+ # gives unlimited permission to copy and/or distribute it,
510
+ # with or without modifications, as long as this notice is preserved.
511
+
512
+ # serial 3
513
+
514
+ # AM_MAKE_INCLUDE()
515
+ # -----------------
516
+ # Check to see how make treats includes.
517
+ AC_DEFUN([AM_MAKE_INCLUDE],
518
+ [am_make=${MAKE-make}
519
+ cat > confinc << 'END'
520
+ am__doit:
521
+ @echo done
522
+ .PHONY: am__doit
523
+ END
524
+ # If we don't find an include directive, just comment out the code.
525
+ AC_MSG_CHECKING([for style of include used by $am_make])
526
+ am__include="#"
527
+ am__quote=
528
+ _am_result=none
529
+ # First try GNU make style include.
530
+ echo "include confinc" > confmf
531
+ # We grep out `Entering directory' and `Leaving directory'
532
+ # messages which can occur if `w' ends up in MAKEFLAGS.
533
+ # In particular we don't look at `^make:' because GNU make might
534
+ # be invoked under some other name (usually "gmake"), in which
535
+ # case it prints its new name instead of `make'.
536
+ if test "`$am_make -s -f confmf 2> /dev/null | grep -v 'ing directory'`" = "done"; then
537
+ am__include=include
538
+ am__quote=
539
+ _am_result=GNU
540
+ fi
541
+ # Now try BSD make style include.
542
+ if test "$am__include" = "#"; then
543
+ echo '.include "confinc"' > confmf
544
+ if test "`$am_make -s -f confmf 2> /dev/null`" = "done"; then
545
+ am__include=.include
546
+ am__quote="\""
547
+ _am_result=BSD
548
+ fi
549
+ fi
550
+ AC_SUBST([am__include])
551
+ AC_SUBST([am__quote])
552
+ AC_MSG_RESULT([$_am_result])
553
+ rm -f confinc confmf
554
+ ])
555
+
556
+ # Fake the existence of programs that GNU maintainers use. -*- Autoconf -*-
557
+
558
+ # Copyright (C) 1997, 1999, 2000, 2001, 2003, 2005
559
+ # Free Software Foundation, Inc.
560
+ #
561
+ # This file is free software; the Free Software Foundation
562
+ # gives unlimited permission to copy and/or distribute it,
563
+ # with or without modifications, as long as this notice is preserved.
564
+
565
+ # serial 4
566
+
567
+ # AM_MISSING_PROG(NAME, PROGRAM)
568
+ # ------------------------------
569
+ AC_DEFUN([AM_MISSING_PROG],
570
+ [AC_REQUIRE([AM_MISSING_HAS_RUN])
571
+ $1=${$1-"${am_missing_run}$2"}
572
+ AC_SUBST($1)])
573
+
574
+
575
+ # AM_MISSING_HAS_RUN
576
+ # ------------------
577
+ # Define MISSING if not defined so far and test if it supports --run.
578
+ # If it does, set am_missing_run to use it, otherwise, to nothing.
579
+ AC_DEFUN([AM_MISSING_HAS_RUN],
580
+ [AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl
581
+ test x"${MISSING+set}" = xset || MISSING="\${SHELL} $am_aux_dir/missing"
582
+ # Use eval to expand $SHELL
583
+ if eval "$MISSING --run true"; then
584
+ am_missing_run="$MISSING --run "
585
+ else
586
+ am_missing_run=
587
+ AC_MSG_WARN([`missing' script is too old or missing])
588
+ fi
589
+ ])
590
+
591
+ # Copyright (C) 2003, 2004, 2005 Free Software Foundation, Inc.
592
+ #
593
+ # This file is free software; the Free Software Foundation
594
+ # gives unlimited permission to copy and/or distribute it,
595
+ # with or without modifications, as long as this notice is preserved.
596
+
597
+ # AM_PROG_MKDIR_P
598
+ # ---------------
599
+ # Check whether `mkdir -p' is supported, fallback to mkinstalldirs otherwise.
600
+ #
601
+ # Automake 1.8 used `mkdir -m 0755 -p --' to ensure that directories
602
+ # created by `make install' are always world readable, even if the
603
+ # installer happens to have an overly restrictive umask (e.g. 077).
604
+ # This was a mistake. There are at least two reasons why we must not
605
+ # use `-m 0755':
606
+ # - it causes special bits like SGID to be ignored,
607
+ # - it may be too restrictive (some setups expect 775 directories).
608
+ #
609
+ # Do not use -m 0755 and let people choose whatever they expect by
610
+ # setting umask.
611
+ #
612
+ # We cannot accept any implementation of `mkdir' that recognizes `-p'.
613
+ # Some implementations (such as Solaris 8's) are not thread-safe: if a
614
+ # parallel make tries to run `mkdir -p a/b' and `mkdir -p a/c'
615
+ # concurrently, both version can detect that a/ is missing, but only
616
+ # one can create it and the other will error out. Consequently we
617
+ # restrict ourselves to GNU make (using the --version option ensures
618
+ # this.)
619
+ AC_DEFUN([AM_PROG_MKDIR_P],
620
+ [if mkdir -p --version . >/dev/null 2>&1 && test ! -d ./--version; then
621
+ # We used to keeping the `.' as first argument, in order to
622
+ # allow $(mkdir_p) to be used without argument. As in
623
+ # $(mkdir_p) $(somedir)
624
+ # where $(somedir) is conditionally defined. However this is wrong
625
+ # for two reasons:
626
+ # 1. if the package is installed by a user who cannot write `.'
627
+ # make install will fail,
628
+ # 2. the above comment should most certainly read
629
+ # $(mkdir_p) $(DESTDIR)$(somedir)
630
+ # so it does not work when $(somedir) is undefined and
631
+ # $(DESTDIR) is not.
632
+ # To support the latter case, we have to write
633
+ # test -z "$(somedir)" || $(mkdir_p) $(DESTDIR)$(somedir),
634
+ # so the `.' trick is pointless.
635
+ mkdir_p='mkdir -p --'
636
+ else
637
+ # On NextStep and OpenStep, the `mkdir' command does not
638
+ # recognize any option. It will interpret all options as
639
+ # directories to create, and then abort because `.' already
640
+ # exists.
641
+ for d in ./-p ./--version;
642
+ do
643
+ test -d $d && rmdir $d
644
+ done
645
+ # $(mkinstalldirs) is defined by Automake if mkinstalldirs exists.
646
+ if test -f "$ac_aux_dir/mkinstalldirs"; then
647
+ mkdir_p='$(mkinstalldirs)'
648
+ else
649
+ mkdir_p='$(install_sh) -d'
650
+ fi
651
+ fi
652
+ AC_SUBST([mkdir_p])])
653
+
654
+ # Helper functions for option handling. -*- Autoconf -*-
655
+
656
+ # Copyright (C) 2001, 2002, 2003, 2005 Free Software Foundation, Inc.
657
+ #
658
+ # This file is free software; the Free Software Foundation
659
+ # gives unlimited permission to copy and/or distribute it,
660
+ # with or without modifications, as long as this notice is preserved.
661
+
662
+ # serial 3
663
+
664
+ # _AM_MANGLE_OPTION(NAME)
665
+ # -----------------------
666
+ AC_DEFUN([_AM_MANGLE_OPTION],
667
+ [[_AM_OPTION_]m4_bpatsubst($1, [[^a-zA-Z0-9_]], [_])])
668
+
669
+ # _AM_SET_OPTION(NAME)
670
+ # ------------------------------
671
+ # Set option NAME. Presently that only means defining a flag for this option.
672
+ AC_DEFUN([_AM_SET_OPTION],
673
+ [m4_define(_AM_MANGLE_OPTION([$1]), 1)])
674
+
675
+ # _AM_SET_OPTIONS(OPTIONS)
676
+ # ----------------------------------
677
+ # OPTIONS is a space-separated list of Automake options.
678
+ AC_DEFUN([_AM_SET_OPTIONS],
679
+ [AC_FOREACH([_AM_Option], [$1], [_AM_SET_OPTION(_AM_Option)])])
680
+
681
+ # _AM_IF_OPTION(OPTION, IF-SET, [IF-NOT-SET])
682
+ # -------------------------------------------
683
+ # Execute IF-SET if OPTION is set, IF-NOT-SET otherwise.
684
+ AC_DEFUN([_AM_IF_OPTION],
685
+ [m4_ifset(_AM_MANGLE_OPTION([$1]), [$2], [$3])])
686
+
687
+ # Check to make sure that the build environment is sane. -*- Autoconf -*-
688
+
689
+ # Copyright (C) 1996, 1997, 2000, 2001, 2003, 2005
690
+ # Free Software Foundation, Inc.
691
+ #
692
+ # This file is free software; the Free Software Foundation
693
+ # gives unlimited permission to copy and/or distribute it,
694
+ # with or without modifications, as long as this notice is preserved.
695
+
696
+ # serial 4
697
+
698
+ # AM_SANITY_CHECK
699
+ # ---------------
700
+ AC_DEFUN([AM_SANITY_CHECK],
701
+ [AC_MSG_CHECKING([whether build environment is sane])
702
+ # Just in case
703
+ sleep 1
704
+ echo timestamp > conftest.file
705
+ # Do `set' in a subshell so we don't clobber the current shell's
706
+ # arguments. Must try -L first in case configure is actually a
707
+ # symlink; some systems play weird games with the mod time of symlinks
708
+ # (eg FreeBSD returns the mod time of the symlink's containing
709
+ # directory).
710
+ if (
711
+ set X `ls -Lt $srcdir/configure conftest.file 2> /dev/null`
712
+ if test "$[*]" = "X"; then
713
+ # -L didn't work.
714
+ set X `ls -t $srcdir/configure conftest.file`
715
+ fi
716
+ rm -f conftest.file
717
+ if test "$[*]" != "X $srcdir/configure conftest.file" \
718
+ && test "$[*]" != "X conftest.file $srcdir/configure"; then
719
+
720
+ # If neither matched, then we have a broken ls. This can happen
721
+ # if, for instance, CONFIG_SHELL is bash and it inherits a
722
+ # broken ls alias from the environment. This has actually
723
+ # happened. Such a system could not be considered "sane".
724
+ AC_MSG_ERROR([ls -t appears to fail. Make sure there is not a broken
725
+ alias in your environment])
726
+ fi
727
+
728
+ test "$[2]" = conftest.file
729
+ )
730
+ then
731
+ # Ok.
732
+ :
733
+ else
734
+ AC_MSG_ERROR([newly created file is older than distributed files!
735
+ Check your system clock])
736
+ fi
737
+ AC_MSG_RESULT(yes)])
738
+
739
+ # Copyright (C) 2001, 2003, 2005 Free Software Foundation, Inc.
740
+ #
741
+ # This file is free software; the Free Software Foundation
742
+ # gives unlimited permission to copy and/or distribute it,
743
+ # with or without modifications, as long as this notice is preserved.
744
+
745
+ # AM_PROG_INSTALL_STRIP
746
+ # ---------------------
747
+ # One issue with vendor `install' (even GNU) is that you can't
748
+ # specify the program used to strip binaries. This is especially
749
+ # annoying in cross-compiling environments, where the build's strip
750
+ # is unlikely to handle the host's binaries.
751
+ # Fortunately install-sh will honor a STRIPPROG variable, so we
752
+ # always use install-sh in `make install-strip', and initialize
753
+ # STRIPPROG with the value of the STRIP variable (set by the user).
754
+ AC_DEFUN([AM_PROG_INSTALL_STRIP],
755
+ [AC_REQUIRE([AM_PROG_INSTALL_SH])dnl
756
+ # Installed binaries are usually stripped using `strip' when the user
757
+ # run `make install-strip'. However `strip' might not be the right
758
+ # tool to use in cross-compilation environments, therefore Automake
759
+ # will honor the `STRIP' environment variable to overrule this program.
760
+ dnl Don't test for $cross_compiling = yes, because it might be `maybe'.
761
+ if test "$cross_compiling" != no; then
762
+ AC_CHECK_TOOL([STRIP], [strip], :)
763
+ fi
764
+ INSTALL_STRIP_PROGRAM="\${SHELL} \$(install_sh) -c -s"
765
+ AC_SUBST([INSTALL_STRIP_PROGRAM])])
766
+
767
+ # Check how to create a tarball. -*- Autoconf -*-
768
+
769
+ # Copyright (C) 2004, 2005 Free Software Foundation, Inc.
770
+ #
771
+ # This file is free software; the Free Software Foundation
772
+ # gives unlimited permission to copy and/or distribute it,
773
+ # with or without modifications, as long as this notice is preserved.
774
+
775
+ # serial 2
776
+
777
+ # _AM_PROG_TAR(FORMAT)
778
+ # --------------------
779
+ # Check how to create a tarball in format FORMAT.
780
+ # FORMAT should be one of `v7', `ustar', or `pax'.
781
+ #
782
+ # Substitute a variable $(am__tar) that is a command
783
+ # writing to stdout a FORMAT-tarball containing the directory
784
+ # $tardir.
785
+ # tardir=directory && $(am__tar) > result.tar
786
+ #
787
+ # Substitute a variable $(am__untar) that extract such
788
+ # a tarball read from stdin.
789
+ # $(am__untar) < result.tar
790
+ AC_DEFUN([_AM_PROG_TAR],
791
+ [# Always define AMTAR for backward compatibility.
792
+ AM_MISSING_PROG([AMTAR], [tar])
793
+ m4_if([$1], [v7],
794
+ [am__tar='${AMTAR} chof - "$$tardir"'; am__untar='${AMTAR} xf -'],
795
+ [m4_case([$1], [ustar],, [pax],,
796
+ [m4_fatal([Unknown tar format])])
797
+ AC_MSG_CHECKING([how to create a $1 tar archive])
798
+ # Loop over all known methods to create a tar archive until one works.
799
+ _am_tools='gnutar m4_if([$1], [ustar], [plaintar]) pax cpio none'
800
+ _am_tools=${am_cv_prog_tar_$1-$_am_tools}
801
+ # Do not fold the above two line into one, because Tru64 sh and
802
+ # Solaris sh will not grok spaces in the rhs of `-'.
803
+ for _am_tool in $_am_tools
804
+ do
805
+ case $_am_tool in
806
+ gnutar)
807
+ for _am_tar in tar gnutar gtar;
808
+ do
809
+ AM_RUN_LOG([$_am_tar --version]) && break
810
+ done
811
+ am__tar="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$$tardir"'
812
+ am__tar_="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$tardir"'
813
+ am__untar="$_am_tar -xf -"
814
+ ;;
815
+ plaintar)
816
+ # Must skip GNU tar: if it does not support --format= it doesn't create
817
+ # ustar tarball either.
818
+ (tar --version) >/dev/null 2>&1 && continue
819
+ am__tar='tar chf - "$$tardir"'
820
+ am__tar_='tar chf - "$tardir"'
821
+ am__untar='tar xf -'
822
+ ;;
823
+ pax)
824
+ am__tar='pax -L -x $1 -w "$$tardir"'
825
+ am__tar_='pax -L -x $1 -w "$tardir"'
826
+ am__untar='pax -r'
827
+ ;;
828
+ cpio)
829
+ am__tar='find "$$tardir" -print | cpio -o -H $1 -L'
830
+ am__tar_='find "$tardir" -print | cpio -o -H $1 -L'
831
+ am__untar='cpio -i -H $1 -d'
832
+ ;;
833
+ none)
834
+ am__tar=false
835
+ am__tar_=false
836
+ am__untar=false
837
+ ;;
838
+ esac
839
+
840
+ # If the value was cached, stop now. We just wanted to have am__tar
841
+ # and am__untar set.
842
+ test -n "${am_cv_prog_tar_$1}" && break
843
+
844
+ # tar/untar a dummy directory, and stop if the command works
845
+ rm -rf conftest.dir
846
+ mkdir conftest.dir
847
+ echo GrepMe > conftest.dir/file
848
+ AM_RUN_LOG([tardir=conftest.dir && eval $am__tar_ >conftest.tar])
849
+ rm -rf conftest.dir
850
+ if test -s conftest.tar; then
851
+ AM_RUN_LOG([$am__untar <conftest.tar])
852
+ grep GrepMe conftest.dir/file >/dev/null 2>&1 && break
853
+ fi
854
+ done
855
+ rm -rf conftest.dir
856
+
857
+ AC_CACHE_VAL([am_cv_prog_tar_$1], [am_cv_prog_tar_$1=$_am_tool])
858
+ AC_MSG_RESULT([$am_cv_prog_tar_$1])])
859
+ AC_SUBST([am__tar])
860
+ AC_SUBST([am__untar])
861
+ ]) # _AM_PROG_TAR
862
+
863
+ m4_include([m4/acx_pthread.m4])
864
+ m4_include([m4/google_namespace.m4])
865
+ m4_include([m4/namespaces.m4])
866
+ m4_include([m4/stl_hash.m4])
867
+ m4_include([m4/stl_hash_fun.m4])
868
+ m4_include([m4/stl_namespace.m4])