google_hash 0.0.0
Sign up to get free protection for your applications and to get access to all the features.
- data/README +21 -0
- data/Rakefile +11 -0
- data/VERSION +1 -0
- data/ext/extconf.rb +15 -0
- data/ext/go.cpp +109 -0
- data/ext/sparsehash-1.5.2/AUTHORS +2 -0
- data/ext/sparsehash-1.5.2/COPYING +28 -0
- data/ext/sparsehash-1.5.2/ChangeLog +167 -0
- data/ext/sparsehash-1.5.2/INSTALL +236 -0
- data/ext/sparsehash-1.5.2/Makefile.am +157 -0
- data/ext/sparsehash-1.5.2/Makefile.in +1019 -0
- data/ext/sparsehash-1.5.2/NEWS +0 -0
- data/ext/sparsehash-1.5.2/README +149 -0
- data/ext/sparsehash-1.5.2/README.windows +25 -0
- data/ext/sparsehash-1.5.2/TODO +28 -0
- data/ext/sparsehash-1.5.2/aclocal.m4 +868 -0
- data/ext/sparsehash-1.5.2/compile +99 -0
- data/ext/sparsehash-1.5.2/config.guess +1516 -0
- data/ext/sparsehash-1.5.2/config.sub +1626 -0
- data/ext/sparsehash-1.5.2/configure +8054 -0
- data/ext/sparsehash-1.5.2/configure.ac +74 -0
- data/ext/sparsehash-1.5.2/depcomp +530 -0
- data/ext/sparsehash-1.5.2/doc/dense_hash_map.html +1591 -0
- data/ext/sparsehash-1.5.2/doc/dense_hash_set.html +1445 -0
- data/ext/sparsehash-1.5.2/doc/designstyle.css +115 -0
- data/ext/sparsehash-1.5.2/doc/implementation.html +365 -0
- data/ext/sparsehash-1.5.2/doc/index.html +69 -0
- data/ext/sparsehash-1.5.2/doc/performance.html +96 -0
- data/ext/sparsehash-1.5.2/doc/sparse_hash_map.html +1527 -0
- data/ext/sparsehash-1.5.2/doc/sparse_hash_set.html +1376 -0
- data/ext/sparsehash-1.5.2/doc/sparsetable.html +1393 -0
- data/ext/sparsehash-1.5.2/experimental/Makefile +9 -0
- data/ext/sparsehash-1.5.2/experimental/README +14 -0
- data/ext/sparsehash-1.5.2/experimental/example.c +54 -0
- data/ext/sparsehash-1.5.2/experimental/libchash.c +1537 -0
- data/ext/sparsehash-1.5.2/experimental/libchash.h +252 -0
- data/ext/sparsehash-1.5.2/google-sparsehash.sln +47 -0
- data/ext/sparsehash-1.5.2/install-sh +323 -0
- data/ext/sparsehash-1.5.2/m4/acx_pthread.m4 +363 -0
- data/ext/sparsehash-1.5.2/m4/google_namespace.m4 +42 -0
- data/ext/sparsehash-1.5.2/m4/namespaces.m4 +15 -0
- data/ext/sparsehash-1.5.2/m4/stl_hash.m4 +70 -0
- data/ext/sparsehash-1.5.2/m4/stl_hash_fun.m4 +36 -0
- data/ext/sparsehash-1.5.2/m4/stl_namespace.m4 +25 -0
- data/ext/sparsehash-1.5.2/missing +360 -0
- data/ext/sparsehash-1.5.2/mkinstalldirs +158 -0
- data/ext/sparsehash-1.5.2/packages/deb.sh +74 -0
- data/ext/sparsehash-1.5.2/packages/deb/README +7 -0
- data/ext/sparsehash-1.5.2/packages/deb/changelog +107 -0
- data/ext/sparsehash-1.5.2/packages/deb/compat +1 -0
- data/ext/sparsehash-1.5.2/packages/deb/control +17 -0
- data/ext/sparsehash-1.5.2/packages/deb/copyright +35 -0
- data/ext/sparsehash-1.5.2/packages/deb/docs +16 -0
- data/ext/sparsehash-1.5.2/packages/deb/rules +117 -0
- data/ext/sparsehash-1.5.2/packages/deb/sparsehash.dirs +2 -0
- data/ext/sparsehash-1.5.2/packages/deb/sparsehash.install +2 -0
- data/ext/sparsehash-1.5.2/packages/rpm.sh +86 -0
- data/ext/sparsehash-1.5.2/packages/rpm/rpm.spec +61 -0
- data/ext/sparsehash-1.5.2/src/config.h.in +131 -0
- data/ext/sparsehash-1.5.2/src/config.h.include +23 -0
- data/ext/sparsehash-1.5.2/src/google/dense_hash_map +310 -0
- data/ext/sparsehash-1.5.2/src/google/dense_hash_set +287 -0
- data/ext/sparsehash-1.5.2/src/google/sparse_hash_map +294 -0
- data/ext/sparsehash-1.5.2/src/google/sparse_hash_set +275 -0
- data/ext/sparsehash-1.5.2/src/google/sparsehash/densehashtable.h +1062 -0
- data/ext/sparsehash-1.5.2/src/google/sparsehash/sparsehashtable.h +1015 -0
- data/ext/sparsehash-1.5.2/src/google/sparsetable +1468 -0
- data/ext/sparsehash-1.5.2/src/google/type_traits.h +250 -0
- data/ext/sparsehash-1.5.2/src/hashtable_unittest.cc +1375 -0
- data/ext/sparsehash-1.5.2/src/simple_test.cc +103 -0
- data/ext/sparsehash-1.5.2/src/sparsetable_unittest.cc +696 -0
- data/ext/sparsehash-1.5.2/src/time_hash_map.cc +488 -0
- data/ext/sparsehash-1.5.2/src/type_traits_unittest.cc +492 -0
- data/ext/sparsehash-1.5.2/src/windows/config.h +149 -0
- data/ext/sparsehash-1.5.2/src/windows/google/sparsehash/sparseconfig.h +32 -0
- data/ext/sparsehash-1.5.2/src/windows/port.cc +63 -0
- data/ext/sparsehash-1.5.2/src/windows/port.h +81 -0
- data/ext/sparsehash-1.5.2/src/words +8944 -0
- data/ext/sparsehash-1.5.2/vsprojects/hashtable_unittest/hashtable_unittest.vcproj +187 -0
- data/ext/sparsehash-1.5.2/vsprojects/sparsetable_unittest/sparsetable_unittest.vcproj +172 -0
- data/ext/sparsehash-1.5.2/vsprojects/time_hash_map/time_hash_map.vcproj +187 -0
- data/ext/sparsehash-1.5.2/vsprojects/type_traits_unittest/type_traits_unittest.vcproj +169 -0
- data/ext/test.rb +10 -0
- data/test/spec.go +70 -0
- 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])
|