Codebase list liberasurecode / 59bf182
Start refactor Signed-off-by: Tushar Gohad <tushar.gohad@intel.com> Tushar Gohad 9 years ago
40 changed file(s) with 0 addition(s) and 44001 deletion(s). Raw diff Collapse all Expand all
+0
-0
AUTHORS less more
(Empty file)
+0
-23
COPYING less more
0 /*
1 * Redistribution and use in source and binary forms, with or without
2 * modification, are permitted provided that the following conditions are met:
3 *
4 * Redistributions of source code must retain the above copyright notice, this
5 * list of conditions and the following disclaimer.
6 *
7 * Redistributions in binary form must reproduce the above copyright notice, this
8 * list of conditions and the following disclaimer in the documentation and/or
9 * other materials provided with the distribution. THIS SOFTWARE IS PROVIDED BY
10 * THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED
11 * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
12 * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
13 * EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
14 * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
15 * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
16 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
17 * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
18 * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
19 * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
20 */
21
22
+0
-1
ChangeLog less more
0 Release 0.1
+0
-370
INSTALL less more
0 Installation Instructions
1 *************************
2
3 Copyright (C) 1994-1996, 1999-2002, 2004-2013 Free Software Foundation,
4 Inc.
5
6 Copying and distribution of this file, with or without modification,
7 are permitted in any medium without royalty provided the copyright
8 notice and this notice are preserved. This file is offered as-is,
9 without warranty of any kind.
10
11 Basic Installation
12 ==================
13
14 Briefly, the shell commands `./configure; make; make install' should
15 configure, build, and install this package. The following
16 more-detailed instructions are generic; see the `README' file for
17 instructions specific to this package. Some packages provide this
18 `INSTALL' file but do not implement all of the features documented
19 below. The lack of an optional feature in a given package is not
20 necessarily a bug. More recommendations for GNU packages can be found
21 in *note Makefile Conventions: (standards)Makefile Conventions.
22
23 The `configure' shell script attempts to guess correct values for
24 various system-dependent variables used during compilation. It uses
25 those values to create a `Makefile' in each directory of the package.
26 It may also create one or more `.h' files containing system-dependent
27 definitions. Finally, it creates a shell script `config.status' that
28 you can run in the future to recreate the current configuration, and a
29 file `config.log' containing compiler output (useful mainly for
30 debugging `configure').
31
32 It can also use an optional file (typically called `config.cache'
33 and enabled with `--cache-file=config.cache' or simply `-C') that saves
34 the results of its tests to speed up reconfiguring. Caching is
35 disabled by default to prevent problems with accidental use of stale
36 cache files.
37
38 If you need to do unusual things to compile the package, please try
39 to figure out how `configure' could check whether to do them, and mail
40 diffs or instructions to the address given in the `README' so they can
41 be considered for the next release. If you are using the cache, and at
42 some point `config.cache' contains results you don't want to keep, you
43 may remove or edit it.
44
45 The file `configure.ac' (or `configure.in') is used to create
46 `configure' by a program called `autoconf'. You need `configure.ac' if
47 you want to change it or regenerate `configure' using a newer version
48 of `autoconf'.
49
50 The simplest way to compile this package is:
51
52 1. `cd' to the directory containing the package's source code and type
53 `./configure' to configure the package for your system.
54
55 Running `configure' might take a while. While running, it prints
56 some messages telling which features it is checking for.
57
58 2. Type `make' to compile the package.
59
60 3. Optionally, type `make check' to run any self-tests that come with
61 the package, generally using the just-built uninstalled binaries.
62
63 4. Type `make install' to install the programs and any data files and
64 documentation. When installing into a prefix owned by root, it is
65 recommended that the package be configured and built as a regular
66 user, and only the `make install' phase executed with root
67 privileges.
68
69 5. Optionally, type `make installcheck' to repeat any self-tests, but
70 this time using the binaries in their final installed location.
71 This target does not install anything. Running this target as a
72 regular user, particularly if the prior `make install' required
73 root privileges, verifies that the installation completed
74 correctly.
75
76 6. You can remove the program binaries and object files from the
77 source code directory by typing `make clean'. To also remove the
78 files that `configure' created (so you can compile the package for
79 a different kind of computer), type `make distclean'. There is
80 also a `make maintainer-clean' target, but that is intended mainly
81 for the package's developers. If you use it, you may have to get
82 all sorts of other programs in order to regenerate files that came
83 with the distribution.
84
85 7. Often, you can also type `make uninstall' to remove the installed
86 files again. In practice, not all packages have tested that
87 uninstallation works correctly, even though it is required by the
88 GNU Coding Standards.
89
90 8. Some packages, particularly those that use Automake, provide `make
91 distcheck', which can by used by developers to test that all other
92 targets like `make install' and `make uninstall' work correctly.
93 This target is generally not run by end users.
94
95 Compilers and Options
96 =====================
97
98 Some systems require unusual options for compilation or linking that
99 the `configure' script does not know about. Run `./configure --help'
100 for details on some of the pertinent environment variables.
101
102 You can give `configure' initial values for configuration parameters
103 by setting variables in the command line or in the environment. Here
104 is an example:
105
106 ./configure CC=c99 CFLAGS=-g LIBS=-lposix
107
108 *Note Defining Variables::, for more details.
109
110 Compiling For Multiple Architectures
111 ====================================
112
113 You can compile the package for more than one kind of computer at the
114 same time, by placing the object files for each architecture in their
115 own directory. To do this, you can use GNU `make'. `cd' to the
116 directory where you want the object files and executables to go and run
117 the `configure' script. `configure' automatically checks for the
118 source code in the directory that `configure' is in and in `..'. This
119 is known as a "VPATH" build.
120
121 With a non-GNU `make', it is safer to compile the package for one
122 architecture at a time in the source code directory. After you have
123 installed the package for one architecture, use `make distclean' before
124 reconfiguring for another architecture.
125
126 On MacOS X 10.5 and later systems, you can create libraries and
127 executables that work on multiple system types--known as "fat" or
128 "universal" binaries--by specifying multiple `-arch' options to the
129 compiler but only a single `-arch' option to the preprocessor. Like
130 this:
131
132 ./configure CC="gcc -arch i386 -arch x86_64 -arch ppc -arch ppc64" \
133 CXX="g++ -arch i386 -arch x86_64 -arch ppc -arch ppc64" \
134 CPP="gcc -E" CXXCPP="g++ -E"
135
136 This is not guaranteed to produce working output in all cases, you
137 may have to build one architecture at a time and combine the results
138 using the `lipo' tool if you have problems.
139
140 Installation Names
141 ==================
142
143 By default, `make install' installs the package's commands under
144 `/usr/local/bin', include files under `/usr/local/include', etc. You
145 can specify an installation prefix other than `/usr/local' by giving
146 `configure' the option `--prefix=PREFIX', where PREFIX must be an
147 absolute file name.
148
149 You can specify separate installation prefixes for
150 architecture-specific files and architecture-independent files. If you
151 pass the option `--exec-prefix=PREFIX' to `configure', the package uses
152 PREFIX as the prefix for installing programs and libraries.
153 Documentation and other data files still use the regular prefix.
154
155 In addition, if you use an unusual directory layout you can give
156 options like `--bindir=DIR' to specify different values for particular
157 kinds of files. Run `configure --help' for a list of the directories
158 you can set and what kinds of files go in them. In general, the
159 default for these options is expressed in terms of `${prefix}', so that
160 specifying just `--prefix' will affect all of the other directory
161 specifications that were not explicitly provided.
162
163 The most portable way to affect installation locations is to pass the
164 correct locations to `configure'; however, many packages provide one or
165 both of the following shortcuts of passing variable assignments to the
166 `make install' command line to change installation locations without
167 having to reconfigure or recompile.
168
169 The first method involves providing an override variable for each
170 affected directory. For example, `make install
171 prefix=/alternate/directory' will choose an alternate location for all
172 directory configuration variables that were expressed in terms of
173 `${prefix}'. Any directories that were specified during `configure',
174 but not in terms of `${prefix}', must each be overridden at install
175 time for the entire installation to be relocated. The approach of
176 makefile variable overrides for each directory variable is required by
177 the GNU Coding Standards, and ideally causes no recompilation.
178 However, some platforms have known limitations with the semantics of
179 shared libraries that end up requiring recompilation when using this
180 method, particularly noticeable in packages that use GNU Libtool.
181
182 The second method involves providing the `DESTDIR' variable. For
183 example, `make install DESTDIR=/alternate/directory' will prepend
184 `/alternate/directory' before all installation names. The approach of
185 `DESTDIR' overrides is not required by the GNU Coding Standards, and
186 does not work on platforms that have drive letters. On the other hand,
187 it does better at avoiding recompilation issues, and works well even
188 when some directory options were not specified in terms of `${prefix}'
189 at `configure' time.
190
191 Optional Features
192 =================
193
194 If the package supports it, you can cause programs to be installed
195 with an extra prefix or suffix on their names by giving `configure' the
196 option `--program-prefix=PREFIX' or `--program-suffix=SUFFIX'.
197
198 Some packages pay attention to `--enable-FEATURE' options to
199 `configure', where FEATURE indicates an optional part of the package.
200 They may also pay attention to `--with-PACKAGE' options, where PACKAGE
201 is something like `gnu-as' or `x' (for the X Window System). The
202 `README' should mention any `--enable-' and `--with-' options that the
203 package recognizes.
204
205 For packages that use the X Window System, `configure' can usually
206 find the X include and library files automatically, but if it doesn't,
207 you can use the `configure' options `--x-includes=DIR' and
208 `--x-libraries=DIR' to specify their locations.
209
210 Some packages offer the ability to configure how verbose the
211 execution of `make' will be. For these packages, running `./configure
212 --enable-silent-rules' sets the default to minimal output, which can be
213 overridden with `make V=1'; while running `./configure
214 --disable-silent-rules' sets the default to verbose, which can be
215 overridden with `make V=0'.
216
217 Particular systems
218 ==================
219
220 On HP-UX, the default C compiler is not ANSI C compatible. If GNU
221 CC is not installed, it is recommended to use the following options in
222 order to use an ANSI C compiler:
223
224 ./configure CC="cc -Ae -D_XOPEN_SOURCE=500"
225
226 and if that doesn't work, install pre-built binaries of GCC for HP-UX.
227
228 HP-UX `make' updates targets which have the same time stamps as
229 their prerequisites, which makes it generally unusable when shipped
230 generated files such as `configure' are involved. Use GNU `make'
231 instead.
232
233 On OSF/1 a.k.a. Tru64, some versions of the default C compiler cannot
234 parse its `<wchar.h>' header file. The option `-nodtk' can be used as
235 a workaround. If GNU CC is not installed, it is therefore recommended
236 to try
237
238 ./configure CC="cc"
239
240 and if that doesn't work, try
241
242 ./configure CC="cc -nodtk"
243
244 On Solaris, don't put `/usr/ucb' early in your `PATH'. This
245 directory contains several dysfunctional programs; working variants of
246 these programs are available in `/usr/bin'. So, if you need `/usr/ucb'
247 in your `PATH', put it _after_ `/usr/bin'.
248
249 On Haiku, software installed for all users goes in `/boot/common',
250 not `/usr/local'. It is recommended to use the following options:
251
252 ./configure --prefix=/boot/common
253
254 Specifying the System Type
255 ==========================
256
257 There may be some features `configure' cannot figure out
258 automatically, but needs to determine by the type of machine the package
259 will run on. Usually, assuming the package is built to be run on the
260 _same_ architectures, `configure' can figure that out, but if it prints
261 a message saying it cannot guess the machine type, give it the
262 `--build=TYPE' option. TYPE can either be a short name for the system
263 type, such as `sun4', or a canonical name which has the form:
264
265 CPU-COMPANY-SYSTEM
266
267 where SYSTEM can have one of these forms:
268
269 OS
270 KERNEL-OS
271
272 See the file `config.sub' for the possible values of each field. If
273 `config.sub' isn't included in this package, then this package doesn't
274 need to know the machine type.
275
276 If you are _building_ compiler tools for cross-compiling, you should
277 use the option `--target=TYPE' to select the type of system they will
278 produce code for.
279
280 If you want to _use_ a cross compiler, that generates code for a
281 platform different from the build platform, you should specify the
282 "host" platform (i.e., that on which the generated programs will
283 eventually be run) with `--host=TYPE'.
284
285 Sharing Defaults
286 ================
287
288 If you want to set default values for `configure' scripts to share,
289 you can create a site shell script called `config.site' that gives
290 default values for variables like `CC', `cache_file', and `prefix'.
291 `configure' looks for `PREFIX/share/config.site' if it exists, then
292 `PREFIX/etc/config.site' if it exists. Or, you can set the
293 `CONFIG_SITE' environment variable to the location of the site script.
294 A warning: not all `configure' scripts look for a site script.
295
296 Defining Variables
297 ==================
298
299 Variables not defined in a site shell script can be set in the
300 environment passed to `configure'. However, some packages may run
301 configure again during the build, and the customized values of these
302 variables may be lost. In order to avoid this problem, you should set
303 them in the `configure' command line, using `VAR=value'. For example:
304
305 ./configure CC=/usr/local2/bin/gcc
306
307 causes the specified `gcc' to be used as the C compiler (unless it is
308 overridden in the site shell script).
309
310 Unfortunately, this technique does not work for `CONFIG_SHELL' due to
311 an Autoconf limitation. Until the limitation is lifted, you can use
312 this workaround:
313
314 CONFIG_SHELL=/bin/bash ./configure CONFIG_SHELL=/bin/bash
315
316 `configure' Invocation
317 ======================
318
319 `configure' recognizes the following options to control how it
320 operates.
321
322 `--help'
323 `-h'
324 Print a summary of all of the options to `configure', and exit.
325
326 `--help=short'
327 `--help=recursive'
328 Print a summary of the options unique to this package's
329 `configure', and exit. The `short' variant lists options used
330 only in the top level, while the `recursive' variant lists options
331 also present in any nested packages.
332
333 `--version'
334 `-V'
335 Print the version of Autoconf used to generate the `configure'
336 script, and exit.
337
338 `--cache-file=FILE'
339 Enable the cache: use and save the results of the tests in FILE,
340 traditionally `config.cache'. FILE defaults to `/dev/null' to
341 disable caching.
342
343 `--config-cache'
344 `-C'
345 Alias for `--cache-file=config.cache'.
346
347 `--quiet'
348 `--silent'
349 `-q'
350 Do not print messages saying which checks are being made. To
351 suppress all normal output, redirect it to `/dev/null' (any error
352 messages will still be shown).
353
354 `--srcdir=DIR'
355 Look for the package's source code in directory DIR. Usually
356 `configure' can determine that directory automatically.
357
358 `--prefix=DIR'
359 Use DIR as the installation prefix. *note Installation Names::
360 for more details, including other options available for fine-tuning
361 the installation locations.
362
363 `--no-create'
364 `-n'
365 Run the configure checks, but stop before creating any output
366 files.
367
368 `configure' also accepts some other, not widely useful, options. Run
369 `configure --help' for more details.
+0
-38
Makefile.am less more
0 ACLOCAL_AMFLAGS = -I m4
1 noinst_PROGRAMS=test_xor_hd_code alg_sig_test
2 AM_CPPFLAGS=-I./ -I../include -I/usr/local/include/jerasure
3 if DEBUG
4 AM_CFLAGS = -g3 -O0
5 else
6 AM_CFLAGS = -O2
7 endif
8 AM_CFLAGS += $(SIMD_FLAGS) -fPIC $(AM_CPPFLAGS) -L/usr/local/lib
9 VALGRIND_EXEC_COMMAND = $(LIBTOOL_COMMAND) valgrind --tool=memcheck --error-exitcode=1 --leak-check=yes --track-fds=yes --malloc-fill=A5 --free-fill=DE --fullpath-after=.
10 include_HEADERS = include/xor_hd_code_defs.h include/xor_code.h include/alg_sig.h
11 lib_LTLIBRARIES =liberasurecode.la
12 liberasurecode_la_SOURCES =\
13 src/alg_sig.c \
14 src/crc32.c \
15 src/xor_code.c \
16 src/xor_hd_code.c
17 liberasurecode_la_ADDLIB = -lgf_complete -lJerasure
18
19 noinst_HEADERS = tests/test_xor_hd_code.h
20
21 test_xor_hd_code_SOURCES = tests/test_xor_hd_code.c tests/test_xor_hd_code.h
22 test_xor_hd_code_CPPFLAGS = -I./tests
23 test_xor_hd_code_LDFLAGS = -static -lerasurecode -lgf_complete
24 check_PROGRAMS = test_xor_hd_code
25
26 alg_sig_test_SOURCES = tests/alg_sig_test.c
27 alg_sig_test_CPPFLAGS = -I./tests
28 alg_sig_test_LDFLAGS = -static -lerasurecode -lgf_complete -lJerasure
29 check_PROGRAMS += alg_sig_test
30
31 test: check
32 @./alg_sig_test
33 @./test_xor_hd_code
34
35 valgrind-test: check
36 @$(VALGRIND_EXEC_COMMAND) ./alg_sig_test
37 @$(VALGRIND_EXEC_COMMAND) ./test_xor_hd_code
+0
-934
Makefile.in less more
0 # Makefile.in generated by automake 1.14 from Makefile.am.
1 # @configure_input@
2
3 # Copyright (C) 1994-2013 Free Software Foundation, Inc.
4
5 # This Makefile.in 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 @SET_MAKE@
15
16
17
18 VPATH = @srcdir@
19 am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
20 am__make_running_with_option = \
21 case $${target_option-} in \
22 ?) ;; \
23 *) echo "am__make_running_with_option: internal error: invalid" \
24 "target option '$${target_option-}' specified" >&2; \
25 exit 1;; \
26 esac; \
27 has_opt=no; \
28 sane_makeflags=$$MAKEFLAGS; \
29 if $(am__is_gnu_make); then \
30 sane_makeflags=$$MFLAGS; \
31 else \
32 case $$MAKEFLAGS in \
33 *\\[\ \ ]*) \
34 bs=\\; \
35 sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
36 | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \
37 esac; \
38 fi; \
39 skip_next=no; \
40 strip_trailopt () \
41 { \
42 flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
43 }; \
44 for flg in $$sane_makeflags; do \
45 test $$skip_next = yes && { skip_next=no; continue; }; \
46 case $$flg in \
47 *=*|--*) continue;; \
48 -*I) strip_trailopt 'I'; skip_next=yes;; \
49 -*I?*) strip_trailopt 'I';; \
50 -*O) strip_trailopt 'O'; skip_next=yes;; \
51 -*O?*) strip_trailopt 'O';; \
52 -*l) strip_trailopt 'l'; skip_next=yes;; \
53 -*l?*) strip_trailopt 'l';; \
54 -[dEDm]) skip_next=yes;; \
55 -[JT]) skip_next=yes;; \
56 esac; \
57 case $$flg in \
58 *$$target_option*) has_opt=yes; break;; \
59 esac; \
60 done; \
61 test $$has_opt = yes
62 am__make_dryrun = (target_option=n; $(am__make_running_with_option))
63 am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
64 pkgdatadir = $(datadir)/@PACKAGE@
65 pkgincludedir = $(includedir)/@PACKAGE@
66 pkglibdir = $(libdir)/@PACKAGE@
67 pkglibexecdir = $(libexecdir)/@PACKAGE@
68 am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
69 install_sh_DATA = $(install_sh) -c -m 644
70 install_sh_PROGRAM = $(install_sh) -c
71 install_sh_SCRIPT = $(install_sh) -c
72 INSTALL_HEADER = $(INSTALL_DATA)
73 transform = $(program_transform_name)
74 NORMAL_INSTALL = :
75 PRE_INSTALL = :
76 POST_INSTALL = :
77 NORMAL_UNINSTALL = :
78 PRE_UNINSTALL = :
79 POST_UNINSTALL = :
80 build_triplet = @build@
81 host_triplet = @host@
82 noinst_PROGRAMS = test_xor_hd_code$(EXEEXT) alg_sig_test$(EXEEXT)
83 check_PROGRAMS = test_xor_hd_code$(EXEEXT) alg_sig_test$(EXEEXT)
84 subdir = .
85 DIST_COMMON = INSTALL NEWS README AUTHORS ChangeLog \
86 $(srcdir)/Makefile.in $(srcdir)/Makefile.am \
87 $(top_srcdir)/configure $(am__configure_deps) \
88 $(top_srcdir)/include/config.h.in $(include_HEADERS) \
89 $(noinst_HEADERS) COPYING compile config.guess config.sub \
90 depcomp install-sh missing ltmain.sh
91 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
92 am__aclocal_m4_deps = $(top_srcdir)/m4/ax_check_compile_flag.m4 \
93 $(top_srcdir)/m4/ax_ext.m4 \
94 $(top_srcdir)/m4/ax_gcc_x86_avx_xgetbv.m4 \
95 $(top_srcdir)/m4/ax_gcc_x86_cpuid.m4 \
96 $(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
97 $(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
98 $(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/configure.ac
99 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
100 $(ACLOCAL_M4)
101 am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \
102 configure.lineno config.status.lineno
103 mkinstalldirs = $(install_sh) -d
104 CONFIG_HEADER = $(top_builddir)/include/config.h
105 CONFIG_CLEAN_FILES =
106 CONFIG_CLEAN_VPATH_FILES =
107 am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
108 am__vpath_adj = case $$p in \
109 $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
110 *) f=$$p;; \
111 esac;
112 am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
113 am__install_max = 40
114 am__nobase_strip_setup = \
115 srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
116 am__nobase_strip = \
117 for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
118 am__nobase_list = $(am__nobase_strip_setup); \
119 for p in $$list; do echo "$$p $$p"; done | \
120 sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
121 $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
122 if (++n[$$2] == $(am__install_max)) \
123 { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
124 END { for (dir in files) print dir, files[dir] }'
125 am__base_list = \
126 sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
127 sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
128 am__uninstall_files_from_dir = { \
129 test -z "$$files" \
130 || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
131 || { echo " ( cd '$$dir' && rm -f" $$files ")"; \
132 $(am__cd) "$$dir" && rm -f $$files; }; \
133 }
134 am__installdirs = "$(DESTDIR)$(libdir)" "$(DESTDIR)$(includedir)"
135 LTLIBRARIES = $(lib_LTLIBRARIES)
136 liberasurecode_la_LIBADD =
137 am__dirstamp = $(am__leading_dot)dirstamp
138 am_liberasurecode_la_OBJECTS = src/alg_sig.lo src/crc32.lo \
139 src/xor_code.lo src/xor_hd_code.lo
140 liberasurecode_la_OBJECTS = $(am_liberasurecode_la_OBJECTS)
141 AM_V_lt = $(am__v_lt_@AM_V@)
142 am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@)
143 am__v_lt_0 = --silent
144 am__v_lt_1 =
145 PROGRAMS = $(noinst_PROGRAMS)
146 am_alg_sig_test_OBJECTS = tests/alg_sig_test-alg_sig_test.$(OBJEXT)
147 alg_sig_test_OBJECTS = $(am_alg_sig_test_OBJECTS)
148 alg_sig_test_LDADD = $(LDADD)
149 alg_sig_test_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
150 $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
151 $(alg_sig_test_LDFLAGS) $(LDFLAGS) -o $@
152 am_test_xor_hd_code_OBJECTS = \
153 tests/test_xor_hd_code-test_xor_hd_code.$(OBJEXT)
154 test_xor_hd_code_OBJECTS = $(am_test_xor_hd_code_OBJECTS)
155 test_xor_hd_code_LDADD = $(LDADD)
156 test_xor_hd_code_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \
157 $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \
158 $(AM_CFLAGS) $(CFLAGS) $(test_xor_hd_code_LDFLAGS) $(LDFLAGS) \
159 -o $@
160 AM_V_P = $(am__v_P_@AM_V@)
161 am__v_P_ = $(am__v_P_@AM_DEFAULT_V@)
162 am__v_P_0 = false
163 am__v_P_1 = :
164 AM_V_GEN = $(am__v_GEN_@AM_V@)
165 am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
166 am__v_GEN_0 = @echo " GEN " $@;
167 am__v_GEN_1 =
168 AM_V_at = $(am__v_at_@AM_V@)
169 am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
170 am__v_at_0 = @
171 am__v_at_1 =
172 DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/include
173 depcomp =
174 am__depfiles_maybe =
175 COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
176 $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
177 LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
178 $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \
179 $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
180 $(AM_CFLAGS) $(CFLAGS)
181 AM_V_CC = $(am__v_CC_@AM_V@)
182 am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@)
183 am__v_CC_0 = @echo " CC " $@;
184 am__v_CC_1 =
185 CCLD = $(CC)
186 LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
187 $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
188 $(AM_LDFLAGS) $(LDFLAGS) -o $@
189 AM_V_CCLD = $(am__v_CCLD_@AM_V@)
190 am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@)
191 am__v_CCLD_0 = @echo " CCLD " $@;
192 am__v_CCLD_1 =
193 SOURCES = $(liberasurecode_la_SOURCES) $(alg_sig_test_SOURCES) \
194 $(test_xor_hd_code_SOURCES)
195 DIST_SOURCES = $(liberasurecode_la_SOURCES) $(alg_sig_test_SOURCES) \
196 $(test_xor_hd_code_SOURCES)
197 am__can_run_installinfo = \
198 case $$AM_UPDATE_INFO_DIR in \
199 n|no|NO) false;; \
200 *) (install-info --version) >/dev/null 2>&1;; \
201 esac
202 HEADERS = $(include_HEADERS) $(noinst_HEADERS)
203 am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
204 # Read a list of newline-separated strings from the standard input,
205 # and print each of them once, without duplicates. Input order is
206 # *not* preserved.
207 am__uniquify_input = $(AWK) '\
208 BEGIN { nonempty = 0; } \
209 { items[$$0] = 1; nonempty = 1; } \
210 END { if (nonempty) { for (i in items) print i; }; } \
211 '
212 # Make sure the list of sources is unique. This is necessary because,
213 # e.g., the same source file might be shared among _SOURCES variables
214 # for different programs/libraries.
215 am__define_uniq_tagged_files = \
216 list='$(am__tagged_files)'; \
217 unique=`for i in $$list; do \
218 if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
219 done | $(am__uniquify_input)`
220 ETAGS = etags
221 CTAGS = ctags
222 CSCOPE = cscope
223 AM_RECURSIVE_TARGETS = cscope
224 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
225 distdir = $(PACKAGE)-$(VERSION)
226 top_distdir = $(distdir)
227 am__remove_distdir = \
228 if test -d "$(distdir)"; then \
229 find "$(distdir)" -type d ! -perm -200 -exec chmod u+w {} ';' \
230 && rm -rf "$(distdir)" \
231 || { sleep 5 && rm -rf "$(distdir)"; }; \
232 else :; fi
233 am__post_remove_distdir = $(am__remove_distdir)
234 DIST_ARCHIVES = $(distdir).tar.gz
235 GZIP_ENV = --best
236 DIST_TARGETS = dist-gzip
237 distuninstallcheck_listfiles = find . -type f -print
238 am__distuninstallcheck_listfiles = $(distuninstallcheck_listfiles) \
239 | sed 's|^\./|$(prefix)/|' | grep -v '$(infodir)/dir$$'
240 distcleancheck_listfiles = find . -type f -print
241 ACLOCAL = @ACLOCAL@
242 AMTAR = @AMTAR@
243 AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
244 AR = @AR@
245 AUTOCONF = @AUTOCONF@
246 AUTOHEADER = @AUTOHEADER@
247 AUTOMAKE = @AUTOMAKE@
248 AWK = @AWK@
249 CC = @CC@
250 CFLAGS = @CFLAGS@
251 CPP = @CPP@
252 CPPFLAGS = @CPPFLAGS@
253 CYGPATH_W = @CYGPATH_W@
254 DEFS = @DEFS@
255 DLLTOOL = @DLLTOOL@
256 DSYMUTIL = @DSYMUTIL@
257 DUMPBIN = @DUMPBIN@
258 ECHO_C = @ECHO_C@
259 ECHO_N = @ECHO_N@
260 ECHO_T = @ECHO_T@
261 EGREP = @EGREP@
262 EXEEXT = @EXEEXT@
263 FGREP = @FGREP@
264 GREP = @GREP@
265 INSTALL = @INSTALL@
266 INSTALL_DATA = @INSTALL_DATA@
267 INSTALL_PROGRAM = @INSTALL_PROGRAM@
268 INSTALL_SCRIPT = @INSTALL_SCRIPT@
269 INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
270 LD = @LD@
271 LDFLAGS = @LDFLAGS@
272 LIBOBJS = @LIBOBJS@
273 LIBS = @LIBS@
274 LIBTOOL = @LIBTOOL@
275 LIPO = @LIPO@
276 LN_S = @LN_S@
277 LTLIBOBJS = @LTLIBOBJS@
278 MAINT = @MAINT@
279 MAKEINFO = @MAKEINFO@
280 MANIFEST_TOOL = @MANIFEST_TOOL@
281 MKDIR_P = @MKDIR_P@
282 NM = @NM@
283 NMEDIT = @NMEDIT@
284 OBJDUMP = @OBJDUMP@
285 OBJEXT = @OBJEXT@
286 OTOOL = @OTOOL@
287 OTOOL64 = @OTOOL64@
288 PACKAGE = @PACKAGE@
289 PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
290 PACKAGE_NAME = @PACKAGE_NAME@
291 PACKAGE_STRING = @PACKAGE_STRING@
292 PACKAGE_TARNAME = @PACKAGE_TARNAME@
293 PACKAGE_URL = @PACKAGE_URL@
294 PACKAGE_VERSION = @PACKAGE_VERSION@
295 PATH_SEPARATOR = @PATH_SEPARATOR@
296 RANLIB = @RANLIB@
297 SED = @SED@
298 SET_MAKE = @SET_MAKE@
299 SHELL = @SHELL@
300 SIMD_FLAGS = @SIMD_FLAGS@
301 STRIP = @STRIP@
302 VERSION = @VERSION@
303 abs_builddir = @abs_builddir@
304 abs_srcdir = @abs_srcdir@
305 abs_top_builddir = @abs_top_builddir@
306 abs_top_srcdir = @abs_top_srcdir@
307 ac_ct_AR = @ac_ct_AR@
308 ac_ct_CC = @ac_ct_CC@
309 ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
310 am__leading_dot = @am__leading_dot@
311 am__tar = @am__tar@
312 am__untar = @am__untar@
313 bindir = @bindir@
314 build = @build@
315 build_alias = @build_alias@
316 build_cpu = @build_cpu@
317 build_os = @build_os@
318 build_vendor = @build_vendor@
319 builddir = @builddir@
320 datadir = @datadir@
321 datarootdir = @datarootdir@
322 docdir = @docdir@
323 dvidir = @dvidir@
324 exec_prefix = @exec_prefix@
325 host = @host@
326 host_alias = @host_alias@
327 host_cpu = @host_cpu@
328 host_os = @host_os@
329 host_vendor = @host_vendor@
330 htmldir = @htmldir@
331 includedir = @includedir@
332 infodir = @infodir@
333 install_sh = @install_sh@
334 libdir = @libdir@
335 libexecdir = @libexecdir@
336 localedir = @localedir@
337 localstatedir = @localstatedir@
338 mandir = @mandir@
339 mkdir_p = @mkdir_p@
340 oldincludedir = @oldincludedir@
341 pdfdir = @pdfdir@
342 prefix = @prefix@
343 program_transform_name = @program_transform_name@
344 psdir = @psdir@
345 sbindir = @sbindir@
346 sharedstatedir = @sharedstatedir@
347 srcdir = @srcdir@
348 sysconfdir = @sysconfdir@
349 target_alias = @target_alias@
350 top_build_prefix = @top_build_prefix@
351 top_builddir = @top_builddir@
352 top_srcdir = @top_srcdir@
353 ACLOCAL_AMFLAGS = -I m4
354 AM_CPPFLAGS = -I./ -I../include -I/usr/local/include/jerasure
355 @DEBUG_FALSE@AM_CFLAGS = -O2 $(SIMD_FLAGS) -fPIC $(AM_CPPFLAGS) \
356 @DEBUG_FALSE@ -L/usr/local/lib
357 @DEBUG_TRUE@AM_CFLAGS = -g3 -O0 $(SIMD_FLAGS) -fPIC $(AM_CPPFLAGS) \
358 @DEBUG_TRUE@ -L/usr/local/lib
359 VALGRIND_EXEC_COMMAND = $(LIBTOOL_COMMAND) valgrind --tool=memcheck --error-exitcode=1 --leak-check=yes --track-fds=yes --malloc-fill=A5 --free-fill=DE --fullpath-after=.
360 include_HEADERS = include/xor_hd_code_defs.h include/xor_code.h include/alg_sig.h
361 lib_LTLIBRARIES = liberasurecode.la
362 liberasurecode_la_SOURCES = \
363 src/alg_sig.c \
364 src/crc32.c \
365 src/xor_code.c \
366 src/xor_hd_code.c
367
368 liberasurecode_la_ADDLIB = -lgf_complete -lJerasure
369 noinst_HEADERS = tests/test_xor_hd_code.h
370 test_xor_hd_code_SOURCES = tests/test_xor_hd_code.c tests/test_xor_hd_code.h
371 test_xor_hd_code_CPPFLAGS = -I./tests
372 test_xor_hd_code_LDFLAGS = -static -lerasurecode -lgf_complete
373 alg_sig_test_SOURCES = tests/alg_sig_test.c
374 alg_sig_test_CPPFLAGS = -I./tests
375 alg_sig_test_LDFLAGS = -static -lerasurecode -lgf_complete -lJerasure
376 all: all-am
377
378 .SUFFIXES:
379 .SUFFIXES: .c .lo .o .obj
380 am--refresh: Makefile
381 @:
382 $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps)
383 @for dep in $?; do \
384 case '$(am__configure_deps)' in \
385 *$$dep*) \
386 echo ' cd $(srcdir) && $(AUTOMAKE) --gnu --ignore-deps'; \
387 $(am__cd) $(srcdir) && $(AUTOMAKE) --gnu --ignore-deps \
388 && exit 0; \
389 exit 1;; \
390 esac; \
391 done; \
392 echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu --ignore-deps Makefile'; \
393 $(am__cd) $(top_srcdir) && \
394 $(AUTOMAKE) --gnu --ignore-deps Makefile
395 .PRECIOUS: Makefile
396 Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
397 @case '$?' in \
398 *config.status*) \
399 echo ' $(SHELL) ./config.status'; \
400 $(SHELL) ./config.status;; \
401 *) \
402 echo ' cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe)'; \
403 cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe);; \
404 esac;
405
406 $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
407 $(SHELL) ./config.status --recheck
408
409 $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
410 $(am__cd) $(srcdir) && $(AUTOCONF)
411 $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
412 $(am__cd) $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS)
413 $(am__aclocal_m4_deps):
414
415 include/config.h: include/stamp-h1
416 @test -f $@ || rm -f include/stamp-h1
417 @test -f $@ || $(MAKE) $(AM_MAKEFLAGS) include/stamp-h1
418
419 include/stamp-h1: $(top_srcdir)/include/config.h.in $(top_builddir)/config.status
420 @rm -f include/stamp-h1
421 cd $(top_builddir) && $(SHELL) ./config.status include/config.h
422 $(top_srcdir)/include/config.h.in: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
423 ($(am__cd) $(top_srcdir) && $(AUTOHEADER))
424 rm -f include/stamp-h1
425 touch $@
426
427 distclean-hdr:
428 -rm -f include/config.h include/stamp-h1
429
430 install-libLTLIBRARIES: $(lib_LTLIBRARIES)
431 @$(NORMAL_INSTALL)
432 @list='$(lib_LTLIBRARIES)'; test -n "$(libdir)" || list=; \
433 list2=; for p in $$list; do \
434 if test -f $$p; then \
435 list2="$$list2 $$p"; \
436 else :; fi; \
437 done; \
438 test -z "$$list2" || { \
439 echo " $(MKDIR_P) '$(DESTDIR)$(libdir)'"; \
440 $(MKDIR_P) "$(DESTDIR)$(libdir)" || exit 1; \
441 echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(libdir)'"; \
442 $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(libdir)"; \
443 }
444
445 uninstall-libLTLIBRARIES:
446 @$(NORMAL_UNINSTALL)
447 @list='$(lib_LTLIBRARIES)'; test -n "$(libdir)" || list=; \
448 for p in $$list; do \
449 $(am__strip_dir) \
450 echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(libdir)/$$f'"; \
451 $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(libdir)/$$f"; \
452 done
453
454 clean-libLTLIBRARIES:
455 -test -z "$(lib_LTLIBRARIES)" || rm -f $(lib_LTLIBRARIES)
456 @list='$(lib_LTLIBRARIES)'; \
457 locs=`for p in $$list; do echo $$p; done | \
458 sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \
459 sort -u`; \
460 test -z "$$locs" || { \
461 echo rm -f $${locs}; \
462 rm -f $${locs}; \
463 }
464 src/$(am__dirstamp):
465 @$(MKDIR_P) src
466 @: > src/$(am__dirstamp)
467 src/alg_sig.lo: src/$(am__dirstamp)
468 src/crc32.lo: src/$(am__dirstamp)
469 src/xor_code.lo: src/$(am__dirstamp)
470 src/xor_hd_code.lo: src/$(am__dirstamp)
471
472 liberasurecode.la: $(liberasurecode_la_OBJECTS) $(liberasurecode_la_DEPENDENCIES) $(EXTRA_liberasurecode_la_DEPENDENCIES)
473 $(AM_V_CCLD)$(LINK) -rpath $(libdir) $(liberasurecode_la_OBJECTS) $(liberasurecode_la_LIBADD) $(LIBS)
474
475 clean-checkPROGRAMS:
476 @list='$(check_PROGRAMS)'; test -n "$$list" || exit 0; \
477 echo " rm -f" $$list; \
478 rm -f $$list || exit $$?; \
479 test -n "$(EXEEXT)" || exit 0; \
480 list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \
481 echo " rm -f" $$list; \
482 rm -f $$list
483
484 clean-noinstPROGRAMS:
485 @list='$(noinst_PROGRAMS)'; test -n "$$list" || exit 0; \
486 echo " rm -f" $$list; \
487 rm -f $$list || exit $$?; \
488 test -n "$(EXEEXT)" || exit 0; \
489 list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \
490 echo " rm -f" $$list; \
491 rm -f $$list
492 tests/$(am__dirstamp):
493 @$(MKDIR_P) tests
494 @: > tests/$(am__dirstamp)
495 tests/alg_sig_test-alg_sig_test.$(OBJEXT): tests/$(am__dirstamp)
496
497 alg_sig_test$(EXEEXT): $(alg_sig_test_OBJECTS) $(alg_sig_test_DEPENDENCIES) $(EXTRA_alg_sig_test_DEPENDENCIES)
498 @rm -f alg_sig_test$(EXEEXT)
499 $(AM_V_CCLD)$(alg_sig_test_LINK) $(alg_sig_test_OBJECTS) $(alg_sig_test_LDADD) $(LIBS)
500 tests/test_xor_hd_code-test_xor_hd_code.$(OBJEXT): \
501 tests/$(am__dirstamp)
502
503 test_xor_hd_code$(EXEEXT): $(test_xor_hd_code_OBJECTS) $(test_xor_hd_code_DEPENDENCIES) $(EXTRA_test_xor_hd_code_DEPENDENCIES)
504 @rm -f test_xor_hd_code$(EXEEXT)
505 $(AM_V_CCLD)$(test_xor_hd_code_LINK) $(test_xor_hd_code_OBJECTS) $(test_xor_hd_code_LDADD) $(LIBS)
506
507 mostlyclean-compile:
508 -rm -f *.$(OBJEXT)
509 -rm -f src/*.$(OBJEXT)
510 -rm -f src/*.lo
511 -rm -f tests/*.$(OBJEXT)
512
513 distclean-compile:
514 -rm -f *.tab.c
515
516 .c.o:
517 $(AM_V_CC)$(COMPILE) -c -o $@ $<
518
519 .c.obj:
520 $(AM_V_CC)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
521
522 .c.lo:
523 $(AM_V_CC)$(LTCOMPILE) -c -o $@ $<
524
525 tests/alg_sig_test-alg_sig_test.o: tests/alg_sig_test.c
526 $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(alg_sig_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o tests/alg_sig_test-alg_sig_test.o `test -f 'tests/alg_sig_test.c' || echo '$(srcdir)/'`tests/alg_sig_test.c
527
528 tests/alg_sig_test-alg_sig_test.obj: tests/alg_sig_test.c
529 $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(alg_sig_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o tests/alg_sig_test-alg_sig_test.obj `if test -f 'tests/alg_sig_test.c'; then $(CYGPATH_W) 'tests/alg_sig_test.c'; else $(CYGPATH_W) '$(srcdir)/tests/alg_sig_test.c'; fi`
530
531 tests/test_xor_hd_code-test_xor_hd_code.o: tests/test_xor_hd_code.c
532 $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_xor_hd_code_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o tests/test_xor_hd_code-test_xor_hd_code.o `test -f 'tests/test_xor_hd_code.c' || echo '$(srcdir)/'`tests/test_xor_hd_code.c
533
534 tests/test_xor_hd_code-test_xor_hd_code.obj: tests/test_xor_hd_code.c
535 $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_xor_hd_code_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o tests/test_xor_hd_code-test_xor_hd_code.obj `if test -f 'tests/test_xor_hd_code.c'; then $(CYGPATH_W) 'tests/test_xor_hd_code.c'; else $(CYGPATH_W) '$(srcdir)/tests/test_xor_hd_code.c'; fi`
536
537 mostlyclean-libtool:
538 -rm -f *.lo
539
540 clean-libtool:
541 -rm -rf .libs _libs
542 -rm -rf src/.libs src/_libs
543
544 distclean-libtool:
545 -rm -f libtool config.lt
546 install-includeHEADERS: $(include_HEADERS)
547 @$(NORMAL_INSTALL)
548 @list='$(include_HEADERS)'; test -n "$(includedir)" || list=; \
549 if test -n "$$list"; then \
550 echo " $(MKDIR_P) '$(DESTDIR)$(includedir)'"; \
551 $(MKDIR_P) "$(DESTDIR)$(includedir)" || exit 1; \
552 fi; \
553 for p in $$list; do \
554 if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
555 echo "$$d$$p"; \
556 done | $(am__base_list) | \
557 while read files; do \
558 echo " $(INSTALL_HEADER) $$files '$(DESTDIR)$(includedir)'"; \
559 $(INSTALL_HEADER) $$files "$(DESTDIR)$(includedir)" || exit $$?; \
560 done
561
562 uninstall-includeHEADERS:
563 @$(NORMAL_UNINSTALL)
564 @list='$(include_HEADERS)'; test -n "$(includedir)" || list=; \
565 files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
566 dir='$(DESTDIR)$(includedir)'; $(am__uninstall_files_from_dir)
567
568 ID: $(am__tagged_files)
569 $(am__define_uniq_tagged_files); mkid -fID $$unique
570 tags: tags-am
571 TAGS: tags
572
573 tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
574 set x; \
575 here=`pwd`; \
576 $(am__define_uniq_tagged_files); \
577 shift; \
578 if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
579 test -n "$$unique" || unique=$$empty_fix; \
580 if test $$# -gt 0; then \
581 $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
582 "$$@" $$unique; \
583 else \
584 $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
585 $$unique; \
586 fi; \
587 fi
588 ctags: ctags-am
589
590 CTAGS: ctags
591 ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
592 $(am__define_uniq_tagged_files); \
593 test -z "$(CTAGS_ARGS)$$unique" \
594 || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
595 $$unique
596
597 GTAGS:
598 here=`$(am__cd) $(top_builddir) && pwd` \
599 && $(am__cd) $(top_srcdir) \
600 && gtags -i $(GTAGS_ARGS) "$$here"
601 cscope: cscope.files
602 test ! -s cscope.files \
603 || $(CSCOPE) -b -q $(AM_CSCOPEFLAGS) $(CSCOPEFLAGS) -i cscope.files $(CSCOPE_ARGS)
604 clean-cscope:
605 -rm -f cscope.files
606 cscope.files: clean-cscope cscopelist
607 cscopelist: cscopelist-am
608
609 cscopelist-am: $(am__tagged_files)
610 list='$(am__tagged_files)'; \
611 case "$(srcdir)" in \
612 [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
613 *) sdir=$(subdir)/$(srcdir) ;; \
614 esac; \
615 for i in $$list; do \
616 if test -f "$$i"; then \
617 echo "$(subdir)/$$i"; \
618 else \
619 echo "$$sdir/$$i"; \
620 fi; \
621 done >> $(top_builddir)/cscope.files
622
623 distclean-tags:
624 -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
625 -rm -f cscope.out cscope.in.out cscope.po.out cscope.files
626
627 distdir: $(DISTFILES)
628 $(am__remove_distdir)
629 test -d "$(distdir)" || mkdir "$(distdir)"
630 @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
631 topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
632 list='$(DISTFILES)'; \
633 dist_files=`for file in $$list; do echo $$file; done | \
634 sed -e "s|^$$srcdirstrip/||;t" \
635 -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
636 case $$dist_files in \
637 */*) $(MKDIR_P) `echo "$$dist_files" | \
638 sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
639 sort -u` ;; \
640 esac; \
641 for file in $$dist_files; do \
642 if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
643 if test -d $$d/$$file; then \
644 dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
645 if test -d "$(distdir)/$$file"; then \
646 find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
647 fi; \
648 if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
649 cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
650 find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
651 fi; \
652 cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
653 else \
654 test -f "$(distdir)/$$file" \
655 || cp -p $$d/$$file "$(distdir)/$$file" \
656 || exit 1; \
657 fi; \
658 done
659 -test -n "$(am__skip_mode_fix)" \
660 || find "$(distdir)" -type d ! -perm -755 \
661 -exec chmod u+rwx,go+rx {} \; -o \
662 ! -type d ! -perm -444 -links 1 -exec chmod a+r {} \; -o \
663 ! -type d ! -perm -400 -exec chmod a+r {} \; -o \
664 ! -type d ! -perm -444 -exec $(install_sh) -c -m a+r {} {} \; \
665 || chmod -R a+r "$(distdir)"
666 dist-gzip: distdir
667 tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz
668 $(am__post_remove_distdir)
669
670 dist-bzip2: distdir
671 tardir=$(distdir) && $(am__tar) | BZIP2=$${BZIP2--9} bzip2 -c >$(distdir).tar.bz2
672 $(am__post_remove_distdir)
673
674 dist-lzip: distdir
675 tardir=$(distdir) && $(am__tar) | lzip -c $${LZIP_OPT--9} >$(distdir).tar.lz
676 $(am__post_remove_distdir)
677
678 dist-xz: distdir
679 tardir=$(distdir) && $(am__tar) | XZ_OPT=$${XZ_OPT--e} xz -c >$(distdir).tar.xz
680 $(am__post_remove_distdir)
681
682 dist-tarZ: distdir
683 @echo WARNING: "Support for shar distribution archives is" \
684 "deprecated." >&2
685 @echo WARNING: "It will be removed altogether in Automake 2.0" >&2
686 tardir=$(distdir) && $(am__tar) | compress -c >$(distdir).tar.Z
687 $(am__post_remove_distdir)
688
689 dist-shar: distdir
690 @echo WARNING: "Support for distribution archives compressed with" \
691 "legacy program 'compress' is deprecated." >&2
692 @echo WARNING: "It will be removed altogether in Automake 2.0" >&2
693 shar $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).shar.gz
694 $(am__post_remove_distdir)
695
696 dist-zip: distdir
697 -rm -f $(distdir).zip
698 zip -rq $(distdir).zip $(distdir)
699 $(am__post_remove_distdir)
700
701 dist dist-all:
702 $(MAKE) $(AM_MAKEFLAGS) $(DIST_TARGETS) am__post_remove_distdir='@:'
703 $(am__post_remove_distdir)
704
705 # This target untars the dist file and tries a VPATH configuration. Then
706 # it guarantees that the distribution is self-contained by making another
707 # tarfile.
708 distcheck: dist
709 case '$(DIST_ARCHIVES)' in \
710 *.tar.gz*) \
711 GZIP=$(GZIP_ENV) gzip -dc $(distdir).tar.gz | $(am__untar) ;;\
712 *.tar.bz2*) \
713 bzip2 -dc $(distdir).tar.bz2 | $(am__untar) ;;\
714 *.tar.lz*) \
715 lzip -dc $(distdir).tar.lz | $(am__untar) ;;\
716 *.tar.xz*) \
717 xz -dc $(distdir).tar.xz | $(am__untar) ;;\
718 *.tar.Z*) \
719 uncompress -c $(distdir).tar.Z | $(am__untar) ;;\
720 *.shar.gz*) \
721 GZIP=$(GZIP_ENV) gzip -dc $(distdir).shar.gz | unshar ;;\
722 *.zip*) \
723 unzip $(distdir).zip ;;\
724 esac
725 chmod -R a-w $(distdir)
726 chmod u+w $(distdir)
727 mkdir $(distdir)/_build $(distdir)/_inst
728 chmod a-w $(distdir)
729 test -d $(distdir)/_build || exit 0; \
730 dc_install_base=`$(am__cd) $(distdir)/_inst && pwd | sed -e 's,^[^:\\/]:[\\/],/,'` \
731 && dc_destdir="$${TMPDIR-/tmp}/am-dc-$$$$/" \
732 && am__cwd=`pwd` \
733 && $(am__cd) $(distdir)/_build \
734 && ../configure --srcdir=.. --prefix="$$dc_install_base" \
735 $(AM_DISTCHECK_CONFIGURE_FLAGS) \
736 $(DISTCHECK_CONFIGURE_FLAGS) \
737 && $(MAKE) $(AM_MAKEFLAGS) \
738 && $(MAKE) $(AM_MAKEFLAGS) dvi \
739 && $(MAKE) $(AM_MAKEFLAGS) check \
740 && $(MAKE) $(AM_MAKEFLAGS) install \
741 && $(MAKE) $(AM_MAKEFLAGS) installcheck \
742 && $(MAKE) $(AM_MAKEFLAGS) uninstall \
743 && $(MAKE) $(AM_MAKEFLAGS) distuninstallcheck_dir="$$dc_install_base" \
744 distuninstallcheck \
745 && chmod -R a-w "$$dc_install_base" \
746 && ({ \
747 (cd ../.. && umask 077 && mkdir "$$dc_destdir") \
748 && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" install \
749 && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" uninstall \
750 && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" \
751 distuninstallcheck_dir="$$dc_destdir" distuninstallcheck; \
752 } || { rm -rf "$$dc_destdir"; exit 1; }) \
753 && rm -rf "$$dc_destdir" \
754 && $(MAKE) $(AM_MAKEFLAGS) dist \
755 && rm -rf $(DIST_ARCHIVES) \
756 && $(MAKE) $(AM_MAKEFLAGS) distcleancheck \
757 && cd "$$am__cwd" \
758 || exit 1
759 $(am__post_remove_distdir)
760 @(echo "$(distdir) archives ready for distribution: "; \
761 list='$(DIST_ARCHIVES)'; for i in $$list; do echo $$i; done) | \
762 sed -e 1h -e 1s/./=/g -e 1p -e 1x -e '$$p' -e '$$x'
763 distuninstallcheck:
764 @test -n '$(distuninstallcheck_dir)' || { \
765 echo 'ERROR: trying to run $@ with an empty' \
766 '$$(distuninstallcheck_dir)' >&2; \
767 exit 1; \
768 }; \
769 $(am__cd) '$(distuninstallcheck_dir)' || { \
770 echo 'ERROR: cannot chdir into $(distuninstallcheck_dir)' >&2; \
771 exit 1; \
772 }; \
773 test `$(am__distuninstallcheck_listfiles) | wc -l` -eq 0 \
774 || { echo "ERROR: files left after uninstall:" ; \
775 if test -n "$(DESTDIR)"; then \
776 echo " (check DESTDIR support)"; \
777 fi ; \
778 $(distuninstallcheck_listfiles) ; \
779 exit 1; } >&2
780 distcleancheck: distclean
781 @if test '$(srcdir)' = . ; then \
782 echo "ERROR: distcleancheck can only run from a VPATH build" ; \
783 exit 1 ; \
784 fi
785 @test `$(distcleancheck_listfiles) | wc -l` -eq 0 \
786 || { echo "ERROR: files left in build directory after distclean:" ; \
787 $(distcleancheck_listfiles) ; \
788 exit 1; } >&2
789 check-am: all-am
790 $(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS)
791 check: check-am
792 all-am: Makefile $(LTLIBRARIES) $(PROGRAMS) $(HEADERS)
793 installdirs:
794 for dir in "$(DESTDIR)$(libdir)" "$(DESTDIR)$(includedir)"; do \
795 test -z "$$dir" || $(MKDIR_P) "$$dir"; \
796 done
797 install: install-am
798 install-exec: install-exec-am
799 install-data: install-data-am
800 uninstall: uninstall-am
801
802 install-am: all-am
803 @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
804
805 installcheck: installcheck-am
806 install-strip:
807 if test -z '$(STRIP)'; then \
808 $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
809 install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
810 install; \
811 else \
812 $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
813 install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
814 "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
815 fi
816 mostlyclean-generic:
817
818 clean-generic:
819
820 distclean-generic:
821 -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
822 -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
823 -rm -f src/$(am__dirstamp)
824 -rm -f tests/$(am__dirstamp)
825
826 maintainer-clean-generic:
827 @echo "This command is intended for maintainers to use"
828 @echo "it deletes files that may require special tools to rebuild."
829 clean: clean-am
830
831 clean-am: clean-checkPROGRAMS clean-generic clean-libLTLIBRARIES \
832 clean-libtool clean-noinstPROGRAMS mostlyclean-am
833
834 distclean: distclean-am
835 -rm -f $(am__CONFIG_DISTCLEAN_FILES)
836 -rm -f Makefile
837 distclean-am: clean-am distclean-compile distclean-generic \
838 distclean-hdr distclean-libtool distclean-tags
839
840 dvi: dvi-am
841
842 dvi-am:
843
844 html: html-am
845
846 html-am:
847
848 info: info-am
849
850 info-am:
851
852 install-data-am: install-includeHEADERS
853
854 install-dvi: install-dvi-am
855
856 install-dvi-am:
857
858 install-exec-am: install-libLTLIBRARIES
859
860 install-html: install-html-am
861
862 install-html-am:
863
864 install-info: install-info-am
865
866 install-info-am:
867
868 install-man:
869
870 install-pdf: install-pdf-am
871
872 install-pdf-am:
873
874 install-ps: install-ps-am
875
876 install-ps-am:
877
878 installcheck-am:
879
880 maintainer-clean: maintainer-clean-am
881 -rm -f $(am__CONFIG_DISTCLEAN_FILES)
882 -rm -rf $(top_srcdir)/autom4te.cache
883 -rm -f Makefile
884 maintainer-clean-am: distclean-am maintainer-clean-generic
885
886 mostlyclean: mostlyclean-am
887
888 mostlyclean-am: mostlyclean-compile mostlyclean-generic \
889 mostlyclean-libtool
890
891 pdf: pdf-am
892
893 pdf-am:
894
895 ps: ps-am
896
897 ps-am:
898
899 uninstall-am: uninstall-includeHEADERS uninstall-libLTLIBRARIES
900
901 .MAKE: check-am install-am install-strip
902
903 .PHONY: CTAGS GTAGS TAGS all all-am am--refresh check check-am clean \
904 clean-checkPROGRAMS clean-cscope clean-generic \
905 clean-libLTLIBRARIES clean-libtool clean-noinstPROGRAMS cscope \
906 cscopelist-am ctags ctags-am dist dist-all dist-bzip2 \
907 dist-gzip dist-lzip dist-shar dist-tarZ dist-xz dist-zip \
908 distcheck distclean distclean-compile distclean-generic \
909 distclean-hdr distclean-libtool distclean-tags distcleancheck \
910 distdir distuninstallcheck dvi dvi-am html html-am info \
911 info-am install install-am install-data install-data-am \
912 install-dvi install-dvi-am install-exec install-exec-am \
913 install-html install-html-am install-includeHEADERS \
914 install-info install-info-am install-libLTLIBRARIES \
915 install-man install-pdf install-pdf-am install-ps \
916 install-ps-am install-strip installcheck installcheck-am \
917 installdirs maintainer-clean maintainer-clean-generic \
918 mostlyclean mostlyclean-compile mostlyclean-generic \
919 mostlyclean-libtool pdf pdf-am ps ps-am tags tags-am uninstall \
920 uninstall-am uninstall-includeHEADERS uninstall-libLTLIBRARIES
921
922
923 test: check
924 @./alg_sig_test
925 @./test_xor_hd_code
926
927 valgrind-test: check
928 @$(VALGRIND_EXEC_COMMAND) ./alg_sig_test
929 @$(VALGRIND_EXEC_COMMAND) ./test_xor_hd_code
930
931 # Tell versions [3.59,3.63) of GNU make to not export all variables.
932 # Otherwise a system limit (for SysV at least) may be exceeded.
933 .NOEXPORT:
+0
-1
NEWS less more
0 Release 0.1
+0
-25
README less more
0 ## Introduction
1
2 Liberasurecode is an erasure code library which can support multiple
3 erasure code 'backends'. The repository includes a Jerasure for Reed-Solomon
4 implementation.
5
6 [TODO: flesh this out a bit more]
7
8 ## Dependencies
9
10 liberasurecode requires that the following dependencies be installed:
11
12 * gf-complete: http://www.kaymgee.com/Kevin_Greenan/Software_files/gf-complete.tar.gz
13 * Jerasure: http://www.kaymgee.com/Kevin_Greenan/Software_files/jerasure.tar.gz
14
15 ## Build
16
17 To build the liberasurecode repository, perform the following from the root
18 directory of the repository:
19
20 `$ ./configure`
21 `$ make`
22 `$ make test`
23 `$ sudo make install`
24
+0
-879
aclocal.m4 less more
0 # generated automatically by aclocal 1.14 -*- Autoconf -*-
1
2 # Copyright (C) 1996-2013 Free Software Foundation, Inc.
3
4 # This file is free software; the Free Software Foundation
5 # gives unlimited permission to copy and/or distribute it,
6 # with or without modifications, as long as this notice is preserved.
7
8 # This program is distributed in the hope that it will be useful,
9 # but WITHOUT ANY WARRANTY, to the extent permitted by law; without
10 # even the implied warranty of MERCHANTABILITY or FITNESS FOR A
11 # PARTICULAR PURPOSE.
12
13 m4_ifndef([AC_CONFIG_MACRO_DIRS], [m4_defun([_AM_CONFIG_MACRO_DIRS], [])m4_defun([AC_CONFIG_MACRO_DIRS], [_AM_CONFIG_MACRO_DIRS($@)])])
14 m4_ifndef([AC_AUTOCONF_VERSION],
15 [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl
16 m4_if(m4_defn([AC_AUTOCONF_VERSION]), [2.69],,
17 [m4_warning([this file was generated for autoconf 2.69.
18 You have another version of autoconf. It may work, but is not guaranteed to.
19 If you have problems, you may need to regenerate the build system entirely.
20 To do so, use the procedure documented by the package, typically 'autoreconf'.])])
21
22 # Copyright (C) 2002-2013 Free Software Foundation, Inc.
23 #
24 # This file is free software; the Free Software Foundation
25 # gives unlimited permission to copy and/or distribute it,
26 # with or without modifications, as long as this notice is preserved.
27
28 # AM_AUTOMAKE_VERSION(VERSION)
29 # ----------------------------
30 # Automake X.Y traces this macro to ensure aclocal.m4 has been
31 # generated from the m4 files accompanying Automake X.Y.
32 # (This private macro should not be called outside this file.)
33 AC_DEFUN([AM_AUTOMAKE_VERSION],
34 [am__api_version='1.14'
35 dnl Some users find AM_AUTOMAKE_VERSION and mistake it for a way to
36 dnl require some minimum version. Point them to the right macro.
37 m4_if([$1], [1.14], [],
38 [AC_FATAL([Do not call $0, use AM_INIT_AUTOMAKE([$1]).])])dnl
39 ])
40
41 # _AM_AUTOCONF_VERSION(VERSION)
42 # -----------------------------
43 # aclocal traces this macro to find the Autoconf version.
44 # This is a private macro too. Using m4_define simplifies
45 # the logic in aclocal, which can simply ignore this definition.
46 m4_define([_AM_AUTOCONF_VERSION], [])
47
48 # AM_SET_CURRENT_AUTOMAKE_VERSION
49 # -------------------------------
50 # Call AM_AUTOMAKE_VERSION and AM_AUTOMAKE_VERSION so they can be traced.
51 # This function is AC_REQUIREd by AM_INIT_AUTOMAKE.
52 AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION],
53 [AM_AUTOMAKE_VERSION([1.14])dnl
54 m4_ifndef([AC_AUTOCONF_VERSION],
55 [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl
56 _AM_AUTOCONF_VERSION(m4_defn([AC_AUTOCONF_VERSION]))])
57
58 # AM_AUX_DIR_EXPAND -*- Autoconf -*-
59
60 # Copyright (C) 2001-2013 Free Software Foundation, Inc.
61 #
62 # This file is free software; the Free Software Foundation
63 # gives unlimited permission to copy and/or distribute it,
64 # with or without modifications, as long as this notice is preserved.
65
66 # For projects using AC_CONFIG_AUX_DIR([foo]), Autoconf sets
67 # $ac_aux_dir to '$srcdir/foo'. In other projects, it is set to
68 # '$srcdir', '$srcdir/..', or '$srcdir/../..'.
69 #
70 # Of course, Automake must honor this variable whenever it calls a
71 # tool from the auxiliary directory. The problem is that $srcdir (and
72 # therefore $ac_aux_dir as well) can be either absolute or relative,
73 # depending on how configure is run. This is pretty annoying, since
74 # it makes $ac_aux_dir quite unusable in subdirectories: in the top
75 # source directory, any form will work fine, but in subdirectories a
76 # relative path needs to be adjusted first.
77 #
78 # $ac_aux_dir/missing
79 # fails when called from a subdirectory if $ac_aux_dir is relative
80 # $top_srcdir/$ac_aux_dir/missing
81 # fails if $ac_aux_dir is absolute,
82 # fails when called from a subdirectory in a VPATH build with
83 # a relative $ac_aux_dir
84 #
85 # The reason of the latter failure is that $top_srcdir and $ac_aux_dir
86 # are both prefixed by $srcdir. In an in-source build this is usually
87 # harmless because $srcdir is '.', but things will broke when you
88 # start a VPATH build or use an absolute $srcdir.
89 #
90 # So we could use something similar to $top_srcdir/$ac_aux_dir/missing,
91 # iff we strip the leading $srcdir from $ac_aux_dir. That would be:
92 # am_aux_dir='\$(top_srcdir)/'`expr "$ac_aux_dir" : "$srcdir//*\(.*\)"`
93 # and then we would define $MISSING as
94 # MISSING="\${SHELL} $am_aux_dir/missing"
95 # This will work as long as MISSING is not called from configure, because
96 # unfortunately $(top_srcdir) has no meaning in configure.
97 # However there are other variables, like CC, which are often used in
98 # configure, and could therefore not use this "fixed" $ac_aux_dir.
99 #
100 # Another solution, used here, is to always expand $ac_aux_dir to an
101 # absolute PATH. The drawback is that using absolute paths prevent a
102 # configured tree to be moved without reconfiguration.
103
104 AC_DEFUN([AM_AUX_DIR_EXPAND],
105 [dnl Rely on autoconf to set up CDPATH properly.
106 AC_PREREQ([2.50])dnl
107 # expand $ac_aux_dir to an absolute path
108 am_aux_dir=`cd $ac_aux_dir && pwd`
109 ])
110
111 # AM_CONDITIONAL -*- Autoconf -*-
112
113 # Copyright (C) 1997-2013 Free Software Foundation, Inc.
114 #
115 # This file is free software; the Free Software Foundation
116 # gives unlimited permission to copy and/or distribute it,
117 # with or without modifications, as long as this notice is preserved.
118
119 # AM_CONDITIONAL(NAME, SHELL-CONDITION)
120 # -------------------------------------
121 # Define a conditional.
122 AC_DEFUN([AM_CONDITIONAL],
123 [AC_PREREQ([2.52])dnl
124 m4_if([$1], [TRUE], [AC_FATAL([$0: invalid condition: $1])],
125 [$1], [FALSE], [AC_FATAL([$0: invalid condition: $1])])dnl
126 AC_SUBST([$1_TRUE])dnl
127 AC_SUBST([$1_FALSE])dnl
128 _AM_SUBST_NOTMAKE([$1_TRUE])dnl
129 _AM_SUBST_NOTMAKE([$1_FALSE])dnl
130 m4_define([_AM_COND_VALUE_$1], [$2])dnl
131 if $2; then
132 $1_TRUE=
133 $1_FALSE='#'
134 else
135 $1_TRUE='#'
136 $1_FALSE=
137 fi
138 AC_CONFIG_COMMANDS_PRE(
139 [if test -z "${$1_TRUE}" && test -z "${$1_FALSE}"; then
140 AC_MSG_ERROR([[conditional "$1" was never defined.
141 Usually this means the macro was only invoked conditionally.]])
142 fi])])
143
144 # Do all the work for Automake. -*- Autoconf -*-
145
146 # Copyright (C) 1996-2013 Free Software Foundation, Inc.
147 #
148 # This file is free software; the Free Software Foundation
149 # gives unlimited permission to copy and/or distribute it,
150 # with or without modifications, as long as this notice is preserved.
151
152 # This macro actually does too much. Some checks are only needed if
153 # your package does certain things. But this isn't really a big deal.
154
155 dnl Redefine AC_PROG_CC to automatically invoke _AM_PROG_CC_C_O.
156 m4_define([AC_PROG_CC],
157 m4_defn([AC_PROG_CC])
158 [_AM_PROG_CC_C_O
159 ])
160
161 # AM_INIT_AUTOMAKE(PACKAGE, VERSION, [NO-DEFINE])
162 # AM_INIT_AUTOMAKE([OPTIONS])
163 # -----------------------------------------------
164 # The call with PACKAGE and VERSION arguments is the old style
165 # call (pre autoconf-2.50), which is being phased out. PACKAGE
166 # and VERSION should now be passed to AC_INIT and removed from
167 # the call to AM_INIT_AUTOMAKE.
168 # We support both call styles for the transition. After
169 # the next Automake release, Autoconf can make the AC_INIT
170 # arguments mandatory, and then we can depend on a new Autoconf
171 # release and drop the old call support.
172 AC_DEFUN([AM_INIT_AUTOMAKE],
173 [AC_PREREQ([2.65])dnl
174 dnl Autoconf wants to disallow AM_ names. We explicitly allow
175 dnl the ones we care about.
176 m4_pattern_allow([^AM_[A-Z]+FLAGS$])dnl
177 AC_REQUIRE([AM_SET_CURRENT_AUTOMAKE_VERSION])dnl
178 AC_REQUIRE([AC_PROG_INSTALL])dnl
179 if test "`cd $srcdir && pwd`" != "`pwd`"; then
180 # Use -I$(srcdir) only when $(srcdir) != ., so that make's output
181 # is not polluted with repeated "-I."
182 AC_SUBST([am__isrc], [' -I$(srcdir)'])_AM_SUBST_NOTMAKE([am__isrc])dnl
183 # test to see if srcdir already configured
184 if test -f $srcdir/config.status; then
185 AC_MSG_ERROR([source directory already configured; run "make distclean" there first])
186 fi
187 fi
188
189 # test whether we have cygpath
190 if test -z "$CYGPATH_W"; then
191 if (cygpath --version) >/dev/null 2>/dev/null; then
192 CYGPATH_W='cygpath -w'
193 else
194 CYGPATH_W=echo
195 fi
196 fi
197 AC_SUBST([CYGPATH_W])
198
199 # Define the identity of the package.
200 dnl Distinguish between old-style and new-style calls.
201 m4_ifval([$2],
202 [AC_DIAGNOSE([obsolete],
203 [$0: two- and three-arguments forms are deprecated.])
204 m4_ifval([$3], [_AM_SET_OPTION([no-define])])dnl
205 AC_SUBST([PACKAGE], [$1])dnl
206 AC_SUBST([VERSION], [$2])],
207 [_AM_SET_OPTIONS([$1])dnl
208 dnl Diagnose old-style AC_INIT with new-style AM_AUTOMAKE_INIT.
209 m4_if(
210 m4_ifdef([AC_PACKAGE_NAME], [ok]):m4_ifdef([AC_PACKAGE_VERSION], [ok]),
211 [ok:ok],,
212 [m4_fatal([AC_INIT should be called with package and version arguments])])dnl
213 AC_SUBST([PACKAGE], ['AC_PACKAGE_TARNAME'])dnl
214 AC_SUBST([VERSION], ['AC_PACKAGE_VERSION'])])dnl
215
216 _AM_IF_OPTION([no-define],,
217 [AC_DEFINE_UNQUOTED([PACKAGE], ["$PACKAGE"], [Name of package])
218 AC_DEFINE_UNQUOTED([VERSION], ["$VERSION"], [Version number of package])])dnl
219
220 # Some tools Automake needs.
221 AC_REQUIRE([AM_SANITY_CHECK])dnl
222 AC_REQUIRE([AC_ARG_PROGRAM])dnl
223 AM_MISSING_PROG([ACLOCAL], [aclocal-${am__api_version}])
224 AM_MISSING_PROG([AUTOCONF], [autoconf])
225 AM_MISSING_PROG([AUTOMAKE], [automake-${am__api_version}])
226 AM_MISSING_PROG([AUTOHEADER], [autoheader])
227 AM_MISSING_PROG([MAKEINFO], [makeinfo])
228 AC_REQUIRE([AM_PROG_INSTALL_SH])dnl
229 AC_REQUIRE([AM_PROG_INSTALL_STRIP])dnl
230 AC_REQUIRE([AC_PROG_MKDIR_P])dnl
231 # For better backward compatibility. To be removed once Automake 1.9.x
232 # dies out for good. For more background, see:
233 # <http://lists.gnu.org/archive/html/automake/2012-07/msg00001.html>
234 # <http://lists.gnu.org/archive/html/automake/2012-07/msg00014.html>
235 AC_SUBST([mkdir_p], ['$(MKDIR_P)'])
236 # We need awk for the "check" target. The system "awk" is bad on
237 # some platforms.
238 AC_REQUIRE([AC_PROG_AWK])dnl
239 AC_REQUIRE([AC_PROG_MAKE_SET])dnl
240 AC_REQUIRE([AM_SET_LEADING_DOT])dnl
241 _AM_IF_OPTION([tar-ustar], [_AM_PROG_TAR([ustar])],
242 [_AM_IF_OPTION([tar-pax], [_AM_PROG_TAR([pax])],
243 [_AM_PROG_TAR([v7])])])
244 _AM_IF_OPTION([no-dependencies],,
245 [AC_PROVIDE_IFELSE([AC_PROG_CC],
246 [_AM_DEPENDENCIES([CC])],
247 [m4_define([AC_PROG_CC],
248 m4_defn([AC_PROG_CC])[_AM_DEPENDENCIES([CC])])])dnl
249 AC_PROVIDE_IFELSE([AC_PROG_CXX],
250 [_AM_DEPENDENCIES([CXX])],
251 [m4_define([AC_PROG_CXX],
252 m4_defn([AC_PROG_CXX])[_AM_DEPENDENCIES([CXX])])])dnl
253 AC_PROVIDE_IFELSE([AC_PROG_OBJC],
254 [_AM_DEPENDENCIES([OBJC])],
255 [m4_define([AC_PROG_OBJC],
256 m4_defn([AC_PROG_OBJC])[_AM_DEPENDENCIES([OBJC])])])dnl
257 AC_PROVIDE_IFELSE([AC_PROG_OBJCXX],
258 [_AM_DEPENDENCIES([OBJCXX])],
259 [m4_define([AC_PROG_OBJCXX],
260 m4_defn([AC_PROG_OBJCXX])[_AM_DEPENDENCIES([OBJCXX])])])dnl
261 ])
262 AC_REQUIRE([AM_SILENT_RULES])dnl
263 dnl The testsuite driver may need to know about EXEEXT, so add the
264 dnl 'am__EXEEXT' conditional if _AM_COMPILER_EXEEXT was seen. This
265 dnl macro is hooked onto _AC_COMPILER_EXEEXT early, see below.
266 AC_CONFIG_COMMANDS_PRE(dnl
267 [m4_provide_if([_AM_COMPILER_EXEEXT],
268 [AM_CONDITIONAL([am__EXEEXT], [test -n "$EXEEXT"])])])dnl
269
270 # POSIX will say in a future version that running "rm -f" with no argument
271 # is OK; and we want to be able to make that assumption in our Makefile
272 # recipes. So use an aggressive probe to check that the usage we want is
273 # actually supported "in the wild" to an acceptable degree.
274 # See automake bug#10828.
275 # To make any issue more visible, cause the running configure to be aborted
276 # by default if the 'rm' program in use doesn't match our expectations; the
277 # user can still override this though.
278 if rm -f && rm -fr && rm -rf; then : OK; else
279 cat >&2 <<'END'
280 Oops!
281
282 Your 'rm' program seems unable to run without file operands specified
283 on the command line, even when the '-f' option is present. This is contrary
284 to the behaviour of most rm programs out there, and not conforming with
285 the upcoming POSIX standard: <http://austingroupbugs.net/view.php?id=542>
286
287 Please tell bug-automake@gnu.org about your system, including the value
288 of your $PATH and any error possibly output before this message. This
289 can help us improve future automake versions.
290
291 END
292 if test x"$ACCEPT_INFERIOR_RM_PROGRAM" = x"yes"; then
293 echo 'Configuration will proceed anyway, since you have set the' >&2
294 echo 'ACCEPT_INFERIOR_RM_PROGRAM variable to "yes"' >&2
295 echo >&2
296 else
297 cat >&2 <<'END'
298 Aborting the configuration process, to ensure you take notice of the issue.
299
300 You can download and install GNU coreutils to get an 'rm' implementation
301 that behaves properly: <http://www.gnu.org/software/coreutils/>.
302
303 If you want to complete the configuration process using your problematic
304 'rm' anyway, export the environment variable ACCEPT_INFERIOR_RM_PROGRAM
305 to "yes", and re-run configure.
306
307 END
308 AC_MSG_ERROR([Your 'rm' program is bad, sorry.])
309 fi
310 fi])
311
312 dnl Hook into '_AC_COMPILER_EXEEXT' early to learn its expansion. Do not
313 dnl add the conditional right here, as _AC_COMPILER_EXEEXT may be further
314 dnl mangled by Autoconf and run in a shell conditional statement.
315 m4_define([_AC_COMPILER_EXEEXT],
316 m4_defn([_AC_COMPILER_EXEEXT])[m4_provide([_AM_COMPILER_EXEEXT])])
317
318 # When config.status generates a header, we must update the stamp-h file.
319 # This file resides in the same directory as the config header
320 # that is generated. The stamp files are numbered to have different names.
321
322 # Autoconf calls _AC_AM_CONFIG_HEADER_HOOK (when defined) in the
323 # loop where config.status creates the headers, so we can generate
324 # our stamp files there.
325 AC_DEFUN([_AC_AM_CONFIG_HEADER_HOOK],
326 [# Compute $1's index in $config_headers.
327 _am_arg=$1
328 _am_stamp_count=1
329 for _am_header in $config_headers :; do
330 case $_am_header in
331 $_am_arg | $_am_arg:* )
332 break ;;
333 * )
334 _am_stamp_count=`expr $_am_stamp_count + 1` ;;
335 esac
336 done
337 echo "timestamp for $_am_arg" >`AS_DIRNAME(["$_am_arg"])`/stamp-h[]$_am_stamp_count])
338
339 # Copyright (C) 2001-2013 Free Software Foundation, Inc.
340 #
341 # This file is free software; the Free Software Foundation
342 # gives unlimited permission to copy and/or distribute it,
343 # with or without modifications, as long as this notice is preserved.
344
345 # AM_PROG_INSTALL_SH
346 # ------------------
347 # Define $install_sh.
348 AC_DEFUN([AM_PROG_INSTALL_SH],
349 [AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl
350 if test x"${install_sh}" != xset; then
351 case $am_aux_dir in
352 *\ * | *\ *)
353 install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;;
354 *)
355 install_sh="\${SHELL} $am_aux_dir/install-sh"
356 esac
357 fi
358 AC_SUBST([install_sh])])
359
360 # Copyright (C) 2003-2013 Free Software Foundation, Inc.
361 #
362 # This file is free software; the Free Software Foundation
363 # gives unlimited permission to copy and/or distribute it,
364 # with or without modifications, as long as this notice is preserved.
365
366 # Check whether the underlying file-system supports filenames
367 # with a leading dot. For instance MS-DOS doesn't.
368 AC_DEFUN([AM_SET_LEADING_DOT],
369 [rm -rf .tst 2>/dev/null
370 mkdir .tst 2>/dev/null
371 if test -d .tst; then
372 am__leading_dot=.
373 else
374 am__leading_dot=_
375 fi
376 rmdir .tst 2>/dev/null
377 AC_SUBST([am__leading_dot])])
378
379 # Add --enable-maintainer-mode option to configure. -*- Autoconf -*-
380 # From Jim Meyering
381
382 # Copyright (C) 1996-2013 Free Software Foundation, Inc.
383 #
384 # This file is free software; the Free Software Foundation
385 # gives unlimited permission to copy and/or distribute it,
386 # with or without modifications, as long as this notice is preserved.
387
388 # AM_MAINTAINER_MODE([DEFAULT-MODE])
389 # ----------------------------------
390 # Control maintainer-specific portions of Makefiles.
391 # Default is to disable them, unless 'enable' is passed literally.
392 # For symmetry, 'disable' may be passed as well. Anyway, the user
393 # can override the default with the --enable/--disable switch.
394 AC_DEFUN([AM_MAINTAINER_MODE],
395 [m4_case(m4_default([$1], [disable]),
396 [enable], [m4_define([am_maintainer_other], [disable])],
397 [disable], [m4_define([am_maintainer_other], [enable])],
398 [m4_define([am_maintainer_other], [enable])
399 m4_warn([syntax], [unexpected argument to AM@&t@_MAINTAINER_MODE: $1])])
400 AC_MSG_CHECKING([whether to enable maintainer-specific portions of Makefiles])
401 dnl maintainer-mode's default is 'disable' unless 'enable' is passed
402 AC_ARG_ENABLE([maintainer-mode],
403 [AS_HELP_STRING([--]am_maintainer_other[-maintainer-mode],
404 am_maintainer_other[ make rules and dependencies not useful
405 (and sometimes confusing) to the casual installer])],
406 [USE_MAINTAINER_MODE=$enableval],
407 [USE_MAINTAINER_MODE=]m4_if(am_maintainer_other, [enable], [no], [yes]))
408 AC_MSG_RESULT([$USE_MAINTAINER_MODE])
409 AM_CONDITIONAL([MAINTAINER_MODE], [test $USE_MAINTAINER_MODE = yes])
410 MAINT=$MAINTAINER_MODE_TRUE
411 AC_SUBST([MAINT])dnl
412 ]
413 )
414
415 # Fake the existence of programs that GNU maintainers use. -*- Autoconf -*-
416
417 # Copyright (C) 1997-2013 Free Software Foundation, Inc.
418 #
419 # This file is free software; the Free Software Foundation
420 # gives unlimited permission to copy and/or distribute it,
421 # with or without modifications, as long as this notice is preserved.
422
423 # AM_MISSING_PROG(NAME, PROGRAM)
424 # ------------------------------
425 AC_DEFUN([AM_MISSING_PROG],
426 [AC_REQUIRE([AM_MISSING_HAS_RUN])
427 $1=${$1-"${am_missing_run}$2"}
428 AC_SUBST($1)])
429
430 # AM_MISSING_HAS_RUN
431 # ------------------
432 # Define MISSING if not defined so far and test if it is modern enough.
433 # If it is, set am_missing_run to use it, otherwise, to nothing.
434 AC_DEFUN([AM_MISSING_HAS_RUN],
435 [AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl
436 AC_REQUIRE_AUX_FILE([missing])dnl
437 if test x"${MISSING+set}" != xset; then
438 case $am_aux_dir in
439 *\ * | *\ *)
440 MISSING="\${SHELL} \"$am_aux_dir/missing\"" ;;
441 *)
442 MISSING="\${SHELL} $am_aux_dir/missing" ;;
443 esac
444 fi
445 # Use eval to expand $SHELL
446 if eval "$MISSING --is-lightweight"; then
447 am_missing_run="$MISSING "
448 else
449 am_missing_run=
450 AC_MSG_WARN(['missing' script is too old or missing])
451 fi
452 ])
453
454 # Helper functions for option handling. -*- Autoconf -*-
455
456 # Copyright (C) 2001-2013 Free Software Foundation, Inc.
457 #
458 # This file is free software; the Free Software Foundation
459 # gives unlimited permission to copy and/or distribute it,
460 # with or without modifications, as long as this notice is preserved.
461
462 # _AM_MANGLE_OPTION(NAME)
463 # -----------------------
464 AC_DEFUN([_AM_MANGLE_OPTION],
465 [[_AM_OPTION_]m4_bpatsubst($1, [[^a-zA-Z0-9_]], [_])])
466
467 # _AM_SET_OPTION(NAME)
468 # --------------------
469 # Set option NAME. Presently that only means defining a flag for this option.
470 AC_DEFUN([_AM_SET_OPTION],
471 [m4_define(_AM_MANGLE_OPTION([$1]), [1])])
472
473 # _AM_SET_OPTIONS(OPTIONS)
474 # ------------------------
475 # OPTIONS is a space-separated list of Automake options.
476 AC_DEFUN([_AM_SET_OPTIONS],
477 [m4_foreach_w([_AM_Option], [$1], [_AM_SET_OPTION(_AM_Option)])])
478
479 # _AM_IF_OPTION(OPTION, IF-SET, [IF-NOT-SET])
480 # -------------------------------------------
481 # Execute IF-SET if OPTION is set, IF-NOT-SET otherwise.
482 AC_DEFUN([_AM_IF_OPTION],
483 [m4_ifset(_AM_MANGLE_OPTION([$1]), [$2], [$3])])
484
485 # Copyright (C) 1999-2013 Free Software Foundation, Inc.
486 #
487 # This file is free software; the Free Software Foundation
488 # gives unlimited permission to copy and/or distribute it,
489 # with or without modifications, as long as this notice is preserved.
490
491 # _AM_PROG_CC_C_O
492 # ---------------
493 # Like AC_PROG_CC_C_O, but changed for automake. We rewrite AC_PROG_CC
494 # to automatically call this.
495 AC_DEFUN([_AM_PROG_CC_C_O],
496 [AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl
497 AC_REQUIRE_AUX_FILE([compile])dnl
498 AC_LANG_PUSH([C])dnl
499 AC_CACHE_CHECK(
500 [whether $CC understands -c and -o together],
501 [am_cv_prog_cc_c_o],
502 [AC_LANG_CONFTEST([AC_LANG_PROGRAM([])])
503 # Make sure it works both with $CC and with simple cc.
504 # Following AC_PROG_CC_C_O, we do the test twice because some
505 # compilers refuse to overwrite an existing .o file with -o,
506 # though they will create one.
507 am_cv_prog_cc_c_o=yes
508 for am_i in 1 2; do
509 if AM_RUN_LOG([$CC -c conftest.$ac_ext -o conftest2.$ac_objext]) \
510 && test -f conftest2.$ac_objext; then
511 : OK
512 else
513 am_cv_prog_cc_c_o=no
514 break
515 fi
516 done
517 rm -f core conftest*
518 unset am_i])
519 if test "$am_cv_prog_cc_c_o" != yes; then
520 # Losing compiler, so override with the script.
521 # FIXME: It is wrong to rewrite CC.
522 # But if we don't then we get into trouble of one sort or another.
523 # A longer-term fix would be to have automake use am__CC in this case,
524 # and then we could set am__CC="\$(top_srcdir)/compile \$(CC)"
525 CC="$am_aux_dir/compile $CC"
526 fi
527 AC_LANG_POP([C])])
528
529 # For backward compatibility.
530 AC_DEFUN_ONCE([AM_PROG_CC_C_O], [AC_REQUIRE([AC_PROG_CC])])
531
532 # Copyright (C) 2001-2013 Free Software Foundation, Inc.
533 #
534 # This file is free software; the Free Software Foundation
535 # gives unlimited permission to copy and/or distribute it,
536 # with or without modifications, as long as this notice is preserved.
537
538 # AM_RUN_LOG(COMMAND)
539 # -------------------
540 # Run COMMAND, save the exit status in ac_status, and log it.
541 # (This has been adapted from Autoconf's _AC_RUN_LOG macro.)
542 AC_DEFUN([AM_RUN_LOG],
543 [{ echo "$as_me:$LINENO: $1" >&AS_MESSAGE_LOG_FD
544 ($1) >&AS_MESSAGE_LOG_FD 2>&AS_MESSAGE_LOG_FD
545 ac_status=$?
546 echo "$as_me:$LINENO: \$? = $ac_status" >&AS_MESSAGE_LOG_FD
547 (exit $ac_status); }])
548
549 # Check to make sure that the build environment is sane. -*- Autoconf -*-
550
551 # Copyright (C) 1996-2013 Free Software Foundation, Inc.
552 #
553 # This file is free software; the Free Software Foundation
554 # gives unlimited permission to copy and/or distribute it,
555 # with or without modifications, as long as this notice is preserved.
556
557 # AM_SANITY_CHECK
558 # ---------------
559 AC_DEFUN([AM_SANITY_CHECK],
560 [AC_MSG_CHECKING([whether build environment is sane])
561 # Reject unsafe characters in $srcdir or the absolute working directory
562 # name. Accept space and tab only in the latter.
563 am_lf='
564 '
565 case `pwd` in
566 *[[\\\"\#\$\&\'\`$am_lf]]*)
567 AC_MSG_ERROR([unsafe absolute working directory name]);;
568 esac
569 case $srcdir in
570 *[[\\\"\#\$\&\'\`$am_lf\ \ ]]*)
571 AC_MSG_ERROR([unsafe srcdir value: '$srcdir']);;
572 esac
573
574 # Do 'set' in a subshell so we don't clobber the current shell's
575 # arguments. Must try -L first in case configure is actually a
576 # symlink; some systems play weird games with the mod time of symlinks
577 # (eg FreeBSD returns the mod time of the symlink's containing
578 # directory).
579 if (
580 am_has_slept=no
581 for am_try in 1 2; do
582 echo "timestamp, slept: $am_has_slept" > conftest.file
583 set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null`
584 if test "$[*]" = "X"; then
585 # -L didn't work.
586 set X `ls -t "$srcdir/configure" conftest.file`
587 fi
588 if test "$[*]" != "X $srcdir/configure conftest.file" \
589 && test "$[*]" != "X conftest.file $srcdir/configure"; then
590
591 # If neither matched, then we have a broken ls. This can happen
592 # if, for instance, CONFIG_SHELL is bash and it inherits a
593 # broken ls alias from the environment. This has actually
594 # happened. Such a system could not be considered "sane".
595 AC_MSG_ERROR([ls -t appears to fail. Make sure there is not a broken
596 alias in your environment])
597 fi
598 if test "$[2]" = conftest.file || test $am_try -eq 2; then
599 break
600 fi
601 # Just in case.
602 sleep 1
603 am_has_slept=yes
604 done
605 test "$[2]" = conftest.file
606 )
607 then
608 # Ok.
609 :
610 else
611 AC_MSG_ERROR([newly created file is older than distributed files!
612 Check your system clock])
613 fi
614 AC_MSG_RESULT([yes])
615 # If we didn't sleep, we still need to ensure time stamps of config.status and
616 # generated files are strictly newer.
617 am_sleep_pid=
618 if grep 'slept: no' conftest.file >/dev/null 2>&1; then
619 ( sleep 1 ) &
620 am_sleep_pid=$!
621 fi
622 AC_CONFIG_COMMANDS_PRE(
623 [AC_MSG_CHECKING([that generated files are newer than configure])
624 if test -n "$am_sleep_pid"; then
625 # Hide warnings about reused PIDs.
626 wait $am_sleep_pid 2>/dev/null
627 fi
628 AC_MSG_RESULT([done])])
629 rm -f conftest.file
630 ])
631
632 # Copyright (C) 2009-2013 Free Software Foundation, Inc.
633 #
634 # This file is free software; the Free Software Foundation
635 # gives unlimited permission to copy and/or distribute it,
636 # with or without modifications, as long as this notice is preserved.
637
638 # AM_SILENT_RULES([DEFAULT])
639 # --------------------------
640 # Enable less verbose build rules; with the default set to DEFAULT
641 # ("yes" being less verbose, "no" or empty being verbose).
642 AC_DEFUN([AM_SILENT_RULES],
643 [AC_ARG_ENABLE([silent-rules], [dnl
644 AS_HELP_STRING(
645 [--enable-silent-rules],
646 [less verbose build output (undo: "make V=1")])
647 AS_HELP_STRING(
648 [--disable-silent-rules],
649 [verbose build output (undo: "make V=0")])dnl
650 ])
651 case $enable_silent_rules in @%:@ (((
652 yes) AM_DEFAULT_VERBOSITY=0;;
653 no) AM_DEFAULT_VERBOSITY=1;;
654 *) AM_DEFAULT_VERBOSITY=m4_if([$1], [yes], [0], [1]);;
655 esac
656 dnl
657 dnl A few 'make' implementations (e.g., NonStop OS and NextStep)
658 dnl do not support nested variable expansions.
659 dnl See automake bug#9928 and bug#10237.
660 am_make=${MAKE-make}
661 AC_CACHE_CHECK([whether $am_make supports nested variables],
662 [am_cv_make_support_nested_variables],
663 [if AS_ECHO([['TRUE=$(BAR$(V))
664 BAR0=false
665 BAR1=true
666 V=1
667 am__doit:
668 @$(TRUE)
669 .PHONY: am__doit']]) | $am_make -f - >/dev/null 2>&1; then
670 am_cv_make_support_nested_variables=yes
671 else
672 am_cv_make_support_nested_variables=no
673 fi])
674 if test $am_cv_make_support_nested_variables = yes; then
675 dnl Using '$V' instead of '$(V)' breaks IRIX make.
676 AM_V='$(V)'
677 AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)'
678 else
679 AM_V=$AM_DEFAULT_VERBOSITY
680 AM_DEFAULT_V=$AM_DEFAULT_VERBOSITY
681 fi
682 AC_SUBST([AM_V])dnl
683 AM_SUBST_NOTMAKE([AM_V])dnl
684 AC_SUBST([AM_DEFAULT_V])dnl
685 AM_SUBST_NOTMAKE([AM_DEFAULT_V])dnl
686 AC_SUBST([AM_DEFAULT_VERBOSITY])dnl
687 AM_BACKSLASH='\'
688 AC_SUBST([AM_BACKSLASH])dnl
689 _AM_SUBST_NOTMAKE([AM_BACKSLASH])dnl
690 ])
691
692 # Copyright (C) 2001-2013 Free Software Foundation, Inc.
693 #
694 # This file is free software; the Free Software Foundation
695 # gives unlimited permission to copy and/or distribute it,
696 # with or without modifications, as long as this notice is preserved.
697
698 # AM_PROG_INSTALL_STRIP
699 # ---------------------
700 # One issue with vendor 'install' (even GNU) is that you can't
701 # specify the program used to strip binaries. This is especially
702 # annoying in cross-compiling environments, where the build's strip
703 # is unlikely to handle the host's binaries.
704 # Fortunately install-sh will honor a STRIPPROG variable, so we
705 # always use install-sh in "make install-strip", and initialize
706 # STRIPPROG with the value of the STRIP variable (set by the user).
707 AC_DEFUN([AM_PROG_INSTALL_STRIP],
708 [AC_REQUIRE([AM_PROG_INSTALL_SH])dnl
709 # Installed binaries are usually stripped using 'strip' when the user
710 # run "make install-strip". However 'strip' might not be the right
711 # tool to use in cross-compilation environments, therefore Automake
712 # will honor the 'STRIP' environment variable to overrule this program.
713 dnl Don't test for $cross_compiling = yes, because it might be 'maybe'.
714 if test "$cross_compiling" != no; then
715 AC_CHECK_TOOL([STRIP], [strip], :)
716 fi
717 INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s"
718 AC_SUBST([INSTALL_STRIP_PROGRAM])])
719
720 # Copyright (C) 2006-2013 Free Software Foundation, Inc.
721 #
722 # This file is free software; the Free Software Foundation
723 # gives unlimited permission to copy and/or distribute it,
724 # with or without modifications, as long as this notice is preserved.
725
726 # _AM_SUBST_NOTMAKE(VARIABLE)
727 # ---------------------------
728 # Prevent Automake from outputting VARIABLE = @VARIABLE@ in Makefile.in.
729 # This macro is traced by Automake.
730 AC_DEFUN([_AM_SUBST_NOTMAKE])
731
732 # AM_SUBST_NOTMAKE(VARIABLE)
733 # --------------------------
734 # Public sister of _AM_SUBST_NOTMAKE.
735 AC_DEFUN([AM_SUBST_NOTMAKE], [_AM_SUBST_NOTMAKE($@)])
736
737 # Check how to create a tarball. -*- Autoconf -*-
738
739 # Copyright (C) 2004-2013 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_TAR(FORMAT)
746 # --------------------
747 # Check how to create a tarball in format FORMAT.
748 # FORMAT should be one of 'v7', 'ustar', or 'pax'.
749 #
750 # Substitute a variable $(am__tar) that is a command
751 # writing to stdout a FORMAT-tarball containing the directory
752 # $tardir.
753 # tardir=directory && $(am__tar) > result.tar
754 #
755 # Substitute a variable $(am__untar) that extract such
756 # a tarball read from stdin.
757 # $(am__untar) < result.tar
758 #
759 AC_DEFUN([_AM_PROG_TAR],
760 [# Always define AMTAR for backward compatibility. Yes, it's still used
761 # in the wild :-( We should find a proper way to deprecate it ...
762 AC_SUBST([AMTAR], ['$${TAR-tar}'])
763
764 # We'll loop over all known methods to create a tar archive until one works.
765 _am_tools='gnutar m4_if([$1], [ustar], [plaintar]) pax cpio none'
766
767 m4_if([$1], [v7],
768 [am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -'],
769
770 [m4_case([$1],
771 [ustar],
772 [# The POSIX 1988 'ustar' format is defined with fixed-size fields.
773 # There is notably a 21 bits limit for the UID and the GID. In fact,
774 # the 'pax' utility can hang on bigger UID/GID (see automake bug#8343
775 # and bug#13588).
776 am_max_uid=2097151 # 2^21 - 1
777 am_max_gid=$am_max_uid
778 # The $UID and $GID variables are not portable, so we need to resort
779 # to the POSIX-mandated id(1) utility. Errors in the 'id' calls
780 # below are definitely unexpected, so allow the users to see them
781 # (that is, avoid stderr redirection).
782 am_uid=`id -u || echo unknown`
783 am_gid=`id -g || echo unknown`
784 AC_MSG_CHECKING([whether UID '$am_uid' is supported by ustar format])
785 if test $am_uid -le $am_max_uid; then
786 AC_MSG_RESULT([yes])
787 else
788 AC_MSG_RESULT([no])
789 _am_tools=none
790 fi
791 AC_MSG_CHECKING([whether GID '$am_gid' is supported by ustar format])
792 if test $am_gid -le $am_max_gid; then
793 AC_MSG_RESULT([yes])
794 else
795 AC_MSG_RESULT([no])
796 _am_tools=none
797 fi],
798
799 [pax],
800 [],
801
802 [m4_fatal([Unknown tar format])])
803
804 AC_MSG_CHECKING([how to create a $1 tar archive])
805
806 # Go ahead even if we have the value already cached. We do so because we
807 # need to set the values for the 'am__tar' and 'am__untar' variables.
808 _am_tools=${am_cv_prog_tar_$1-$_am_tools}
809
810 for _am_tool in $_am_tools; do
811 case $_am_tool in
812 gnutar)
813 for _am_tar in tar gnutar gtar; do
814 AM_RUN_LOG([$_am_tar --version]) && break
815 done
816 am__tar="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$$tardir"'
817 am__tar_="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$tardir"'
818 am__untar="$_am_tar -xf -"
819 ;;
820 plaintar)
821 # Must skip GNU tar: if it does not support --format= it doesn't create
822 # ustar tarball either.
823 (tar --version) >/dev/null 2>&1 && continue
824 am__tar='tar chf - "$$tardir"'
825 am__tar_='tar chf - "$tardir"'
826 am__untar='tar xf -'
827 ;;
828 pax)
829 am__tar='pax -L -x $1 -w "$$tardir"'
830 am__tar_='pax -L -x $1 -w "$tardir"'
831 am__untar='pax -r'
832 ;;
833 cpio)
834 am__tar='find "$$tardir" -print | cpio -o -H $1 -L'
835 am__tar_='find "$tardir" -print | cpio -o -H $1 -L'
836 am__untar='cpio -i -H $1 -d'
837 ;;
838 none)
839 am__tar=false
840 am__tar_=false
841 am__untar=false
842 ;;
843 esac
844
845 # If the value was cached, stop now. We just wanted to have am__tar
846 # and am__untar set.
847 test -n "${am_cv_prog_tar_$1}" && break
848
849 # tar/untar a dummy directory, and stop if the command works.
850 rm -rf conftest.dir
851 mkdir conftest.dir
852 echo GrepMe > conftest.dir/file
853 AM_RUN_LOG([tardir=conftest.dir && eval $am__tar_ >conftest.tar])
854 rm -rf conftest.dir
855 if test -s conftest.tar; then
856 AM_RUN_LOG([$am__untar <conftest.tar])
857 AM_RUN_LOG([cat conftest.dir/file])
858 grep GrepMe conftest.dir/file >/dev/null 2>&1 && break
859 fi
860 done
861 rm -rf conftest.dir
862
863 AC_CACHE_VAL([am_cv_prog_tar_$1], [am_cv_prog_tar_$1=$_am_tool])
864 AC_MSG_RESULT([$am_cv_prog_tar_$1])])
865
866 AC_SUBST([am__tar])
867 AC_SUBST([am__untar])
868 ]) # _AM_PROG_TAR
869
870 m4_include([m4/ax_check_compile_flag.m4])
871 m4_include([m4/ax_ext.m4])
872 m4_include([m4/ax_gcc_x86_avx_xgetbv.m4])
873 m4_include([m4/ax_gcc_x86_cpuid.m4])
874 m4_include([m4/libtool.m4])
875 m4_include([m4/ltoptions.m4])
876 m4_include([m4/ltsugar.m4])
877 m4_include([m4/ltversion.m4])
878 m4_include([m4/lt~obsolete.m4])
+0
-2
autogen.sh less more
0 #!/bin/sh
1 autoreconf --force --install -I m4
+0
-1558
config.guess less more
0 #! /bin/sh
1 # Attempt to guess a canonical system name.
2 # Copyright 1992-2013 Free Software Foundation, Inc.
3
4 timestamp='2013-06-10'
5
6 # This file is free software; you can redistribute it and/or modify it
7 # under the terms of the GNU General Public License as published by
8 # the Free Software Foundation; either version 3 of the License, or
9 # (at your option) any later version.
10 #
11 # This program is distributed in the hope that it will be useful, but
12 # WITHOUT ANY WARRANTY; without even the implied warranty of
13 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14 # General Public License for more details.
15 #
16 # You should have received a copy of the GNU General Public License
17 # along with this program; if not, see <http://www.gnu.org/licenses/>.
18 #
19 # As a special exception to the GNU General Public License, if you
20 # distribute this file as part of a program that contains a
21 # configuration script generated by Autoconf, you may include it under
22 # the same distribution terms that you use for the rest of that
23 # program. This Exception is an additional permission under section 7
24 # of the GNU General Public License, version 3 ("GPLv3").
25 #
26 # Originally written by Per Bothner.
27 #
28 # You can get the latest version of this script from:
29 # http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess;hb=HEAD
30 #
31 # Please send patches with a ChangeLog entry to config-patches@gnu.org.
32
33
34 me=`echo "$0" | sed -e 's,.*/,,'`
35
36 usage="\
37 Usage: $0 [OPTION]
38
39 Output the configuration name of the system \`$me' is run on.
40
41 Operation modes:
42 -h, --help print this help, then exit
43 -t, --time-stamp print date of last modification, then exit
44 -v, --version print version number, then exit
45
46 Report bugs and patches to <config-patches@gnu.org>."
47
48 version="\
49 GNU config.guess ($timestamp)
50
51 Originally written by Per Bothner.
52 Copyright 1992-2013 Free Software Foundation, Inc.
53
54 This is free software; see the source for copying conditions. There is NO
55 warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
56
57 help="
58 Try \`$me --help' for more information."
59
60 # Parse command line
61 while test $# -gt 0 ; do
62 case $1 in
63 --time-stamp | --time* | -t )
64 echo "$timestamp" ; exit ;;
65 --version | -v )
66 echo "$version" ; exit ;;
67 --help | --h* | -h )
68 echo "$usage"; exit ;;
69 -- ) # Stop option processing
70 shift; break ;;
71 - ) # Use stdin as input.
72 break ;;
73 -* )
74 echo "$me: invalid option $1$help" >&2
75 exit 1 ;;
76 * )
77 break ;;
78 esac
79 done
80
81 if test $# != 0; then
82 echo "$me: too many arguments$help" >&2
83 exit 1
84 fi
85
86 trap 'exit 1' 1 2 15
87
88 # CC_FOR_BUILD -- compiler used by this script. Note that the use of a
89 # compiler to aid in system detection is discouraged as it requires
90 # temporary files to be created and, as you can see below, it is a
91 # headache to deal with in a portable fashion.
92
93 # Historically, `CC_FOR_BUILD' used to be named `HOST_CC'. We still
94 # use `HOST_CC' if defined, but it is deprecated.
95
96 # Portable tmp directory creation inspired by the Autoconf team.
97
98 set_cc_for_build='
99 trap "exitcode=\$?; (rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null) && exit \$exitcode" 0 ;
100 trap "rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null; exit 1" 1 2 13 15 ;
101 : ${TMPDIR=/tmp} ;
102 { tmp=`(umask 077 && mktemp -d "$TMPDIR/cgXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" ; } ||
103 { test -n "$RANDOM" && tmp=$TMPDIR/cg$$-$RANDOM && (umask 077 && mkdir $tmp) ; } ||
104 { tmp=$TMPDIR/cg-$$ && (umask 077 && mkdir $tmp) && echo "Warning: creating insecure temp directory" >&2 ; } ||
105 { echo "$me: cannot create a temporary directory in $TMPDIR" >&2 ; exit 1 ; } ;
106 dummy=$tmp/dummy ;
107 tmpfiles="$dummy.c $dummy.o $dummy.rel $dummy" ;
108 case $CC_FOR_BUILD,$HOST_CC,$CC in
109 ,,) echo "int x;" > $dummy.c ;
110 for c in cc gcc c89 c99 ; do
111 if ($c -c -o $dummy.o $dummy.c) >/dev/null 2>&1 ; then
112 CC_FOR_BUILD="$c"; break ;
113 fi ;
114 done ;
115 if test x"$CC_FOR_BUILD" = x ; then
116 CC_FOR_BUILD=no_compiler_found ;
117 fi
118 ;;
119 ,,*) CC_FOR_BUILD=$CC ;;
120 ,*,*) CC_FOR_BUILD=$HOST_CC ;;
121 esac ; set_cc_for_build= ;'
122
123 # This is needed to find uname on a Pyramid OSx when run in the BSD universe.
124 # (ghazi@noc.rutgers.edu 1994-08-24)
125 if (test -f /.attbin/uname) >/dev/null 2>&1 ; then
126 PATH=$PATH:/.attbin ; export PATH
127 fi
128
129 UNAME_MACHINE=`(uname -m) 2>/dev/null` || UNAME_MACHINE=unknown
130 UNAME_RELEASE=`(uname -r) 2>/dev/null` || UNAME_RELEASE=unknown
131 UNAME_SYSTEM=`(uname -s) 2>/dev/null` || UNAME_SYSTEM=unknown
132 UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown
133
134 case "${UNAME_SYSTEM}" in
135 Linux|GNU|GNU/*)
136 # If the system lacks a compiler, then just pick glibc.
137 # We could probably try harder.
138 LIBC=gnu
139
140 eval $set_cc_for_build
141 cat <<-EOF > $dummy.c
142 #include <features.h>
143 #if defined(__UCLIBC__)
144 LIBC=uclibc
145 #elif defined(__dietlibc__)
146 LIBC=dietlibc
147 #else
148 LIBC=gnu
149 #endif
150 EOF
151 eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^LIBC'`
152 ;;
153 esac
154
155 # Note: order is significant - the case branches are not exclusive.
156
157 case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
158 *:NetBSD:*:*)
159 # NetBSD (nbsd) targets should (where applicable) match one or
160 # more of the tuples: *-*-netbsdelf*, *-*-netbsdaout*,
161 # *-*-netbsdecoff* and *-*-netbsd*. For targets that recently
162 # switched to ELF, *-*-netbsd* would select the old
163 # object file format. This provides both forward
164 # compatibility and a consistent mechanism for selecting the
165 # object file format.
166 #
167 # Note: NetBSD doesn't particularly care about the vendor
168 # portion of the name. We always set it to "unknown".
169 sysctl="sysctl -n hw.machine_arch"
170 UNAME_MACHINE_ARCH=`(/sbin/$sysctl 2>/dev/null || \
171 /usr/sbin/$sysctl 2>/dev/null || echo unknown)`
172 case "${UNAME_MACHINE_ARCH}" in
173 armeb) machine=armeb-unknown ;;
174 arm*) machine=arm-unknown ;;
175 sh3el) machine=shl-unknown ;;
176 sh3eb) machine=sh-unknown ;;
177 sh5el) machine=sh5le-unknown ;;
178 *) machine=${UNAME_MACHINE_ARCH}-unknown ;;
179 esac
180 # The Operating System including object format, if it has switched
181 # to ELF recently, or will in the future.
182 case "${UNAME_MACHINE_ARCH}" in
183 arm*|i386|m68k|ns32k|sh3*|sparc|vax)
184 eval $set_cc_for_build
185 if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \
186 | grep -q __ELF__
187 then
188 # Once all utilities can be ECOFF (netbsdecoff) or a.out (netbsdaout).
189 # Return netbsd for either. FIX?
190 os=netbsd
191 else
192 os=netbsdelf
193 fi
194 ;;
195 *)
196 os=netbsd
197 ;;
198 esac
199 # The OS release
200 # Debian GNU/NetBSD machines have a different userland, and
201 # thus, need a distinct triplet. However, they do not need
202 # kernel version information, so it can be replaced with a
203 # suitable tag, in the style of linux-gnu.
204 case "${UNAME_VERSION}" in
205 Debian*)
206 release='-gnu'
207 ;;
208 *)
209 release=`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'`
210 ;;
211 esac
212 # Since CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM:
213 # contains redundant information, the shorter form:
214 # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used.
215 echo "${machine}-${os}${release}"
216 exit ;;
217 *:Bitrig:*:*)
218 UNAME_MACHINE_ARCH=`arch | sed 's/Bitrig.//'`
219 echo ${UNAME_MACHINE_ARCH}-unknown-bitrig${UNAME_RELEASE}
220 exit ;;
221 *:OpenBSD:*:*)
222 UNAME_MACHINE_ARCH=`arch | sed 's/OpenBSD.//'`
223 echo ${UNAME_MACHINE_ARCH}-unknown-openbsd${UNAME_RELEASE}
224 exit ;;
225 *:ekkoBSD:*:*)
226 echo ${UNAME_MACHINE}-unknown-ekkobsd${UNAME_RELEASE}
227 exit ;;
228 *:SolidBSD:*:*)
229 echo ${UNAME_MACHINE}-unknown-solidbsd${UNAME_RELEASE}
230 exit ;;
231 macppc:MirBSD:*:*)
232 echo powerpc-unknown-mirbsd${UNAME_RELEASE}
233 exit ;;
234 *:MirBSD:*:*)
235 echo ${UNAME_MACHINE}-unknown-mirbsd${UNAME_RELEASE}
236 exit ;;
237 alpha:OSF1:*:*)
238 case $UNAME_RELEASE in
239 *4.0)
240 UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'`
241 ;;
242 *5.*)
243 UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $4}'`
244 ;;
245 esac
246 # According to Compaq, /usr/sbin/psrinfo has been available on
247 # OSF/1 and Tru64 systems produced since 1995. I hope that
248 # covers most systems running today. This code pipes the CPU
249 # types through head -n 1, so we only detect the type of CPU 0.
250 ALPHA_CPU_TYPE=`/usr/sbin/psrinfo -v | sed -n -e 's/^ The alpha \(.*\) processor.*$/\1/p' | head -n 1`
251 case "$ALPHA_CPU_TYPE" in
252 "EV4 (21064)")
253 UNAME_MACHINE="alpha" ;;
254 "EV4.5 (21064)")
255 UNAME_MACHINE="alpha" ;;
256 "LCA4 (21066/21068)")
257 UNAME_MACHINE="alpha" ;;
258 "EV5 (21164)")
259 UNAME_MACHINE="alphaev5" ;;
260 "EV5.6 (21164A)")
261 UNAME_MACHINE="alphaev56" ;;
262 "EV5.6 (21164PC)")
263 UNAME_MACHINE="alphapca56" ;;
264 "EV5.7 (21164PC)")
265 UNAME_MACHINE="alphapca57" ;;
266 "EV6 (21264)")
267 UNAME_MACHINE="alphaev6" ;;
268 "EV6.7 (21264A)")
269 UNAME_MACHINE="alphaev67" ;;
270 "EV6.8CB (21264C)")
271 UNAME_MACHINE="alphaev68" ;;
272 "EV6.8AL (21264B)")
273 UNAME_MACHINE="alphaev68" ;;
274 "EV6.8CX (21264D)")
275 UNAME_MACHINE="alphaev68" ;;
276 "EV6.9A (21264/EV69A)")
277 UNAME_MACHINE="alphaev69" ;;
278 "EV7 (21364)")
279 UNAME_MACHINE="alphaev7" ;;
280 "EV7.9 (21364A)")
281 UNAME_MACHINE="alphaev79" ;;
282 esac
283 # A Pn.n version is a patched version.
284 # A Vn.n version is a released version.
285 # A Tn.n version is a released field test version.
286 # A Xn.n version is an unreleased experimental baselevel.
287 # 1.2 uses "1.2" for uname -r.
288 echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[PVTX]//' | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
289 # Reset EXIT trap before exiting to avoid spurious non-zero exit code.
290 exitcode=$?
291 trap '' 0
292 exit $exitcode ;;
293 Alpha\ *:Windows_NT*:*)
294 # How do we know it's Interix rather than the generic POSIX subsystem?
295 # Should we change UNAME_MACHINE based on the output of uname instead
296 # of the specific Alpha model?
297 echo alpha-pc-interix
298 exit ;;
299 21064:Windows_NT:50:3)
300 echo alpha-dec-winnt3.5
301 exit ;;
302 Amiga*:UNIX_System_V:4.0:*)
303 echo m68k-unknown-sysv4
304 exit ;;
305 *:[Aa]miga[Oo][Ss]:*:*)
306 echo ${UNAME_MACHINE}-unknown-amigaos
307 exit ;;
308 *:[Mm]orph[Oo][Ss]:*:*)
309 echo ${UNAME_MACHINE}-unknown-morphos
310 exit ;;
311 *:OS/390:*:*)
312 echo i370-ibm-openedition
313 exit ;;
314 *:z/VM:*:*)
315 echo s390-ibm-zvmoe
316 exit ;;
317 *:OS400:*:*)
318 echo powerpc-ibm-os400
319 exit ;;
320 arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*)
321 echo arm-acorn-riscix${UNAME_RELEASE}
322 exit ;;
323 arm*:riscos:*:*|arm*:RISCOS:*:*)
324 echo arm-unknown-riscos
325 exit ;;
326 SR2?01:HI-UX/MPP:*:* | SR8000:HI-UX/MPP:*:*)
327 echo hppa1.1-hitachi-hiuxmpp
328 exit ;;
329 Pyramid*:OSx*:*:* | MIS*:OSx*:*:* | MIS*:SMP_DC-OSx*:*:*)
330 # akee@wpdis03.wpafb.af.mil (Earle F. Ake) contributed MIS and NILE.
331 if test "`(/bin/universe) 2>/dev/null`" = att ; then
332 echo pyramid-pyramid-sysv3
333 else
334 echo pyramid-pyramid-bsd
335 fi
336 exit ;;
337 NILE*:*:*:dcosx)
338 echo pyramid-pyramid-svr4
339 exit ;;
340 DRS?6000:unix:4.0:6*)
341 echo sparc-icl-nx6
342 exit ;;
343 DRS?6000:UNIX_SV:4.2*:7* | DRS?6000:isis:4.2*:7*)
344 case `/usr/bin/uname -p` in
345 sparc) echo sparc-icl-nx7; exit ;;
346 esac ;;
347 s390x:SunOS:*:*)
348 echo ${UNAME_MACHINE}-ibm-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
349 exit ;;
350 sun4H:SunOS:5.*:*)
351 echo sparc-hal-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
352 exit ;;
353 sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*)
354 echo sparc-sun-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
355 exit ;;
356 i86pc:AuroraUX:5.*:* | i86xen:AuroraUX:5.*:*)
357 echo i386-pc-auroraux${UNAME_RELEASE}
358 exit ;;
359 i86pc:SunOS:5.*:* | i86xen:SunOS:5.*:*)
360 eval $set_cc_for_build
361 SUN_ARCH="i386"
362 # If there is a compiler, see if it is configured for 64-bit objects.
363 # Note that the Sun cc does not turn __LP64__ into 1 like gcc does.
364 # This test works for both compilers.
365 if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then
366 if (echo '#ifdef __amd64'; echo IS_64BIT_ARCH; echo '#endif') | \
367 (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \
368 grep IS_64BIT_ARCH >/dev/null
369 then
370 SUN_ARCH="x86_64"
371 fi
372 fi
373 echo ${SUN_ARCH}-pc-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
374 exit ;;
375 sun4*:SunOS:6*:*)
376 # According to config.sub, this is the proper way to canonicalize
377 # SunOS6. Hard to guess exactly what SunOS6 will be like, but
378 # it's likely to be more like Solaris than SunOS4.
379 echo sparc-sun-solaris3`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
380 exit ;;
381 sun4*:SunOS:*:*)
382 case "`/usr/bin/arch -k`" in
383 Series*|S4*)
384 UNAME_RELEASE=`uname -v`
385 ;;
386 esac
387 # Japanese Language versions have a version number like `4.1.3-JL'.
388 echo sparc-sun-sunos`echo ${UNAME_RELEASE}|sed -e 's/-/_/'`
389 exit ;;
390 sun3*:SunOS:*:*)
391 echo m68k-sun-sunos${UNAME_RELEASE}
392 exit ;;
393 sun*:*:4.2BSD:*)
394 UNAME_RELEASE=`(sed 1q /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null`
395 test "x${UNAME_RELEASE}" = "x" && UNAME_RELEASE=3
396 case "`/bin/arch`" in
397 sun3)
398 echo m68k-sun-sunos${UNAME_RELEASE}
399 ;;
400 sun4)
401 echo sparc-sun-sunos${UNAME_RELEASE}
402 ;;
403 esac
404 exit ;;
405 aushp:SunOS:*:*)
406 echo sparc-auspex-sunos${UNAME_RELEASE}
407 exit ;;
408 # The situation for MiNT is a little confusing. The machine name
409 # can be virtually everything (everything which is not
410 # "atarist" or "atariste" at least should have a processor
411 # > m68000). The system name ranges from "MiNT" over "FreeMiNT"
412 # to the lowercase version "mint" (or "freemint"). Finally
413 # the system name "TOS" denotes a system which is actually not
414 # MiNT. But MiNT is downward compatible to TOS, so this should
415 # be no problem.
416 atarist[e]:*MiNT:*:* | atarist[e]:*mint:*:* | atarist[e]:*TOS:*:*)
417 echo m68k-atari-mint${UNAME_RELEASE}
418 exit ;;
419 atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*)
420 echo m68k-atari-mint${UNAME_RELEASE}
421 exit ;;
422 *falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*)
423 echo m68k-atari-mint${UNAME_RELEASE}
424 exit ;;
425 milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*)
426 echo m68k-milan-mint${UNAME_RELEASE}
427 exit ;;
428 hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*)
429 echo m68k-hades-mint${UNAME_RELEASE}
430 exit ;;
431 *:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*)
432 echo m68k-unknown-mint${UNAME_RELEASE}
433 exit ;;
434 m68k:machten:*:*)
435 echo m68k-apple-machten${UNAME_RELEASE}
436 exit ;;
437 powerpc:machten:*:*)
438 echo powerpc-apple-machten${UNAME_RELEASE}
439 exit ;;
440 RISC*:Mach:*:*)
441 echo mips-dec-mach_bsd4.3
442 exit ;;
443 RISC*:ULTRIX:*:*)
444 echo mips-dec-ultrix${UNAME_RELEASE}
445 exit ;;
446 VAX*:ULTRIX*:*:*)
447 echo vax-dec-ultrix${UNAME_RELEASE}
448 exit ;;
449 2020:CLIX:*:* | 2430:CLIX:*:*)
450 echo clipper-intergraph-clix${UNAME_RELEASE}
451 exit ;;
452 mips:*:*:UMIPS | mips:*:*:RISCos)
453 eval $set_cc_for_build
454 sed 's/^ //' << EOF >$dummy.c
455 #ifdef __cplusplus
456 #include <stdio.h> /* for printf() prototype */
457 int main (int argc, char *argv[]) {
458 #else
459 int main (argc, argv) int argc; char *argv[]; {
460 #endif
461 #if defined (host_mips) && defined (MIPSEB)
462 #if defined (SYSTYPE_SYSV)
463 printf ("mips-mips-riscos%ssysv\n", argv[1]); exit (0);
464 #endif
465 #if defined (SYSTYPE_SVR4)
466 printf ("mips-mips-riscos%ssvr4\n", argv[1]); exit (0);
467 #endif
468 #if defined (SYSTYPE_BSD43) || defined(SYSTYPE_BSD)
469 printf ("mips-mips-riscos%sbsd\n", argv[1]); exit (0);
470 #endif
471 #endif
472 exit (-1);
473 }
474 EOF
475 $CC_FOR_BUILD -o $dummy $dummy.c &&
476 dummyarg=`echo "${UNAME_RELEASE}" | sed -n 's/\([0-9]*\).*/\1/p'` &&
477 SYSTEM_NAME=`$dummy $dummyarg` &&
478 { echo "$SYSTEM_NAME"; exit; }
479 echo mips-mips-riscos${UNAME_RELEASE}
480 exit ;;
481 Motorola:PowerMAX_OS:*:*)
482 echo powerpc-motorola-powermax
483 exit ;;
484 Motorola:*:4.3:PL8-*)
485 echo powerpc-harris-powermax
486 exit ;;
487 Night_Hawk:*:*:PowerMAX_OS | Synergy:PowerMAX_OS:*:*)
488 echo powerpc-harris-powermax
489 exit ;;
490 Night_Hawk:Power_UNIX:*:*)
491 echo powerpc-harris-powerunix
492 exit ;;
493 m88k:CX/UX:7*:*)
494 echo m88k-harris-cxux7
495 exit ;;
496 m88k:*:4*:R4*)
497 echo m88k-motorola-sysv4
498 exit ;;
499 m88k:*:3*:R3*)
500 echo m88k-motorola-sysv3
501 exit ;;
502 AViiON:dgux:*:*)
503 # DG/UX returns AViiON for all architectures
504 UNAME_PROCESSOR=`/usr/bin/uname -p`
505 if [ $UNAME_PROCESSOR = mc88100 ] || [ $UNAME_PROCESSOR = mc88110 ]
506 then
507 if [ ${TARGET_BINARY_INTERFACE}x = m88kdguxelfx ] || \
508 [ ${TARGET_BINARY_INTERFACE}x = x ]
509 then
510 echo m88k-dg-dgux${UNAME_RELEASE}
511 else
512 echo m88k-dg-dguxbcs${UNAME_RELEASE}
513 fi
514 else
515 echo i586-dg-dgux${UNAME_RELEASE}
516 fi
517 exit ;;
518 M88*:DolphinOS:*:*) # DolphinOS (SVR3)
519 echo m88k-dolphin-sysv3
520 exit ;;
521 M88*:*:R3*:*)
522 # Delta 88k system running SVR3
523 echo m88k-motorola-sysv3
524 exit ;;
525 XD88*:*:*:*) # Tektronix XD88 system running UTekV (SVR3)
526 echo m88k-tektronix-sysv3
527 exit ;;
528 Tek43[0-9][0-9]:UTek:*:*) # Tektronix 4300 system running UTek (BSD)
529 echo m68k-tektronix-bsd
530 exit ;;
531 *:IRIX*:*:*)
532 echo mips-sgi-irix`echo ${UNAME_RELEASE}|sed -e 's/-/_/g'`
533 exit ;;
534 ????????:AIX?:[12].1:2) # AIX 2.2.1 or AIX 2.1.1 is RT/PC AIX.
535 echo romp-ibm-aix # uname -m gives an 8 hex-code CPU id
536 exit ;; # Note that: echo "'`uname -s`'" gives 'AIX '
537 i*86:AIX:*:*)
538 echo i386-ibm-aix
539 exit ;;
540 ia64:AIX:*:*)
541 if [ -x /usr/bin/oslevel ] ; then
542 IBM_REV=`/usr/bin/oslevel`
543 else
544 IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE}
545 fi
546 echo ${UNAME_MACHINE}-ibm-aix${IBM_REV}
547 exit ;;
548 *:AIX:2:3)
549 if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then
550 eval $set_cc_for_build
551 sed 's/^ //' << EOF >$dummy.c
552 #include <sys/systemcfg.h>
553
554 main()
555 {
556 if (!__power_pc())
557 exit(1);
558 puts("powerpc-ibm-aix3.2.5");
559 exit(0);
560 }
561 EOF
562 if $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy`
563 then
564 echo "$SYSTEM_NAME"
565 else
566 echo rs6000-ibm-aix3.2.5
567 fi
568 elif grep bos324 /usr/include/stdio.h >/dev/null 2>&1; then
569 echo rs6000-ibm-aix3.2.4
570 else
571 echo rs6000-ibm-aix3.2
572 fi
573 exit ;;
574 *:AIX:*:[4567])
575 IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | sed 1q | awk '{ print $1 }'`
576 if /usr/sbin/lsattr -El ${IBM_CPU_ID} | grep ' POWER' >/dev/null 2>&1; then
577 IBM_ARCH=rs6000
578 else
579 IBM_ARCH=powerpc
580 fi
581 if [ -x /usr/bin/oslevel ] ; then
582 IBM_REV=`/usr/bin/oslevel`
583 else
584 IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE}
585 fi
586 echo ${IBM_ARCH}-ibm-aix${IBM_REV}
587 exit ;;
588 *:AIX:*:*)
589 echo rs6000-ibm-aix
590 exit ;;
591 ibmrt:4.4BSD:*|romp-ibm:BSD:*)
592 echo romp-ibm-bsd4.4
593 exit ;;
594 ibmrt:*BSD:*|romp-ibm:BSD:*) # covers RT/PC BSD and
595 echo romp-ibm-bsd${UNAME_RELEASE} # 4.3 with uname added to
596 exit ;; # report: romp-ibm BSD 4.3
597 *:BOSX:*:*)
598 echo rs6000-bull-bosx
599 exit ;;
600 DPX/2?00:B.O.S.:*:*)
601 echo m68k-bull-sysv3
602 exit ;;
603 9000/[34]??:4.3bsd:1.*:*)
604 echo m68k-hp-bsd
605 exit ;;
606 hp300:4.4BSD:*:* | 9000/[34]??:4.3bsd:2.*:*)
607 echo m68k-hp-bsd4.4
608 exit ;;
609 9000/[34678]??:HP-UX:*:*)
610 HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'`
611 case "${UNAME_MACHINE}" in
612 9000/31? ) HP_ARCH=m68000 ;;
613 9000/[34]?? ) HP_ARCH=m68k ;;
614 9000/[678][0-9][0-9])
615 if [ -x /usr/bin/getconf ]; then
616 sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null`
617 sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null`
618 case "${sc_cpu_version}" in
619 523) HP_ARCH="hppa1.0" ;; # CPU_PA_RISC1_0
620 528) HP_ARCH="hppa1.1" ;; # CPU_PA_RISC1_1
621 532) # CPU_PA_RISC2_0
622 case "${sc_kernel_bits}" in
623 32) HP_ARCH="hppa2.0n" ;;
624 64) HP_ARCH="hppa2.0w" ;;
625 '') HP_ARCH="hppa2.0" ;; # HP-UX 10.20
626 esac ;;
627 esac
628 fi
629 if [ "${HP_ARCH}" = "" ]; then
630 eval $set_cc_for_build
631 sed 's/^ //' << EOF >$dummy.c
632
633 #define _HPUX_SOURCE
634 #include <stdlib.h>
635 #include <unistd.h>
636
637 int main ()
638 {
639 #if defined(_SC_KERNEL_BITS)
640 long bits = sysconf(_SC_KERNEL_BITS);
641 #endif
642 long cpu = sysconf (_SC_CPU_VERSION);
643
644 switch (cpu)
645 {
646 case CPU_PA_RISC1_0: puts ("hppa1.0"); break;
647 case CPU_PA_RISC1_1: puts ("hppa1.1"); break;
648 case CPU_PA_RISC2_0:
649 #if defined(_SC_KERNEL_BITS)
650 switch (bits)
651 {
652 case 64: puts ("hppa2.0w"); break;
653 case 32: puts ("hppa2.0n"); break;
654 default: puts ("hppa2.0"); break;
655 } break;
656 #else /* !defined(_SC_KERNEL_BITS) */
657 puts ("hppa2.0"); break;
658 #endif
659 default: puts ("hppa1.0"); break;
660 }
661 exit (0);
662 }
663 EOF
664 (CCOPTS= $CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null) && HP_ARCH=`$dummy`
665 test -z "$HP_ARCH" && HP_ARCH=hppa
666 fi ;;
667 esac
668 if [ ${HP_ARCH} = "hppa2.0w" ]
669 then
670 eval $set_cc_for_build
671
672 # hppa2.0w-hp-hpux* has a 64-bit kernel and a compiler generating
673 # 32-bit code. hppa64-hp-hpux* has the same kernel and a compiler
674 # generating 64-bit code. GNU and HP use different nomenclature:
675 #
676 # $ CC_FOR_BUILD=cc ./config.guess
677 # => hppa2.0w-hp-hpux11.23
678 # $ CC_FOR_BUILD="cc +DA2.0w" ./config.guess
679 # => hppa64-hp-hpux11.23
680
681 if echo __LP64__ | (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) |
682 grep -q __LP64__
683 then
684 HP_ARCH="hppa2.0w"
685 else
686 HP_ARCH="hppa64"
687 fi
688 fi
689 echo ${HP_ARCH}-hp-hpux${HPUX_REV}
690 exit ;;
691 ia64:HP-UX:*:*)
692 HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'`
693 echo ia64-hp-hpux${HPUX_REV}
694 exit ;;
695 3050*:HI-UX:*:*)
696 eval $set_cc_for_build
697 sed 's/^ //' << EOF >$dummy.c
698 #include <unistd.h>
699 int
700 main ()
701 {
702 long cpu = sysconf (_SC_CPU_VERSION);
703 /* The order matters, because CPU_IS_HP_MC68K erroneously returns
704 true for CPU_PA_RISC1_0. CPU_IS_PA_RISC returns correct
705 results, however. */
706 if (CPU_IS_PA_RISC (cpu))
707 {
708 switch (cpu)
709 {
710 case CPU_PA_RISC1_0: puts ("hppa1.0-hitachi-hiuxwe2"); break;
711 case CPU_PA_RISC1_1: puts ("hppa1.1-hitachi-hiuxwe2"); break;
712 case CPU_PA_RISC2_0: puts ("hppa2.0-hitachi-hiuxwe2"); break;
713 default: puts ("hppa-hitachi-hiuxwe2"); break;
714 }
715 }
716 else if (CPU_IS_HP_MC68K (cpu))
717 puts ("m68k-hitachi-hiuxwe2");
718 else puts ("unknown-hitachi-hiuxwe2");
719 exit (0);
720 }
721 EOF
722 $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy` &&
723 { echo "$SYSTEM_NAME"; exit; }
724 echo unknown-hitachi-hiuxwe2
725 exit ;;
726 9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:* )
727 echo hppa1.1-hp-bsd
728 exit ;;
729 9000/8??:4.3bsd:*:*)
730 echo hppa1.0-hp-bsd
731 exit ;;
732 *9??*:MPE/iX:*:* | *3000*:MPE/iX:*:*)
733 echo hppa1.0-hp-mpeix
734 exit ;;
735 hp7??:OSF1:*:* | hp8?[79]:OSF1:*:* )
736 echo hppa1.1-hp-osf
737 exit ;;
738 hp8??:OSF1:*:*)
739 echo hppa1.0-hp-osf
740 exit ;;
741 i*86:OSF1:*:*)
742 if [ -x /usr/sbin/sysversion ] ; then
743 echo ${UNAME_MACHINE}-unknown-osf1mk
744 else
745 echo ${UNAME_MACHINE}-unknown-osf1
746 fi
747 exit ;;
748 parisc*:Lites*:*:*)
749 echo hppa1.1-hp-lites
750 exit ;;
751 C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*)
752 echo c1-convex-bsd
753 exit ;;
754 C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*)
755 if getsysinfo -f scalar_acc
756 then echo c32-convex-bsd
757 else echo c2-convex-bsd
758 fi
759 exit ;;
760 C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*)
761 echo c34-convex-bsd
762 exit ;;
763 C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*)
764 echo c38-convex-bsd
765 exit ;;
766 C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*)
767 echo c4-convex-bsd
768 exit ;;
769 CRAY*Y-MP:*:*:*)
770 echo ymp-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
771 exit ;;
772 CRAY*[A-Z]90:*:*:*)
773 echo ${UNAME_MACHINE}-cray-unicos${UNAME_RELEASE} \
774 | sed -e 's/CRAY.*\([A-Z]90\)/\1/' \
775 -e y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/ \
776 -e 's/\.[^.]*$/.X/'
777 exit ;;
778 CRAY*TS:*:*:*)
779 echo t90-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
780 exit ;;
781 CRAY*T3E:*:*:*)
782 echo alphaev5-cray-unicosmk${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
783 exit ;;
784 CRAY*SV1:*:*:*)
785 echo sv1-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
786 exit ;;
787 *:UNICOS/mp:*:*)
788 echo craynv-cray-unicosmp${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
789 exit ;;
790 F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*)
791 FUJITSU_PROC=`uname -m | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
792 FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'`
793 FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'`
794 echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}"
795 exit ;;
796 5000:UNIX_System_V:4.*:*)
797 FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'`
798 FUJITSU_REL=`echo ${UNAME_RELEASE} | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/ /_/'`
799 echo "sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}"
800 exit ;;
801 i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*)
802 echo ${UNAME_MACHINE}-pc-bsdi${UNAME_RELEASE}
803 exit ;;
804 sparc*:BSD/OS:*:*)
805 echo sparc-unknown-bsdi${UNAME_RELEASE}
806 exit ;;
807 *:BSD/OS:*:*)
808 echo ${UNAME_MACHINE}-unknown-bsdi${UNAME_RELEASE}
809 exit ;;
810 *:FreeBSD:*:*)
811 UNAME_PROCESSOR=`/usr/bin/uname -p`
812 case ${UNAME_PROCESSOR} in
813 amd64)
814 echo x86_64-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;;
815 *)
816 echo ${UNAME_PROCESSOR}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;;
817 esac
818 exit ;;
819 i*:CYGWIN*:*)
820 echo ${UNAME_MACHINE}-pc-cygwin
821 exit ;;
822 *:MINGW64*:*)
823 echo ${UNAME_MACHINE}-pc-mingw64
824 exit ;;
825 *:MINGW*:*)
826 echo ${UNAME_MACHINE}-pc-mingw32
827 exit ;;
828 i*:MSYS*:*)
829 echo ${UNAME_MACHINE}-pc-msys
830 exit ;;
831 i*:windows32*:*)
832 # uname -m includes "-pc" on this system.
833 echo ${UNAME_MACHINE}-mingw32
834 exit ;;
835 i*:PW*:*)
836 echo ${UNAME_MACHINE}-pc-pw32
837 exit ;;
838 *:Interix*:*)
839 case ${UNAME_MACHINE} in
840 x86)
841 echo i586-pc-interix${UNAME_RELEASE}
842 exit ;;
843 authenticamd | genuineintel | EM64T)
844 echo x86_64-unknown-interix${UNAME_RELEASE}
845 exit ;;
846 IA64)
847 echo ia64-unknown-interix${UNAME_RELEASE}
848 exit ;;
849 esac ;;
850 [345]86:Windows_95:* | [345]86:Windows_98:* | [345]86:Windows_NT:*)
851 echo i${UNAME_MACHINE}-pc-mks
852 exit ;;
853 8664:Windows_NT:*)
854 echo x86_64-pc-mks
855 exit ;;
856 i*:Windows_NT*:* | Pentium*:Windows_NT*:*)
857 # How do we know it's Interix rather than the generic POSIX subsystem?
858 # It also conflicts with pre-2.0 versions of AT&T UWIN. Should we
859 # UNAME_MACHINE based on the output of uname instead of i386?
860 echo i586-pc-interix
861 exit ;;
862 i*:UWIN*:*)
863 echo ${UNAME_MACHINE}-pc-uwin
864 exit ;;
865 amd64:CYGWIN*:*:* | x86_64:CYGWIN*:*:*)
866 echo x86_64-unknown-cygwin
867 exit ;;
868 p*:CYGWIN*:*)
869 echo powerpcle-unknown-cygwin
870 exit ;;
871 prep*:SunOS:5.*:*)
872 echo powerpcle-unknown-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
873 exit ;;
874 *:GNU:*:*)
875 # the GNU system
876 echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-${LIBC}`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'`
877 exit ;;
878 *:GNU/*:*:*)
879 # other systems with GNU libc and userland
880 echo ${UNAME_MACHINE}-unknown-`echo ${UNAME_SYSTEM} | sed 's,^[^/]*/,,' | tr '[A-Z]' '[a-z]'``echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`-${LIBC}
881 exit ;;
882 i*86:Minix:*:*)
883 echo ${UNAME_MACHINE}-pc-minix
884 exit ;;
885 aarch64:Linux:*:*)
886 echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
887 exit ;;
888 aarch64_be:Linux:*:*)
889 UNAME_MACHINE=aarch64_be
890 echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
891 exit ;;
892 alpha:Linux:*:*)
893 case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in
894 EV5) UNAME_MACHINE=alphaev5 ;;
895 EV56) UNAME_MACHINE=alphaev56 ;;
896 PCA56) UNAME_MACHINE=alphapca56 ;;
897 PCA57) UNAME_MACHINE=alphapca56 ;;
898 EV6) UNAME_MACHINE=alphaev6 ;;
899 EV67) UNAME_MACHINE=alphaev67 ;;
900 EV68*) UNAME_MACHINE=alphaev68 ;;
901 esac
902 objdump --private-headers /bin/sh | grep -q ld.so.1
903 if test "$?" = 0 ; then LIBC="gnulibc1" ; fi
904 echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
905 exit ;;
906 arc:Linux:*:* | arceb:Linux:*:*)
907 echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
908 exit ;;
909 arm*:Linux:*:*)
910 eval $set_cc_for_build
911 if echo __ARM_EABI__ | $CC_FOR_BUILD -E - 2>/dev/null \
912 | grep -q __ARM_EABI__
913 then
914 echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
915 else
916 if echo __ARM_PCS_VFP | $CC_FOR_BUILD -E - 2>/dev/null \
917 | grep -q __ARM_PCS_VFP
918 then
919 echo ${UNAME_MACHINE}-unknown-linux-${LIBC}eabi
920 else
921 echo ${UNAME_MACHINE}-unknown-linux-${LIBC}eabihf
922 fi
923 fi
924 exit ;;
925 avr32*:Linux:*:*)
926 echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
927 exit ;;
928 cris:Linux:*:*)
929 echo ${UNAME_MACHINE}-axis-linux-${LIBC}
930 exit ;;
931 crisv32:Linux:*:*)
932 echo ${UNAME_MACHINE}-axis-linux-${LIBC}
933 exit ;;
934 frv:Linux:*:*)
935 echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
936 exit ;;
937 hexagon:Linux:*:*)
938 echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
939 exit ;;
940 i*86:Linux:*:*)
941 echo ${UNAME_MACHINE}-pc-linux-${LIBC}
942 exit ;;
943 ia64:Linux:*:*)
944 echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
945 exit ;;
946 m32r*:Linux:*:*)
947 echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
948 exit ;;
949 m68*:Linux:*:*)
950 echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
951 exit ;;
952 mips:Linux:*:* | mips64:Linux:*:*)
953 eval $set_cc_for_build
954 sed 's/^ //' << EOF >$dummy.c
955 #undef CPU
956 #undef ${UNAME_MACHINE}
957 #undef ${UNAME_MACHINE}el
958 #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL)
959 CPU=${UNAME_MACHINE}el
960 #else
961 #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB)
962 CPU=${UNAME_MACHINE}
963 #else
964 CPU=
965 #endif
966 #endif
967 EOF
968 eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^CPU'`
969 test x"${CPU}" != x && { echo "${CPU}-unknown-linux-${LIBC}"; exit; }
970 ;;
971 or1k:Linux:*:*)
972 echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
973 exit ;;
974 or32:Linux:*:*)
975 echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
976 exit ;;
977 padre:Linux:*:*)
978 echo sparc-unknown-linux-${LIBC}
979 exit ;;
980 parisc64:Linux:*:* | hppa64:Linux:*:*)
981 echo hppa64-unknown-linux-${LIBC}
982 exit ;;
983 parisc:Linux:*:* | hppa:Linux:*:*)
984 # Look for CPU level
985 case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in
986 PA7*) echo hppa1.1-unknown-linux-${LIBC} ;;
987 PA8*) echo hppa2.0-unknown-linux-${LIBC} ;;
988 *) echo hppa-unknown-linux-${LIBC} ;;
989 esac
990 exit ;;
991 ppc64:Linux:*:*)
992 echo powerpc64-unknown-linux-${LIBC}
993 exit ;;
994 ppc:Linux:*:*)
995 echo powerpc-unknown-linux-${LIBC}
996 exit ;;
997 ppc64le:Linux:*:*)
998 echo powerpc64le-unknown-linux-${LIBC}
999 exit ;;
1000 ppcle:Linux:*:*)
1001 echo powerpcle-unknown-linux-${LIBC}
1002 exit ;;
1003 s390:Linux:*:* | s390x:Linux:*:*)
1004 echo ${UNAME_MACHINE}-ibm-linux-${LIBC}
1005 exit ;;
1006 sh64*:Linux:*:*)
1007 echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
1008 exit ;;
1009 sh*:Linux:*:*)
1010 echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
1011 exit ;;
1012 sparc:Linux:*:* | sparc64:Linux:*:*)
1013 echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
1014 exit ;;
1015 tile*:Linux:*:*)
1016 echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
1017 exit ;;
1018 vax:Linux:*:*)
1019 echo ${UNAME_MACHINE}-dec-linux-${LIBC}
1020 exit ;;
1021 x86_64:Linux:*:*)
1022 echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
1023 exit ;;
1024 xtensa*:Linux:*:*)
1025 echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
1026 exit ;;
1027 i*86:DYNIX/ptx:4*:*)
1028 # ptx 4.0 does uname -s correctly, with DYNIX/ptx in there.
1029 # earlier versions are messed up and put the nodename in both
1030 # sysname and nodename.
1031 echo i386-sequent-sysv4
1032 exit ;;
1033 i*86:UNIX_SV:4.2MP:2.*)
1034 # Unixware is an offshoot of SVR4, but it has its own version
1035 # number series starting with 2...
1036 # I am not positive that other SVR4 systems won't match this,
1037 # I just have to hope. -- rms.
1038 # Use sysv4.2uw... so that sysv4* matches it.
1039 echo ${UNAME_MACHINE}-pc-sysv4.2uw${UNAME_VERSION}
1040 exit ;;
1041 i*86:OS/2:*:*)
1042 # If we were able to find `uname', then EMX Unix compatibility
1043 # is probably installed.
1044 echo ${UNAME_MACHINE}-pc-os2-emx
1045 exit ;;
1046 i*86:XTS-300:*:STOP)
1047 echo ${UNAME_MACHINE}-unknown-stop
1048 exit ;;
1049 i*86:atheos:*:*)
1050 echo ${UNAME_MACHINE}-unknown-atheos
1051 exit ;;
1052 i*86:syllable:*:*)
1053 echo ${UNAME_MACHINE}-pc-syllable
1054 exit ;;
1055 i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.[02]*:*)
1056 echo i386-unknown-lynxos${UNAME_RELEASE}
1057 exit ;;
1058 i*86:*DOS:*:*)
1059 echo ${UNAME_MACHINE}-pc-msdosdjgpp
1060 exit ;;
1061 i*86:*:4.*:* | i*86:SYSTEM_V:4.*:*)
1062 UNAME_REL=`echo ${UNAME_RELEASE} | sed 's/\/MP$//'`
1063 if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then
1064 echo ${UNAME_MACHINE}-univel-sysv${UNAME_REL}
1065 else
1066 echo ${UNAME_MACHINE}-pc-sysv${UNAME_REL}
1067 fi
1068 exit ;;
1069 i*86:*:5:[678]*)
1070 # UnixWare 7.x, OpenUNIX and OpenServer 6.
1071 case `/bin/uname -X | grep "^Machine"` in
1072 *486*) UNAME_MACHINE=i486 ;;
1073 *Pentium) UNAME_MACHINE=i586 ;;
1074 *Pent*|*Celeron) UNAME_MACHINE=i686 ;;
1075 esac
1076 echo ${UNAME_MACHINE}-unknown-sysv${UNAME_RELEASE}${UNAME_SYSTEM}${UNAME_VERSION}
1077 exit ;;
1078 i*86:*:3.2:*)
1079 if test -f /usr/options/cb.name; then
1080 UNAME_REL=`sed -n 's/.*Version //p' </usr/options/cb.name`
1081 echo ${UNAME_MACHINE}-pc-isc$UNAME_REL
1082 elif /bin/uname -X 2>/dev/null >/dev/null ; then
1083 UNAME_REL=`(/bin/uname -X|grep Release|sed -e 's/.*= //')`
1084 (/bin/uname -X|grep i80486 >/dev/null) && UNAME_MACHINE=i486
1085 (/bin/uname -X|grep '^Machine.*Pentium' >/dev/null) \
1086 && UNAME_MACHINE=i586
1087 (/bin/uname -X|grep '^Machine.*Pent *II' >/dev/null) \
1088 && UNAME_MACHINE=i686
1089 (/bin/uname -X|grep '^Machine.*Pentium Pro' >/dev/null) \
1090 && UNAME_MACHINE=i686
1091 echo ${UNAME_MACHINE}-pc-sco$UNAME_REL
1092 else
1093 echo ${UNAME_MACHINE}-pc-sysv32
1094 fi
1095 exit ;;
1096 pc:*:*:*)
1097 # Left here for compatibility:
1098 # uname -m prints for DJGPP always 'pc', but it prints nothing about
1099 # the processor, so we play safe by assuming i586.
1100 # Note: whatever this is, it MUST be the same as what config.sub
1101 # prints for the "djgpp" host, or else GDB configury will decide that
1102 # this is a cross-build.
1103 echo i586-pc-msdosdjgpp
1104 exit ;;
1105 Intel:Mach:3*:*)
1106 echo i386-pc-mach3
1107 exit ;;
1108 paragon:*:*:*)
1109 echo i860-intel-osf1
1110 exit ;;
1111 i860:*:4.*:*) # i860-SVR4
1112 if grep Stardent /usr/include/sys/uadmin.h >/dev/null 2>&1 ; then
1113 echo i860-stardent-sysv${UNAME_RELEASE} # Stardent Vistra i860-SVR4
1114 else # Add other i860-SVR4 vendors below as they are discovered.
1115 echo i860-unknown-sysv${UNAME_RELEASE} # Unknown i860-SVR4
1116 fi
1117 exit ;;
1118 mini*:CTIX:SYS*5:*)
1119 # "miniframe"
1120 echo m68010-convergent-sysv
1121 exit ;;
1122 mc68k:UNIX:SYSTEM5:3.51m)
1123 echo m68k-convergent-sysv
1124 exit ;;
1125 M680?0:D-NIX:5.3:*)
1126 echo m68k-diab-dnix
1127 exit ;;
1128 M68*:*:R3V[5678]*:*)
1129 test -r /sysV68 && { echo 'm68k-motorola-sysv'; exit; } ;;
1130 3[345]??:*:4.0:3.0 | 3[34]??A:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 3[34]??/*:*:4.0:3.0 | 4400:*:4.0:3.0 | 4850:*:4.0:3.0 | SKA40:*:4.0:3.0 | SDS2:*:4.0:3.0 | SHG2:*:4.0:3.0 | S7501*:*:4.0:3.0)
1131 OS_REL=''
1132 test -r /etc/.relid \
1133 && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid`
1134 /bin/uname -p 2>/dev/null | grep 86 >/dev/null \
1135 && { echo i486-ncr-sysv4.3${OS_REL}; exit; }
1136 /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \
1137 && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;;
1138 3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*)
1139 /bin/uname -p 2>/dev/null | grep 86 >/dev/null \
1140 && { echo i486-ncr-sysv4; exit; } ;;
1141 NCR*:*:4.2:* | MPRAS*:*:4.2:*)
1142 OS_REL='.3'
1143 test -r /etc/.relid \
1144 && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid`
1145 /bin/uname -p 2>/dev/null | grep 86 >/dev/null \
1146 && { echo i486-ncr-sysv4.3${OS_REL}; exit; }
1147 /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \
1148 && { echo i586-ncr-sysv4.3${OS_REL}; exit; }
1149 /bin/uname -p 2>/dev/null | /bin/grep pteron >/dev/null \
1150 && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;;
1151 m68*:LynxOS:2.*:* | m68*:LynxOS:3.0*:*)
1152 echo m68k-unknown-lynxos${UNAME_RELEASE}
1153 exit ;;
1154 mc68030:UNIX_System_V:4.*:*)
1155 echo m68k-atari-sysv4
1156 exit ;;
1157 TSUNAMI:LynxOS:2.*:*)
1158 echo sparc-unknown-lynxos${UNAME_RELEASE}
1159 exit ;;
1160 rs6000:LynxOS:2.*:*)
1161 echo rs6000-unknown-lynxos${UNAME_RELEASE}
1162 exit ;;
1163 PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.[02]*:*)
1164 echo powerpc-unknown-lynxos${UNAME_RELEASE}
1165 exit ;;
1166 SM[BE]S:UNIX_SV:*:*)
1167 echo mips-dde-sysv${UNAME_RELEASE}
1168 exit ;;
1169 RM*:ReliantUNIX-*:*:*)
1170 echo mips-sni-sysv4
1171 exit ;;
1172 RM*:SINIX-*:*:*)
1173 echo mips-sni-sysv4
1174 exit ;;
1175 *:SINIX-*:*:*)
1176 if uname -p 2>/dev/null >/dev/null ; then
1177 UNAME_MACHINE=`(uname -p) 2>/dev/null`
1178 echo ${UNAME_MACHINE}-sni-sysv4
1179 else
1180 echo ns32k-sni-sysv
1181 fi
1182 exit ;;
1183 PENTIUM:*:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort
1184 # says <Richard.M.Bartel@ccMail.Census.GOV>
1185 echo i586-unisys-sysv4
1186 exit ;;
1187 *:UNIX_System_V:4*:FTX*)
1188 # From Gerald Hewes <hewes@openmarket.com>.
1189 # How about differentiating between stratus architectures? -djm
1190 echo hppa1.1-stratus-sysv4
1191 exit ;;
1192 *:*:*:FTX*)
1193 # From seanf@swdc.stratus.com.
1194 echo i860-stratus-sysv4
1195 exit ;;
1196 i*86:VOS:*:*)
1197 # From Paul.Green@stratus.com.
1198 echo ${UNAME_MACHINE}-stratus-vos
1199 exit ;;
1200 *:VOS:*:*)
1201 # From Paul.Green@stratus.com.
1202 echo hppa1.1-stratus-vos
1203 exit ;;
1204 mc68*:A/UX:*:*)
1205 echo m68k-apple-aux${UNAME_RELEASE}
1206 exit ;;
1207 news*:NEWS-OS:6*:*)
1208 echo mips-sony-newsos6
1209 exit ;;
1210 R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R*000:UNIX_SV:*:*)
1211 if [ -d /usr/nec ]; then
1212 echo mips-nec-sysv${UNAME_RELEASE}
1213 else
1214 echo mips-unknown-sysv${UNAME_RELEASE}
1215 fi
1216 exit ;;
1217 BeBox:BeOS:*:*) # BeOS running on hardware made by Be, PPC only.
1218 echo powerpc-be-beos
1219 exit ;;
1220 BeMac:BeOS:*:*) # BeOS running on Mac or Mac clone, PPC only.
1221 echo powerpc-apple-beos
1222 exit ;;
1223 BePC:BeOS:*:*) # BeOS running on Intel PC compatible.
1224 echo i586-pc-beos
1225 exit ;;
1226 BePC:Haiku:*:*) # Haiku running on Intel PC compatible.
1227 echo i586-pc-haiku
1228 exit ;;
1229 x86_64:Haiku:*:*)
1230 echo x86_64-unknown-haiku
1231 exit ;;
1232 SX-4:SUPER-UX:*:*)
1233 echo sx4-nec-superux${UNAME_RELEASE}
1234 exit ;;
1235 SX-5:SUPER-UX:*:*)
1236 echo sx5-nec-superux${UNAME_RELEASE}
1237 exit ;;
1238 SX-6:SUPER-UX:*:*)
1239 echo sx6-nec-superux${UNAME_RELEASE}
1240 exit ;;
1241 SX-7:SUPER-UX:*:*)
1242 echo sx7-nec-superux${UNAME_RELEASE}
1243 exit ;;
1244 SX-8:SUPER-UX:*:*)
1245 echo sx8-nec-superux${UNAME_RELEASE}
1246 exit ;;
1247 SX-8R:SUPER-UX:*:*)
1248 echo sx8r-nec-superux${UNAME_RELEASE}
1249 exit ;;
1250 Power*:Rhapsody:*:*)
1251 echo powerpc-apple-rhapsody${UNAME_RELEASE}
1252 exit ;;
1253 *:Rhapsody:*:*)
1254 echo ${UNAME_MACHINE}-apple-rhapsody${UNAME_RELEASE}
1255 exit ;;
1256 *:Darwin:*:*)
1257 UNAME_PROCESSOR=`uname -p` || UNAME_PROCESSOR=unknown
1258 eval $set_cc_for_build
1259 if test "$UNAME_PROCESSOR" = unknown ; then
1260 UNAME_PROCESSOR=powerpc
1261 fi
1262 if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then
1263 if (echo '#ifdef __LP64__'; echo IS_64BIT_ARCH; echo '#endif') | \
1264 (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \
1265 grep IS_64BIT_ARCH >/dev/null
1266 then
1267 case $UNAME_PROCESSOR in
1268 i386) UNAME_PROCESSOR=x86_64 ;;
1269 powerpc) UNAME_PROCESSOR=powerpc64 ;;
1270 esac
1271 fi
1272 fi
1273 echo ${UNAME_PROCESSOR}-apple-darwin${UNAME_RELEASE}
1274 exit ;;
1275 *:procnto*:*:* | *:QNX:[0123456789]*:*)
1276 UNAME_PROCESSOR=`uname -p`
1277 if test "$UNAME_PROCESSOR" = "x86"; then
1278 UNAME_PROCESSOR=i386
1279 UNAME_MACHINE=pc
1280 fi
1281 echo ${UNAME_PROCESSOR}-${UNAME_MACHINE}-nto-qnx${UNAME_RELEASE}
1282 exit ;;
1283 *:QNX:*:4*)
1284 echo i386-pc-qnx
1285 exit ;;
1286 NEO-?:NONSTOP_KERNEL:*:*)
1287 echo neo-tandem-nsk${UNAME_RELEASE}
1288 exit ;;
1289 NSE-*:NONSTOP_KERNEL:*:*)
1290 echo nse-tandem-nsk${UNAME_RELEASE}
1291 exit ;;
1292 NSR-?:NONSTOP_KERNEL:*:*)
1293 echo nsr-tandem-nsk${UNAME_RELEASE}
1294 exit ;;
1295 *:NonStop-UX:*:*)
1296 echo mips-compaq-nonstopux
1297 exit ;;
1298 BS2000:POSIX*:*:*)
1299 echo bs2000-siemens-sysv
1300 exit ;;
1301 DS/*:UNIX_System_V:*:*)
1302 echo ${UNAME_MACHINE}-${UNAME_SYSTEM}-${UNAME_RELEASE}
1303 exit ;;
1304 *:Plan9:*:*)
1305 # "uname -m" is not consistent, so use $cputype instead. 386
1306 # is converted to i386 for consistency with other x86
1307 # operating systems.
1308 if test "$cputype" = "386"; then
1309 UNAME_MACHINE=i386
1310 else
1311 UNAME_MACHINE="$cputype"
1312 fi
1313 echo ${UNAME_MACHINE}-unknown-plan9
1314 exit ;;
1315 *:TOPS-10:*:*)
1316 echo pdp10-unknown-tops10
1317 exit ;;
1318 *:TENEX:*:*)
1319 echo pdp10-unknown-tenex
1320 exit ;;
1321 KS10:TOPS-20:*:* | KL10:TOPS-20:*:* | TYPE4:TOPS-20:*:*)
1322 echo pdp10-dec-tops20
1323 exit ;;
1324 XKL-1:TOPS-20:*:* | TYPE5:TOPS-20:*:*)
1325 echo pdp10-xkl-tops20
1326 exit ;;
1327 *:TOPS-20:*:*)
1328 echo pdp10-unknown-tops20
1329 exit ;;
1330 *:ITS:*:*)
1331 echo pdp10-unknown-its
1332 exit ;;
1333 SEI:*:*:SEIUX)
1334 echo mips-sei-seiux${UNAME_RELEASE}
1335 exit ;;
1336 *:DragonFly:*:*)
1337 echo ${UNAME_MACHINE}-unknown-dragonfly`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`
1338 exit ;;
1339 *:*VMS:*:*)
1340 UNAME_MACHINE=`(uname -p) 2>/dev/null`
1341 case "${UNAME_MACHINE}" in
1342 A*) echo alpha-dec-vms ; exit ;;
1343 I*) echo ia64-dec-vms ; exit ;;
1344 V*) echo vax-dec-vms ; exit ;;
1345 esac ;;
1346 *:XENIX:*:SysV)
1347 echo i386-pc-xenix
1348 exit ;;
1349 i*86:skyos:*:*)
1350 echo ${UNAME_MACHINE}-pc-skyos`echo ${UNAME_RELEASE}` | sed -e 's/ .*$//'
1351 exit ;;
1352 i*86:rdos:*:*)
1353 echo ${UNAME_MACHINE}-pc-rdos
1354 exit ;;
1355 i*86:AROS:*:*)
1356 echo ${UNAME_MACHINE}-pc-aros
1357 exit ;;
1358 x86_64:VMkernel:*:*)
1359 echo ${UNAME_MACHINE}-unknown-esx
1360 exit ;;
1361 esac
1362
1363 eval $set_cc_for_build
1364 cat >$dummy.c <<EOF
1365 #ifdef _SEQUENT_
1366 # include <sys/types.h>
1367 # include <sys/utsname.h>
1368 #endif
1369 main ()
1370 {
1371 #if defined (sony)
1372 #if defined (MIPSEB)
1373 /* BFD wants "bsd" instead of "newsos". Perhaps BFD should be changed,
1374 I don't know.... */
1375 printf ("mips-sony-bsd\n"); exit (0);
1376 #else
1377 #include <sys/param.h>
1378 printf ("m68k-sony-newsos%s\n",
1379 #ifdef NEWSOS4
1380 "4"
1381 #else
1382 ""
1383 #endif
1384 ); exit (0);
1385 #endif
1386 #endif
1387
1388 #if defined (__arm) && defined (__acorn) && defined (__unix)
1389 printf ("arm-acorn-riscix\n"); exit (0);
1390 #endif
1391
1392 #if defined (hp300) && !defined (hpux)
1393 printf ("m68k-hp-bsd\n"); exit (0);
1394 #endif
1395
1396 #if defined (NeXT)
1397 #if !defined (__ARCHITECTURE__)
1398 #define __ARCHITECTURE__ "m68k"
1399 #endif
1400 int version;
1401 version=`(hostinfo | sed -n 's/.*NeXT Mach \([0-9]*\).*/\1/p') 2>/dev/null`;
1402 if (version < 4)
1403 printf ("%s-next-nextstep%d\n", __ARCHITECTURE__, version);
1404 else
1405 printf ("%s-next-openstep%d\n", __ARCHITECTURE__, version);
1406 exit (0);
1407 #endif
1408
1409 #if defined (MULTIMAX) || defined (n16)
1410 #if defined (UMAXV)
1411 printf ("ns32k-encore-sysv\n"); exit (0);
1412 #else
1413 #if defined (CMU)
1414 printf ("ns32k-encore-mach\n"); exit (0);
1415 #else
1416 printf ("ns32k-encore-bsd\n"); exit (0);
1417 #endif
1418 #endif
1419 #endif
1420
1421 #if defined (__386BSD__)
1422 printf ("i386-pc-bsd\n"); exit (0);
1423 #endif
1424
1425 #if defined (sequent)
1426 #if defined (i386)
1427 printf ("i386-sequent-dynix\n"); exit (0);
1428 #endif
1429 #if defined (ns32000)
1430 printf ("ns32k-sequent-dynix\n"); exit (0);
1431 #endif
1432 #endif
1433
1434 #if defined (_SEQUENT_)
1435 struct utsname un;
1436
1437 uname(&un);
1438
1439 if (strncmp(un.version, "V2", 2) == 0) {
1440 printf ("i386-sequent-ptx2\n"); exit (0);
1441 }
1442 if (strncmp(un.version, "V1", 2) == 0) { /* XXX is V1 correct? */
1443 printf ("i386-sequent-ptx1\n"); exit (0);
1444 }
1445 printf ("i386-sequent-ptx\n"); exit (0);
1446
1447 #endif
1448
1449 #if defined (vax)
1450 # if !defined (ultrix)
1451 # include <sys/param.h>
1452 # if defined (BSD)
1453 # if BSD == 43
1454 printf ("vax-dec-bsd4.3\n"); exit (0);
1455 # else
1456 # if BSD == 199006
1457 printf ("vax-dec-bsd4.3reno\n"); exit (0);
1458 # else
1459 printf ("vax-dec-bsd\n"); exit (0);
1460 # endif
1461 # endif
1462 # else
1463 printf ("vax-dec-bsd\n"); exit (0);
1464 # endif
1465 # else
1466 printf ("vax-dec-ultrix\n"); exit (0);
1467 # endif
1468 #endif
1469
1470 #if defined (alliant) && defined (i860)
1471 printf ("i860-alliant-bsd\n"); exit (0);
1472 #endif
1473
1474 exit (1);
1475 }
1476 EOF
1477
1478 $CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null && SYSTEM_NAME=`$dummy` &&
1479 { echo "$SYSTEM_NAME"; exit; }
1480
1481 # Apollos put the system type in the environment.
1482
1483 test -d /usr/apollo && { echo ${ISP}-apollo-${SYSTYPE}; exit; }
1484
1485 # Convex versions that predate uname can use getsysinfo(1)
1486
1487 if [ -x /usr/convex/getsysinfo ]
1488 then
1489 case `getsysinfo -f cpu_type` in
1490 c1*)
1491 echo c1-convex-bsd
1492 exit ;;
1493 c2*)
1494 if getsysinfo -f scalar_acc
1495 then echo c32-convex-bsd
1496 else echo c2-convex-bsd
1497 fi
1498 exit ;;
1499 c34*)
1500 echo c34-convex-bsd
1501 exit ;;
1502 c38*)
1503 echo c38-convex-bsd
1504 exit ;;
1505 c4*)
1506 echo c4-convex-bsd
1507 exit ;;
1508 esac
1509 fi
1510
1511 cat >&2 <<EOF
1512 $0: unable to guess system type
1513
1514 This script, last modified $timestamp, has failed to recognize
1515 the operating system you are using. It is advised that you
1516 download the most up to date version of the config scripts from
1517
1518 http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess;hb=HEAD
1519 and
1520 http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub;hb=HEAD
1521
1522 If the version you run ($0) is already up to date, please
1523 send the following data and any information you think might be
1524 pertinent to <config-patches@gnu.org> in order to provide the needed
1525 information to handle your system.
1526
1527 config.guess timestamp = $timestamp
1528
1529 uname -m = `(uname -m) 2>/dev/null || echo unknown`
1530 uname -r = `(uname -r) 2>/dev/null || echo unknown`
1531 uname -s = `(uname -s) 2>/dev/null || echo unknown`
1532 uname -v = `(uname -v) 2>/dev/null || echo unknown`
1533
1534 /usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null`
1535 /bin/uname -X = `(/bin/uname -X) 2>/dev/null`
1536
1537 hostinfo = `(hostinfo) 2>/dev/null`
1538 /bin/universe = `(/bin/universe) 2>/dev/null`
1539 /usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null`
1540 /bin/arch = `(/bin/arch) 2>/dev/null`
1541 /usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null`
1542 /usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null`
1543
1544 UNAME_MACHINE = ${UNAME_MACHINE}
1545 UNAME_RELEASE = ${UNAME_RELEASE}
1546 UNAME_SYSTEM = ${UNAME_SYSTEM}
1547 UNAME_VERSION = ${UNAME_VERSION}
1548 EOF
1549
1550 exit 1
1551
1552 # Local variables:
1553 # eval: (add-hook 'write-file-hooks 'time-stamp)
1554 # time-stamp-start: "timestamp='"
1555 # time-stamp-format: "%:y-%02m-%02d"
1556 # time-stamp-end: "'"
1557 # End:
+0
-1788
config.sub less more
0 #! /bin/sh
1 # Configuration validation subroutine script.
2 # Copyright 1992-2013 Free Software Foundation, Inc.
3
4 timestamp='2013-04-24'
5
6 # This file is free software; you can redistribute it and/or modify it
7 # under the terms of the GNU General Public License as published by
8 # the Free Software Foundation; either version 3 of the License, or
9 # (at your option) any later version.
10 #
11 # This program is distributed in the hope that it will be useful, but
12 # WITHOUT ANY WARRANTY; without even the implied warranty of
13 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14 # General Public License for more details.
15 #
16 # You should have received a copy of the GNU General Public License
17 # along with this program; if not, see <http://www.gnu.org/licenses/>.
18 #
19 # As a special exception to the GNU General Public License, if you
20 # distribute this file as part of a program that contains a
21 # configuration script generated by Autoconf, you may include it under
22 # the same distribution terms that you use for the rest of that
23 # program. This Exception is an additional permission under section 7
24 # of the GNU General Public License, version 3 ("GPLv3").
25
26
27 # Please send patches with a ChangeLog entry to config-patches@gnu.org.
28 #
29 # Configuration subroutine to validate and canonicalize a configuration type.
30 # Supply the specified configuration type as an argument.
31 # If it is invalid, we print an error message on stderr and exit with code 1.
32 # Otherwise, we print the canonical config type on stdout and succeed.
33
34 # You can get the latest version of this script from:
35 # http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub;hb=HEAD
36
37 # This file is supposed to be the same for all GNU packages
38 # and recognize all the CPU types, system types and aliases
39 # that are meaningful with *any* GNU software.
40 # Each package is responsible for reporting which valid configurations
41 # it does not support. The user should be able to distinguish
42 # a failure to support a valid configuration from a meaningless
43 # configuration.
44
45 # The goal of this file is to map all the various variations of a given
46 # machine specification into a single specification in the form:
47 # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM
48 # or in some cases, the newer four-part form:
49 # CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM
50 # It is wrong to echo any other type of specification.
51
52 me=`echo "$0" | sed -e 's,.*/,,'`
53
54 usage="\
55 Usage: $0 [OPTION] CPU-MFR-OPSYS
56 $0 [OPTION] ALIAS
57
58 Canonicalize a configuration name.
59
60 Operation modes:
61 -h, --help print this help, then exit
62 -t, --time-stamp print date of last modification, then exit
63 -v, --version print version number, then exit
64
65 Report bugs and patches to <config-patches@gnu.org>."
66
67 version="\
68 GNU config.sub ($timestamp)
69
70 Copyright 1992-2013 Free Software Foundation, Inc.
71
72 This is free software; see the source for copying conditions. There is NO
73 warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
74
75 help="
76 Try \`$me --help' for more information."
77
78 # Parse command line
79 while test $# -gt 0 ; do
80 case $1 in
81 --time-stamp | --time* | -t )
82 echo "$timestamp" ; exit ;;
83 --version | -v )
84 echo "$version" ; exit ;;
85 --help | --h* | -h )
86 echo "$usage"; exit ;;
87 -- ) # Stop option processing
88 shift; break ;;
89 - ) # Use stdin as input.
90 break ;;
91 -* )
92 echo "$me: invalid option $1$help"
93 exit 1 ;;
94
95 *local*)
96 # First pass through any local machine types.
97 echo $1
98 exit ;;
99
100 * )
101 break ;;
102 esac
103 done
104
105 case $# in
106 0) echo "$me: missing argument$help" >&2
107 exit 1;;
108 1) ;;
109 *) echo "$me: too many arguments$help" >&2
110 exit 1;;
111 esac
112
113 # Separate what the user gave into CPU-COMPANY and OS or KERNEL-OS (if any).
114 # Here we must recognize all the valid KERNEL-OS combinations.
115 maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'`
116 case $maybe_os in
117 nto-qnx* | linux-gnu* | linux-android* | linux-dietlibc | linux-newlib* | \
118 linux-musl* | linux-uclibc* | uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | \
119 knetbsd*-gnu* | netbsd*-gnu* | \
120 kopensolaris*-gnu* | \
121 storm-chaos* | os2-emx* | rtmk-nova*)
122 os=-$maybe_os
123 basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'`
124 ;;
125 android-linux)
126 os=-linux-android
127 basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'`-unknown
128 ;;
129 *)
130 basic_machine=`echo $1 | sed 's/-[^-]*$//'`
131 if [ $basic_machine != $1 ]
132 then os=`echo $1 | sed 's/.*-/-/'`
133 else os=; fi
134 ;;
135 esac
136
137 ### Let's recognize common machines as not being operating systems so
138 ### that things like config.sub decstation-3100 work. We also
139 ### recognize some manufacturers as not being operating systems, so we
140 ### can provide default operating systems below.
141 case $os in
142 -sun*os*)
143 # Prevent following clause from handling this invalid input.
144 ;;
145 -dec* | -mips* | -sequent* | -encore* | -pc532* | -sgi* | -sony* | \
146 -att* | -7300* | -3300* | -delta* | -motorola* | -sun[234]* | \
147 -unicom* | -ibm* | -next | -hp | -isi* | -apollo | -altos* | \
148 -convergent* | -ncr* | -news | -32* | -3600* | -3100* | -hitachi* |\
149 -c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \
150 -harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp | \
151 -apple | -axis | -knuth | -cray | -microblaze*)
152 os=
153 basic_machine=$1
154 ;;
155 -bluegene*)
156 os=-cnk
157 ;;
158 -sim | -cisco | -oki | -wec | -winbond)
159 os=
160 basic_machine=$1
161 ;;
162 -scout)
163 ;;
164 -wrs)
165 os=-vxworks
166 basic_machine=$1
167 ;;
168 -chorusos*)
169 os=-chorusos
170 basic_machine=$1
171 ;;
172 -chorusrdb)
173 os=-chorusrdb
174 basic_machine=$1
175 ;;
176 -hiux*)
177 os=-hiuxwe2
178 ;;
179 -sco6)
180 os=-sco5v6
181 basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
182 ;;
183 -sco5)
184 os=-sco3.2v5
185 basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
186 ;;
187 -sco4)
188 os=-sco3.2v4
189 basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
190 ;;
191 -sco3.2.[4-9]*)
192 os=`echo $os | sed -e 's/sco3.2./sco3.2v/'`
193 basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
194 ;;
195 -sco3.2v[4-9]*)
196 # Don't forget version if it is 3.2v4 or newer.
197 basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
198 ;;
199 -sco5v6*)
200 # Don't forget version if it is 3.2v4 or newer.
201 basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
202 ;;
203 -sco*)
204 os=-sco3.2v2
205 basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
206 ;;
207 -udk*)
208 basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
209 ;;
210 -isc)
211 os=-isc2.2
212 basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
213 ;;
214 -clix*)
215 basic_machine=clipper-intergraph
216 ;;
217 -isc*)
218 basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
219 ;;
220 -lynx*178)
221 os=-lynxos178
222 ;;
223 -lynx*5)
224 os=-lynxos5
225 ;;
226 -lynx*)
227 os=-lynxos
228 ;;
229 -ptx*)
230 basic_machine=`echo $1 | sed -e 's/86-.*/86-sequent/'`
231 ;;
232 -windowsnt*)
233 os=`echo $os | sed -e 's/windowsnt/winnt/'`
234 ;;
235 -psos*)
236 os=-psos
237 ;;
238 -mint | -mint[0-9]*)
239 basic_machine=m68k-atari
240 os=-mint
241 ;;
242 esac
243
244 # Decode aliases for certain CPU-COMPANY combinations.
245 case $basic_machine in
246 # Recognize the basic CPU types without company name.
247 # Some are omitted here because they have special meanings below.
248 1750a | 580 \
249 | a29k \
250 | aarch64 | aarch64_be \
251 | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \
252 | alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \
253 | am33_2.0 \
254 | arc | arceb \
255 | arm | arm[bl]e | arme[lb] | armv[2-8] | armv[3-8][lb] | armv7[arm] \
256 | avr | avr32 \
257 | be32 | be64 \
258 | bfin \
259 | c4x | clipper \
260 | d10v | d30v | dlx | dsp16xx \
261 | epiphany \
262 | fido | fr30 | frv \
263 | h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \
264 | hexagon \
265 | i370 | i860 | i960 | ia64 \
266 | ip2k | iq2000 \
267 | le32 | le64 \
268 | lm32 \
269 | m32c | m32r | m32rle | m68000 | m68k | m88k \
270 | maxq | mb | microblaze | microblazeel | mcore | mep | metag \
271 | mips | mipsbe | mipseb | mipsel | mipsle \
272 | mips16 \
273 | mips64 | mips64el \
274 | mips64octeon | mips64octeonel \
275 | mips64orion | mips64orionel \
276 | mips64r5900 | mips64r5900el \
277 | mips64vr | mips64vrel \
278 | mips64vr4100 | mips64vr4100el \
279 | mips64vr4300 | mips64vr4300el \
280 | mips64vr5000 | mips64vr5000el \
281 | mips64vr5900 | mips64vr5900el \
282 | mipsisa32 | mipsisa32el \
283 | mipsisa32r2 | mipsisa32r2el \
284 | mipsisa64 | mipsisa64el \
285 | mipsisa64r2 | mipsisa64r2el \
286 | mipsisa64sb1 | mipsisa64sb1el \
287 | mipsisa64sr71k | mipsisa64sr71kel \
288 | mipsr5900 | mipsr5900el \
289 | mipstx39 | mipstx39el \
290 | mn10200 | mn10300 \
291 | moxie \
292 | mt \
293 | msp430 \
294 | nds32 | nds32le | nds32be \
295 | nios | nios2 | nios2eb | nios2el \
296 | ns16k | ns32k \
297 | open8 \
298 | or1k | or32 \
299 | pdp10 | pdp11 | pj | pjl \
300 | powerpc | powerpc64 | powerpc64le | powerpcle \
301 | pyramid \
302 | rl78 | rx \
303 | score \
304 | sh | sh[1234] | sh[24]a | sh[24]aeb | sh[23]e | sh[34]eb | sheb | shbe | shle | sh[1234]le | sh3ele \
305 | sh64 | sh64le \
306 | sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet | sparclite \
307 | sparcv8 | sparcv9 | sparcv9b | sparcv9v \
308 | spu \
309 | tahoe | tic4x | tic54x | tic55x | tic6x | tic80 | tron \
310 | ubicom32 \
311 | v850 | v850e | v850e1 | v850e2 | v850es | v850e2v3 \
312 | we32k \
313 | x86 | xc16x | xstormy16 | xtensa \
314 | z8k | z80)
315 basic_machine=$basic_machine-unknown
316 ;;
317 c54x)
318 basic_machine=tic54x-unknown
319 ;;
320 c55x)
321 basic_machine=tic55x-unknown
322 ;;
323 c6x)
324 basic_machine=tic6x-unknown
325 ;;
326 m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x | picochip)
327 basic_machine=$basic_machine-unknown
328 os=-none
329 ;;
330 m88110 | m680[12346]0 | m683?2 | m68360 | m5200 | v70 | w65 | z8k)
331 ;;
332 ms1)
333 basic_machine=mt-unknown
334 ;;
335
336 strongarm | thumb | xscale)
337 basic_machine=arm-unknown
338 ;;
339 xgate)
340 basic_machine=$basic_machine-unknown
341 os=-none
342 ;;
343 xscaleeb)
344 basic_machine=armeb-unknown
345 ;;
346
347 xscaleel)
348 basic_machine=armel-unknown
349 ;;
350
351 # We use `pc' rather than `unknown'
352 # because (1) that's what they normally are, and
353 # (2) the word "unknown" tends to confuse beginning users.
354 i*86 | x86_64)
355 basic_machine=$basic_machine-pc
356 ;;
357 # Object if more than one company name word.
358 *-*-*)
359 echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2
360 exit 1
361 ;;
362 # Recognize the basic CPU types with company name.
363 580-* \
364 | a29k-* \
365 | aarch64-* | aarch64_be-* \
366 | alpha-* | alphaev[4-8]-* | alphaev56-* | alphaev6[78]-* \
367 | alpha64-* | alpha64ev[4-8]-* | alpha64ev56-* | alpha64ev6[78]-* \
368 | alphapca5[67]-* | alpha64pca5[67]-* | arc-* | arceb-* \
369 | arm-* | armbe-* | armle-* | armeb-* | armv*-* \
370 | avr-* | avr32-* \
371 | be32-* | be64-* \
372 | bfin-* | bs2000-* \
373 | c[123]* | c30-* | [cjt]90-* | c4x-* \
374 | clipper-* | craynv-* | cydra-* \
375 | d10v-* | d30v-* | dlx-* \
376 | elxsi-* \
377 | f30[01]-* | f700-* | fido-* | fr30-* | frv-* | fx80-* \
378 | h8300-* | h8500-* \
379 | hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \
380 | hexagon-* \
381 | i*86-* | i860-* | i960-* | ia64-* \
382 | ip2k-* | iq2000-* \
383 | le32-* | le64-* \
384 | lm32-* \
385 | m32c-* | m32r-* | m32rle-* \
386 | m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \
387 | m88110-* | m88k-* | maxq-* | mcore-* | metag-* \
388 | microblaze-* | microblazeel-* \
389 | mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \
390 | mips16-* \
391 | mips64-* | mips64el-* \
392 | mips64octeon-* | mips64octeonel-* \
393 | mips64orion-* | mips64orionel-* \
394 | mips64r5900-* | mips64r5900el-* \
395 | mips64vr-* | mips64vrel-* \
396 | mips64vr4100-* | mips64vr4100el-* \
397 | mips64vr4300-* | mips64vr4300el-* \
398 | mips64vr5000-* | mips64vr5000el-* \
399 | mips64vr5900-* | mips64vr5900el-* \
400 | mipsisa32-* | mipsisa32el-* \
401 | mipsisa32r2-* | mipsisa32r2el-* \
402 | mipsisa64-* | mipsisa64el-* \
403 | mipsisa64r2-* | mipsisa64r2el-* \
404 | mipsisa64sb1-* | mipsisa64sb1el-* \
405 | mipsisa64sr71k-* | mipsisa64sr71kel-* \
406 | mipsr5900-* | mipsr5900el-* \
407 | mipstx39-* | mipstx39el-* \
408 | mmix-* \
409 | mt-* \
410 | msp430-* \
411 | nds32-* | nds32le-* | nds32be-* \
412 | nios-* | nios2-* | nios2eb-* | nios2el-* \
413 | none-* | np1-* | ns16k-* | ns32k-* \
414 | open8-* \
415 | orion-* \
416 | pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \
417 | powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* \
418 | pyramid-* \
419 | rl78-* | romp-* | rs6000-* | rx-* \
420 | sh-* | sh[1234]-* | sh[24]a-* | sh[24]aeb-* | sh[23]e-* | sh[34]eb-* | sheb-* | shbe-* \
421 | shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \
422 | sparc-* | sparc64-* | sparc64b-* | sparc64v-* | sparc86x-* | sparclet-* \
423 | sparclite-* \
424 | sparcv8-* | sparcv9-* | sparcv9b-* | sparcv9v-* | sv1-* | sx?-* \
425 | tahoe-* \
426 | tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* \
427 | tile*-* \
428 | tron-* \
429 | ubicom32-* \
430 | v850-* | v850e-* | v850e1-* | v850es-* | v850e2-* | v850e2v3-* \
431 | vax-* \
432 | we32k-* \
433 | x86-* | x86_64-* | xc16x-* | xps100-* \
434 | xstormy16-* | xtensa*-* \
435 | ymp-* \
436 | z8k-* | z80-*)
437 ;;
438 # Recognize the basic CPU types without company name, with glob match.
439 xtensa*)
440 basic_machine=$basic_machine-unknown
441 ;;
442 # Recognize the various machine names and aliases which stand
443 # for a CPU type and a company and sometimes even an OS.
444 386bsd)
445 basic_machine=i386-unknown
446 os=-bsd
447 ;;
448 3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc)
449 basic_machine=m68000-att
450 ;;
451 3b*)
452 basic_machine=we32k-att
453 ;;
454 a29khif)
455 basic_machine=a29k-amd
456 os=-udi
457 ;;
458 abacus)
459 basic_machine=abacus-unknown
460 ;;
461 adobe68k)
462 basic_machine=m68010-adobe
463 os=-scout
464 ;;
465 alliant | fx80)
466 basic_machine=fx80-alliant
467 ;;
468 altos | altos3068)
469 basic_machine=m68k-altos
470 ;;
471 am29k)
472 basic_machine=a29k-none
473 os=-bsd
474 ;;
475 amd64)
476 basic_machine=x86_64-pc
477 ;;
478 amd64-*)
479 basic_machine=x86_64-`echo $basic_machine | sed 's/^[^-]*-//'`
480 ;;
481 amdahl)
482 basic_machine=580-amdahl
483 os=-sysv
484 ;;
485 amiga | amiga-*)
486 basic_machine=m68k-unknown
487 ;;
488 amigaos | amigados)
489 basic_machine=m68k-unknown
490 os=-amigaos
491 ;;
492 amigaunix | amix)
493 basic_machine=m68k-unknown
494 os=-sysv4
495 ;;
496 apollo68)
497 basic_machine=m68k-apollo
498 os=-sysv
499 ;;
500 apollo68bsd)
501 basic_machine=m68k-apollo
502 os=-bsd
503 ;;
504 aros)
505 basic_machine=i386-pc
506 os=-aros
507 ;;
508 aux)
509 basic_machine=m68k-apple
510 os=-aux
511 ;;
512 balance)
513 basic_machine=ns32k-sequent
514 os=-dynix
515 ;;
516 blackfin)
517 basic_machine=bfin-unknown
518 os=-linux
519 ;;
520 blackfin-*)
521 basic_machine=bfin-`echo $basic_machine | sed 's/^[^-]*-//'`
522 os=-linux
523 ;;
524 bluegene*)
525 basic_machine=powerpc-ibm
526 os=-cnk
527 ;;
528 c54x-*)
529 basic_machine=tic54x-`echo $basic_machine | sed 's/^[^-]*-//'`
530 ;;
531 c55x-*)
532 basic_machine=tic55x-`echo $basic_machine | sed 's/^[^-]*-//'`
533 ;;
534 c6x-*)
535 basic_machine=tic6x-`echo $basic_machine | sed 's/^[^-]*-//'`
536 ;;
537 c90)
538 basic_machine=c90-cray
539 os=-unicos
540 ;;
541 cegcc)
542 basic_machine=arm-unknown
543 os=-cegcc
544 ;;
545 convex-c1)
546 basic_machine=c1-convex
547 os=-bsd
548 ;;
549 convex-c2)
550 basic_machine=c2-convex
551 os=-bsd
552 ;;
553 convex-c32)
554 basic_machine=c32-convex
555 os=-bsd
556 ;;
557 convex-c34)
558 basic_machine=c34-convex
559 os=-bsd
560 ;;
561 convex-c38)
562 basic_machine=c38-convex
563 os=-bsd
564 ;;
565 cray | j90)
566 basic_machine=j90-cray
567 os=-unicos
568 ;;
569 craynv)
570 basic_machine=craynv-cray
571 os=-unicosmp
572 ;;
573 cr16 | cr16-*)
574 basic_machine=cr16-unknown
575 os=-elf
576 ;;
577 crds | unos)
578 basic_machine=m68k-crds
579 ;;
580 crisv32 | crisv32-* | etraxfs*)
581 basic_machine=crisv32-axis
582 ;;
583 cris | cris-* | etrax*)
584 basic_machine=cris-axis
585 ;;
586 crx)
587 basic_machine=crx-unknown
588 os=-elf
589 ;;
590 da30 | da30-*)
591 basic_machine=m68k-da30
592 ;;
593 decstation | decstation-3100 | pmax | pmax-* | pmin | dec3100 | decstatn)
594 basic_machine=mips-dec
595 ;;
596 decsystem10* | dec10*)
597 basic_machine=pdp10-dec
598 os=-tops10
599 ;;
600 decsystem20* | dec20*)
601 basic_machine=pdp10-dec
602 os=-tops20
603 ;;
604 delta | 3300 | motorola-3300 | motorola-delta \
605 | 3300-motorola | delta-motorola)
606 basic_machine=m68k-motorola
607 ;;
608 delta88)
609 basic_machine=m88k-motorola
610 os=-sysv3
611 ;;
612 dicos)
613 basic_machine=i686-pc
614 os=-dicos
615 ;;
616 djgpp)
617 basic_machine=i586-pc
618 os=-msdosdjgpp
619 ;;
620 dpx20 | dpx20-*)
621 basic_machine=rs6000-bull
622 os=-bosx
623 ;;
624 dpx2* | dpx2*-bull)
625 basic_machine=m68k-bull
626 os=-sysv3
627 ;;
628 ebmon29k)
629 basic_machine=a29k-amd
630 os=-ebmon
631 ;;
632 elxsi)
633 basic_machine=elxsi-elxsi
634 os=-bsd
635 ;;
636 encore | umax | mmax)
637 basic_machine=ns32k-encore
638 ;;
639 es1800 | OSE68k | ose68k | ose | OSE)
640 basic_machine=m68k-ericsson
641 os=-ose
642 ;;
643 fx2800)
644 basic_machine=i860-alliant
645 ;;
646 genix)
647 basic_machine=ns32k-ns
648 ;;
649 gmicro)
650 basic_machine=tron-gmicro
651 os=-sysv
652 ;;
653 go32)
654 basic_machine=i386-pc
655 os=-go32
656 ;;
657 h3050r* | hiux*)
658 basic_machine=hppa1.1-hitachi
659 os=-hiuxwe2
660 ;;
661 h8300hms)
662 basic_machine=h8300-hitachi
663 os=-hms
664 ;;
665 h8300xray)
666 basic_machine=h8300-hitachi
667 os=-xray
668 ;;
669 h8500hms)
670 basic_machine=h8500-hitachi
671 os=-hms
672 ;;
673 harris)
674 basic_machine=m88k-harris
675 os=-sysv3
676 ;;
677 hp300-*)
678 basic_machine=m68k-hp
679 ;;
680 hp300bsd)
681 basic_machine=m68k-hp
682 os=-bsd
683 ;;
684 hp300hpux)
685 basic_machine=m68k-hp
686 os=-hpux
687 ;;
688 hp3k9[0-9][0-9] | hp9[0-9][0-9])
689 basic_machine=hppa1.0-hp
690 ;;
691 hp9k2[0-9][0-9] | hp9k31[0-9])
692 basic_machine=m68000-hp
693 ;;
694 hp9k3[2-9][0-9])
695 basic_machine=m68k-hp
696 ;;
697 hp9k6[0-9][0-9] | hp6[0-9][0-9])
698 basic_machine=hppa1.0-hp
699 ;;
700 hp9k7[0-79][0-9] | hp7[0-79][0-9])
701 basic_machine=hppa1.1-hp
702 ;;
703 hp9k78[0-9] | hp78[0-9])
704 # FIXME: really hppa2.0-hp
705 basic_machine=hppa1.1-hp
706 ;;
707 hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893)
708 # FIXME: really hppa2.0-hp
709 basic_machine=hppa1.1-hp
710 ;;
711 hp9k8[0-9][13679] | hp8[0-9][13679])
712 basic_machine=hppa1.1-hp
713 ;;
714 hp9k8[0-9][0-9] | hp8[0-9][0-9])
715 basic_machine=hppa1.0-hp
716 ;;
717 hppa-next)
718 os=-nextstep3
719 ;;
720 hppaosf)
721 basic_machine=hppa1.1-hp
722 os=-osf
723 ;;
724 hppro)
725 basic_machine=hppa1.1-hp
726 os=-proelf
727 ;;
728 i370-ibm* | ibm*)
729 basic_machine=i370-ibm
730 ;;
731 i*86v32)
732 basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
733 os=-sysv32
734 ;;
735 i*86v4*)
736 basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
737 os=-sysv4
738 ;;
739 i*86v)
740 basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
741 os=-sysv
742 ;;
743 i*86sol2)
744 basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
745 os=-solaris2
746 ;;
747 i386mach)
748 basic_machine=i386-mach
749 os=-mach
750 ;;
751 i386-vsta | vsta)
752 basic_machine=i386-unknown
753 os=-vsta
754 ;;
755 iris | iris4d)
756 basic_machine=mips-sgi
757 case $os in
758 -irix*)
759 ;;
760 *)
761 os=-irix4
762 ;;
763 esac
764 ;;
765 isi68 | isi)
766 basic_machine=m68k-isi
767 os=-sysv
768 ;;
769 m68knommu)
770 basic_machine=m68k-unknown
771 os=-linux
772 ;;
773 m68knommu-*)
774 basic_machine=m68k-`echo $basic_machine | sed 's/^[^-]*-//'`
775 os=-linux
776 ;;
777 m88k-omron*)
778 basic_machine=m88k-omron
779 ;;
780 magnum | m3230)
781 basic_machine=mips-mips
782 os=-sysv
783 ;;
784 merlin)
785 basic_machine=ns32k-utek
786 os=-sysv
787 ;;
788 microblaze*)
789 basic_machine=microblaze-xilinx
790 ;;
791 mingw64)
792 basic_machine=x86_64-pc
793 os=-mingw64
794 ;;
795 mingw32)
796 basic_machine=i386-pc
797 os=-mingw32
798 ;;
799 mingw32ce)
800 basic_machine=arm-unknown
801 os=-mingw32ce
802 ;;
803 miniframe)
804 basic_machine=m68000-convergent
805 ;;
806 *mint | -mint[0-9]* | *MiNT | *MiNT[0-9]*)
807 basic_machine=m68k-atari
808 os=-mint
809 ;;
810 mips3*-*)
811 basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`
812 ;;
813 mips3*)
814 basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`-unknown
815 ;;
816 monitor)
817 basic_machine=m68k-rom68k
818 os=-coff
819 ;;
820 morphos)
821 basic_machine=powerpc-unknown
822 os=-morphos
823 ;;
824 msdos)
825 basic_machine=i386-pc
826 os=-msdos
827 ;;
828 ms1-*)
829 basic_machine=`echo $basic_machine | sed -e 's/ms1-/mt-/'`
830 ;;
831 msys)
832 basic_machine=i386-pc
833 os=-msys
834 ;;
835 mvs)
836 basic_machine=i370-ibm
837 os=-mvs
838 ;;
839 nacl)
840 basic_machine=le32-unknown
841 os=-nacl
842 ;;
843 ncr3000)
844 basic_machine=i486-ncr
845 os=-sysv4
846 ;;
847 netbsd386)
848 basic_machine=i386-unknown
849 os=-netbsd
850 ;;
851 netwinder)
852 basic_machine=armv4l-rebel
853 os=-linux
854 ;;
855 news | news700 | news800 | news900)
856 basic_machine=m68k-sony
857 os=-newsos
858 ;;
859 news1000)
860 basic_machine=m68030-sony
861 os=-newsos
862 ;;
863 news-3600 | risc-news)
864 basic_machine=mips-sony
865 os=-newsos
866 ;;
867 necv70)
868 basic_machine=v70-nec
869 os=-sysv
870 ;;
871 next | m*-next )
872 basic_machine=m68k-next
873 case $os in
874 -nextstep* )
875 ;;
876 -ns2*)
877 os=-nextstep2
878 ;;
879 *)
880 os=-nextstep3
881 ;;
882 esac
883 ;;
884 nh3000)
885 basic_machine=m68k-harris
886 os=-cxux
887 ;;
888 nh[45]000)
889 basic_machine=m88k-harris
890 os=-cxux
891 ;;
892 nindy960)
893 basic_machine=i960-intel
894 os=-nindy
895 ;;
896 mon960)
897 basic_machine=i960-intel
898 os=-mon960
899 ;;
900 nonstopux)
901 basic_machine=mips-compaq
902 os=-nonstopux
903 ;;
904 np1)
905 basic_machine=np1-gould
906 ;;
907 neo-tandem)
908 basic_machine=neo-tandem
909 ;;
910 nse-tandem)
911 basic_machine=nse-tandem
912 ;;
913 nsr-tandem)
914 basic_machine=nsr-tandem
915 ;;
916 op50n-* | op60c-*)
917 basic_machine=hppa1.1-oki
918 os=-proelf
919 ;;
920 openrisc | openrisc-*)
921 basic_machine=or32-unknown
922 ;;
923 os400)
924 basic_machine=powerpc-ibm
925 os=-os400
926 ;;
927 OSE68000 | ose68000)
928 basic_machine=m68000-ericsson
929 os=-ose
930 ;;
931 os68k)
932 basic_machine=m68k-none
933 os=-os68k
934 ;;
935 pa-hitachi)
936 basic_machine=hppa1.1-hitachi
937 os=-hiuxwe2
938 ;;
939 paragon)
940 basic_machine=i860-intel
941 os=-osf
942 ;;
943 parisc)
944 basic_machine=hppa-unknown
945 os=-linux
946 ;;
947 parisc-*)
948 basic_machine=hppa-`echo $basic_machine | sed 's/^[^-]*-//'`
949 os=-linux
950 ;;
951 pbd)
952 basic_machine=sparc-tti
953 ;;
954 pbb)
955 basic_machine=m68k-tti
956 ;;
957 pc532 | pc532-*)
958 basic_machine=ns32k-pc532
959 ;;
960 pc98)
961 basic_machine=i386-pc
962 ;;
963 pc98-*)
964 basic_machine=i386-`echo $basic_machine | sed 's/^[^-]*-//'`
965 ;;
966 pentium | p5 | k5 | k6 | nexgen | viac3)
967 basic_machine=i586-pc
968 ;;
969 pentiumpro | p6 | 6x86 | athlon | athlon_*)
970 basic_machine=i686-pc
971 ;;
972 pentiumii | pentium2 | pentiumiii | pentium3)
973 basic_machine=i686-pc
974 ;;
975 pentium4)
976 basic_machine=i786-pc
977 ;;
978 pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*)
979 basic_machine=i586-`echo $basic_machine | sed 's/^[^-]*-//'`
980 ;;
981 pentiumpro-* | p6-* | 6x86-* | athlon-*)
982 basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'`
983 ;;
984 pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*)
985 basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'`
986 ;;
987 pentium4-*)
988 basic_machine=i786-`echo $basic_machine | sed 's/^[^-]*-//'`
989 ;;
990 pn)
991 basic_machine=pn-gould
992 ;;
993 power) basic_machine=power-ibm
994 ;;
995 ppc | ppcbe) basic_machine=powerpc-unknown
996 ;;
997 ppc-* | ppcbe-*)
998 basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'`
999 ;;
1000 ppcle | powerpclittle | ppc-le | powerpc-little)
1001 basic_machine=powerpcle-unknown
1002 ;;
1003 ppcle-* | powerpclittle-*)
1004 basic_machine=powerpcle-`echo $basic_machine | sed 's/^[^-]*-//'`
1005 ;;
1006 ppc64) basic_machine=powerpc64-unknown
1007 ;;
1008 ppc64-*) basic_machine=powerpc64-`echo $basic_machine | sed 's/^[^-]*-//'`
1009 ;;
1010 ppc64le | powerpc64little | ppc64-le | powerpc64-little)
1011 basic_machine=powerpc64le-unknown
1012 ;;
1013 ppc64le-* | powerpc64little-*)
1014 basic_machine=powerpc64le-`echo $basic_machine | sed 's/^[^-]*-//'`
1015 ;;
1016 ps2)
1017 basic_machine=i386-ibm
1018 ;;
1019 pw32)
1020 basic_machine=i586-unknown
1021 os=-pw32
1022 ;;
1023 rdos | rdos64)
1024 basic_machine=x86_64-pc
1025 os=-rdos
1026 ;;
1027 rdos32)
1028 basic_machine=i386-pc
1029 os=-rdos
1030 ;;
1031 rom68k)
1032 basic_machine=m68k-rom68k
1033 os=-coff
1034 ;;
1035 rm[46]00)
1036 basic_machine=mips-siemens
1037 ;;
1038 rtpc | rtpc-*)
1039 basic_machine=romp-ibm
1040 ;;
1041 s390 | s390-*)
1042 basic_machine=s390-ibm
1043 ;;
1044 s390x | s390x-*)
1045 basic_machine=s390x-ibm
1046 ;;
1047 sa29200)
1048 basic_machine=a29k-amd
1049 os=-udi
1050 ;;
1051 sb1)
1052 basic_machine=mipsisa64sb1-unknown
1053 ;;
1054 sb1el)
1055 basic_machine=mipsisa64sb1el-unknown
1056 ;;
1057 sde)
1058 basic_machine=mipsisa32-sde
1059 os=-elf
1060 ;;
1061 sei)
1062 basic_machine=mips-sei
1063 os=-seiux
1064 ;;
1065 sequent)
1066 basic_machine=i386-sequent
1067 ;;
1068 sh)
1069 basic_machine=sh-hitachi
1070 os=-hms
1071 ;;
1072 sh5el)
1073 basic_machine=sh5le-unknown
1074 ;;
1075 sh64)
1076 basic_machine=sh64-unknown
1077 ;;
1078 sparclite-wrs | simso-wrs)
1079 basic_machine=sparclite-wrs
1080 os=-vxworks
1081 ;;
1082 sps7)
1083 basic_machine=m68k-bull
1084 os=-sysv2
1085 ;;
1086 spur)
1087 basic_machine=spur-unknown
1088 ;;
1089 st2000)
1090 basic_machine=m68k-tandem
1091 ;;
1092 stratus)
1093 basic_machine=i860-stratus
1094 os=-sysv4
1095 ;;
1096 strongarm-* | thumb-*)
1097 basic_machine=arm-`echo $basic_machine | sed 's/^[^-]*-//'`
1098 ;;
1099 sun2)
1100 basic_machine=m68000-sun
1101 ;;
1102 sun2os3)
1103 basic_machine=m68000-sun
1104 os=-sunos3
1105 ;;
1106 sun2os4)
1107 basic_machine=m68000-sun
1108 os=-sunos4
1109 ;;
1110 sun3os3)
1111 basic_machine=m68k-sun
1112 os=-sunos3
1113 ;;
1114 sun3os4)
1115 basic_machine=m68k-sun
1116 os=-sunos4
1117 ;;
1118 sun4os3)
1119 basic_machine=sparc-sun
1120 os=-sunos3
1121 ;;
1122 sun4os4)
1123 basic_machine=sparc-sun
1124 os=-sunos4
1125 ;;
1126 sun4sol2)
1127 basic_machine=sparc-sun
1128 os=-solaris2
1129 ;;
1130 sun3 | sun3-*)
1131 basic_machine=m68k-sun
1132 ;;
1133 sun4)
1134 basic_machine=sparc-sun
1135 ;;
1136 sun386 | sun386i | roadrunner)
1137 basic_machine=i386-sun
1138 ;;
1139 sv1)
1140 basic_machine=sv1-cray
1141 os=-unicos
1142 ;;
1143 symmetry)
1144 basic_machine=i386-sequent
1145 os=-dynix
1146 ;;
1147 t3e)
1148 basic_machine=alphaev5-cray
1149 os=-unicos
1150 ;;
1151 t90)
1152 basic_machine=t90-cray
1153 os=-unicos
1154 ;;
1155 tile*)
1156 basic_machine=$basic_machine-unknown
1157 os=-linux-gnu
1158 ;;
1159 tx39)
1160 basic_machine=mipstx39-unknown
1161 ;;
1162 tx39el)
1163 basic_machine=mipstx39el-unknown
1164 ;;
1165 toad1)
1166 basic_machine=pdp10-xkl
1167 os=-tops20
1168 ;;
1169 tower | tower-32)
1170 basic_machine=m68k-ncr
1171 ;;
1172 tpf)
1173 basic_machine=s390x-ibm
1174 os=-tpf
1175 ;;
1176 udi29k)
1177 basic_machine=a29k-amd
1178 os=-udi
1179 ;;
1180 ultra3)
1181 basic_machine=a29k-nyu
1182 os=-sym1
1183 ;;
1184 v810 | necv810)
1185 basic_machine=v810-nec
1186 os=-none
1187 ;;
1188 vaxv)
1189 basic_machine=vax-dec
1190 os=-sysv
1191 ;;
1192 vms)
1193 basic_machine=vax-dec
1194 os=-vms
1195 ;;
1196 vpp*|vx|vx-*)
1197 basic_machine=f301-fujitsu
1198 ;;
1199 vxworks960)
1200 basic_machine=i960-wrs
1201 os=-vxworks
1202 ;;
1203 vxworks68)
1204 basic_machine=m68k-wrs
1205 os=-vxworks
1206 ;;
1207 vxworks29k)
1208 basic_machine=a29k-wrs
1209 os=-vxworks
1210 ;;
1211 w65*)
1212 basic_machine=w65-wdc
1213 os=-none
1214 ;;
1215 w89k-*)
1216 basic_machine=hppa1.1-winbond
1217 os=-proelf
1218 ;;
1219 xbox)
1220 basic_machine=i686-pc
1221 os=-mingw32
1222 ;;
1223 xps | xps100)
1224 basic_machine=xps100-honeywell
1225 ;;
1226 xscale-* | xscalee[bl]-*)
1227 basic_machine=`echo $basic_machine | sed 's/^xscale/arm/'`
1228 ;;
1229 ymp)
1230 basic_machine=ymp-cray
1231 os=-unicos
1232 ;;
1233 z8k-*-coff)
1234 basic_machine=z8k-unknown
1235 os=-sim
1236 ;;
1237 z80-*-coff)
1238 basic_machine=z80-unknown
1239 os=-sim
1240 ;;
1241 none)
1242 basic_machine=none-none
1243 os=-none
1244 ;;
1245
1246 # Here we handle the default manufacturer of certain CPU types. It is in
1247 # some cases the only manufacturer, in others, it is the most popular.
1248 w89k)
1249 basic_machine=hppa1.1-winbond
1250 ;;
1251 op50n)
1252 basic_machine=hppa1.1-oki
1253 ;;
1254 op60c)
1255 basic_machine=hppa1.1-oki
1256 ;;
1257 romp)
1258 basic_machine=romp-ibm
1259 ;;
1260 mmix)
1261 basic_machine=mmix-knuth
1262 ;;
1263 rs6000)
1264 basic_machine=rs6000-ibm
1265 ;;
1266 vax)
1267 basic_machine=vax-dec
1268 ;;
1269 pdp10)
1270 # there are many clones, so DEC is not a safe bet
1271 basic_machine=pdp10-unknown
1272 ;;
1273 pdp11)
1274 basic_machine=pdp11-dec
1275 ;;
1276 we32k)
1277 basic_machine=we32k-att
1278 ;;
1279 sh[1234] | sh[24]a | sh[24]aeb | sh[34]eb | sh[1234]le | sh[23]ele)
1280 basic_machine=sh-unknown
1281 ;;
1282 sparc | sparcv8 | sparcv9 | sparcv9b | sparcv9v)
1283 basic_machine=sparc-sun
1284 ;;
1285 cydra)
1286 basic_machine=cydra-cydrome
1287 ;;
1288 orion)
1289 basic_machine=orion-highlevel
1290 ;;
1291 orion105)
1292 basic_machine=clipper-highlevel
1293 ;;
1294 mac | mpw | mac-mpw)
1295 basic_machine=m68k-apple
1296 ;;
1297 pmac | pmac-mpw)
1298 basic_machine=powerpc-apple
1299 ;;
1300 *-unknown)
1301 # Make sure to match an already-canonicalized machine name.
1302 ;;
1303 *)
1304 echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2
1305 exit 1
1306 ;;
1307 esac
1308
1309 # Here we canonicalize certain aliases for manufacturers.
1310 case $basic_machine in
1311 *-digital*)
1312 basic_machine=`echo $basic_machine | sed 's/digital.*/dec/'`
1313 ;;
1314 *-commodore*)
1315 basic_machine=`echo $basic_machine | sed 's/commodore.*/cbm/'`
1316 ;;
1317 *)
1318 ;;
1319 esac
1320
1321 # Decode manufacturer-specific aliases for certain operating systems.
1322
1323 if [ x"$os" != x"" ]
1324 then
1325 case $os in
1326 # First match some system type aliases
1327 # that might get confused with valid system types.
1328 # -solaris* is a basic system type, with this one exception.
1329 -auroraux)
1330 os=-auroraux
1331 ;;
1332 -solaris1 | -solaris1.*)
1333 os=`echo $os | sed -e 's|solaris1|sunos4|'`
1334 ;;
1335 -solaris)
1336 os=-solaris2
1337 ;;
1338 -svr4*)
1339 os=-sysv4
1340 ;;
1341 -unixware*)
1342 os=-sysv4.2uw
1343 ;;
1344 -gnu/linux*)
1345 os=`echo $os | sed -e 's|gnu/linux|linux-gnu|'`
1346 ;;
1347 # First accept the basic system types.
1348 # The portable systems comes first.
1349 # Each alternative MUST END IN A *, to match a version number.
1350 # -sysv* is not here because it comes later, after sysvr4.
1351 -gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \
1352 | -*vms* | -sco* | -esix* | -isc* | -aix* | -cnk* | -sunos | -sunos[34]*\
1353 | -hpux* | -unos* | -osf* | -luna* | -dgux* | -auroraux* | -solaris* \
1354 | -sym* | -kopensolaris* | -plan9* \
1355 | -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \
1356 | -aos* | -aros* \
1357 | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \
1358 | -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \
1359 | -hiux* | -386bsd* | -knetbsd* | -mirbsd* | -netbsd* \
1360 | -bitrig* | -openbsd* | -solidbsd* \
1361 | -ekkobsd* | -kfreebsd* | -freebsd* | -riscix* | -lynxos* \
1362 | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \
1363 | -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \
1364 | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \
1365 | -chorusos* | -chorusrdb* | -cegcc* \
1366 | -cygwin* | -msys* | -pe* | -psos* | -moss* | -proelf* | -rtems* \
1367 | -mingw32* | -mingw64* | -linux-gnu* | -linux-android* \
1368 | -linux-newlib* | -linux-musl* | -linux-uclibc* \
1369 | -uxpv* | -beos* | -mpeix* | -udk* \
1370 | -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \
1371 | -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \
1372 | -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* \
1373 | -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \
1374 | -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \
1375 | -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly* \
1376 | -skyos* | -haiku* | -rdos* | -toppers* | -drops* | -es*)
1377 # Remember, each alternative MUST END IN *, to match a version number.
1378 ;;
1379 -qnx*)
1380 case $basic_machine in
1381 x86-* | i*86-*)
1382 ;;
1383 *)
1384 os=-nto$os
1385 ;;
1386 esac
1387 ;;
1388 -nto-qnx*)
1389 ;;
1390 -nto*)
1391 os=`echo $os | sed -e 's|nto|nto-qnx|'`
1392 ;;
1393 -sim | -es1800* | -hms* | -xray | -os68k* | -none* | -v88r* \
1394 | -windows* | -osx | -abug | -netware* | -os9* | -beos* | -haiku* \
1395 | -macos* | -mpw* | -magic* | -mmixware* | -mon960* | -lnews*)
1396 ;;
1397 -mac*)
1398 os=`echo $os | sed -e 's|mac|macos|'`
1399 ;;
1400 -linux-dietlibc)
1401 os=-linux-dietlibc
1402 ;;
1403 -linux*)
1404 os=`echo $os | sed -e 's|linux|linux-gnu|'`
1405 ;;
1406 -sunos5*)
1407 os=`echo $os | sed -e 's|sunos5|solaris2|'`
1408 ;;
1409 -sunos6*)
1410 os=`echo $os | sed -e 's|sunos6|solaris3|'`
1411 ;;
1412 -opened*)
1413 os=-openedition
1414 ;;
1415 -os400*)
1416 os=-os400
1417 ;;
1418 -wince*)
1419 os=-wince
1420 ;;
1421 -osfrose*)
1422 os=-osfrose
1423 ;;
1424 -osf*)
1425 os=-osf
1426 ;;
1427 -utek*)
1428 os=-bsd
1429 ;;
1430 -dynix*)
1431 os=-bsd
1432 ;;
1433 -acis*)
1434 os=-aos
1435 ;;
1436 -atheos*)
1437 os=-atheos
1438 ;;
1439 -syllable*)
1440 os=-syllable
1441 ;;
1442 -386bsd)
1443 os=-bsd
1444 ;;
1445 -ctix* | -uts*)
1446 os=-sysv
1447 ;;
1448 -nova*)
1449 os=-rtmk-nova
1450 ;;
1451 -ns2 )
1452 os=-nextstep2
1453 ;;
1454 -nsk*)
1455 os=-nsk
1456 ;;
1457 # Preserve the version number of sinix5.
1458 -sinix5.*)
1459 os=`echo $os | sed -e 's|sinix|sysv|'`
1460 ;;
1461 -sinix*)
1462 os=-sysv4
1463 ;;
1464 -tpf*)
1465 os=-tpf
1466 ;;
1467 -triton*)
1468 os=-sysv3
1469 ;;
1470 -oss*)
1471 os=-sysv3
1472 ;;
1473 -svr4)
1474 os=-sysv4
1475 ;;
1476 -svr3)
1477 os=-sysv3
1478 ;;
1479 -sysvr4)
1480 os=-sysv4
1481 ;;
1482 # This must come after -sysvr4.
1483 -sysv*)
1484 ;;
1485 -ose*)
1486 os=-ose
1487 ;;
1488 -es1800*)
1489 os=-ose
1490 ;;
1491 -xenix)
1492 os=-xenix
1493 ;;
1494 -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*)
1495 os=-mint
1496 ;;
1497 -aros*)
1498 os=-aros
1499 ;;
1500 -zvmoe)
1501 os=-zvmoe
1502 ;;
1503 -dicos*)
1504 os=-dicos
1505 ;;
1506 -nacl*)
1507 ;;
1508 -none)
1509 ;;
1510 *)
1511 # Get rid of the `-' at the beginning of $os.
1512 os=`echo $os | sed 's/[^-]*-//'`
1513 echo Invalid configuration \`$1\': system \`$os\' not recognized 1>&2
1514 exit 1
1515 ;;
1516 esac
1517 else
1518
1519 # Here we handle the default operating systems that come with various machines.
1520 # The value should be what the vendor currently ships out the door with their
1521 # machine or put another way, the most popular os provided with the machine.
1522
1523 # Note that if you're going to try to match "-MANUFACTURER" here (say,
1524 # "-sun"), then you have to tell the case statement up towards the top
1525 # that MANUFACTURER isn't an operating system. Otherwise, code above
1526 # will signal an error saying that MANUFACTURER isn't an operating
1527 # system, and we'll never get to this point.
1528
1529 case $basic_machine in
1530 score-*)
1531 os=-elf
1532 ;;
1533 spu-*)
1534 os=-elf
1535 ;;
1536 *-acorn)
1537 os=-riscix1.2
1538 ;;
1539 arm*-rebel)
1540 os=-linux
1541 ;;
1542 arm*-semi)
1543 os=-aout
1544 ;;
1545 c4x-* | tic4x-*)
1546 os=-coff
1547 ;;
1548 hexagon-*)
1549 os=-elf
1550 ;;
1551 tic54x-*)
1552 os=-coff
1553 ;;
1554 tic55x-*)
1555 os=-coff
1556 ;;
1557 tic6x-*)
1558 os=-coff
1559 ;;
1560 # This must come before the *-dec entry.
1561 pdp10-*)
1562 os=-tops20
1563 ;;
1564 pdp11-*)
1565 os=-none
1566 ;;
1567 *-dec | vax-*)
1568 os=-ultrix4.2
1569 ;;
1570 m68*-apollo)
1571 os=-domain
1572 ;;
1573 i386-sun)
1574 os=-sunos4.0.2
1575 ;;
1576 m68000-sun)
1577 os=-sunos3
1578 ;;
1579 m68*-cisco)
1580 os=-aout
1581 ;;
1582 mep-*)
1583 os=-elf
1584 ;;
1585 mips*-cisco)
1586 os=-elf
1587 ;;
1588 mips*-*)
1589 os=-elf
1590 ;;
1591 or1k-*)
1592 os=-elf
1593 ;;
1594 or32-*)
1595 os=-coff
1596 ;;
1597 *-tti) # must be before sparc entry or we get the wrong os.
1598 os=-sysv3
1599 ;;
1600 sparc-* | *-sun)
1601 os=-sunos4.1.1
1602 ;;
1603 *-be)
1604 os=-beos
1605 ;;
1606 *-haiku)
1607 os=-haiku
1608 ;;
1609 *-ibm)
1610 os=-aix
1611 ;;
1612 *-knuth)
1613 os=-mmixware
1614 ;;
1615 *-wec)
1616 os=-proelf
1617 ;;
1618 *-winbond)
1619 os=-proelf
1620 ;;
1621 *-oki)
1622 os=-proelf
1623 ;;
1624 *-hp)
1625 os=-hpux
1626 ;;
1627 *-hitachi)
1628 os=-hiux
1629 ;;
1630 i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent)
1631 os=-sysv
1632 ;;
1633 *-cbm)
1634 os=-amigaos
1635 ;;
1636 *-dg)
1637 os=-dgux
1638 ;;
1639 *-dolphin)
1640 os=-sysv3
1641 ;;
1642 m68k-ccur)
1643 os=-rtu
1644 ;;
1645 m88k-omron*)
1646 os=-luna
1647 ;;
1648 *-next )
1649 os=-nextstep
1650 ;;
1651 *-sequent)
1652 os=-ptx
1653 ;;
1654 *-crds)
1655 os=-unos
1656 ;;
1657 *-ns)
1658 os=-genix
1659 ;;
1660 i370-*)
1661 os=-mvs
1662 ;;
1663 *-next)
1664 os=-nextstep3
1665 ;;
1666 *-gould)
1667 os=-sysv
1668 ;;
1669 *-highlevel)
1670 os=-bsd
1671 ;;
1672 *-encore)
1673 os=-bsd
1674 ;;
1675 *-sgi)
1676 os=-irix
1677 ;;
1678 *-siemens)
1679 os=-sysv4
1680 ;;
1681 *-masscomp)
1682 os=-rtu
1683 ;;
1684 f30[01]-fujitsu | f700-fujitsu)
1685 os=-uxpv
1686 ;;
1687 *-rom68k)
1688 os=-coff
1689 ;;
1690 *-*bug)
1691 os=-coff
1692 ;;
1693 *-apple)
1694 os=-macos
1695 ;;
1696 *-atari*)
1697 os=-mint
1698 ;;
1699 *)
1700 os=-none
1701 ;;
1702 esac
1703 fi
1704
1705 # Here we handle the case where we know the os, and the CPU type, but not the
1706 # manufacturer. We pick the logical manufacturer.
1707 vendor=unknown
1708 case $basic_machine in
1709 *-unknown)
1710 case $os in
1711 -riscix*)
1712 vendor=acorn
1713 ;;
1714 -sunos*)
1715 vendor=sun
1716 ;;
1717 -cnk*|-aix*)
1718 vendor=ibm
1719 ;;
1720 -beos*)
1721 vendor=be
1722 ;;
1723 -hpux*)
1724 vendor=hp
1725 ;;
1726 -mpeix*)
1727 vendor=hp
1728 ;;
1729 -hiux*)
1730 vendor=hitachi
1731 ;;
1732 -unos*)
1733 vendor=crds
1734 ;;
1735 -dgux*)
1736 vendor=dg
1737 ;;
1738 -luna*)
1739 vendor=omron
1740 ;;
1741 -genix*)
1742 vendor=ns
1743 ;;
1744 -mvs* | -opened*)
1745 vendor=ibm
1746 ;;
1747 -os400*)
1748 vendor=ibm
1749 ;;
1750 -ptx*)
1751 vendor=sequent
1752 ;;
1753 -tpf*)
1754 vendor=ibm
1755 ;;
1756 -vxsim* | -vxworks* | -windiss*)
1757 vendor=wrs
1758 ;;
1759 -aux*)
1760 vendor=apple
1761 ;;
1762 -hms*)
1763 vendor=hitachi
1764 ;;
1765 -mpw* | -macos*)
1766 vendor=apple
1767 ;;
1768 -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*)
1769 vendor=atari
1770 ;;
1771 -vos*)
1772 vendor=stratus
1773 ;;
1774 esac
1775 basic_machine=`echo $basic_machine | sed "s/unknown/$vendor/"`
1776 ;;
1777 esac
1778
1779 echo $basic_machine$os
1780 exit
1781
1782 # Local variables:
1783 # eval: (add-hook 'write-file-hooks 'time-stamp)
1784 # time-stamp-start: "timestamp='"
1785 # time-stamp-format: "%:y-%02m-%02d"
1786 # time-stamp-end: "'"
1787 # End:
+0
-15098
configure less more
0 #! /bin/sh
1 # Guess values for system-dependent variables and create Makefiles.
2 # Generated by GNU Autoconf 2.69 for erasurecode 0.1.
3 #
4 #
5 # Copyright (C) 1992-1996, 1998-2012 Free Software Foundation, Inc.
6 #
7 #
8 # This configure script is free software; the Free Software Foundation
9 # gives unlimited permission to copy, distribute and modify it.
10 ## -------------------- ##
11 ## M4sh Initialization. ##
12 ## -------------------- ##
13
14 # Be more Bourne compatible
15 DUALCASE=1; export DUALCASE # for MKS sh
16 if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then :
17 emulate sh
18 NULLCMD=:
19 # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which
20 # is contrary to our usage. Disable this feature.
21 alias -g '${1+"$@"}'='"$@"'
22 setopt NO_GLOB_SUBST
23 else
24 case `(set -o) 2>/dev/null` in #(
25 *posix*) :
26 set -o posix ;; #(
27 *) :
28 ;;
29 esac
30 fi
31
32
33 as_nl='
34 '
35 export as_nl
36 # Printing a long string crashes Solaris 7 /usr/bin/printf.
37 as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'
38 as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo
39 as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo
40 # Prefer a ksh shell builtin over an external printf program on Solaris,
41 # but without wasting forks for bash or zsh.
42 if test -z "$BASH_VERSION$ZSH_VERSION" \
43 && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then
44 as_echo='print -r --'
45 as_echo_n='print -rn --'
46 elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then
47 as_echo='printf %s\n'
48 as_echo_n='printf %s'
49 else
50 if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then
51 as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"'
52 as_echo_n='/usr/ucb/echo -n'
53 else
54 as_echo_body='eval expr "X$1" : "X\\(.*\\)"'
55 as_echo_n_body='eval
56 arg=$1;
57 case $arg in #(
58 *"$as_nl"*)
59 expr "X$arg" : "X\\(.*\\)$as_nl";
60 arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;;
61 esac;
62 expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl"
63 '
64 export as_echo_n_body
65 as_echo_n='sh -c $as_echo_n_body as_echo'
66 fi
67 export as_echo_body
68 as_echo='sh -c $as_echo_body as_echo'
69 fi
70
71 # The user is always right.
72 if test "${PATH_SEPARATOR+set}" != set; then
73 PATH_SEPARATOR=:
74 (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && {
75 (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 ||
76 PATH_SEPARATOR=';'
77 }
78 fi
79
80
81 # IFS
82 # We need space, tab and new line, in precisely that order. Quoting is
83 # there to prevent editors from complaining about space-tab.
84 # (If _AS_PATH_WALK were called with IFS unset, it would disable word
85 # splitting by setting IFS to empty value.)
86 IFS=" "" $as_nl"
87
88 # Find who we are. Look in the path if we contain no directory separator.
89 as_myself=
90 case $0 in #((
91 *[\\/]* ) as_myself=$0 ;;
92 *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
93 for as_dir in $PATH
94 do
95 IFS=$as_save_IFS
96 test -z "$as_dir" && as_dir=.
97 test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break
98 done
99 IFS=$as_save_IFS
100
101 ;;
102 esac
103 # We did not find ourselves, most probably we were run as `sh COMMAND'
104 # in which case we are not to be found in the path.
105 if test "x$as_myself" = x; then
106 as_myself=$0
107 fi
108 if test ! -f "$as_myself"; then
109 $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2
110 exit 1
111 fi
112
113 # Unset variables that we do not need and which cause bugs (e.g. in
114 # pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1"
115 # suppresses any "Segmentation fault" message there. '((' could
116 # trigger a bug in pdksh 5.2.14.
117 for as_var in BASH_ENV ENV MAIL MAILPATH
118 do eval test x\${$as_var+set} = xset \
119 && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || :
120 done
121 PS1='$ '
122 PS2='> '
123 PS4='+ '
124
125 # NLS nuisances.
126 LC_ALL=C
127 export LC_ALL
128 LANGUAGE=C
129 export LANGUAGE
130
131 # CDPATH.
132 (unset CDPATH) >/dev/null 2>&1 && unset CDPATH
133
134 # Use a proper internal environment variable to ensure we don't fall
135 # into an infinite loop, continuously re-executing ourselves.
136 if test x"${_as_can_reexec}" != xno && test "x$CONFIG_SHELL" != x; then
137 _as_can_reexec=no; export _as_can_reexec;
138 # We cannot yet assume a decent shell, so we have to provide a
139 # neutralization value for shells without unset; and this also
140 # works around shells that cannot unset nonexistent variables.
141 # Preserve -v and -x to the replacement shell.
142 BASH_ENV=/dev/null
143 ENV=/dev/null
144 (unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV
145 case $- in # ((((
146 *v*x* | *x*v* ) as_opts=-vx ;;
147 *v* ) as_opts=-v ;;
148 *x* ) as_opts=-x ;;
149 * ) as_opts= ;;
150 esac
151 exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"}
152 # Admittedly, this is quite paranoid, since all the known shells bail
153 # out after a failed `exec'.
154 $as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2
155 as_fn_exit 255
156 fi
157 # We don't want this to propagate to other subprocesses.
158 { _as_can_reexec=; unset _as_can_reexec;}
159 if test "x$CONFIG_SHELL" = x; then
160 as_bourne_compatible="if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then :
161 emulate sh
162 NULLCMD=:
163 # Pre-4.2 versions of Zsh do word splitting on \${1+\"\$@\"}, which
164 # is contrary to our usage. Disable this feature.
165 alias -g '\${1+\"\$@\"}'='\"\$@\"'
166 setopt NO_GLOB_SUBST
167 else
168 case \`(set -o) 2>/dev/null\` in #(
169 *posix*) :
170 set -o posix ;; #(
171 *) :
172 ;;
173 esac
174 fi
175 "
176 as_required="as_fn_return () { (exit \$1); }
177 as_fn_success () { as_fn_return 0; }
178 as_fn_failure () { as_fn_return 1; }
179 as_fn_ret_success () { return 0; }
180 as_fn_ret_failure () { return 1; }
181
182 exitcode=0
183 as_fn_success || { exitcode=1; echo as_fn_success failed.; }
184 as_fn_failure && { exitcode=1; echo as_fn_failure succeeded.; }
185 as_fn_ret_success || { exitcode=1; echo as_fn_ret_success failed.; }
186 as_fn_ret_failure && { exitcode=1; echo as_fn_ret_failure succeeded.; }
187 if ( set x; as_fn_ret_success y && test x = \"\$1\" ); then :
188
189 else
190 exitcode=1; echo positional parameters were not saved.
191 fi
192 test x\$exitcode = x0 || exit 1
193 test -x / || exit 1"
194 as_suggested=" as_lineno_1=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_1a=\$LINENO
195 as_lineno_2=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_2a=\$LINENO
196 eval 'test \"x\$as_lineno_1'\$as_run'\" != \"x\$as_lineno_2'\$as_run'\" &&
197 test \"x\`expr \$as_lineno_1'\$as_run' + 1\`\" = \"x\$as_lineno_2'\$as_run'\"' || exit 1
198
199 test -n \"\${ZSH_VERSION+set}\${BASH_VERSION+set}\" || (
200 ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'
201 ECHO=\$ECHO\$ECHO\$ECHO\$ECHO\$ECHO
202 ECHO=\$ECHO\$ECHO\$ECHO\$ECHO\$ECHO\$ECHO
203 PATH=/empty FPATH=/empty; export PATH FPATH
204 test \"X\`printf %s \$ECHO\`\" = \"X\$ECHO\" \\
205 || test \"X\`print -r -- \$ECHO\`\" = \"X\$ECHO\" ) || exit 1
206 test \$(( 1 + 1 )) = 2 || exit 1"
207 if (eval "$as_required") 2>/dev/null; then :
208 as_have_required=yes
209 else
210 as_have_required=no
211 fi
212 if test x$as_have_required = xyes && (eval "$as_suggested") 2>/dev/null; then :
213
214 else
215 as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
216 as_found=false
217 for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH
218 do
219 IFS=$as_save_IFS
220 test -z "$as_dir" && as_dir=.
221 as_found=:
222 case $as_dir in #(
223 /*)
224 for as_base in sh bash ksh sh5; do
225 # Try only shells that exist, to save several forks.
226 as_shell=$as_dir/$as_base
227 if { test -f "$as_shell" || test -f "$as_shell.exe"; } &&
228 { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$as_shell"; } 2>/dev/null; then :
229 CONFIG_SHELL=$as_shell as_have_required=yes
230 if { $as_echo "$as_bourne_compatible""$as_suggested" | as_run=a "$as_shell"; } 2>/dev/null; then :
231 break 2
232 fi
233 fi
234 done;;
235 esac
236 as_found=false
237 done
238 $as_found || { if { test -f "$SHELL" || test -f "$SHELL.exe"; } &&
239 { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$SHELL"; } 2>/dev/null; then :
240 CONFIG_SHELL=$SHELL as_have_required=yes
241 fi; }
242 IFS=$as_save_IFS
243
244
245 if test "x$CONFIG_SHELL" != x; then :
246 export CONFIG_SHELL
247 # We cannot yet assume a decent shell, so we have to provide a
248 # neutralization value for shells without unset; and this also
249 # works around shells that cannot unset nonexistent variables.
250 # Preserve -v and -x to the replacement shell.
251 BASH_ENV=/dev/null
252 ENV=/dev/null
253 (unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV
254 case $- in # ((((
255 *v*x* | *x*v* ) as_opts=-vx ;;
256 *v* ) as_opts=-v ;;
257 *x* ) as_opts=-x ;;
258 * ) as_opts= ;;
259 esac
260 exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"}
261 # Admittedly, this is quite paranoid, since all the known shells bail
262 # out after a failed `exec'.
263 $as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2
264 exit 255
265 fi
266
267 if test x$as_have_required = xno; then :
268 $as_echo "$0: This script requires a shell more modern than all"
269 $as_echo "$0: the shells that I found on your system."
270 if test x${ZSH_VERSION+set} = xset ; then
271 $as_echo "$0: In particular, zsh $ZSH_VERSION has bugs and should"
272 $as_echo "$0: be upgraded to zsh 4.3.4 or later."
273 else
274 $as_echo "$0: Please tell bug-autoconf@gnu.org about your system,
275 $0: including any error possibly output before this
276 $0: message. Then install a modern shell, or manually run
277 $0: the script under such a shell if you do have one."
278 fi
279 exit 1
280 fi
281 fi
282 fi
283 SHELL=${CONFIG_SHELL-/bin/sh}
284 export SHELL
285 # Unset more variables known to interfere with behavior of common tools.
286 CLICOLOR_FORCE= GREP_OPTIONS=
287 unset CLICOLOR_FORCE GREP_OPTIONS
288
289 ## --------------------- ##
290 ## M4sh Shell Functions. ##
291 ## --------------------- ##
292 # as_fn_unset VAR
293 # ---------------
294 # Portably unset VAR.
295 as_fn_unset ()
296 {
297 { eval $1=; unset $1;}
298 }
299 as_unset=as_fn_unset
300
301 # as_fn_set_status STATUS
302 # -----------------------
303 # Set $? to STATUS, without forking.
304 as_fn_set_status ()
305 {
306 return $1
307 } # as_fn_set_status
308
309 # as_fn_exit STATUS
310 # -----------------
311 # Exit the shell with STATUS, even in a "trap 0" or "set -e" context.
312 as_fn_exit ()
313 {
314 set +e
315 as_fn_set_status $1
316 exit $1
317 } # as_fn_exit
318
319 # as_fn_mkdir_p
320 # -------------
321 # Create "$as_dir" as a directory, including parents if necessary.
322 as_fn_mkdir_p ()
323 {
324
325 case $as_dir in #(
326 -*) as_dir=./$as_dir;;
327 esac
328 test -d "$as_dir" || eval $as_mkdir_p || {
329 as_dirs=
330 while :; do
331 case $as_dir in #(
332 *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'(
333 *) as_qdir=$as_dir;;
334 esac
335 as_dirs="'$as_qdir' $as_dirs"
336 as_dir=`$as_dirname -- "$as_dir" ||
337 $as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
338 X"$as_dir" : 'X\(//\)[^/]' \| \
339 X"$as_dir" : 'X\(//\)$' \| \
340 X"$as_dir" : 'X\(/\)' \| . 2>/dev/null ||
341 $as_echo X"$as_dir" |
342 sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
343 s//\1/
344 q
345 }
346 /^X\(\/\/\)[^/].*/{
347 s//\1/
348 q
349 }
350 /^X\(\/\/\)$/{
351 s//\1/
352 q
353 }
354 /^X\(\/\).*/{
355 s//\1/
356 q
357 }
358 s/.*/./; q'`
359 test -d "$as_dir" && break
360 done
361 test -z "$as_dirs" || eval "mkdir $as_dirs"
362 } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir"
363
364
365 } # as_fn_mkdir_p
366
367 # as_fn_executable_p FILE
368 # -----------------------
369 # Test if FILE is an executable regular file.
370 as_fn_executable_p ()
371 {
372 test -f "$1" && test -x "$1"
373 } # as_fn_executable_p
374 # as_fn_append VAR VALUE
375 # ----------------------
376 # Append the text in VALUE to the end of the definition contained in VAR. Take
377 # advantage of any shell optimizations that allow amortized linear growth over
378 # repeated appends, instead of the typical quadratic growth present in naive
379 # implementations.
380 if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then :
381 eval 'as_fn_append ()
382 {
383 eval $1+=\$2
384 }'
385 else
386 as_fn_append ()
387 {
388 eval $1=\$$1\$2
389 }
390 fi # as_fn_append
391
392 # as_fn_arith ARG...
393 # ------------------
394 # Perform arithmetic evaluation on the ARGs, and store the result in the
395 # global $as_val. Take advantage of shells that can avoid forks. The arguments
396 # must be portable across $(()) and expr.
397 if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then :
398 eval 'as_fn_arith ()
399 {
400 as_val=$(( $* ))
401 }'
402 else
403 as_fn_arith ()
404 {
405 as_val=`expr "$@" || test $? -eq 1`
406 }
407 fi # as_fn_arith
408
409
410 # as_fn_error STATUS ERROR [LINENO LOG_FD]
411 # ----------------------------------------
412 # Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are
413 # provided, also output the error to LOG_FD, referencing LINENO. Then exit the
414 # script with STATUS, using 1 if that was 0.
415 as_fn_error ()
416 {
417 as_status=$1; test $as_status -eq 0 && as_status=1
418 if test "$4"; then
419 as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
420 $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4
421 fi
422 $as_echo "$as_me: error: $2" >&2
423 as_fn_exit $as_status
424 } # as_fn_error
425
426 if expr a : '\(a\)' >/dev/null 2>&1 &&
427 test "X`expr 00001 : '.*\(...\)'`" = X001; then
428 as_expr=expr
429 else
430 as_expr=false
431 fi
432
433 if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then
434 as_basename=basename
435 else
436 as_basename=false
437 fi
438
439 if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then
440 as_dirname=dirname
441 else
442 as_dirname=false
443 fi
444
445 as_me=`$as_basename -- "$0" ||
446 $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \
447 X"$0" : 'X\(//\)$' \| \
448 X"$0" : 'X\(/\)' \| . 2>/dev/null ||
449 $as_echo X/"$0" |
450 sed '/^.*\/\([^/][^/]*\)\/*$/{
451 s//\1/
452 q
453 }
454 /^X\/\(\/\/\)$/{
455 s//\1/
456 q
457 }
458 /^X\/\(\/\).*/{
459 s//\1/
460 q
461 }
462 s/.*/./; q'`
463
464 # Avoid depending upon Character Ranges.
465 as_cr_letters='abcdefghijklmnopqrstuvwxyz'
466 as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ'
467 as_cr_Letters=$as_cr_letters$as_cr_LETTERS
468 as_cr_digits='0123456789'
469 as_cr_alnum=$as_cr_Letters$as_cr_digits
470
471
472 as_lineno_1=$LINENO as_lineno_1a=$LINENO
473 as_lineno_2=$LINENO as_lineno_2a=$LINENO
474 eval 'test "x$as_lineno_1'$as_run'" != "x$as_lineno_2'$as_run'" &&
475 test "x`expr $as_lineno_1'$as_run' + 1`" = "x$as_lineno_2'$as_run'"' || {
476 # Blame Lee E. McMahon (1931-1989) for sed's syntax. :-)
477 sed -n '
478 p
479 /[$]LINENO/=
480 ' <$as_myself |
481 sed '
482 s/[$]LINENO.*/&-/
483 t lineno
484 b
485 :lineno
486 N
487 :loop
488 s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/
489 t loop
490 s/-\n.*//
491 ' >$as_me.lineno &&
492 chmod +x "$as_me.lineno" ||
493 { $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; }
494
495 # If we had to re-execute with $CONFIG_SHELL, we're ensured to have
496 # already done that, so ensure we don't try to do so again and fall
497 # in an infinite loop. This has already happened in practice.
498 _as_can_reexec=no; export _as_can_reexec
499 # Don't try to exec as it changes $[0], causing all sort of problems
500 # (the dirname of $[0] is not the place where we might find the
501 # original and so on. Autoconf is especially sensitive to this).
502 . "./$as_me.lineno"
503 # Exit status is that of the last command.
504 exit
505 }
506
507 ECHO_C= ECHO_N= ECHO_T=
508 case `echo -n x` in #(((((
509 -n*)
510 case `echo 'xy\c'` in
511 *c*) ECHO_T=' ';; # ECHO_T is single tab character.
512 xy) ECHO_C='\c';;
513 *) echo `echo ksh88 bug on AIX 6.1` > /dev/null
514 ECHO_T=' ';;
515 esac;;
516 *)
517 ECHO_N='-n';;
518 esac
519
520 rm -f conf$$ conf$$.exe conf$$.file
521 if test -d conf$$.dir; then
522 rm -f conf$$.dir/conf$$.file
523 else
524 rm -f conf$$.dir
525 mkdir conf$$.dir 2>/dev/null
526 fi
527 if (echo >conf$$.file) 2>/dev/null; then
528 if ln -s conf$$.file conf$$ 2>/dev/null; then
529 as_ln_s='ln -s'
530 # ... but there are two gotchas:
531 # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail.
532 # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable.
533 # In both cases, we have to default to `cp -pR'.
534 ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe ||
535 as_ln_s='cp -pR'
536 elif ln conf$$.file conf$$ 2>/dev/null; then
537 as_ln_s=ln
538 else
539 as_ln_s='cp -pR'
540 fi
541 else
542 as_ln_s='cp -pR'
543 fi
544 rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file
545 rmdir conf$$.dir 2>/dev/null
546
547 if mkdir -p . 2>/dev/null; then
548 as_mkdir_p='mkdir -p "$as_dir"'
549 else
550 test -d ./-p && rmdir ./-p
551 as_mkdir_p=false
552 fi
553
554 as_test_x='test -x'
555 as_executable_p=as_fn_executable_p
556
557 # Sed expression to map a string onto a valid CPP name.
558 as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'"
559
560 # Sed expression to map a string onto a valid variable name.
561 as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'"
562
563 SHELL=${CONFIG_SHELL-/bin/sh}
564
565
566 test -n "$DJDIR" || exec 7<&0 </dev/null
567 exec 6>&1
568
569 # Name of the host.
570 # hostname on some systems (SVR3.2, old GNU/Linux) returns a bogus exit status,
571 # so uname gets run too.
572 ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q`
573
574 #
575 # Initializations.
576 #
577 ac_default_prefix=/usr/local
578 ac_clean_files=
579 ac_config_libobj_dir=.
580 LIBOBJS=
581 cross_compiling=no
582 subdirs=
583 MFLAGS=
584 MAKEFLAGS=
585
586 # Identity of this package.
587 PACKAGE_NAME='erasurecode'
588 PACKAGE_TARNAME='erasurecode'
589 PACKAGE_VERSION='0.1'
590 PACKAGE_STRING='erasurecode 0.1'
591 PACKAGE_BUGREPORT=''
592 PACKAGE_URL=''
593
594 # Factoring default headers for most tests.
595 ac_includes_default="\
596 #include <stdio.h>
597 #ifdef HAVE_SYS_TYPES_H
598 # include <sys/types.h>
599 #endif
600 #ifdef HAVE_SYS_STAT_H
601 # include <sys/stat.h>
602 #endif
603 #ifdef STDC_HEADERS
604 # include <stdlib.h>
605 # include <stddef.h>
606 #else
607 # ifdef HAVE_STDLIB_H
608 # include <stdlib.h>
609 # endif
610 #endif
611 #ifdef HAVE_STRING_H
612 # if !defined STDC_HEADERS && defined HAVE_MEMORY_H
613 # include <memory.h>
614 # endif
615 # include <string.h>
616 #endif
617 #ifdef HAVE_STRINGS_H
618 # include <strings.h>
619 #endif
620 #ifdef HAVE_INTTYPES_H
621 # include <inttypes.h>
622 #endif
623 #ifdef HAVE_STDINT_H
624 # include <stdint.h>
625 #endif
626 #ifdef HAVE_UNISTD_H
627 # include <unistd.h>
628 #endif"
629
630 ac_unique_file="src"
631 ac_subst_vars='am__EXEEXT_FALSE
632 am__EXEEXT_TRUE
633 LTLIBOBJS
634 LIBOBJS
635 DEBUG_FALSE
636 DEBUG_TRUE
637 SIMD_FLAGS
638 MAINT
639 MAINTAINER_MODE_FALSE
640 MAINTAINER_MODE_TRUE
641 CPP
642 OTOOL64
643 OTOOL
644 LIPO
645 NMEDIT
646 DSYMUTIL
647 MANIFEST_TOOL
648 RANLIB
649 ac_ct_AR
650 AR
651 DLLTOOL
652 OBJDUMP
653 LN_S
654 NM
655 ac_ct_DUMPBIN
656 DUMPBIN
657 LD
658 FGREP
659 EGREP
660 GREP
661 SED
662 OBJEXT
663 EXEEXT
664 ac_ct_CC
665 CPPFLAGS
666 LDFLAGS
667 CFLAGS
668 CC
669 host_os
670 host_vendor
671 host_cpu
672 host
673 build_os
674 build_vendor
675 build_cpu
676 build
677 LIBTOOL
678 AM_BACKSLASH
679 AM_DEFAULT_VERBOSITY
680 AM_DEFAULT_V
681 AM_V
682 am__untar
683 am__tar
684 AMTAR
685 am__leading_dot
686 SET_MAKE
687 AWK
688 mkdir_p
689 MKDIR_P
690 INSTALL_STRIP_PROGRAM
691 STRIP
692 install_sh
693 MAKEINFO
694 AUTOHEADER
695 AUTOMAKE
696 AUTOCONF
697 ACLOCAL
698 VERSION
699 PACKAGE
700 CYGPATH_W
701 am__isrc
702 INSTALL_DATA
703 INSTALL_SCRIPT
704 INSTALL_PROGRAM
705 target_alias
706 host_alias
707 build_alias
708 LIBS
709 ECHO_T
710 ECHO_N
711 ECHO_C
712 DEFS
713 mandir
714 localedir
715 libdir
716 psdir
717 pdfdir
718 dvidir
719 htmldir
720 infodir
721 docdir
722 oldincludedir
723 includedir
724 localstatedir
725 sharedstatedir
726 sysconfdir
727 datadir
728 datarootdir
729 libexecdir
730 sbindir
731 bindir
732 program_transform_name
733 prefix
734 exec_prefix
735 PACKAGE_URL
736 PACKAGE_BUGREPORT
737 PACKAGE_STRING
738 PACKAGE_VERSION
739 PACKAGE_TARNAME
740 PACKAGE_NAME
741 PATH_SEPARATOR
742 SHELL'
743 ac_subst_files=''
744 ac_user_opts='
745 enable_option_checking
746 enable_silent_rules
747 enable_shared
748 enable_static
749 with_pic
750 enable_fast_install
751 with_gnu_ld
752 with_sysroot
753 enable_libtool_lock
754 enable_maintainer_mode
755 enable_debug
756 '
757 ac_precious_vars='build_alias
758 host_alias
759 target_alias
760 CC
761 CFLAGS
762 LDFLAGS
763 LIBS
764 CPPFLAGS
765 CPP'
766
767
768 # Initialize some variables set by options.
769 ac_init_help=
770 ac_init_version=false
771 ac_unrecognized_opts=
772 ac_unrecognized_sep=
773 # The variables have the same names as the options, with
774 # dashes changed to underlines.
775 cache_file=/dev/null
776 exec_prefix=NONE
777 no_create=
778 no_recursion=
779 prefix=NONE
780 program_prefix=NONE
781 program_suffix=NONE
782 program_transform_name=s,x,x,
783 silent=
784 site=
785 srcdir=
786 verbose=
787 x_includes=NONE
788 x_libraries=NONE
789
790 # Installation directory options.
791 # These are left unexpanded so users can "make install exec_prefix=/foo"
792 # and all the variables that are supposed to be based on exec_prefix
793 # by default will actually change.
794 # Use braces instead of parens because sh, perl, etc. also accept them.
795 # (The list follows the same order as the GNU Coding Standards.)
796 bindir='${exec_prefix}/bin'
797 sbindir='${exec_prefix}/sbin'
798 libexecdir='${exec_prefix}/libexec'
799 datarootdir='${prefix}/share'
800 datadir='${datarootdir}'
801 sysconfdir='${prefix}/etc'
802 sharedstatedir='${prefix}/com'
803 localstatedir='${prefix}/var'
804 includedir='${prefix}/include'
805 oldincludedir='/usr/include'
806 docdir='${datarootdir}/doc/${PACKAGE_TARNAME}'
807 infodir='${datarootdir}/info'
808 htmldir='${docdir}'
809 dvidir='${docdir}'
810 pdfdir='${docdir}'
811 psdir='${docdir}'
812 libdir='${exec_prefix}/lib'
813 localedir='${datarootdir}/locale'
814 mandir='${datarootdir}/man'
815
816 ac_prev=
817 ac_dashdash=
818 for ac_option
819 do
820 # If the previous option needs an argument, assign it.
821 if test -n "$ac_prev"; then
822 eval $ac_prev=\$ac_option
823 ac_prev=
824 continue
825 fi
826
827 case $ac_option in
828 *=?*) ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;;
829 *=) ac_optarg= ;;
830 *) ac_optarg=yes ;;
831 esac
832
833 # Accept the important Cygnus configure options, so we can diagnose typos.
834
835 case $ac_dashdash$ac_option in
836 --)
837 ac_dashdash=yes ;;
838
839 -bindir | --bindir | --bindi | --bind | --bin | --bi)
840 ac_prev=bindir ;;
841 -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*)
842 bindir=$ac_optarg ;;
843
844 -build | --build | --buil | --bui | --bu)
845 ac_prev=build_alias ;;
846 -build=* | --build=* | --buil=* | --bui=* | --bu=*)
847 build_alias=$ac_optarg ;;
848
849 -cache-file | --cache-file | --cache-fil | --cache-fi \
850 | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c)
851 ac_prev=cache_file ;;
852 -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \
853 | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*)
854 cache_file=$ac_optarg ;;
855
856 --config-cache | -C)
857 cache_file=config.cache ;;
858
859 -datadir | --datadir | --datadi | --datad)
860 ac_prev=datadir ;;
861 -datadir=* | --datadir=* | --datadi=* | --datad=*)
862 datadir=$ac_optarg ;;
863
864 -datarootdir | --datarootdir | --datarootdi | --datarootd | --dataroot \
865 | --dataroo | --dataro | --datar)
866 ac_prev=datarootdir ;;
867 -datarootdir=* | --datarootdir=* | --datarootdi=* | --datarootd=* \
868 | --dataroot=* | --dataroo=* | --dataro=* | --datar=*)
869 datarootdir=$ac_optarg ;;
870
871 -disable-* | --disable-*)
872 ac_useropt=`expr "x$ac_option" : 'x-*disable-\(.*\)'`
873 # Reject names that are not valid shell variable names.
874 expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
875 as_fn_error $? "invalid feature name: $ac_useropt"
876 ac_useropt_orig=$ac_useropt
877 ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
878 case $ac_user_opts in
879 *"
880 "enable_$ac_useropt"
881 "*) ;;
882 *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--disable-$ac_useropt_orig"
883 ac_unrecognized_sep=', ';;
884 esac
885 eval enable_$ac_useropt=no ;;
886
887 -docdir | --docdir | --docdi | --doc | --do)
888 ac_prev=docdir ;;
889 -docdir=* | --docdir=* | --docdi=* | --doc=* | --do=*)
890 docdir=$ac_optarg ;;
891
892 -dvidir | --dvidir | --dvidi | --dvid | --dvi | --dv)
893 ac_prev=dvidir ;;
894 -dvidir=* | --dvidir=* | --dvidi=* | --dvid=* | --dvi=* | --dv=*)
895 dvidir=$ac_optarg ;;
896
897 -enable-* | --enable-*)
898 ac_useropt=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'`
899 # Reject names that are not valid shell variable names.
900 expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
901 as_fn_error $? "invalid feature name: $ac_useropt"
902 ac_useropt_orig=$ac_useropt
903 ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
904 case $ac_user_opts in
905 *"
906 "enable_$ac_useropt"
907 "*) ;;
908 *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--enable-$ac_useropt_orig"
909 ac_unrecognized_sep=', ';;
910 esac
911 eval enable_$ac_useropt=\$ac_optarg ;;
912
913 -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \
914 | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \
915 | --exec | --exe | --ex)
916 ac_prev=exec_prefix ;;
917 -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \
918 | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \
919 | --exec=* | --exe=* | --ex=*)
920 exec_prefix=$ac_optarg ;;
921
922 -gas | --gas | --ga | --g)
923 # Obsolete; use --with-gas.
924 with_gas=yes ;;
925
926 -help | --help | --hel | --he | -h)
927 ac_init_help=long ;;
928 -help=r* | --help=r* | --hel=r* | --he=r* | -hr*)
929 ac_init_help=recursive ;;
930 -help=s* | --help=s* | --hel=s* | --he=s* | -hs*)
931 ac_init_help=short ;;
932
933 -host | --host | --hos | --ho)
934 ac_prev=host_alias ;;
935 -host=* | --host=* | --hos=* | --ho=*)
936 host_alias=$ac_optarg ;;
937
938 -htmldir | --htmldir | --htmldi | --htmld | --html | --htm | --ht)
939 ac_prev=htmldir ;;
940 -htmldir=* | --htmldir=* | --htmldi=* | --htmld=* | --html=* | --htm=* \
941 | --ht=*)
942 htmldir=$ac_optarg ;;
943
944 -includedir | --includedir | --includedi | --included | --include \
945 | --includ | --inclu | --incl | --inc)
946 ac_prev=includedir ;;
947 -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \
948 | --includ=* | --inclu=* | --incl=* | --inc=*)
949 includedir=$ac_optarg ;;
950
951 -infodir | --infodir | --infodi | --infod | --info | --inf)
952 ac_prev=infodir ;;
953 -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*)
954 infodir=$ac_optarg ;;
955
956 -libdir | --libdir | --libdi | --libd)
957 ac_prev=libdir ;;
958 -libdir=* | --libdir=* | --libdi=* | --libd=*)
959 libdir=$ac_optarg ;;
960
961 -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \
962 | --libexe | --libex | --libe)
963 ac_prev=libexecdir ;;
964 -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \
965 | --libexe=* | --libex=* | --libe=*)
966 libexecdir=$ac_optarg ;;
967
968 -localedir | --localedir | --localedi | --localed | --locale)
969 ac_prev=localedir ;;
970 -localedir=* | --localedir=* | --localedi=* | --localed=* | --locale=*)
971 localedir=$ac_optarg ;;
972
973 -localstatedir | --localstatedir | --localstatedi | --localstated \
974 | --localstate | --localstat | --localsta | --localst | --locals)
975 ac_prev=localstatedir ;;
976 -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \
977 | --localstate=* | --localstat=* | --localsta=* | --localst=* | --locals=*)
978 localstatedir=$ac_optarg ;;
979
980 -mandir | --mandir | --mandi | --mand | --man | --ma | --m)
981 ac_prev=mandir ;;
982 -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*)
983 mandir=$ac_optarg ;;
984
985 -nfp | --nfp | --nf)
986 # Obsolete; use --without-fp.
987 with_fp=no ;;
988
989 -no-create | --no-create | --no-creat | --no-crea | --no-cre \
990 | --no-cr | --no-c | -n)
991 no_create=yes ;;
992
993 -no-recursion | --no-recursion | --no-recursio | --no-recursi \
994 | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r)
995 no_recursion=yes ;;
996
997 -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \
998 | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \
999 | --oldin | --oldi | --old | --ol | --o)
1000 ac_prev=oldincludedir ;;
1001 -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \
1002 | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \
1003 | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*)
1004 oldincludedir=$ac_optarg ;;
1005
1006 -prefix | --prefix | --prefi | --pref | --pre | --pr | --p)
1007 ac_prev=prefix ;;
1008 -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*)
1009 prefix=$ac_optarg ;;
1010
1011 -program-prefix | --program-prefix | --program-prefi | --program-pref \
1012 | --program-pre | --program-pr | --program-p)
1013 ac_prev=program_prefix ;;
1014 -program-prefix=* | --program-prefix=* | --program-prefi=* \
1015 | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*)
1016 program_prefix=$ac_optarg ;;
1017
1018 -program-suffix | --program-suffix | --program-suffi | --program-suff \
1019 | --program-suf | --program-su | --program-s)
1020 ac_prev=program_suffix ;;
1021 -program-suffix=* | --program-suffix=* | --program-suffi=* \
1022 | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*)
1023 program_suffix=$ac_optarg ;;
1024
1025 -program-transform-name | --program-transform-name \
1026 | --program-transform-nam | --program-transform-na \
1027 | --program-transform-n | --program-transform- \
1028 | --program-transform | --program-transfor \
1029 | --program-transfo | --program-transf \
1030 | --program-trans | --program-tran \
1031 | --progr-tra | --program-tr | --program-t)
1032 ac_prev=program_transform_name ;;
1033 -program-transform-name=* | --program-transform-name=* \
1034 | --program-transform-nam=* | --program-transform-na=* \
1035 | --program-transform-n=* | --program-transform-=* \
1036 | --program-transform=* | --program-transfor=* \
1037 | --program-transfo=* | --program-transf=* \
1038 | --program-trans=* | --program-tran=* \
1039 | --progr-tra=* | --program-tr=* | --program-t=*)
1040 program_transform_name=$ac_optarg ;;
1041
1042 -pdfdir | --pdfdir | --pdfdi | --pdfd | --pdf | --pd)
1043 ac_prev=pdfdir ;;
1044 -pdfdir=* | --pdfdir=* | --pdfdi=* | --pdfd=* | --pdf=* | --pd=*)
1045 pdfdir=$ac_optarg ;;
1046
1047 -psdir | --psdir | --psdi | --psd | --ps)
1048 ac_prev=psdir ;;
1049 -psdir=* | --psdir=* | --psdi=* | --psd=* | --ps=*)
1050 psdir=$ac_optarg ;;
1051
1052 -q | -quiet | --quiet | --quie | --qui | --qu | --q \
1053 | -silent | --silent | --silen | --sile | --sil)
1054 silent=yes ;;
1055
1056 -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb)
1057 ac_prev=sbindir ;;
1058 -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \
1059 | --sbi=* | --sb=*)
1060 sbindir=$ac_optarg ;;
1061
1062 -sharedstatedir | --sharedstatedir | --sharedstatedi \
1063 | --sharedstated | --sharedstate | --sharedstat | --sharedsta \
1064 | --sharedst | --shareds | --shared | --share | --shar \
1065 | --sha | --sh)
1066 ac_prev=sharedstatedir ;;
1067 -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \
1068 | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \
1069 | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \
1070 | --sha=* | --sh=*)
1071 sharedstatedir=$ac_optarg ;;
1072
1073 -site | --site | --sit)
1074 ac_prev=site ;;
1075 -site=* | --site=* | --sit=*)
1076 site=$ac_optarg ;;
1077
1078 -srcdir | --srcdir | --srcdi | --srcd | --src | --sr)
1079 ac_prev=srcdir ;;
1080 -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*)
1081 srcdir=$ac_optarg ;;
1082
1083 -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \
1084 | --syscon | --sysco | --sysc | --sys | --sy)
1085 ac_prev=sysconfdir ;;
1086 -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \
1087 | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*)
1088 sysconfdir=$ac_optarg ;;
1089
1090 -target | --target | --targe | --targ | --tar | --ta | --t)
1091 ac_prev=target_alias ;;
1092 -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*)
1093 target_alias=$ac_optarg ;;
1094
1095 -v | -verbose | --verbose | --verbos | --verbo | --verb)
1096 verbose=yes ;;
1097
1098 -version | --version | --versio | --versi | --vers | -V)
1099 ac_init_version=: ;;
1100
1101 -with-* | --with-*)
1102 ac_useropt=`expr "x$ac_option" : 'x-*with-\([^=]*\)'`
1103 # Reject names that are not valid shell variable names.
1104 expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
1105 as_fn_error $? "invalid package name: $ac_useropt"
1106 ac_useropt_orig=$ac_useropt
1107 ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
1108 case $ac_user_opts in
1109 *"
1110 "with_$ac_useropt"
1111 "*) ;;
1112 *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--with-$ac_useropt_orig"
1113 ac_unrecognized_sep=', ';;
1114 esac
1115 eval with_$ac_useropt=\$ac_optarg ;;
1116
1117 -without-* | --without-*)
1118 ac_useropt=`expr "x$ac_option" : 'x-*without-\(.*\)'`
1119 # Reject names that are not valid shell variable names.
1120 expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
1121 as_fn_error $? "invalid package name: $ac_useropt"
1122 ac_useropt_orig=$ac_useropt
1123 ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
1124 case $ac_user_opts in
1125 *"
1126 "with_$ac_useropt"
1127 "*) ;;
1128 *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--without-$ac_useropt_orig"
1129 ac_unrecognized_sep=', ';;
1130 esac
1131 eval with_$ac_useropt=no ;;
1132
1133 --x)
1134 # Obsolete; use --with-x.
1135 with_x=yes ;;
1136
1137 -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \
1138 | --x-incl | --x-inc | --x-in | --x-i)
1139 ac_prev=x_includes ;;
1140 -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \
1141 | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*)
1142 x_includes=$ac_optarg ;;
1143
1144 -x-libraries | --x-libraries | --x-librarie | --x-librari \
1145 | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l)
1146 ac_prev=x_libraries ;;
1147 -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \
1148 | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*)
1149 x_libraries=$ac_optarg ;;
1150
1151 -*) as_fn_error $? "unrecognized option: \`$ac_option'
1152 Try \`$0 --help' for more information"
1153 ;;
1154
1155 *=*)
1156 ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='`
1157 # Reject names that are not valid shell variable names.
1158 case $ac_envvar in #(
1159 '' | [0-9]* | *[!_$as_cr_alnum]* )
1160 as_fn_error $? "invalid variable name: \`$ac_envvar'" ;;
1161 esac
1162 eval $ac_envvar=\$ac_optarg
1163 export $ac_envvar ;;
1164
1165 *)
1166 # FIXME: should be removed in autoconf 3.0.
1167 $as_echo "$as_me: WARNING: you should use --build, --host, --target" >&2
1168 expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null &&
1169 $as_echo "$as_me: WARNING: invalid host type: $ac_option" >&2
1170 : "${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option}"
1171 ;;
1172
1173 esac
1174 done
1175
1176 if test -n "$ac_prev"; then
1177 ac_option=--`echo $ac_prev | sed 's/_/-/g'`
1178 as_fn_error $? "missing argument to $ac_option"
1179 fi
1180
1181 if test -n "$ac_unrecognized_opts"; then
1182 case $enable_option_checking in
1183 no) ;;
1184 fatal) as_fn_error $? "unrecognized options: $ac_unrecognized_opts" ;;
1185 *) $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2 ;;
1186 esac
1187 fi
1188
1189 # Check all directory arguments for consistency.
1190 for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \
1191 datadir sysconfdir sharedstatedir localstatedir includedir \
1192 oldincludedir docdir infodir htmldir dvidir pdfdir psdir \
1193 libdir localedir mandir
1194 do
1195 eval ac_val=\$$ac_var
1196 # Remove trailing slashes.
1197 case $ac_val in
1198 */ )
1199 ac_val=`expr "X$ac_val" : 'X\(.*[^/]\)' \| "X$ac_val" : 'X\(.*\)'`
1200 eval $ac_var=\$ac_val;;
1201 esac
1202 # Be sure to have absolute directory names.
1203 case $ac_val in
1204 [\\/$]* | ?:[\\/]* ) continue;;
1205 NONE | '' ) case $ac_var in *prefix ) continue;; esac;;
1206 esac
1207 as_fn_error $? "expected an absolute directory name for --$ac_var: $ac_val"
1208 done
1209
1210 # There might be people who depend on the old broken behavior: `$host'
1211 # used to hold the argument of --host etc.
1212 # FIXME: To remove some day.
1213 build=$build_alias
1214 host=$host_alias
1215 target=$target_alias
1216
1217 # FIXME: To remove some day.
1218 if test "x$host_alias" != x; then
1219 if test "x$build_alias" = x; then
1220 cross_compiling=maybe
1221 elif test "x$build_alias" != "x$host_alias"; then
1222 cross_compiling=yes
1223 fi
1224 fi
1225
1226 ac_tool_prefix=
1227 test -n "$host_alias" && ac_tool_prefix=$host_alias-
1228
1229 test "$silent" = yes && exec 6>/dev/null
1230
1231
1232 ac_pwd=`pwd` && test -n "$ac_pwd" &&
1233 ac_ls_di=`ls -di .` &&
1234 ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` ||
1235 as_fn_error $? "working directory cannot be determined"
1236 test "X$ac_ls_di" = "X$ac_pwd_ls_di" ||
1237 as_fn_error $? "pwd does not report name of working directory"
1238
1239
1240 # Find the source files, if location was not specified.
1241 if test -z "$srcdir"; then
1242 ac_srcdir_defaulted=yes
1243 # Try the directory containing this script, then the parent directory.
1244 ac_confdir=`$as_dirname -- "$as_myself" ||
1245 $as_expr X"$as_myself" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
1246 X"$as_myself" : 'X\(//\)[^/]' \| \
1247 X"$as_myself" : 'X\(//\)$' \| \
1248 X"$as_myself" : 'X\(/\)' \| . 2>/dev/null ||
1249 $as_echo X"$as_myself" |
1250 sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
1251 s//\1/
1252 q
1253 }
1254 /^X\(\/\/\)[^/].*/{
1255 s//\1/
1256 q
1257 }
1258 /^X\(\/\/\)$/{
1259 s//\1/
1260 q
1261 }
1262 /^X\(\/\).*/{
1263 s//\1/
1264 q
1265 }
1266 s/.*/./; q'`
1267 srcdir=$ac_confdir
1268 if test ! -r "$srcdir/$ac_unique_file"; then
1269 srcdir=..
1270 fi
1271 else
1272 ac_srcdir_defaulted=no
1273 fi
1274 if test ! -r "$srcdir/$ac_unique_file"; then
1275 test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .."
1276 as_fn_error $? "cannot find sources ($ac_unique_file) in $srcdir"
1277 fi
1278 ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work"
1279 ac_abs_confdir=`(
1280 cd "$srcdir" && test -r "./$ac_unique_file" || as_fn_error $? "$ac_msg"
1281 pwd)`
1282 # When building in place, set srcdir=.
1283 if test "$ac_abs_confdir" = "$ac_pwd"; then
1284 srcdir=.
1285 fi
1286 # Remove unnecessary trailing slashes from srcdir.
1287 # Double slashes in file names in object file debugging info
1288 # mess up M-x gdb in Emacs.
1289 case $srcdir in
1290 */) srcdir=`expr "X$srcdir" : 'X\(.*[^/]\)' \| "X$srcdir" : 'X\(.*\)'`;;
1291 esac
1292 for ac_var in $ac_precious_vars; do
1293 eval ac_env_${ac_var}_set=\${${ac_var}+set}
1294 eval ac_env_${ac_var}_value=\$${ac_var}
1295 eval ac_cv_env_${ac_var}_set=\${${ac_var}+set}
1296 eval ac_cv_env_${ac_var}_value=\$${ac_var}
1297 done
1298
1299 #
1300 # Report the --help message.
1301 #
1302 if test "$ac_init_help" = "long"; then
1303 # Omit some internal or obsolete options to make the list less imposing.
1304 # This message is too long to be a string in the A/UX 3.1 sh.
1305 cat <<_ACEOF
1306 \`configure' configures erasurecode 0.1 to adapt to many kinds of systems.
1307
1308 Usage: $0 [OPTION]... [VAR=VALUE]...
1309
1310 To assign environment variables (e.g., CC, CFLAGS...), specify them as
1311 VAR=VALUE. See below for descriptions of some of the useful variables.
1312
1313 Defaults for the options are specified in brackets.
1314
1315 Configuration:
1316 -h, --help display this help and exit
1317 --help=short display options specific to this package
1318 --help=recursive display the short help of all the included packages
1319 -V, --version display version information and exit
1320 -q, --quiet, --silent do not print \`checking ...' messages
1321 --cache-file=FILE cache test results in FILE [disabled]
1322 -C, --config-cache alias for \`--cache-file=config.cache'
1323 -n, --no-create do not create output files
1324 --srcdir=DIR find the sources in DIR [configure dir or \`..']
1325
1326 Installation directories:
1327 --prefix=PREFIX install architecture-independent files in PREFIX
1328 [$ac_default_prefix]
1329 --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX
1330 [PREFIX]
1331
1332 By default, \`make install' will install all the files in
1333 \`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc. You can specify
1334 an installation prefix other than \`$ac_default_prefix' using \`--prefix',
1335 for instance \`--prefix=\$HOME'.
1336
1337 For better control, use the options below.
1338
1339 Fine tuning of the installation directories:
1340 --bindir=DIR user executables [EPREFIX/bin]
1341 --sbindir=DIR system admin executables [EPREFIX/sbin]
1342 --libexecdir=DIR program executables [EPREFIX/libexec]
1343 --sysconfdir=DIR read-only single-machine data [PREFIX/etc]
1344 --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com]
1345 --localstatedir=DIR modifiable single-machine data [PREFIX/var]
1346 --libdir=DIR object code libraries [EPREFIX/lib]
1347 --includedir=DIR C header files [PREFIX/include]
1348 --oldincludedir=DIR C header files for non-gcc [/usr/include]
1349 --datarootdir=DIR read-only arch.-independent data root [PREFIX/share]
1350 --datadir=DIR read-only architecture-independent data [DATAROOTDIR]
1351 --infodir=DIR info documentation [DATAROOTDIR/info]
1352 --localedir=DIR locale-dependent data [DATAROOTDIR/locale]
1353 --mandir=DIR man documentation [DATAROOTDIR/man]
1354 --docdir=DIR documentation root [DATAROOTDIR/doc/erasurecode]
1355 --htmldir=DIR html documentation [DOCDIR]
1356 --dvidir=DIR dvi documentation [DOCDIR]
1357 --pdfdir=DIR pdf documentation [DOCDIR]
1358 --psdir=DIR ps documentation [DOCDIR]
1359 _ACEOF
1360
1361 cat <<\_ACEOF
1362
1363 Program names:
1364 --program-prefix=PREFIX prepend PREFIX to installed program names
1365 --program-suffix=SUFFIX append SUFFIX to installed program names
1366 --program-transform-name=PROGRAM run sed PROGRAM on installed program names
1367
1368 System types:
1369 --build=BUILD configure for building on BUILD [guessed]
1370 --host=HOST cross-compile to build programs to run on HOST [BUILD]
1371 _ACEOF
1372 fi
1373
1374 if test -n "$ac_init_help"; then
1375 case $ac_init_help in
1376 short | recursive ) echo "Configuration of erasurecode 0.1:";;
1377 esac
1378 cat <<\_ACEOF
1379
1380 Optional Features:
1381 --disable-option-checking ignore unrecognized --enable/--with options
1382 --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no)
1383 --enable-FEATURE[=ARG] include FEATURE [ARG=yes]
1384 --enable-silent-rules less verbose build output (undo: "make V=1")
1385 --disable-silent-rules verbose build output (undo: "make V=0")
1386 --enable-shared[=PKGS] build shared libraries [default=yes]
1387 --enable-static[=PKGS] build static libraries [default=yes]
1388 --enable-fast-install[=PKGS]
1389 optimize for fast installation [default=yes]
1390 --disable-libtool-lock avoid locking (might break parallel builds)
1391 --enable-maintainer-mode
1392 enable make rules and dependencies not useful (and
1393 sometimes confusing) to the casual installer
1394 --enable-debug enable debugging, default: no
1395
1396 Optional Packages:
1397 --with-PACKAGE[=ARG] use PACKAGE [ARG=yes]
1398 --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no)
1399 --with-pic[=PKGS] try to use only PIC/non-PIC objects [default=use
1400 both]
1401 --with-gnu-ld assume the C compiler uses GNU ld [default=no]
1402 --with-sysroot=DIR Search for dependent libraries within DIR
1403 (or the compiler's sysroot if not specified).
1404
1405 Some influential environment variables:
1406 CC C compiler command
1407 CFLAGS C compiler flags
1408 LDFLAGS linker flags, e.g. -L<lib dir> if you have libraries in a
1409 nonstandard directory <lib dir>
1410 LIBS libraries to pass to the linker, e.g. -l<library>
1411 CPPFLAGS (Objective) C/C++ preprocessor flags, e.g. -I<include dir> if
1412 you have headers in a nonstandard directory <include dir>
1413 CPP C preprocessor
1414
1415 Use these variables to override the choices made by `configure' or to help
1416 it to find libraries and programs with nonstandard names/locations.
1417
1418 Report bugs to the package provider.
1419 _ACEOF
1420 ac_status=$?
1421 fi
1422
1423 if test "$ac_init_help" = "recursive"; then
1424 # If there are subdirs, report their specific --help.
1425 for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue
1426 test -d "$ac_dir" ||
1427 { cd "$srcdir" && ac_pwd=`pwd` && srcdir=. && test -d "$ac_dir"; } ||
1428 continue
1429 ac_builddir=.
1430
1431 case "$ac_dir" in
1432 .) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;;
1433 *)
1434 ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'`
1435 # A ".." for each directory in $ac_dir_suffix.
1436 ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'`
1437 case $ac_top_builddir_sub in
1438 "") ac_top_builddir_sub=. ac_top_build_prefix= ;;
1439 *) ac_top_build_prefix=$ac_top_builddir_sub/ ;;
1440 esac ;;
1441 esac
1442 ac_abs_top_builddir=$ac_pwd
1443 ac_abs_builddir=$ac_pwd$ac_dir_suffix
1444 # for backward compatibility:
1445 ac_top_builddir=$ac_top_build_prefix
1446
1447 case $srcdir in
1448 .) # We are building in place.
1449 ac_srcdir=.
1450 ac_top_srcdir=$ac_top_builddir_sub
1451 ac_abs_top_srcdir=$ac_pwd ;;
1452 [\\/]* | ?:[\\/]* ) # Absolute name.
1453 ac_srcdir=$srcdir$ac_dir_suffix;
1454 ac_top_srcdir=$srcdir
1455 ac_abs_top_srcdir=$srcdir ;;
1456 *) # Relative name.
1457 ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix
1458 ac_top_srcdir=$ac_top_build_prefix$srcdir
1459 ac_abs_top_srcdir=$ac_pwd/$srcdir ;;
1460 esac
1461 ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix
1462
1463 cd "$ac_dir" || { ac_status=$?; continue; }
1464 # Check for guested configure.
1465 if test -f "$ac_srcdir/configure.gnu"; then
1466 echo &&
1467 $SHELL "$ac_srcdir/configure.gnu" --help=recursive
1468 elif test -f "$ac_srcdir/configure"; then
1469 echo &&
1470 $SHELL "$ac_srcdir/configure" --help=recursive
1471 else
1472 $as_echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2
1473 fi || ac_status=$?
1474 cd "$ac_pwd" || { ac_status=$?; break; }
1475 done
1476 fi
1477
1478 test -n "$ac_init_help" && exit $ac_status
1479 if $ac_init_version; then
1480 cat <<\_ACEOF
1481 erasurecode configure 0.1
1482 generated by GNU Autoconf 2.69
1483
1484 Copyright (C) 2012 Free Software Foundation, Inc.
1485 This configure script is free software; the Free Software Foundation
1486 gives unlimited permission to copy, distribute and modify it.
1487 _ACEOF
1488 exit
1489 fi
1490
1491 ## ------------------------ ##
1492 ## Autoconf initialization. ##
1493 ## ------------------------ ##
1494
1495 # ac_fn_c_try_compile LINENO
1496 # --------------------------
1497 # Try to compile conftest.$ac_ext, and return whether this succeeded.
1498 ac_fn_c_try_compile ()
1499 {
1500 as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
1501 rm -f conftest.$ac_objext
1502 if { { ac_try="$ac_compile"
1503 case "(($ac_try" in
1504 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
1505 *) ac_try_echo=$ac_try;;
1506 esac
1507 eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
1508 $as_echo "$ac_try_echo"; } >&5
1509 (eval "$ac_compile") 2>conftest.err
1510 ac_status=$?
1511 if test -s conftest.err; then
1512 grep -v '^ *+' conftest.err >conftest.er1
1513 cat conftest.er1 >&5
1514 mv -f conftest.er1 conftest.err
1515 fi
1516 $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
1517 test $ac_status = 0; } && {
1518 test -z "$ac_c_werror_flag" ||
1519 test ! -s conftest.err
1520 } && test -s conftest.$ac_objext; then :
1521 ac_retval=0
1522 else
1523 $as_echo "$as_me: failed program was:" >&5
1524 sed 's/^/| /' conftest.$ac_ext >&5
1525
1526 ac_retval=1
1527 fi
1528 eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
1529 as_fn_set_status $ac_retval
1530
1531 } # ac_fn_c_try_compile
1532
1533 # ac_fn_c_try_link LINENO
1534 # -----------------------
1535 # Try to link conftest.$ac_ext, and return whether this succeeded.
1536 ac_fn_c_try_link ()
1537 {
1538 as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
1539 rm -f conftest.$ac_objext conftest$ac_exeext
1540 if { { ac_try="$ac_link"
1541 case "(($ac_try" in
1542 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
1543 *) ac_try_echo=$ac_try;;
1544 esac
1545 eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
1546 $as_echo "$ac_try_echo"; } >&5
1547 (eval "$ac_link") 2>conftest.err
1548 ac_status=$?
1549 if test -s conftest.err; then
1550 grep -v '^ *+' conftest.err >conftest.er1
1551 cat conftest.er1 >&5
1552 mv -f conftest.er1 conftest.err
1553 fi
1554 $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
1555 test $ac_status = 0; } && {
1556 test -z "$ac_c_werror_flag" ||
1557 test ! -s conftest.err
1558 } && test -s conftest$ac_exeext && {
1559 test "$cross_compiling" = yes ||
1560 test -x conftest$ac_exeext
1561 }; then :
1562 ac_retval=0
1563 else
1564 $as_echo "$as_me: failed program was:" >&5
1565 sed 's/^/| /' conftest.$ac_ext >&5
1566
1567 ac_retval=1
1568 fi
1569 # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information
1570 # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would
1571 # interfere with the next link command; also delete a directory that is
1572 # left behind by Apple's compiler. We do this before executing the actions.
1573 rm -rf conftest.dSYM conftest_ipa8_conftest.oo
1574 eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
1575 as_fn_set_status $ac_retval
1576
1577 } # ac_fn_c_try_link
1578
1579 # ac_fn_c_check_header_compile LINENO HEADER VAR INCLUDES
1580 # -------------------------------------------------------
1581 # Tests whether HEADER exists and can be compiled using the include files in
1582 # INCLUDES, setting the cache variable VAR accordingly.
1583 ac_fn_c_check_header_compile ()
1584 {
1585 as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
1586 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
1587 $as_echo_n "checking for $2... " >&6; }
1588 if eval \${$3+:} false; then :
1589 $as_echo_n "(cached) " >&6
1590 else
1591 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
1592 /* end confdefs.h. */
1593 $4
1594 #include <$2>
1595 _ACEOF
1596 if ac_fn_c_try_compile "$LINENO"; then :
1597 eval "$3=yes"
1598 else
1599 eval "$3=no"
1600 fi
1601 rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
1602 fi
1603 eval ac_res=\$$3
1604 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
1605 $as_echo "$ac_res" >&6; }
1606 eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
1607
1608 } # ac_fn_c_check_header_compile
1609
1610 # ac_fn_c_try_cpp LINENO
1611 # ----------------------
1612 # Try to preprocess conftest.$ac_ext, and return whether this succeeded.
1613 ac_fn_c_try_cpp ()
1614 {
1615 as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
1616 if { { ac_try="$ac_cpp conftest.$ac_ext"
1617 case "(($ac_try" in
1618 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
1619 *) ac_try_echo=$ac_try;;
1620 esac
1621 eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
1622 $as_echo "$ac_try_echo"; } >&5
1623 (eval "$ac_cpp conftest.$ac_ext") 2>conftest.err
1624 ac_status=$?
1625 if test -s conftest.err; then
1626 grep -v '^ *+' conftest.err >conftest.er1
1627 cat conftest.er1 >&5
1628 mv -f conftest.er1 conftest.err
1629 fi
1630 $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
1631 test $ac_status = 0; } > conftest.i && {
1632 test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
1633 test ! -s conftest.err
1634 }; then :
1635 ac_retval=0
1636 else
1637 $as_echo "$as_me: failed program was:" >&5
1638 sed 's/^/| /' conftest.$ac_ext >&5
1639
1640 ac_retval=1
1641 fi
1642 eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
1643 as_fn_set_status $ac_retval
1644
1645 } # ac_fn_c_try_cpp
1646
1647 # ac_fn_c_try_run LINENO
1648 # ----------------------
1649 # Try to link conftest.$ac_ext, and return whether this succeeded. Assumes
1650 # that executables *can* be run.
1651 ac_fn_c_try_run ()
1652 {
1653 as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
1654 if { { ac_try="$ac_link"
1655 case "(($ac_try" in
1656 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
1657 *) ac_try_echo=$ac_try;;
1658 esac
1659 eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
1660 $as_echo "$ac_try_echo"; } >&5
1661 (eval "$ac_link") 2>&5
1662 ac_status=$?
1663 $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
1664 test $ac_status = 0; } && { ac_try='./conftest$ac_exeext'
1665 { { case "(($ac_try" in
1666 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
1667 *) ac_try_echo=$ac_try;;
1668 esac
1669 eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
1670 $as_echo "$ac_try_echo"; } >&5
1671 (eval "$ac_try") 2>&5
1672 ac_status=$?
1673 $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
1674 test $ac_status = 0; }; }; then :
1675 ac_retval=0
1676 else
1677 $as_echo "$as_me: program exited with status $ac_status" >&5
1678 $as_echo "$as_me: failed program was:" >&5
1679 sed 's/^/| /' conftest.$ac_ext >&5
1680
1681 ac_retval=$ac_status
1682 fi
1683 rm -rf conftest.dSYM conftest_ipa8_conftest.oo
1684 eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
1685 as_fn_set_status $ac_retval
1686
1687 } # ac_fn_c_try_run
1688
1689 # ac_fn_c_check_func LINENO FUNC VAR
1690 # ----------------------------------
1691 # Tests whether FUNC exists, setting the cache variable VAR accordingly
1692 ac_fn_c_check_func ()
1693 {
1694 as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
1695 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
1696 $as_echo_n "checking for $2... " >&6; }
1697 if eval \${$3+:} false; then :
1698 $as_echo_n "(cached) " >&6
1699 else
1700 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
1701 /* end confdefs.h. */
1702 /* Define $2 to an innocuous variant, in case <limits.h> declares $2.
1703 For example, HP-UX 11i <limits.h> declares gettimeofday. */
1704 #define $2 innocuous_$2
1705
1706 /* System header to define __stub macros and hopefully few prototypes,
1707 which can conflict with char $2 (); below.
1708 Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
1709 <limits.h> exists even on freestanding compilers. */
1710
1711 #ifdef __STDC__
1712 # include <limits.h>
1713 #else
1714 # include <assert.h>
1715 #endif
1716
1717 #undef $2
1718
1719 /* Override any GCC internal prototype to avoid an error.
1720 Use char because int might match the return type of a GCC
1721 builtin and then its argument prototype would still apply. */
1722 #ifdef __cplusplus
1723 extern "C"
1724 #endif
1725 char $2 ();
1726 /* The GNU C library defines this for functions which it implements
1727 to always fail with ENOSYS. Some functions are actually named
1728 something starting with __ and the normal name is an alias. */
1729 #if defined __stub_$2 || defined __stub___$2
1730 choke me
1731 #endif
1732
1733 int
1734 main ()
1735 {
1736 return $2 ();
1737 ;
1738 return 0;
1739 }
1740 _ACEOF
1741 if ac_fn_c_try_link "$LINENO"; then :
1742 eval "$3=yes"
1743 else
1744 eval "$3=no"
1745 fi
1746 rm -f core conftest.err conftest.$ac_objext \
1747 conftest$ac_exeext conftest.$ac_ext
1748 fi
1749 eval ac_res=\$$3
1750 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
1751 $as_echo "$ac_res" >&6; }
1752 eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
1753
1754 } # ac_fn_c_check_func
1755
1756 # ac_fn_c_check_header_mongrel LINENO HEADER VAR INCLUDES
1757 # -------------------------------------------------------
1758 # Tests whether HEADER exists, giving a warning if it cannot be compiled using
1759 # the include files in INCLUDES and setting the cache variable VAR
1760 # accordingly.
1761 ac_fn_c_check_header_mongrel ()
1762 {
1763 as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
1764 if eval \${$3+:} false; then :
1765 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
1766 $as_echo_n "checking for $2... " >&6; }
1767 if eval \${$3+:} false; then :
1768 $as_echo_n "(cached) " >&6
1769 fi
1770 eval ac_res=\$$3
1771 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
1772 $as_echo "$ac_res" >&6; }
1773 else
1774 # Is the header compilable?
1775 { $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 usability" >&5
1776 $as_echo_n "checking $2 usability... " >&6; }
1777 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
1778 /* end confdefs.h. */
1779 $4
1780 #include <$2>
1781 _ACEOF
1782 if ac_fn_c_try_compile "$LINENO"; then :
1783 ac_header_compiler=yes
1784 else
1785 ac_header_compiler=no
1786 fi
1787 rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
1788 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_compiler" >&5
1789 $as_echo "$ac_header_compiler" >&6; }
1790
1791 # Is the header present?
1792 { $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 presence" >&5
1793 $as_echo_n "checking $2 presence... " >&6; }
1794 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
1795 /* end confdefs.h. */
1796 #include <$2>
1797 _ACEOF
1798 if ac_fn_c_try_cpp "$LINENO"; then :
1799 ac_header_preproc=yes
1800 else
1801 ac_header_preproc=no
1802 fi
1803 rm -f conftest.err conftest.i conftest.$ac_ext
1804 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_preproc" >&5
1805 $as_echo "$ac_header_preproc" >&6; }
1806
1807 # So? What about this header?
1808 case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in #((
1809 yes:no: )
1810 { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&5
1811 $as_echo "$as_me: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&2;}
1812 { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5
1813 $as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;}
1814 ;;
1815 no:yes:* )
1816 { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: present but cannot be compiled" >&5
1817 $as_echo "$as_me: WARNING: $2: present but cannot be compiled" >&2;}
1818 { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: check for missing prerequisite headers?" >&5
1819 $as_echo "$as_me: WARNING: $2: check for missing prerequisite headers?" >&2;}
1820 { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: see the Autoconf documentation" >&5
1821 $as_echo "$as_me: WARNING: $2: see the Autoconf documentation" >&2;}
1822 { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: section \"Present But Cannot Be Compiled\"" >&5
1823 $as_echo "$as_me: WARNING: $2: section \"Present But Cannot Be Compiled\"" >&2;}
1824 { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5
1825 $as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;}
1826 ;;
1827 esac
1828 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
1829 $as_echo_n "checking for $2... " >&6; }
1830 if eval \${$3+:} false; then :
1831 $as_echo_n "(cached) " >&6
1832 else
1833 eval "$3=\$ac_header_compiler"
1834 fi
1835 eval ac_res=\$$3
1836 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
1837 $as_echo "$ac_res" >&6; }
1838 fi
1839 eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
1840
1841 } # ac_fn_c_check_header_mongrel
1842 cat >config.log <<_ACEOF
1843 This file contains any messages produced by compilers while
1844 running configure, to aid debugging if configure makes a mistake.
1845
1846 It was created by erasurecode $as_me 0.1, which was
1847 generated by GNU Autoconf 2.69. Invocation command line was
1848
1849 $ $0 $@
1850
1851 _ACEOF
1852 exec 5>>config.log
1853 {
1854 cat <<_ASUNAME
1855 ## --------- ##
1856 ## Platform. ##
1857 ## --------- ##
1858
1859 hostname = `(hostname || uname -n) 2>/dev/null | sed 1q`
1860 uname -m = `(uname -m) 2>/dev/null || echo unknown`
1861 uname -r = `(uname -r) 2>/dev/null || echo unknown`
1862 uname -s = `(uname -s) 2>/dev/null || echo unknown`
1863 uname -v = `(uname -v) 2>/dev/null || echo unknown`
1864
1865 /usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown`
1866 /bin/uname -X = `(/bin/uname -X) 2>/dev/null || echo unknown`
1867
1868 /bin/arch = `(/bin/arch) 2>/dev/null || echo unknown`
1869 /usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null || echo unknown`
1870 /usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown`
1871 /usr/bin/hostinfo = `(/usr/bin/hostinfo) 2>/dev/null || echo unknown`
1872 /bin/machine = `(/bin/machine) 2>/dev/null || echo unknown`
1873 /usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null || echo unknown`
1874 /bin/universe = `(/bin/universe) 2>/dev/null || echo unknown`
1875
1876 _ASUNAME
1877
1878 as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
1879 for as_dir in $PATH
1880 do
1881 IFS=$as_save_IFS
1882 test -z "$as_dir" && as_dir=.
1883 $as_echo "PATH: $as_dir"
1884 done
1885 IFS=$as_save_IFS
1886
1887 } >&5
1888
1889 cat >&5 <<_ACEOF
1890
1891
1892 ## ----------- ##
1893 ## Core tests. ##
1894 ## ----------- ##
1895
1896 _ACEOF
1897
1898
1899 # Keep a trace of the command line.
1900 # Strip out --no-create and --no-recursion so they do not pile up.
1901 # Strip out --silent because we don't want to record it for future runs.
1902 # Also quote any args containing shell meta-characters.
1903 # Make two passes to allow for proper duplicate-argument suppression.
1904 ac_configure_args=
1905 ac_configure_args0=
1906 ac_configure_args1=
1907 ac_must_keep_next=false
1908 for ac_pass in 1 2
1909 do
1910 for ac_arg
1911 do
1912 case $ac_arg in
1913 -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;;
1914 -q | -quiet | --quiet | --quie | --qui | --qu | --q \
1915 | -silent | --silent | --silen | --sile | --sil)
1916 continue ;;
1917 *\'*)
1918 ac_arg=`$as_echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;;
1919 esac
1920 case $ac_pass in
1921 1) as_fn_append ac_configure_args0 " '$ac_arg'" ;;
1922 2)
1923 as_fn_append ac_configure_args1 " '$ac_arg'"
1924 if test $ac_must_keep_next = true; then
1925 ac_must_keep_next=false # Got value, back to normal.
1926 else
1927 case $ac_arg in
1928 *=* | --config-cache | -C | -disable-* | --disable-* \
1929 | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \
1930 | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \
1931 | -with-* | --with-* | -without-* | --without-* | --x)
1932 case "$ac_configure_args0 " in
1933 "$ac_configure_args1"*" '$ac_arg' "* ) continue ;;
1934 esac
1935 ;;
1936 -* ) ac_must_keep_next=true ;;
1937 esac
1938 fi
1939 as_fn_append ac_configure_args " '$ac_arg'"
1940 ;;
1941 esac
1942 done
1943 done
1944 { ac_configure_args0=; unset ac_configure_args0;}
1945 { ac_configure_args1=; unset ac_configure_args1;}
1946
1947 # When interrupted or exit'd, cleanup temporary files, and complete
1948 # config.log. We remove comments because anyway the quotes in there
1949 # would cause problems or look ugly.
1950 # WARNING: Use '\'' to represent an apostrophe within the trap.
1951 # WARNING: Do not start the trap code with a newline, due to a FreeBSD 4.0 bug.
1952 trap 'exit_status=$?
1953 # Save into config.log some information that might help in debugging.
1954 {
1955 echo
1956
1957 $as_echo "## ---------------- ##
1958 ## Cache variables. ##
1959 ## ---------------- ##"
1960 echo
1961 # The following way of writing the cache mishandles newlines in values,
1962 (
1963 for ac_var in `(set) 2>&1 | sed -n '\''s/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'\''`; do
1964 eval ac_val=\$$ac_var
1965 case $ac_val in #(
1966 *${as_nl}*)
1967 case $ac_var in #(
1968 *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5
1969 $as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;;
1970 esac
1971 case $ac_var in #(
1972 _ | IFS | as_nl) ;; #(
1973 BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #(
1974 *) { eval $ac_var=; unset $ac_var;} ;;
1975 esac ;;
1976 esac
1977 done
1978 (set) 2>&1 |
1979 case $as_nl`(ac_space='\'' '\''; set) 2>&1` in #(
1980 *${as_nl}ac_space=\ *)
1981 sed -n \
1982 "s/'\''/'\''\\\\'\'''\''/g;
1983 s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\''\\2'\''/p"
1984 ;; #(
1985 *)
1986 sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p"
1987 ;;
1988 esac |
1989 sort
1990 )
1991 echo
1992
1993 $as_echo "## ----------------- ##
1994 ## Output variables. ##
1995 ## ----------------- ##"
1996 echo
1997 for ac_var in $ac_subst_vars
1998 do
1999 eval ac_val=\$$ac_var
2000 case $ac_val in
2001 *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;;
2002 esac
2003 $as_echo "$ac_var='\''$ac_val'\''"
2004 done | sort
2005 echo
2006
2007 if test -n "$ac_subst_files"; then
2008 $as_echo "## ------------------- ##
2009 ## File substitutions. ##
2010 ## ------------------- ##"
2011 echo
2012 for ac_var in $ac_subst_files
2013 do
2014 eval ac_val=\$$ac_var
2015 case $ac_val in
2016 *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;;
2017 esac
2018 $as_echo "$ac_var='\''$ac_val'\''"
2019 done | sort
2020 echo
2021 fi
2022
2023 if test -s confdefs.h; then
2024 $as_echo "## ----------- ##
2025 ## confdefs.h. ##
2026 ## ----------- ##"
2027 echo
2028 cat confdefs.h
2029 echo
2030 fi
2031 test "$ac_signal" != 0 &&
2032 $as_echo "$as_me: caught signal $ac_signal"
2033 $as_echo "$as_me: exit $exit_status"
2034 } >&5
2035 rm -f core *.core core.conftest.* &&
2036 rm -f -r conftest* confdefs* conf$$* $ac_clean_files &&
2037 exit $exit_status
2038 ' 0
2039 for ac_signal in 1 2 13 15; do
2040 trap 'ac_signal='$ac_signal'; as_fn_exit 1' $ac_signal
2041 done
2042 ac_signal=0
2043
2044 # confdefs.h avoids OS command line length limits that DEFS can exceed.
2045 rm -f -r conftest* confdefs.h
2046
2047 $as_echo "/* confdefs.h */" > confdefs.h
2048
2049 # Predefined preprocessor variables.
2050
2051 cat >>confdefs.h <<_ACEOF
2052 #define PACKAGE_NAME "$PACKAGE_NAME"
2053 _ACEOF
2054
2055 cat >>confdefs.h <<_ACEOF
2056 #define PACKAGE_TARNAME "$PACKAGE_TARNAME"
2057 _ACEOF
2058
2059 cat >>confdefs.h <<_ACEOF
2060 #define PACKAGE_VERSION "$PACKAGE_VERSION"
2061 _ACEOF
2062
2063 cat >>confdefs.h <<_ACEOF
2064 #define PACKAGE_STRING "$PACKAGE_STRING"
2065 _ACEOF
2066
2067 cat >>confdefs.h <<_ACEOF
2068 #define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT"
2069 _ACEOF
2070
2071 cat >>confdefs.h <<_ACEOF
2072 #define PACKAGE_URL "$PACKAGE_URL"
2073 _ACEOF
2074
2075
2076 # Let the site file select an alternate cache file if it wants to.
2077 # Prefer an explicitly selected file to automatically selected ones.
2078 ac_site_file1=NONE
2079 ac_site_file2=NONE
2080 if test -n "$CONFIG_SITE"; then
2081 # We do not want a PATH search for config.site.
2082 case $CONFIG_SITE in #((
2083 -*) ac_site_file1=./$CONFIG_SITE;;
2084 */*) ac_site_file1=$CONFIG_SITE;;
2085 *) ac_site_file1=./$CONFIG_SITE;;
2086 esac
2087 elif test "x$prefix" != xNONE; then
2088 ac_site_file1=$prefix/share/config.site
2089 ac_site_file2=$prefix/etc/config.site
2090 else
2091 ac_site_file1=$ac_default_prefix/share/config.site
2092 ac_site_file2=$ac_default_prefix/etc/config.site
2093 fi
2094 for ac_site_file in "$ac_site_file1" "$ac_site_file2"
2095 do
2096 test "x$ac_site_file" = xNONE && continue
2097 if test /dev/null != "$ac_site_file" && test -r "$ac_site_file"; then
2098 { $as_echo "$as_me:${as_lineno-$LINENO}: loading site script $ac_site_file" >&5
2099 $as_echo "$as_me: loading site script $ac_site_file" >&6;}
2100 sed 's/^/| /' "$ac_site_file" >&5
2101 . "$ac_site_file" \
2102 || { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
2103 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
2104 as_fn_error $? "failed to load site script $ac_site_file
2105 See \`config.log' for more details" "$LINENO" 5; }
2106 fi
2107 done
2108
2109 if test -r "$cache_file"; then
2110 # Some versions of bash will fail to source /dev/null (special files
2111 # actually), so we avoid doing that. DJGPP emulates it as a regular file.
2112 if test /dev/null != "$cache_file" && test -f "$cache_file"; then
2113 { $as_echo "$as_me:${as_lineno-$LINENO}: loading cache $cache_file" >&5
2114 $as_echo "$as_me: loading cache $cache_file" >&6;}
2115 case $cache_file in
2116 [\\/]* | ?:[\\/]* ) . "$cache_file";;
2117 *) . "./$cache_file";;
2118 esac
2119 fi
2120 else
2121 { $as_echo "$as_me:${as_lineno-$LINENO}: creating cache $cache_file" >&5
2122 $as_echo "$as_me: creating cache $cache_file" >&6;}
2123 >$cache_file
2124 fi
2125
2126 # Check that the precious variables saved in the cache have kept the same
2127 # value.
2128 ac_cache_corrupted=false
2129 for ac_var in $ac_precious_vars; do
2130 eval ac_old_set=\$ac_cv_env_${ac_var}_set
2131 eval ac_new_set=\$ac_env_${ac_var}_set
2132 eval ac_old_val=\$ac_cv_env_${ac_var}_value
2133 eval ac_new_val=\$ac_env_${ac_var}_value
2134 case $ac_old_set,$ac_new_set in
2135 set,)
2136 { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5
2137 $as_echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;}
2138 ac_cache_corrupted=: ;;
2139 ,set)
2140 { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was not set in the previous run" >&5
2141 $as_echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;}
2142 ac_cache_corrupted=: ;;
2143 ,);;
2144 *)
2145 if test "x$ac_old_val" != "x$ac_new_val"; then
2146 # differences in whitespace do not lead to failure.
2147 ac_old_val_w=`echo x $ac_old_val`
2148 ac_new_val_w=`echo x $ac_new_val`
2149 if test "$ac_old_val_w" != "$ac_new_val_w"; then
2150 { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' has changed since the previous run:" >&5
2151 $as_echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;}
2152 ac_cache_corrupted=:
2153 else
2154 { $as_echo "$as_me:${as_lineno-$LINENO}: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&5
2155 $as_echo "$as_me: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&2;}
2156 eval $ac_var=\$ac_old_val
2157 fi
2158 { $as_echo "$as_me:${as_lineno-$LINENO}: former value: \`$ac_old_val'" >&5
2159 $as_echo "$as_me: former value: \`$ac_old_val'" >&2;}
2160 { $as_echo "$as_me:${as_lineno-$LINENO}: current value: \`$ac_new_val'" >&5
2161 $as_echo "$as_me: current value: \`$ac_new_val'" >&2;}
2162 fi;;
2163 esac
2164 # Pass precious variables to config.status.
2165 if test "$ac_new_set" = set; then
2166 case $ac_new_val in
2167 *\'*) ac_arg=$ac_var=`$as_echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;;
2168 *) ac_arg=$ac_var=$ac_new_val ;;
2169 esac
2170 case " $ac_configure_args " in
2171 *" '$ac_arg' "*) ;; # Avoid dups. Use of quotes ensures accuracy.
2172 *) as_fn_append ac_configure_args " '$ac_arg'" ;;
2173 esac
2174 fi
2175 done
2176 if $ac_cache_corrupted; then
2177 { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
2178 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
2179 { $as_echo "$as_me:${as_lineno-$LINENO}: error: changes in the environment can compromise the build" >&5
2180 $as_echo "$as_me: error: changes in the environment can compromise the build" >&2;}
2181 as_fn_error $? "run \`make distclean' and/or \`rm $cache_file' and start over" "$LINENO" 5
2182 fi
2183 ## -------------------- ##
2184 ## Main body of script. ##
2185 ## -------------------- ##
2186
2187 ac_ext=c
2188 ac_cpp='$CPP $CPPFLAGS'
2189 ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
2190 ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
2191 ac_compiler_gnu=$ac_cv_c_compiler_gnu
2192
2193
2194
2195
2196
2197 am__api_version='1.14'
2198
2199 ac_aux_dir=
2200 for ac_dir in "$srcdir" "$srcdir/.." "$srcdir/../.."; do
2201 if test -f "$ac_dir/install-sh"; then
2202 ac_aux_dir=$ac_dir
2203 ac_install_sh="$ac_aux_dir/install-sh -c"
2204 break
2205 elif test -f "$ac_dir/install.sh"; then
2206 ac_aux_dir=$ac_dir
2207 ac_install_sh="$ac_aux_dir/install.sh -c"
2208 break
2209 elif test -f "$ac_dir/shtool"; then
2210 ac_aux_dir=$ac_dir
2211 ac_install_sh="$ac_aux_dir/shtool install -c"
2212 break
2213 fi
2214 done
2215 if test -z "$ac_aux_dir"; then
2216 as_fn_error $? "cannot find install-sh, install.sh, or shtool in \"$srcdir\" \"$srcdir/..\" \"$srcdir/../..\"" "$LINENO" 5
2217 fi
2218
2219 # These three variables are undocumented and unsupported,
2220 # and are intended to be withdrawn in a future Autoconf release.
2221 # They can cause serious problems if a builder's source tree is in a directory
2222 # whose full name contains unusual characters.
2223 ac_config_guess="$SHELL $ac_aux_dir/config.guess" # Please don't use this var.
2224 ac_config_sub="$SHELL $ac_aux_dir/config.sub" # Please don't use this var.
2225 ac_configure="$SHELL $ac_aux_dir/configure" # Please don't use this var.
2226
2227
2228 # Find a good install program. We prefer a C program (faster),
2229 # so one script is as good as another. But avoid the broken or
2230 # incompatible versions:
2231 # SysV /etc/install, /usr/sbin/install
2232 # SunOS /usr/etc/install
2233 # IRIX /sbin/install
2234 # AIX /bin/install
2235 # AmigaOS /C/install, which installs bootblocks on floppy discs
2236 # AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag
2237 # AFS /usr/afsws/bin/install, which mishandles nonexistent args
2238 # SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff"
2239 # OS/2's system install, which has a completely different semantic
2240 # ./install, which can be erroneously created by make from ./install.sh.
2241 # Reject install programs that cannot install multiple files.
2242 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for a BSD-compatible install" >&5
2243 $as_echo_n "checking for a BSD-compatible install... " >&6; }
2244 if test -z "$INSTALL"; then
2245 if ${ac_cv_path_install+:} false; then :
2246 $as_echo_n "(cached) " >&6
2247 else
2248 as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
2249 for as_dir in $PATH
2250 do
2251 IFS=$as_save_IFS
2252 test -z "$as_dir" && as_dir=.
2253 # Account for people who put trailing slashes in PATH elements.
2254 case $as_dir/ in #((
2255 ./ | .// | /[cC]/* | \
2256 /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \
2257 ?:[\\/]os2[\\/]install[\\/]* | ?:[\\/]OS2[\\/]INSTALL[\\/]* | \
2258 /usr/ucb/* ) ;;
2259 *)
2260 # OSF1 and SCO ODT 3.0 have their own names for install.
2261 # Don't use installbsd from OSF since it installs stuff as root
2262 # by default.
2263 for ac_prog in ginstall scoinst install; do
2264 for ac_exec_ext in '' $ac_executable_extensions; do
2265 if as_fn_executable_p "$as_dir/$ac_prog$ac_exec_ext"; then
2266 if test $ac_prog = install &&
2267 grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then
2268 # AIX install. It has an incompatible calling convention.
2269 :
2270 elif test $ac_prog = install &&
2271 grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then
2272 # program-specific install script used by HP pwplus--don't use.
2273 :
2274 else
2275 rm -rf conftest.one conftest.two conftest.dir
2276 echo one > conftest.one
2277 echo two > conftest.two
2278 mkdir conftest.dir
2279 if "$as_dir/$ac_prog$ac_exec_ext" -c conftest.one conftest.two "`pwd`/conftest.dir" &&
2280 test -s conftest.one && test -s conftest.two &&
2281 test -s conftest.dir/conftest.one &&
2282 test -s conftest.dir/conftest.two
2283 then
2284 ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c"
2285 break 3
2286 fi
2287 fi
2288 fi
2289 done
2290 done
2291 ;;
2292 esac
2293
2294 done
2295 IFS=$as_save_IFS
2296
2297 rm -rf conftest.one conftest.two conftest.dir
2298
2299 fi
2300 if test "${ac_cv_path_install+set}" = set; then
2301 INSTALL=$ac_cv_path_install
2302 else
2303 # As a last resort, use the slow shell script. Don't cache a
2304 # value for INSTALL within a source directory, because that will
2305 # break other packages using the cache if that directory is
2306 # removed, or if the value is a relative name.
2307 INSTALL=$ac_install_sh
2308 fi
2309 fi
2310 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $INSTALL" >&5
2311 $as_echo "$INSTALL" >&6; }
2312
2313 # Use test -z because SunOS4 sh mishandles braces in ${var-val}.
2314 # It thinks the first close brace ends the variable substitution.
2315 test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}'
2316
2317 test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}'
2318
2319 test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644'
2320
2321 { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether build environment is sane" >&5
2322 $as_echo_n "checking whether build environment is sane... " >&6; }
2323 # Reject unsafe characters in $srcdir or the absolute working directory
2324 # name. Accept space and tab only in the latter.
2325 am_lf='
2326 '
2327 case `pwd` in
2328 *[\\\"\#\$\&\'\`$am_lf]*)
2329 as_fn_error $? "unsafe absolute working directory name" "$LINENO" 5;;
2330 esac
2331 case $srcdir in
2332 *[\\\"\#\$\&\'\`$am_lf\ \ ]*)
2333 as_fn_error $? "unsafe srcdir value: '$srcdir'" "$LINENO" 5;;
2334 esac
2335
2336 # Do 'set' in a subshell so we don't clobber the current shell's
2337 # arguments. Must try -L first in case configure is actually a
2338 # symlink; some systems play weird games with the mod time of symlinks
2339 # (eg FreeBSD returns the mod time of the symlink's containing
2340 # directory).
2341 if (
2342 am_has_slept=no
2343 for am_try in 1 2; do
2344 echo "timestamp, slept: $am_has_slept" > conftest.file
2345 set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null`
2346 if test "$*" = "X"; then
2347 # -L didn't work.
2348 set X `ls -t "$srcdir/configure" conftest.file`
2349 fi
2350 if test "$*" != "X $srcdir/configure conftest.file" \
2351 && test "$*" != "X conftest.file $srcdir/configure"; then
2352
2353 # If neither matched, then we have a broken ls. This can happen
2354 # if, for instance, CONFIG_SHELL is bash and it inherits a
2355 # broken ls alias from the environment. This has actually
2356 # happened. Such a system could not be considered "sane".
2357 as_fn_error $? "ls -t appears to fail. Make sure there is not a broken
2358 alias in your environment" "$LINENO" 5
2359 fi
2360 if test "$2" = conftest.file || test $am_try -eq 2; then
2361 break
2362 fi
2363 # Just in case.
2364 sleep 1
2365 am_has_slept=yes
2366 done
2367 test "$2" = conftest.file
2368 )
2369 then
2370 # Ok.
2371 :
2372 else
2373 as_fn_error $? "newly created file is older than distributed files!
2374 Check your system clock" "$LINENO" 5
2375 fi
2376 { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
2377 $as_echo "yes" >&6; }
2378 # If we didn't sleep, we still need to ensure time stamps of config.status and
2379 # generated files are strictly newer.
2380 am_sleep_pid=
2381 if grep 'slept: no' conftest.file >/dev/null 2>&1; then
2382 ( sleep 1 ) &
2383 am_sleep_pid=$!
2384 fi
2385
2386 rm -f conftest.file
2387
2388 test "$program_prefix" != NONE &&
2389 program_transform_name="s&^&$program_prefix&;$program_transform_name"
2390 # Use a double $ so make ignores it.
2391 test "$program_suffix" != NONE &&
2392 program_transform_name="s&\$&$program_suffix&;$program_transform_name"
2393 # Double any \ or $.
2394 # By default was `s,x,x', remove it if useless.
2395 ac_script='s/[\\$]/&&/g;s/;s,x,x,$//'
2396 program_transform_name=`$as_echo "$program_transform_name" | sed "$ac_script"`
2397
2398 # expand $ac_aux_dir to an absolute path
2399 am_aux_dir=`cd $ac_aux_dir && pwd`
2400
2401 if test x"${MISSING+set}" != xset; then
2402 case $am_aux_dir in
2403 *\ * | *\ *)
2404 MISSING="\${SHELL} \"$am_aux_dir/missing\"" ;;
2405 *)
2406 MISSING="\${SHELL} $am_aux_dir/missing" ;;
2407 esac
2408 fi
2409 # Use eval to expand $SHELL
2410 if eval "$MISSING --is-lightweight"; then
2411 am_missing_run="$MISSING "
2412 else
2413 am_missing_run=
2414 { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: 'missing' script is too old or missing" >&5
2415 $as_echo "$as_me: WARNING: 'missing' script is too old or missing" >&2;}
2416 fi
2417
2418 if test x"${install_sh}" != xset; then
2419 case $am_aux_dir in
2420 *\ * | *\ *)
2421 install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;;
2422 *)
2423 install_sh="\${SHELL} $am_aux_dir/install-sh"
2424 esac
2425 fi
2426
2427 # Installed binaries are usually stripped using 'strip' when the user
2428 # run "make install-strip". However 'strip' might not be the right
2429 # tool to use in cross-compilation environments, therefore Automake
2430 # will honor the 'STRIP' environment variable to overrule this program.
2431 if test "$cross_compiling" != no; then
2432 if test -n "$ac_tool_prefix"; then
2433 # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args.
2434 set dummy ${ac_tool_prefix}strip; ac_word=$2
2435 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
2436 $as_echo_n "checking for $ac_word... " >&6; }
2437 if ${ac_cv_prog_STRIP+:} false; then :
2438 $as_echo_n "(cached) " >&6
2439 else
2440 if test -n "$STRIP"; then
2441 ac_cv_prog_STRIP="$STRIP" # Let the user override the test.
2442 else
2443 as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
2444 for as_dir in $PATH
2445 do
2446 IFS=$as_save_IFS
2447 test -z "$as_dir" && as_dir=.
2448 for ac_exec_ext in '' $ac_executable_extensions; do
2449 if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
2450 ac_cv_prog_STRIP="${ac_tool_prefix}strip"
2451 $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
2452 break 2
2453 fi
2454 done
2455 done
2456 IFS=$as_save_IFS
2457
2458 fi
2459 fi
2460 STRIP=$ac_cv_prog_STRIP
2461 if test -n "$STRIP"; then
2462 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5
2463 $as_echo "$STRIP" >&6; }
2464 else
2465 { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
2466 $as_echo "no" >&6; }
2467 fi
2468
2469
2470 fi
2471 if test -z "$ac_cv_prog_STRIP"; then
2472 ac_ct_STRIP=$STRIP
2473 # Extract the first word of "strip", so it can be a program name with args.
2474 set dummy strip; ac_word=$2
2475 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
2476 $as_echo_n "checking for $ac_word... " >&6; }
2477 if ${ac_cv_prog_ac_ct_STRIP+:} false; then :
2478 $as_echo_n "(cached) " >&6
2479 else
2480 if test -n "$ac_ct_STRIP"; then
2481 ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test.
2482 else
2483 as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
2484 for as_dir in $PATH
2485 do
2486 IFS=$as_save_IFS
2487 test -z "$as_dir" && as_dir=.
2488 for ac_exec_ext in '' $ac_executable_extensions; do
2489 if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
2490 ac_cv_prog_ac_ct_STRIP="strip"
2491 $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
2492 break 2
2493 fi
2494 done
2495 done
2496 IFS=$as_save_IFS
2497
2498 fi
2499 fi
2500 ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP
2501 if test -n "$ac_ct_STRIP"; then
2502 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_STRIP" >&5
2503 $as_echo "$ac_ct_STRIP" >&6; }
2504 else
2505 { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
2506 $as_echo "no" >&6; }
2507 fi
2508
2509 if test "x$ac_ct_STRIP" = x; then
2510 STRIP=":"
2511 else
2512 case $cross_compiling:$ac_tool_warned in
2513 yes:)
2514 { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
2515 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
2516 ac_tool_warned=yes ;;
2517 esac
2518 STRIP=$ac_ct_STRIP
2519 fi
2520 else
2521 STRIP="$ac_cv_prog_STRIP"
2522 fi
2523
2524 fi
2525 INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s"
2526
2527 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for a thread-safe mkdir -p" >&5
2528 $as_echo_n "checking for a thread-safe mkdir -p... " >&6; }
2529 if test -z "$MKDIR_P"; then
2530 if ${ac_cv_path_mkdir+:} false; then :
2531 $as_echo_n "(cached) " >&6
2532 else
2533 as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
2534 for as_dir in $PATH$PATH_SEPARATOR/opt/sfw/bin
2535 do
2536 IFS=$as_save_IFS
2537 test -z "$as_dir" && as_dir=.
2538 for ac_prog in mkdir gmkdir; do
2539 for ac_exec_ext in '' $ac_executable_extensions; do
2540 as_fn_executable_p "$as_dir/$ac_prog$ac_exec_ext" || continue
2541 case `"$as_dir/$ac_prog$ac_exec_ext" --version 2>&1` in #(
2542 'mkdir (GNU coreutils) '* | \
2543 'mkdir (coreutils) '* | \
2544 'mkdir (fileutils) '4.1*)
2545 ac_cv_path_mkdir=$as_dir/$ac_prog$ac_exec_ext
2546 break 3;;
2547 esac
2548 done
2549 done
2550 done
2551 IFS=$as_save_IFS
2552
2553 fi
2554
2555 test -d ./--version && rmdir ./--version
2556 if test "${ac_cv_path_mkdir+set}" = set; then
2557 MKDIR_P="$ac_cv_path_mkdir -p"
2558 else
2559 # As a last resort, use the slow shell script. Don't cache a
2560 # value for MKDIR_P within a source directory, because that will
2561 # break other packages using the cache if that directory is
2562 # removed, or if the value is a relative name.
2563 MKDIR_P="$ac_install_sh -d"
2564 fi
2565 fi
2566 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MKDIR_P" >&5
2567 $as_echo "$MKDIR_P" >&6; }
2568
2569 for ac_prog in gawk mawk nawk awk
2570 do
2571 # Extract the first word of "$ac_prog", so it can be a program name with args.
2572 set dummy $ac_prog; ac_word=$2
2573 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
2574 $as_echo_n "checking for $ac_word... " >&6; }
2575 if ${ac_cv_prog_AWK+:} false; then :
2576 $as_echo_n "(cached) " >&6
2577 else
2578 if test -n "$AWK"; then
2579 ac_cv_prog_AWK="$AWK" # Let the user override the test.
2580 else
2581 as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
2582 for as_dir in $PATH
2583 do
2584 IFS=$as_save_IFS
2585 test -z "$as_dir" && as_dir=.
2586 for ac_exec_ext in '' $ac_executable_extensions; do
2587 if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
2588 ac_cv_prog_AWK="$ac_prog"
2589 $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
2590 break 2
2591 fi
2592 done
2593 done
2594 IFS=$as_save_IFS
2595
2596 fi
2597 fi
2598 AWK=$ac_cv_prog_AWK
2599 if test -n "$AWK"; then
2600 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AWK" >&5
2601 $as_echo "$AWK" >&6; }
2602 else
2603 { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
2604 $as_echo "no" >&6; }
2605 fi
2606
2607
2608 test -n "$AWK" && break
2609 done
2610
2611 { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ${MAKE-make} sets \$(MAKE)" >&5
2612 $as_echo_n "checking whether ${MAKE-make} sets \$(MAKE)... " >&6; }
2613 set x ${MAKE-make}
2614 ac_make=`$as_echo "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'`
2615 if eval \${ac_cv_prog_make_${ac_make}_set+:} false; then :
2616 $as_echo_n "(cached) " >&6
2617 else
2618 cat >conftest.make <<\_ACEOF
2619 SHELL = /bin/sh
2620 all:
2621 @echo '@@@%%%=$(MAKE)=@@@%%%'
2622 _ACEOF
2623 # GNU make sometimes prints "make[1]: Entering ...", which would confuse us.
2624 case `${MAKE-make} -f conftest.make 2>/dev/null` in
2625 *@@@%%%=?*=@@@%%%*)
2626 eval ac_cv_prog_make_${ac_make}_set=yes;;
2627 *)
2628 eval ac_cv_prog_make_${ac_make}_set=no;;
2629 esac
2630 rm -f conftest.make
2631 fi
2632 if eval test \$ac_cv_prog_make_${ac_make}_set = yes; then
2633 { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
2634 $as_echo "yes" >&6; }
2635 SET_MAKE=
2636 else
2637 { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
2638 $as_echo "no" >&6; }
2639 SET_MAKE="MAKE=${MAKE-make}"
2640 fi
2641
2642 rm -rf .tst 2>/dev/null
2643 mkdir .tst 2>/dev/null
2644 if test -d .tst; then
2645 am__leading_dot=.
2646 else
2647 am__leading_dot=_
2648 fi
2649 rmdir .tst 2>/dev/null
2650
2651 # Check whether --enable-silent-rules was given.
2652 if test "${enable_silent_rules+set}" = set; then :
2653 enableval=$enable_silent_rules;
2654 fi
2655
2656 case $enable_silent_rules in # (((
2657 yes) AM_DEFAULT_VERBOSITY=0;;
2658 no) AM_DEFAULT_VERBOSITY=1;;
2659 *) AM_DEFAULT_VERBOSITY=1;;
2660 esac
2661 am_make=${MAKE-make}
2662 { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $am_make supports nested variables" >&5
2663 $as_echo_n "checking whether $am_make supports nested variables... " >&6; }
2664 if ${am_cv_make_support_nested_variables+:} false; then :
2665 $as_echo_n "(cached) " >&6
2666 else
2667 if $as_echo 'TRUE=$(BAR$(V))
2668 BAR0=false
2669 BAR1=true
2670 V=1
2671 am__doit:
2672 @$(TRUE)
2673 .PHONY: am__doit' | $am_make -f - >/dev/null 2>&1; then
2674 am_cv_make_support_nested_variables=yes
2675 else
2676 am_cv_make_support_nested_variables=no
2677 fi
2678 fi
2679 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_make_support_nested_variables" >&5
2680 $as_echo "$am_cv_make_support_nested_variables" >&6; }
2681 if test $am_cv_make_support_nested_variables = yes; then
2682 AM_V='$(V)'
2683 AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)'
2684 else
2685 AM_V=$AM_DEFAULT_VERBOSITY
2686 AM_DEFAULT_V=$AM_DEFAULT_VERBOSITY
2687 fi
2688 AM_BACKSLASH='\'
2689
2690 if test "`cd $srcdir && pwd`" != "`pwd`"; then
2691 # Use -I$(srcdir) only when $(srcdir) != ., so that make's output
2692 # is not polluted with repeated "-I."
2693 am__isrc=' -I$(srcdir)'
2694 # test to see if srcdir already configured
2695 if test -f $srcdir/config.status; then
2696 as_fn_error $? "source directory already configured; run \"make distclean\" there first" "$LINENO" 5
2697 fi
2698 fi
2699
2700 # test whether we have cygpath
2701 if test -z "$CYGPATH_W"; then
2702 if (cygpath --version) >/dev/null 2>/dev/null; then
2703 CYGPATH_W='cygpath -w'
2704 else
2705 CYGPATH_W=echo
2706 fi
2707 fi
2708
2709
2710 # Define the identity of the package.
2711 PACKAGE='erasurecode'
2712 VERSION='0.1'
2713
2714
2715 cat >>confdefs.h <<_ACEOF
2716 #define PACKAGE "$PACKAGE"
2717 _ACEOF
2718
2719
2720 cat >>confdefs.h <<_ACEOF
2721 #define VERSION "$VERSION"
2722 _ACEOF
2723
2724 # Some tools Automake needs.
2725
2726 ACLOCAL=${ACLOCAL-"${am_missing_run}aclocal-${am__api_version}"}
2727
2728
2729 AUTOCONF=${AUTOCONF-"${am_missing_run}autoconf"}
2730
2731
2732 AUTOMAKE=${AUTOMAKE-"${am_missing_run}automake-${am__api_version}"}
2733
2734
2735 AUTOHEADER=${AUTOHEADER-"${am_missing_run}autoheader"}
2736
2737
2738 MAKEINFO=${MAKEINFO-"${am_missing_run}makeinfo"}
2739
2740 # For better backward compatibility. To be removed once Automake 1.9.x
2741 # dies out for good. For more background, see:
2742 # <http://lists.gnu.org/archive/html/automake/2012-07/msg00001.html>
2743 # <http://lists.gnu.org/archive/html/automake/2012-07/msg00014.html>
2744 mkdir_p='$(MKDIR_P)'
2745
2746 # We need awk for the "check" target. The system "awk" is bad on
2747 # some platforms.
2748 # Always define AMTAR for backward compatibility. Yes, it's still used
2749 # in the wild :-( We should find a proper way to deprecate it ...
2750 AMTAR='$${TAR-tar}'
2751
2752
2753 # We'll loop over all known methods to create a tar archive until one works.
2754 _am_tools='gnutar pax cpio none'
2755
2756 am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -'
2757
2758
2759
2760
2761
2762
2763 # POSIX will say in a future version that running "rm -f" with no argument
2764 # is OK; and we want to be able to make that assumption in our Makefile
2765 # recipes. So use an aggressive probe to check that the usage we want is
2766 # actually supported "in the wild" to an acceptable degree.
2767 # See automake bug#10828.
2768 # To make any issue more visible, cause the running configure to be aborted
2769 # by default if the 'rm' program in use doesn't match our expectations; the
2770 # user can still override this though.
2771 if rm -f && rm -fr && rm -rf; then : OK; else
2772 cat >&2 <<'END'
2773 Oops!
2774
2775 Your 'rm' program seems unable to run without file operands specified
2776 on the command line, even when the '-f' option is present. This is contrary
2777 to the behaviour of most rm programs out there, and not conforming with
2778 the upcoming POSIX standard: <http://austingroupbugs.net/view.php?id=542>
2779
2780 Please tell bug-automake@gnu.org about your system, including the value
2781 of your $PATH and any error possibly output before this message. This
2782 can help us improve future automake versions.
2783
2784 END
2785 if test x"$ACCEPT_INFERIOR_RM_PROGRAM" = x"yes"; then
2786 echo 'Configuration will proceed anyway, since you have set the' >&2
2787 echo 'ACCEPT_INFERIOR_RM_PROGRAM variable to "yes"' >&2
2788 echo >&2
2789 else
2790 cat >&2 <<'END'
2791 Aborting the configuration process, to ensure you take notice of the issue.
2792
2793 You can download and install GNU coreutils to get an 'rm' implementation
2794 that behaves properly: <http://www.gnu.org/software/coreutils/>.
2795
2796 If you want to complete the configuration process using your problematic
2797 'rm' anyway, export the environment variable ACCEPT_INFERIOR_RM_PROGRAM
2798 to "yes", and re-run configure.
2799
2800 END
2801 as_fn_error $? "Your 'rm' program is bad, sorry." "$LINENO" 5
2802 fi
2803 fi
2804 case `pwd` in
2805 *\ * | *\ *)
2806 { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Libtool does not cope well with whitespace in \`pwd\`" >&5
2807 $as_echo "$as_me: WARNING: Libtool does not cope well with whitespace in \`pwd\`" >&2;} ;;
2808 esac
2809
2810
2811
2812 macro_version='2.4.2'
2813 macro_revision='1.3337'
2814
2815
2816
2817
2818
2819
2820
2821
2822
2823
2824
2825
2826
2827 ltmain="$ac_aux_dir/ltmain.sh"
2828
2829 # Make sure we can run config.sub.
2830 $SHELL "$ac_aux_dir/config.sub" sun4 >/dev/null 2>&1 ||
2831 as_fn_error $? "cannot run $SHELL $ac_aux_dir/config.sub" "$LINENO" 5
2832
2833 { $as_echo "$as_me:${as_lineno-$LINENO}: checking build system type" >&5
2834 $as_echo_n "checking build system type... " >&6; }
2835 if ${ac_cv_build+:} false; then :
2836 $as_echo_n "(cached) " >&6
2837 else
2838 ac_build_alias=$build_alias
2839 test "x$ac_build_alias" = x &&
2840 ac_build_alias=`$SHELL "$ac_aux_dir/config.guess"`
2841 test "x$ac_build_alias" = x &&
2842 as_fn_error $? "cannot guess build type; you must specify one" "$LINENO" 5
2843 ac_cv_build=`$SHELL "$ac_aux_dir/config.sub" $ac_build_alias` ||
2844 as_fn_error $? "$SHELL $ac_aux_dir/config.sub $ac_build_alias failed" "$LINENO" 5
2845
2846 fi
2847 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_build" >&5
2848 $as_echo "$ac_cv_build" >&6; }
2849 case $ac_cv_build in
2850 *-*-*) ;;
2851 *) as_fn_error $? "invalid value of canonical build" "$LINENO" 5;;
2852 esac
2853 build=$ac_cv_build
2854 ac_save_IFS=$IFS; IFS='-'
2855 set x $ac_cv_build
2856 shift
2857 build_cpu=$1
2858 build_vendor=$2
2859 shift; shift
2860 # Remember, the first character of IFS is used to create $*,
2861 # except with old shells:
2862 build_os=$*
2863 IFS=$ac_save_IFS
2864 case $build_os in *\ *) build_os=`echo "$build_os" | sed 's/ /-/g'`;; esac
2865
2866
2867 { $as_echo "$as_me:${as_lineno-$LINENO}: checking host system type" >&5
2868 $as_echo_n "checking host system type... " >&6; }
2869 if ${ac_cv_host+:} false; then :
2870 $as_echo_n "(cached) " >&6
2871 else
2872 if test "x$host_alias" = x; then
2873 ac_cv_host=$ac_cv_build
2874 else
2875 ac_cv_host=`$SHELL "$ac_aux_dir/config.sub" $host_alias` ||
2876 as_fn_error $? "$SHELL $ac_aux_dir/config.sub $host_alias failed" "$LINENO" 5
2877 fi
2878
2879 fi
2880 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_host" >&5
2881 $as_echo "$ac_cv_host" >&6; }
2882 case $ac_cv_host in
2883 *-*-*) ;;
2884 *) as_fn_error $? "invalid value of canonical host" "$LINENO" 5;;
2885 esac
2886 host=$ac_cv_host
2887 ac_save_IFS=$IFS; IFS='-'
2888 set x $ac_cv_host
2889 shift
2890 host_cpu=$1
2891 host_vendor=$2
2892 shift; shift
2893 # Remember, the first character of IFS is used to create $*,
2894 # except with old shells:
2895 host_os=$*
2896 IFS=$ac_save_IFS
2897 case $host_os in *\ *) host_os=`echo "$host_os" | sed 's/ /-/g'`;; esac
2898
2899
2900 # Backslashify metacharacters that are still active within
2901 # double-quoted strings.
2902 sed_quote_subst='s/\(["`$\\]\)/\\\1/g'
2903
2904 # Same as above, but do not quote variable references.
2905 double_quote_subst='s/\(["`\\]\)/\\\1/g'
2906
2907 # Sed substitution to delay expansion of an escaped shell variable in a
2908 # double_quote_subst'ed string.
2909 delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g'
2910
2911 # Sed substitution to delay expansion of an escaped single quote.
2912 delay_single_quote_subst='s/'\''/'\'\\\\\\\'\''/g'
2913
2914 # Sed substitution to avoid accidental globbing in evaled expressions
2915 no_glob_subst='s/\*/\\\*/g'
2916
2917 ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'
2918 ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO
2919 ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO$ECHO
2920
2921 { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to print strings" >&5
2922 $as_echo_n "checking how to print strings... " >&6; }
2923 # Test print first, because it will be a builtin if present.
2924 if test "X`( print -r -- -n ) 2>/dev/null`" = X-n && \
2925 test "X`print -r -- $ECHO 2>/dev/null`" = "X$ECHO"; then
2926 ECHO='print -r --'
2927 elif test "X`printf %s $ECHO 2>/dev/null`" = "X$ECHO"; then
2928 ECHO='printf %s\n'
2929 else
2930 # Use this function as a fallback that always works.
2931 func_fallback_echo ()
2932 {
2933 eval 'cat <<_LTECHO_EOF
2934 $1
2935 _LTECHO_EOF'
2936 }
2937 ECHO='func_fallback_echo'
2938 fi
2939
2940 # func_echo_all arg...
2941 # Invoke $ECHO with all args, space-separated.
2942 func_echo_all ()
2943 {
2944 $ECHO ""
2945 }
2946
2947 case "$ECHO" in
2948 printf*) { $as_echo "$as_me:${as_lineno-$LINENO}: result: printf" >&5
2949 $as_echo "printf" >&6; } ;;
2950 print*) { $as_echo "$as_me:${as_lineno-$LINENO}: result: print -r" >&5
2951 $as_echo "print -r" >&6; } ;;
2952 *) { $as_echo "$as_me:${as_lineno-$LINENO}: result: cat" >&5
2953 $as_echo "cat" >&6; } ;;
2954 esac
2955
2956
2957
2958
2959
2960
2961
2962
2963
2964
2965
2966
2967
2968
2969 ac_ext=c
2970 ac_cpp='$CPP $CPPFLAGS'
2971 ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
2972 ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
2973 ac_compiler_gnu=$ac_cv_c_compiler_gnu
2974 if test -n "$ac_tool_prefix"; then
2975 # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args.
2976 set dummy ${ac_tool_prefix}gcc; ac_word=$2
2977 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
2978 $as_echo_n "checking for $ac_word... " >&6; }
2979 if ${ac_cv_prog_CC+:} false; then :
2980 $as_echo_n "(cached) " >&6
2981 else
2982 if test -n "$CC"; then
2983 ac_cv_prog_CC="$CC" # Let the user override the test.
2984 else
2985 as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
2986 for as_dir in $PATH
2987 do
2988 IFS=$as_save_IFS
2989 test -z "$as_dir" && as_dir=.
2990 for ac_exec_ext in '' $ac_executable_extensions; do
2991 if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
2992 ac_cv_prog_CC="${ac_tool_prefix}gcc"
2993 $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
2994 break 2
2995 fi
2996 done
2997 done
2998 IFS=$as_save_IFS
2999
3000 fi
3001 fi
3002 CC=$ac_cv_prog_CC
3003 if test -n "$CC"; then
3004 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
3005 $as_echo "$CC" >&6; }
3006 else
3007 { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
3008 $as_echo "no" >&6; }
3009 fi
3010
3011
3012 fi
3013 if test -z "$ac_cv_prog_CC"; then
3014 ac_ct_CC=$CC
3015 # Extract the first word of "gcc", so it can be a program name with args.
3016 set dummy gcc; ac_word=$2
3017 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
3018 $as_echo_n "checking for $ac_word... " >&6; }
3019 if ${ac_cv_prog_ac_ct_CC+:} false; then :
3020 $as_echo_n "(cached) " >&6
3021 else
3022 if test -n "$ac_ct_CC"; then
3023 ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.
3024 else
3025 as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
3026 for as_dir in $PATH
3027 do
3028 IFS=$as_save_IFS
3029 test -z "$as_dir" && as_dir=.
3030 for ac_exec_ext in '' $ac_executable_extensions; do
3031 if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
3032 ac_cv_prog_ac_ct_CC="gcc"
3033 $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
3034 break 2
3035 fi
3036 done
3037 done
3038 IFS=$as_save_IFS
3039
3040 fi
3041 fi
3042 ac_ct_CC=$ac_cv_prog_ac_ct_CC
3043 if test -n "$ac_ct_CC"; then
3044 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5
3045 $as_echo "$ac_ct_CC" >&6; }
3046 else
3047 { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
3048 $as_echo "no" >&6; }
3049 fi
3050
3051 if test "x$ac_ct_CC" = x; then
3052 CC=""
3053 else
3054 case $cross_compiling:$ac_tool_warned in
3055 yes:)
3056 { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
3057 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
3058 ac_tool_warned=yes ;;
3059 esac
3060 CC=$ac_ct_CC
3061 fi
3062 else
3063 CC="$ac_cv_prog_CC"
3064 fi
3065
3066 if test -z "$CC"; then
3067 if test -n "$ac_tool_prefix"; then
3068 # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args.
3069 set dummy ${ac_tool_prefix}cc; ac_word=$2
3070 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
3071 $as_echo_n "checking for $ac_word... " >&6; }
3072 if ${ac_cv_prog_CC+:} false; then :
3073 $as_echo_n "(cached) " >&6
3074 else
3075 if test -n "$CC"; then
3076 ac_cv_prog_CC="$CC" # Let the user override the test.
3077 else
3078 as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
3079 for as_dir in $PATH
3080 do
3081 IFS=$as_save_IFS
3082 test -z "$as_dir" && as_dir=.
3083 for ac_exec_ext in '' $ac_executable_extensions; do
3084 if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
3085 ac_cv_prog_CC="${ac_tool_prefix}cc"
3086 $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
3087 break 2
3088 fi
3089 done
3090 done
3091 IFS=$as_save_IFS
3092
3093 fi
3094 fi
3095 CC=$ac_cv_prog_CC
3096 if test -n "$CC"; then
3097 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
3098 $as_echo "$CC" >&6; }
3099 else
3100 { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
3101 $as_echo "no" >&6; }
3102 fi
3103
3104
3105 fi
3106 fi
3107 if test -z "$CC"; then
3108 # Extract the first word of "cc", so it can be a program name with args.
3109 set dummy cc; ac_word=$2
3110 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
3111 $as_echo_n "checking for $ac_word... " >&6; }
3112 if ${ac_cv_prog_CC+:} false; then :
3113 $as_echo_n "(cached) " >&6
3114 else
3115 if test -n "$CC"; then
3116 ac_cv_prog_CC="$CC" # Let the user override the test.
3117 else
3118 ac_prog_rejected=no
3119 as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
3120 for as_dir in $PATH
3121 do
3122 IFS=$as_save_IFS
3123 test -z "$as_dir" && as_dir=.
3124 for ac_exec_ext in '' $ac_executable_extensions; do
3125 if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
3126 if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then
3127 ac_prog_rejected=yes
3128 continue
3129 fi
3130 ac_cv_prog_CC="cc"
3131 $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
3132 break 2
3133 fi
3134 done
3135 done
3136 IFS=$as_save_IFS
3137
3138 if test $ac_prog_rejected = yes; then
3139 # We found a bogon in the path, so make sure we never use it.
3140 set dummy $ac_cv_prog_CC
3141 shift
3142 if test $# != 0; then
3143 # We chose a different compiler from the bogus one.
3144 # However, it has the same basename, so the bogon will be chosen
3145 # first if we set CC to just the basename; use the full file name.
3146 shift
3147 ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@"
3148 fi
3149 fi
3150 fi
3151 fi
3152 CC=$ac_cv_prog_CC
3153 if test -n "$CC"; then
3154 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
3155 $as_echo "$CC" >&6; }
3156 else
3157 { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
3158 $as_echo "no" >&6; }
3159 fi
3160
3161
3162 fi
3163 if test -z "$CC"; then
3164 if test -n "$ac_tool_prefix"; then
3165 for ac_prog in cl.exe
3166 do
3167 # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
3168 set dummy $ac_tool_prefix$ac_prog; ac_word=$2
3169 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
3170 $as_echo_n "checking for $ac_word... " >&6; }
3171 if ${ac_cv_prog_CC+:} false; then :
3172 $as_echo_n "(cached) " >&6
3173 else
3174 if test -n "$CC"; then
3175 ac_cv_prog_CC="$CC" # Let the user override the test.
3176 else
3177 as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
3178 for as_dir in $PATH
3179 do
3180 IFS=$as_save_IFS
3181 test -z "$as_dir" && as_dir=.
3182 for ac_exec_ext in '' $ac_executable_extensions; do
3183 if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
3184 ac_cv_prog_CC="$ac_tool_prefix$ac_prog"
3185 $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
3186 break 2
3187 fi
3188 done
3189 done
3190 IFS=$as_save_IFS
3191
3192 fi
3193 fi
3194 CC=$ac_cv_prog_CC
3195 if test -n "$CC"; then
3196 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
3197 $as_echo "$CC" >&6; }
3198 else
3199 { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
3200 $as_echo "no" >&6; }
3201 fi
3202
3203
3204 test -n "$CC" && break
3205 done
3206 fi
3207 if test -z "$CC"; then
3208 ac_ct_CC=$CC
3209 for ac_prog in cl.exe
3210 do
3211 # Extract the first word of "$ac_prog", so it can be a program name with args.
3212 set dummy $ac_prog; ac_word=$2
3213 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
3214 $as_echo_n "checking for $ac_word... " >&6; }
3215 if ${ac_cv_prog_ac_ct_CC+:} false; then :
3216 $as_echo_n "(cached) " >&6
3217 else
3218 if test -n "$ac_ct_CC"; then
3219 ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.
3220 else
3221 as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
3222 for as_dir in $PATH
3223 do
3224 IFS=$as_save_IFS
3225 test -z "$as_dir" && as_dir=.
3226 for ac_exec_ext in '' $ac_executable_extensions; do
3227 if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
3228 ac_cv_prog_ac_ct_CC="$ac_prog"
3229 $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
3230 break 2
3231 fi
3232 done
3233 done
3234 IFS=$as_save_IFS
3235
3236 fi
3237 fi
3238 ac_ct_CC=$ac_cv_prog_ac_ct_CC
3239 if test -n "$ac_ct_CC"; then
3240 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5
3241 $as_echo "$ac_ct_CC" >&6; }
3242 else
3243 { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
3244 $as_echo "no" >&6; }
3245 fi
3246
3247
3248 test -n "$ac_ct_CC" && break
3249 done
3250
3251 if test "x$ac_ct_CC" = x; then
3252 CC=""
3253 else
3254 case $cross_compiling:$ac_tool_warned in
3255 yes:)
3256 { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
3257 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
3258 ac_tool_warned=yes ;;
3259 esac
3260 CC=$ac_ct_CC
3261 fi
3262 fi
3263
3264 fi
3265
3266
3267 test -z "$CC" && { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
3268 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
3269 as_fn_error $? "no acceptable C compiler found in \$PATH
3270 See \`config.log' for more details" "$LINENO" 5; }
3271
3272 # Provide some information about the compiler.
3273 $as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5
3274 set X $ac_compile
3275 ac_compiler=$2
3276 for ac_option in --version -v -V -qversion; do
3277 { { ac_try="$ac_compiler $ac_option >&5"
3278 case "(($ac_try" in
3279 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
3280 *) ac_try_echo=$ac_try;;
3281 esac
3282 eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
3283 $as_echo "$ac_try_echo"; } >&5
3284 (eval "$ac_compiler $ac_option >&5") 2>conftest.err
3285 ac_status=$?
3286 if test -s conftest.err; then
3287 sed '10a\
3288 ... rest of stderr output deleted ...
3289 10q' conftest.err >conftest.er1
3290 cat conftest.er1 >&5
3291 fi
3292 rm -f conftest.er1 conftest.err
3293 $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
3294 test $ac_status = 0; }
3295 done
3296
3297 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
3298 /* end confdefs.h. */
3299
3300 int
3301 main ()
3302 {
3303
3304 ;
3305 return 0;
3306 }
3307 _ACEOF
3308 ac_clean_files_save=$ac_clean_files
3309 ac_clean_files="$ac_clean_files a.out a.out.dSYM a.exe b.out"
3310 # Try to create an executable without -o first, disregard a.out.
3311 # It will help us diagnose broken compilers, and finding out an intuition
3312 # of exeext.
3313 { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C compiler works" >&5
3314 $as_echo_n "checking whether the C compiler works... " >&6; }
3315 ac_link_default=`$as_echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'`
3316
3317 # The possible output files:
3318 ac_files="a.out conftest.exe conftest a.exe a_out.exe b.out conftest.*"
3319
3320 ac_rmfiles=
3321 for ac_file in $ac_files
3322 do
3323 case $ac_file in
3324 *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;;
3325 * ) ac_rmfiles="$ac_rmfiles $ac_file";;
3326 esac
3327 done
3328 rm -f $ac_rmfiles
3329
3330 if { { ac_try="$ac_link_default"
3331 case "(($ac_try" in
3332 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
3333 *) ac_try_echo=$ac_try;;
3334 esac
3335 eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
3336 $as_echo "$ac_try_echo"; } >&5
3337 (eval "$ac_link_default") 2>&5
3338 ac_status=$?
3339 $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
3340 test $ac_status = 0; }; then :
3341 # Autoconf-2.13 could set the ac_cv_exeext variable to `no'.
3342 # So ignore a value of `no', otherwise this would lead to `EXEEXT = no'
3343 # in a Makefile. We should not override ac_cv_exeext if it was cached,
3344 # so that the user can short-circuit this test for compilers unknown to
3345 # Autoconf.
3346 for ac_file in $ac_files ''
3347 do
3348 test -f "$ac_file" || continue
3349 case $ac_file in
3350 *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj )
3351 ;;
3352 [ab].out )
3353 # We found the default executable, but exeext='' is most
3354 # certainly right.
3355 break;;
3356 *.* )
3357 if test "${ac_cv_exeext+set}" = set && test "$ac_cv_exeext" != no;
3358 then :; else
3359 ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'`
3360 fi
3361 # We set ac_cv_exeext here because the later test for it is not
3362 # safe: cross compilers may not add the suffix if given an `-o'
3363 # argument, so we may need to know it at that point already.
3364 # Even if this section looks crufty: it has the advantage of
3365 # actually working.
3366 break;;
3367 * )
3368 break;;
3369 esac
3370 done
3371 test "$ac_cv_exeext" = no && ac_cv_exeext=
3372
3373 else
3374 ac_file=''
3375 fi
3376 if test -z "$ac_file"; then :
3377 { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
3378 $as_echo "no" >&6; }
3379 $as_echo "$as_me: failed program was:" >&5
3380 sed 's/^/| /' conftest.$ac_ext >&5
3381
3382 { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
3383 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
3384 as_fn_error 77 "C compiler cannot create executables
3385 See \`config.log' for more details" "$LINENO" 5; }
3386 else
3387 { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
3388 $as_echo "yes" >&6; }
3389 fi
3390 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler default output file name" >&5
3391 $as_echo_n "checking for C compiler default output file name... " >&6; }
3392 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_file" >&5
3393 $as_echo "$ac_file" >&6; }
3394 ac_exeext=$ac_cv_exeext
3395
3396 rm -f -r a.out a.out.dSYM a.exe conftest$ac_cv_exeext b.out
3397 ac_clean_files=$ac_clean_files_save
3398 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of executables" >&5
3399 $as_echo_n "checking for suffix of executables... " >&6; }
3400 if { { ac_try="$ac_link"
3401 case "(($ac_try" in
3402 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
3403 *) ac_try_echo=$ac_try;;
3404 esac
3405 eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
3406 $as_echo "$ac_try_echo"; } >&5
3407 (eval "$ac_link") 2>&5
3408 ac_status=$?
3409 $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
3410 test $ac_status = 0; }; then :
3411 # If both `conftest.exe' and `conftest' are `present' (well, observable)
3412 # catch `conftest.exe'. For instance with Cygwin, `ls conftest' will
3413 # work properly (i.e., refer to `conftest.exe'), while it won't with
3414 # `rm'.
3415 for ac_file in conftest.exe conftest conftest.*; do
3416 test -f "$ac_file" || continue
3417 case $ac_file in
3418 *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;;
3419 *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'`
3420 break;;
3421 * ) break;;
3422 esac
3423 done
3424 else
3425 { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
3426 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
3427 as_fn_error $? "cannot compute suffix of executables: cannot compile and link
3428 See \`config.log' for more details" "$LINENO" 5; }
3429 fi
3430 rm -f conftest conftest$ac_cv_exeext
3431 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_exeext" >&5
3432 $as_echo "$ac_cv_exeext" >&6; }
3433
3434 rm -f conftest.$ac_ext
3435 EXEEXT=$ac_cv_exeext
3436 ac_exeext=$EXEEXT
3437 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
3438 /* end confdefs.h. */
3439 #include <stdio.h>
3440 int
3441 main ()
3442 {
3443 FILE *f = fopen ("conftest.out", "w");
3444 return ferror (f) || fclose (f) != 0;
3445
3446 ;
3447 return 0;
3448 }
3449 _ACEOF
3450 ac_clean_files="$ac_clean_files conftest.out"
3451 # Check that the compiler produces executables we can run. If not, either
3452 # the compiler is broken, or we cross compile.
3453 { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are cross compiling" >&5
3454 $as_echo_n "checking whether we are cross compiling... " >&6; }
3455 if test "$cross_compiling" != yes; then
3456 { { ac_try="$ac_link"
3457 case "(($ac_try" in
3458 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
3459 *) ac_try_echo=$ac_try;;
3460 esac
3461 eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
3462 $as_echo "$ac_try_echo"; } >&5
3463 (eval "$ac_link") 2>&5
3464 ac_status=$?
3465 $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
3466 test $ac_status = 0; }
3467 if { ac_try='./conftest$ac_cv_exeext'
3468 { { case "(($ac_try" in
3469 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
3470 *) ac_try_echo=$ac_try;;
3471 esac
3472 eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
3473 $as_echo "$ac_try_echo"; } >&5
3474 (eval "$ac_try") 2>&5
3475 ac_status=$?
3476 $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
3477 test $ac_status = 0; }; }; then
3478 cross_compiling=no
3479 else
3480 if test "$cross_compiling" = maybe; then
3481 cross_compiling=yes
3482 else
3483 { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
3484 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
3485 as_fn_error $? "cannot run C compiled programs.
3486 If you meant to cross compile, use \`--host'.
3487 See \`config.log' for more details" "$LINENO" 5; }
3488 fi
3489 fi
3490 fi
3491 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $cross_compiling" >&5
3492 $as_echo "$cross_compiling" >&6; }
3493
3494 rm -f conftest.$ac_ext conftest$ac_cv_exeext conftest.out
3495 ac_clean_files=$ac_clean_files_save
3496 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of object files" >&5
3497 $as_echo_n "checking for suffix of object files... " >&6; }
3498 if ${ac_cv_objext+:} false; then :
3499 $as_echo_n "(cached) " >&6
3500 else
3501 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
3502 /* end confdefs.h. */
3503
3504 int
3505 main ()
3506 {
3507
3508 ;
3509 return 0;
3510 }
3511 _ACEOF
3512 rm -f conftest.o conftest.obj
3513 if { { ac_try="$ac_compile"
3514 case "(($ac_try" in
3515 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
3516 *) ac_try_echo=$ac_try;;
3517 esac
3518 eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
3519 $as_echo "$ac_try_echo"; } >&5
3520 (eval "$ac_compile") 2>&5
3521 ac_status=$?
3522 $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
3523 test $ac_status = 0; }; then :
3524 for ac_file in conftest.o conftest.obj conftest.*; do
3525 test -f "$ac_file" || continue;
3526 case $ac_file in
3527 *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM ) ;;
3528 *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'`
3529 break;;
3530 esac
3531 done
3532 else
3533 $as_echo "$as_me: failed program was:" >&5
3534 sed 's/^/| /' conftest.$ac_ext >&5
3535
3536 { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
3537 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
3538 as_fn_error $? "cannot compute suffix of object files: cannot compile
3539 See \`config.log' for more details" "$LINENO" 5; }
3540 fi
3541 rm -f conftest.$ac_cv_objext conftest.$ac_ext
3542 fi
3543 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_objext" >&5
3544 $as_echo "$ac_cv_objext" >&6; }
3545 OBJEXT=$ac_cv_objext
3546 ac_objext=$OBJEXT
3547 { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C compiler" >&5
3548 $as_echo_n "checking whether we are using the GNU C compiler... " >&6; }
3549 if ${ac_cv_c_compiler_gnu+:} false; then :
3550 $as_echo_n "(cached) " >&6
3551 else
3552 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
3553 /* end confdefs.h. */
3554
3555 int
3556 main ()
3557 {
3558 #ifndef __GNUC__
3559 choke me
3560 #endif
3561
3562 ;
3563 return 0;
3564 }
3565 _ACEOF
3566 if ac_fn_c_try_compile "$LINENO"; then :
3567 ac_compiler_gnu=yes
3568 else
3569 ac_compiler_gnu=no
3570 fi
3571 rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
3572 ac_cv_c_compiler_gnu=$ac_compiler_gnu
3573
3574 fi
3575 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5
3576 $as_echo "$ac_cv_c_compiler_gnu" >&6; }
3577 if test $ac_compiler_gnu = yes; then
3578 GCC=yes
3579 else
3580 GCC=
3581 fi
3582 ac_test_CFLAGS=${CFLAGS+set}
3583 ac_save_CFLAGS=$CFLAGS
3584 { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5
3585 $as_echo_n "checking whether $CC accepts -g... " >&6; }
3586 if ${ac_cv_prog_cc_g+:} false; then :
3587 $as_echo_n "(cached) " >&6
3588 else
3589 ac_save_c_werror_flag=$ac_c_werror_flag
3590 ac_c_werror_flag=yes
3591 ac_cv_prog_cc_g=no
3592 CFLAGS="-g"
3593 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
3594 /* end confdefs.h. */
3595
3596 int
3597 main ()
3598 {
3599
3600 ;
3601 return 0;
3602 }
3603 _ACEOF
3604 if ac_fn_c_try_compile "$LINENO"; then :
3605 ac_cv_prog_cc_g=yes
3606 else
3607 CFLAGS=""
3608 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
3609 /* end confdefs.h. */
3610
3611 int
3612 main ()
3613 {
3614
3615 ;
3616 return 0;
3617 }
3618 _ACEOF
3619 if ac_fn_c_try_compile "$LINENO"; then :
3620
3621 else
3622 ac_c_werror_flag=$ac_save_c_werror_flag
3623 CFLAGS="-g"
3624 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
3625 /* end confdefs.h. */
3626
3627 int
3628 main ()
3629 {
3630
3631 ;
3632 return 0;
3633 }
3634 _ACEOF
3635 if ac_fn_c_try_compile "$LINENO"; then :
3636 ac_cv_prog_cc_g=yes
3637 fi
3638 rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
3639 fi
3640 rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
3641 fi
3642 rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
3643 ac_c_werror_flag=$ac_save_c_werror_flag
3644 fi
3645 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5
3646 $as_echo "$ac_cv_prog_cc_g" >&6; }
3647 if test "$ac_test_CFLAGS" = set; then
3648 CFLAGS=$ac_save_CFLAGS
3649 elif test $ac_cv_prog_cc_g = yes; then
3650 if test "$GCC" = yes; then
3651 CFLAGS="-g -O2"
3652 else
3653 CFLAGS="-g"
3654 fi
3655 else
3656 if test "$GCC" = yes; then
3657 CFLAGS="-O2"
3658 else
3659 CFLAGS=
3660 fi
3661 fi
3662 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO C89" >&5
3663 $as_echo_n "checking for $CC option to accept ISO C89... " >&6; }
3664 if ${ac_cv_prog_cc_c89+:} false; then :
3665 $as_echo_n "(cached) " >&6
3666 else
3667 ac_cv_prog_cc_c89=no
3668 ac_save_CC=$CC
3669 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
3670 /* end confdefs.h. */
3671 #include <stdarg.h>
3672 #include <stdio.h>
3673 struct stat;
3674 /* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */
3675 struct buf { int x; };
3676 FILE * (*rcsopen) (struct buf *, struct stat *, int);
3677 static char *e (p, i)
3678 char **p;
3679 int i;
3680 {
3681 return p[i];
3682 }
3683 static char *f (char * (*g) (char **, int), char **p, ...)
3684 {
3685 char *s;
3686 va_list v;
3687 va_start (v,p);
3688 s = g (p, va_arg (v,int));
3689 va_end (v);
3690 return s;
3691 }
3692
3693 /* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has
3694 function prototypes and stuff, but not '\xHH' hex character constants.
3695 These don't provoke an error unfortunately, instead are silently treated
3696 as 'x'. The following induces an error, until -std is added to get
3697 proper ANSI mode. Curiously '\x00'!='x' always comes out true, for an
3698 array size at least. It's necessary to write '\x00'==0 to get something
3699 that's true only with -std. */
3700 int osf4_cc_array ['\x00' == 0 ? 1 : -1];
3701
3702 /* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters
3703 inside strings and character constants. */
3704 #define FOO(x) 'x'
3705 int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1];
3706
3707 int test (int i, double x);
3708 struct s1 {int (*f) (int a);};
3709 struct s2 {int (*f) (double a);};
3710 int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int);
3711 int argc;
3712 char **argv;
3713 int
3714 main ()
3715 {
3716 return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1];
3717 ;
3718 return 0;
3719 }
3720 _ACEOF
3721 for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \
3722 -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__"
3723 do
3724 CC="$ac_save_CC $ac_arg"
3725 if ac_fn_c_try_compile "$LINENO"; then :
3726 ac_cv_prog_cc_c89=$ac_arg
3727 fi
3728 rm -f core conftest.err conftest.$ac_objext
3729 test "x$ac_cv_prog_cc_c89" != "xno" && break
3730 done
3731 rm -f conftest.$ac_ext
3732 CC=$ac_save_CC
3733
3734 fi
3735 # AC_CACHE_VAL
3736 case "x$ac_cv_prog_cc_c89" in
3737 x)
3738 { $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed" >&5
3739 $as_echo "none needed" >&6; } ;;
3740 xno)
3741 { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5
3742 $as_echo "unsupported" >&6; } ;;
3743 *)
3744 CC="$CC $ac_cv_prog_cc_c89"
3745 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5
3746 $as_echo "$ac_cv_prog_cc_c89" >&6; } ;;
3747 esac
3748 if test "x$ac_cv_prog_cc_c89" != xno; then :
3749
3750 fi
3751
3752 ac_ext=c
3753 ac_cpp='$CPP $CPPFLAGS'
3754 ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
3755 ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
3756 ac_compiler_gnu=$ac_cv_c_compiler_gnu
3757
3758 ac_ext=c
3759 ac_cpp='$CPP $CPPFLAGS'
3760 ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
3761 ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
3762 ac_compiler_gnu=$ac_cv_c_compiler_gnu
3763 { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC understands -c and -o together" >&5
3764 $as_echo_n "checking whether $CC understands -c and -o together... " >&6; }
3765 if ${am_cv_prog_cc_c_o+:} false; then :
3766 $as_echo_n "(cached) " >&6
3767 else
3768 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
3769 /* end confdefs.h. */
3770
3771 int
3772 main ()
3773 {
3774
3775 ;
3776 return 0;
3777 }
3778 _ACEOF
3779 # Make sure it works both with $CC and with simple cc.
3780 # Following AC_PROG_CC_C_O, we do the test twice because some
3781 # compilers refuse to overwrite an existing .o file with -o,
3782 # though they will create one.
3783 am_cv_prog_cc_c_o=yes
3784 for am_i in 1 2; do
3785 if { echo "$as_me:$LINENO: $CC -c conftest.$ac_ext -o conftest2.$ac_objext" >&5
3786 ($CC -c conftest.$ac_ext -o conftest2.$ac_objext) >&5 2>&5
3787 ac_status=$?
3788 echo "$as_me:$LINENO: \$? = $ac_status" >&5
3789 (exit $ac_status); } \
3790 && test -f conftest2.$ac_objext; then
3791 : OK
3792 else
3793 am_cv_prog_cc_c_o=no
3794 break
3795 fi
3796 done
3797 rm -f core conftest*
3798 unset am_i
3799 fi
3800 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_prog_cc_c_o" >&5
3801 $as_echo "$am_cv_prog_cc_c_o" >&6; }
3802 if test "$am_cv_prog_cc_c_o" != yes; then
3803 # Losing compiler, so override with the script.
3804 # FIXME: It is wrong to rewrite CC.
3805 # But if we don't then we get into trouble of one sort or another.
3806 # A longer-term fix would be to have automake use am__CC in this case,
3807 # and then we could set am__CC="\$(top_srcdir)/compile \$(CC)"
3808 CC="$am_aux_dir/compile $CC"
3809 fi
3810 ac_ext=c
3811 ac_cpp='$CPP $CPPFLAGS'
3812 ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
3813 ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
3814 ac_compiler_gnu=$ac_cv_c_compiler_gnu
3815
3816
3817 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for a sed that does not truncate output" >&5
3818 $as_echo_n "checking for a sed that does not truncate output... " >&6; }
3819 if ${ac_cv_path_SED+:} false; then :
3820 $as_echo_n "(cached) " >&6
3821 else
3822 ac_script=s/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb/
3823 for ac_i in 1 2 3 4 5 6 7; do
3824 ac_script="$ac_script$as_nl$ac_script"
3825 done
3826 echo "$ac_script" 2>/dev/null | sed 99q >conftest.sed
3827 { ac_script=; unset ac_script;}
3828 if test -z "$SED"; then
3829 ac_path_SED_found=false
3830 # Loop through the user's path and test for each of PROGNAME-LIST
3831 as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
3832 for as_dir in $PATH
3833 do
3834 IFS=$as_save_IFS
3835 test -z "$as_dir" && as_dir=.
3836 for ac_prog in sed gsed; do
3837 for ac_exec_ext in '' $ac_executable_extensions; do
3838 ac_path_SED="$as_dir/$ac_prog$ac_exec_ext"
3839 as_fn_executable_p "$ac_path_SED" || continue
3840 # Check for GNU ac_path_SED and select it if it is found.
3841 # Check for GNU $ac_path_SED
3842 case `"$ac_path_SED" --version 2>&1` in
3843 *GNU*)
3844 ac_cv_path_SED="$ac_path_SED" ac_path_SED_found=:;;
3845 *)
3846 ac_count=0
3847 $as_echo_n 0123456789 >"conftest.in"
3848 while :
3849 do
3850 cat "conftest.in" "conftest.in" >"conftest.tmp"
3851 mv "conftest.tmp" "conftest.in"
3852 cp "conftest.in" "conftest.nl"
3853 $as_echo '' >> "conftest.nl"
3854 "$ac_path_SED" -f conftest.sed < "conftest.nl" >"conftest.out" 2>/dev/null || break
3855 diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
3856 as_fn_arith $ac_count + 1 && ac_count=$as_val
3857 if test $ac_count -gt ${ac_path_SED_max-0}; then
3858 # Best one so far, save it but keep looking for a better one
3859 ac_cv_path_SED="$ac_path_SED"
3860 ac_path_SED_max=$ac_count
3861 fi
3862 # 10*(2^10) chars as input seems more than enough
3863 test $ac_count -gt 10 && break
3864 done
3865 rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
3866 esac
3867
3868 $ac_path_SED_found && break 3
3869 done
3870 done
3871 done
3872 IFS=$as_save_IFS
3873 if test -z "$ac_cv_path_SED"; then
3874 as_fn_error $? "no acceptable sed could be found in \$PATH" "$LINENO" 5
3875 fi
3876 else
3877 ac_cv_path_SED=$SED
3878 fi
3879
3880 fi
3881 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_SED" >&5
3882 $as_echo "$ac_cv_path_SED" >&6; }
3883 SED="$ac_cv_path_SED"
3884 rm -f conftest.sed
3885
3886 test -z "$SED" && SED=sed
3887 Xsed="$SED -e 1s/^X//"
3888
3889
3890
3891
3892
3893
3894
3895
3896
3897
3898
3899 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for grep that handles long lines and -e" >&5
3900 $as_echo_n "checking for grep that handles long lines and -e... " >&6; }
3901 if ${ac_cv_path_GREP+:} false; then :
3902 $as_echo_n "(cached) " >&6
3903 else
3904 if test -z "$GREP"; then
3905 ac_path_GREP_found=false
3906 # Loop through the user's path and test for each of PROGNAME-LIST
3907 as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
3908 for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin
3909 do
3910 IFS=$as_save_IFS
3911 test -z "$as_dir" && as_dir=.
3912 for ac_prog in grep ggrep; do
3913 for ac_exec_ext in '' $ac_executable_extensions; do
3914 ac_path_GREP="$as_dir/$ac_prog$ac_exec_ext"
3915 as_fn_executable_p "$ac_path_GREP" || continue
3916 # Check for GNU ac_path_GREP and select it if it is found.
3917 # Check for GNU $ac_path_GREP
3918 case `"$ac_path_GREP" --version 2>&1` in
3919 *GNU*)
3920 ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_found=:;;
3921 *)
3922 ac_count=0
3923 $as_echo_n 0123456789 >"conftest.in"
3924 while :
3925 do
3926 cat "conftest.in" "conftest.in" >"conftest.tmp"
3927 mv "conftest.tmp" "conftest.in"
3928 cp "conftest.in" "conftest.nl"
3929 $as_echo 'GREP' >> "conftest.nl"
3930 "$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' < "conftest.nl" >"conftest.out" 2>/dev/null || break
3931 diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
3932 as_fn_arith $ac_count + 1 && ac_count=$as_val
3933 if test $ac_count -gt ${ac_path_GREP_max-0}; then
3934 # Best one so far, save it but keep looking for a better one
3935 ac_cv_path_GREP="$ac_path_GREP"
3936 ac_path_GREP_max=$ac_count
3937 fi
3938 # 10*(2^10) chars as input seems more than enough
3939 test $ac_count -gt 10 && break
3940 done
3941 rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
3942 esac
3943
3944 $ac_path_GREP_found && break 3
3945 done
3946 done
3947 done
3948 IFS=$as_save_IFS
3949 if test -z "$ac_cv_path_GREP"; then
3950 as_fn_error $? "no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5
3951 fi
3952 else
3953 ac_cv_path_GREP=$GREP
3954 fi
3955
3956 fi
3957 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_GREP" >&5
3958 $as_echo "$ac_cv_path_GREP" >&6; }
3959 GREP="$ac_cv_path_GREP"
3960
3961
3962 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for egrep" >&5
3963 $as_echo_n "checking for egrep... " >&6; }
3964 if ${ac_cv_path_EGREP+:} false; then :
3965 $as_echo_n "(cached) " >&6
3966 else
3967 if echo a | $GREP -E '(a|b)' >/dev/null 2>&1
3968 then ac_cv_path_EGREP="$GREP -E"
3969 else
3970 if test -z "$EGREP"; then
3971 ac_path_EGREP_found=false
3972 # Loop through the user's path and test for each of PROGNAME-LIST
3973 as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
3974 for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin
3975 do
3976 IFS=$as_save_IFS
3977 test -z "$as_dir" && as_dir=.
3978 for ac_prog in egrep; do
3979 for ac_exec_ext in '' $ac_executable_extensions; do
3980 ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext"
3981 as_fn_executable_p "$ac_path_EGREP" || continue
3982 # Check for GNU ac_path_EGREP and select it if it is found.
3983 # Check for GNU $ac_path_EGREP
3984 case `"$ac_path_EGREP" --version 2>&1` in
3985 *GNU*)
3986 ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;;
3987 *)
3988 ac_count=0
3989 $as_echo_n 0123456789 >"conftest.in"
3990 while :
3991 do
3992 cat "conftest.in" "conftest.in" >"conftest.tmp"
3993 mv "conftest.tmp" "conftest.in"
3994 cp "conftest.in" "conftest.nl"
3995 $as_echo 'EGREP' >> "conftest.nl"
3996 "$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break
3997 diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
3998 as_fn_arith $ac_count + 1 && ac_count=$as_val
3999 if test $ac_count -gt ${ac_path_EGREP_max-0}; then
4000 # Best one so far, save it but keep looking for a better one
4001 ac_cv_path_EGREP="$ac_path_EGREP"
4002 ac_path_EGREP_max=$ac_count
4003 fi
4004 # 10*(2^10) chars as input seems more than enough
4005 test $ac_count -gt 10 && break
4006 done
4007 rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
4008 esac
4009
4010 $ac_path_EGREP_found && break 3
4011 done
4012 done
4013 done
4014 IFS=$as_save_IFS
4015 if test -z "$ac_cv_path_EGREP"; then
4016 as_fn_error $? "no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5
4017 fi
4018 else
4019 ac_cv_path_EGREP=$EGREP
4020 fi
4021
4022 fi
4023 fi
4024 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_EGREP" >&5
4025 $as_echo "$ac_cv_path_EGREP" >&6; }
4026 EGREP="$ac_cv_path_EGREP"
4027
4028
4029 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for fgrep" >&5
4030 $as_echo_n "checking for fgrep... " >&6; }
4031 if ${ac_cv_path_FGREP+:} false; then :
4032 $as_echo_n "(cached) " >&6
4033 else
4034 if echo 'ab*c' | $GREP -F 'ab*c' >/dev/null 2>&1
4035 then ac_cv_path_FGREP="$GREP -F"
4036 else
4037 if test -z "$FGREP"; then
4038 ac_path_FGREP_found=false
4039 # Loop through the user's path and test for each of PROGNAME-LIST
4040 as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
4041 for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin
4042 do
4043 IFS=$as_save_IFS
4044 test -z "$as_dir" && as_dir=.
4045 for ac_prog in fgrep; do
4046 for ac_exec_ext in '' $ac_executable_extensions; do
4047 ac_path_FGREP="$as_dir/$ac_prog$ac_exec_ext"
4048 as_fn_executable_p "$ac_path_FGREP" || continue
4049 # Check for GNU ac_path_FGREP and select it if it is found.
4050 # Check for GNU $ac_path_FGREP
4051 case `"$ac_path_FGREP" --version 2>&1` in
4052 *GNU*)
4053 ac_cv_path_FGREP="$ac_path_FGREP" ac_path_FGREP_found=:;;
4054 *)
4055 ac_count=0
4056 $as_echo_n 0123456789 >"conftest.in"
4057 while :
4058 do
4059 cat "conftest.in" "conftest.in" >"conftest.tmp"
4060 mv "conftest.tmp" "conftest.in"
4061 cp "conftest.in" "conftest.nl"
4062 $as_echo 'FGREP' >> "conftest.nl"
4063 "$ac_path_FGREP" FGREP < "conftest.nl" >"conftest.out" 2>/dev/null || break
4064 diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
4065 as_fn_arith $ac_count + 1 && ac_count=$as_val
4066 if test $ac_count -gt ${ac_path_FGREP_max-0}; then
4067 # Best one so far, save it but keep looking for a better one
4068 ac_cv_path_FGREP="$ac_path_FGREP"
4069 ac_path_FGREP_max=$ac_count
4070 fi
4071 # 10*(2^10) chars as input seems more than enough
4072 test $ac_count -gt 10 && break
4073 done
4074 rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
4075 esac
4076
4077 $ac_path_FGREP_found && break 3
4078 done
4079 done
4080 done
4081 IFS=$as_save_IFS
4082 if test -z "$ac_cv_path_FGREP"; then
4083 as_fn_error $? "no acceptable fgrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5
4084 fi
4085 else
4086 ac_cv_path_FGREP=$FGREP
4087 fi
4088
4089 fi
4090 fi
4091 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_FGREP" >&5
4092 $as_echo "$ac_cv_path_FGREP" >&6; }
4093 FGREP="$ac_cv_path_FGREP"
4094
4095
4096 test -z "$GREP" && GREP=grep
4097
4098
4099
4100
4101
4102
4103
4104
4105
4106
4107
4108
4109
4110
4111
4112
4113
4114
4115
4116 # Check whether --with-gnu-ld was given.
4117 if test "${with_gnu_ld+set}" = set; then :
4118 withval=$with_gnu_ld; test "$withval" = no || with_gnu_ld=yes
4119 else
4120 with_gnu_ld=no
4121 fi
4122
4123 ac_prog=ld
4124 if test "$GCC" = yes; then
4125 # Check if gcc -print-prog-name=ld gives a path.
4126 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ld used by $CC" >&5
4127 $as_echo_n "checking for ld used by $CC... " >&6; }
4128 case $host in
4129 *-*-mingw*)
4130 # gcc leaves a trailing carriage return which upsets mingw
4131 ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;;
4132 *)
4133 ac_prog=`($CC -print-prog-name=ld) 2>&5` ;;
4134 esac
4135 case $ac_prog in
4136 # Accept absolute paths.
4137 [\\/]* | ?:[\\/]*)
4138 re_direlt='/[^/][^/]*/\.\./'
4139 # Canonicalize the pathname of ld
4140 ac_prog=`$ECHO "$ac_prog"| $SED 's%\\\\%/%g'`
4141 while $ECHO "$ac_prog" | $GREP "$re_direlt" > /dev/null 2>&1; do
4142 ac_prog=`$ECHO $ac_prog| $SED "s%$re_direlt%/%"`
4143 done
4144 test -z "$LD" && LD="$ac_prog"
4145 ;;
4146 "")
4147 # If it fails, then pretend we aren't using GCC.
4148 ac_prog=ld
4149 ;;
4150 *)
4151 # If it is relative, then search for the first ld in PATH.
4152 with_gnu_ld=unknown
4153 ;;
4154 esac
4155 elif test "$with_gnu_ld" = yes; then
4156 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNU ld" >&5
4157 $as_echo_n "checking for GNU ld... " >&6; }
4158 else
4159 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for non-GNU ld" >&5
4160 $as_echo_n "checking for non-GNU ld... " >&6; }
4161 fi
4162 if ${lt_cv_path_LD+:} false; then :
4163 $as_echo_n "(cached) " >&6
4164 else
4165 if test -z "$LD"; then
4166 lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
4167 for ac_dir in $PATH; do
4168 IFS="$lt_save_ifs"
4169 test -z "$ac_dir" && ac_dir=.
4170 if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then
4171 lt_cv_path_LD="$ac_dir/$ac_prog"
4172 # Check to see if the program is GNU ld. I'd rather use --version,
4173 # but apparently some variants of GNU ld only accept -v.
4174 # Break only if it was the GNU/non-GNU ld that we prefer.
4175 case `"$lt_cv_path_LD" -v 2>&1 </dev/null` in
4176 *GNU* | *'with BFD'*)
4177 test "$with_gnu_ld" != no && break
4178 ;;
4179 *)
4180 test "$with_gnu_ld" != yes && break
4181 ;;
4182 esac
4183 fi
4184 done
4185 IFS="$lt_save_ifs"
4186 else
4187 lt_cv_path_LD="$LD" # Let the user override the test with a path.
4188 fi
4189 fi
4190
4191 LD="$lt_cv_path_LD"
4192 if test -n "$LD"; then
4193 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LD" >&5
4194 $as_echo "$LD" >&6; }
4195 else
4196 { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
4197 $as_echo "no" >&6; }
4198 fi
4199 test -z "$LD" && as_fn_error $? "no acceptable ld found in \$PATH" "$LINENO" 5
4200 { $as_echo "$as_me:${as_lineno-$LINENO}: checking if the linker ($LD) is GNU ld" >&5
4201 $as_echo_n "checking if the linker ($LD) is GNU ld... " >&6; }
4202 if ${lt_cv_prog_gnu_ld+:} false; then :
4203 $as_echo_n "(cached) " >&6
4204 else
4205 # I'd rather use --version here, but apparently some GNU lds only accept -v.
4206 case `$LD -v 2>&1 </dev/null` in
4207 *GNU* | *'with BFD'*)
4208 lt_cv_prog_gnu_ld=yes
4209 ;;
4210 *)
4211 lt_cv_prog_gnu_ld=no
4212 ;;
4213 esac
4214 fi
4215 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_gnu_ld" >&5
4216 $as_echo "$lt_cv_prog_gnu_ld" >&6; }
4217 with_gnu_ld=$lt_cv_prog_gnu_ld
4218
4219
4220
4221
4222
4223
4224
4225
4226
4227 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for BSD- or MS-compatible name lister (nm)" >&5
4228 $as_echo_n "checking for BSD- or MS-compatible name lister (nm)... " >&6; }
4229 if ${lt_cv_path_NM+:} false; then :
4230 $as_echo_n "(cached) " >&6
4231 else
4232 if test -n "$NM"; then
4233 # Let the user override the test.
4234 lt_cv_path_NM="$NM"
4235 else
4236 lt_nm_to_check="${ac_tool_prefix}nm"
4237 if test -n "$ac_tool_prefix" && test "$build" = "$host"; then
4238 lt_nm_to_check="$lt_nm_to_check nm"
4239 fi
4240 for lt_tmp_nm in $lt_nm_to_check; do
4241 lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
4242 for ac_dir in $PATH /usr/ccs/bin/elf /usr/ccs/bin /usr/ucb /bin; do
4243 IFS="$lt_save_ifs"
4244 test -z "$ac_dir" && ac_dir=.
4245 tmp_nm="$ac_dir/$lt_tmp_nm"
4246 if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext" ; then
4247 # Check to see if the nm accepts a BSD-compat flag.
4248 # Adding the `sed 1q' prevents false positives on HP-UX, which says:
4249 # nm: unknown option "B" ignored
4250 # Tru64's nm complains that /dev/null is an invalid object file
4251 case `"$tmp_nm" -B /dev/null 2>&1 | sed '1q'` in
4252 */dev/null* | *'Invalid file or object type'*)
4253 lt_cv_path_NM="$tmp_nm -B"
4254 break
4255 ;;
4256 *)
4257 case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in
4258 */dev/null*)
4259 lt_cv_path_NM="$tmp_nm -p"
4260 break
4261 ;;
4262 *)
4263 lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but
4264 continue # so that we can try to find one that supports BSD flags
4265 ;;
4266 esac
4267 ;;
4268 esac
4269 fi
4270 done
4271 IFS="$lt_save_ifs"
4272 done
4273 : ${lt_cv_path_NM=no}
4274 fi
4275 fi
4276 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_path_NM" >&5
4277 $as_echo "$lt_cv_path_NM" >&6; }
4278 if test "$lt_cv_path_NM" != "no"; then
4279 NM="$lt_cv_path_NM"
4280 else
4281 # Didn't find any BSD compatible name lister, look for dumpbin.
4282 if test -n "$DUMPBIN"; then :
4283 # Let the user override the test.
4284 else
4285 if test -n "$ac_tool_prefix"; then
4286 for ac_prog in dumpbin "link -dump"
4287 do
4288 # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
4289 set dummy $ac_tool_prefix$ac_prog; ac_word=$2
4290 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
4291 $as_echo_n "checking for $ac_word... " >&6; }
4292 if ${ac_cv_prog_DUMPBIN+:} false; then :
4293 $as_echo_n "(cached) " >&6
4294 else
4295 if test -n "$DUMPBIN"; then
4296 ac_cv_prog_DUMPBIN="$DUMPBIN" # Let the user override the test.
4297 else
4298 as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
4299 for as_dir in $PATH
4300 do
4301 IFS=$as_save_IFS
4302 test -z "$as_dir" && as_dir=.
4303 for ac_exec_ext in '' $ac_executable_extensions; do
4304 if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
4305 ac_cv_prog_DUMPBIN="$ac_tool_prefix$ac_prog"
4306 $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
4307 break 2
4308 fi
4309 done
4310 done
4311 IFS=$as_save_IFS
4312
4313 fi
4314 fi
4315 DUMPBIN=$ac_cv_prog_DUMPBIN
4316 if test -n "$DUMPBIN"; then
4317 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DUMPBIN" >&5
4318 $as_echo "$DUMPBIN" >&6; }
4319 else
4320 { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
4321 $as_echo "no" >&6; }
4322 fi
4323
4324
4325 test -n "$DUMPBIN" && break
4326 done
4327 fi
4328 if test -z "$DUMPBIN"; then
4329 ac_ct_DUMPBIN=$DUMPBIN
4330 for ac_prog in dumpbin "link -dump"
4331 do
4332 # Extract the first word of "$ac_prog", so it can be a program name with args.
4333 set dummy $ac_prog; ac_word=$2
4334 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
4335 $as_echo_n "checking for $ac_word... " >&6; }
4336 if ${ac_cv_prog_ac_ct_DUMPBIN+:} false; then :
4337 $as_echo_n "(cached) " >&6
4338 else
4339 if test -n "$ac_ct_DUMPBIN"; then
4340 ac_cv_prog_ac_ct_DUMPBIN="$ac_ct_DUMPBIN" # Let the user override the test.
4341 else
4342 as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
4343 for as_dir in $PATH
4344 do
4345 IFS=$as_save_IFS
4346 test -z "$as_dir" && as_dir=.
4347 for ac_exec_ext in '' $ac_executable_extensions; do
4348 if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
4349 ac_cv_prog_ac_ct_DUMPBIN="$ac_prog"
4350 $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
4351 break 2
4352 fi
4353 done
4354 done
4355 IFS=$as_save_IFS
4356
4357 fi
4358 fi
4359 ac_ct_DUMPBIN=$ac_cv_prog_ac_ct_DUMPBIN
4360 if test -n "$ac_ct_DUMPBIN"; then
4361 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DUMPBIN" >&5
4362 $as_echo "$ac_ct_DUMPBIN" >&6; }
4363 else
4364 { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
4365 $as_echo "no" >&6; }
4366 fi
4367
4368
4369 test -n "$ac_ct_DUMPBIN" && break
4370 done
4371
4372 if test "x$ac_ct_DUMPBIN" = x; then
4373 DUMPBIN=":"
4374 else
4375 case $cross_compiling:$ac_tool_warned in
4376 yes:)
4377 { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
4378 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
4379 ac_tool_warned=yes ;;
4380 esac
4381 DUMPBIN=$ac_ct_DUMPBIN
4382 fi
4383 fi
4384
4385 case `$DUMPBIN -symbols /dev/null 2>&1 | sed '1q'` in
4386 *COFF*)
4387 DUMPBIN="$DUMPBIN -symbols"
4388 ;;
4389 *)
4390 DUMPBIN=:
4391 ;;
4392 esac
4393 fi
4394
4395 if test "$DUMPBIN" != ":"; then
4396 NM="$DUMPBIN"
4397 fi
4398 fi
4399 test -z "$NM" && NM=nm
4400
4401
4402
4403
4404
4405
4406 { $as_echo "$as_me:${as_lineno-$LINENO}: checking the name lister ($NM) interface" >&5
4407 $as_echo_n "checking the name lister ($NM) interface... " >&6; }
4408 if ${lt_cv_nm_interface+:} false; then :
4409 $as_echo_n "(cached) " >&6
4410 else
4411 lt_cv_nm_interface="BSD nm"
4412 echo "int some_variable = 0;" > conftest.$ac_ext
4413 (eval echo "\"\$as_me:$LINENO: $ac_compile\"" >&5)
4414 (eval "$ac_compile" 2>conftest.err)
4415 cat conftest.err >&5
4416 (eval echo "\"\$as_me:$LINENO: $NM \\\"conftest.$ac_objext\\\"\"" >&5)
4417 (eval "$NM \"conftest.$ac_objext\"" 2>conftest.err > conftest.out)
4418 cat conftest.err >&5
4419 (eval echo "\"\$as_me:$LINENO: output\"" >&5)
4420 cat conftest.out >&5
4421 if $GREP 'External.*some_variable' conftest.out > /dev/null; then
4422 lt_cv_nm_interface="MS dumpbin"
4423 fi
4424 rm -f conftest*
4425 fi
4426 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_nm_interface" >&5
4427 $as_echo "$lt_cv_nm_interface" >&6; }
4428
4429 { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ln -s works" >&5
4430 $as_echo_n "checking whether ln -s works... " >&6; }
4431 LN_S=$as_ln_s
4432 if test "$LN_S" = "ln -s"; then
4433 { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
4434 $as_echo "yes" >&6; }
4435 else
4436 { $as_echo "$as_me:${as_lineno-$LINENO}: result: no, using $LN_S" >&5
4437 $as_echo "no, using $LN_S" >&6; }
4438 fi
4439
4440 # find the maximum length of command line arguments
4441 { $as_echo "$as_me:${as_lineno-$LINENO}: checking the maximum length of command line arguments" >&5
4442 $as_echo_n "checking the maximum length of command line arguments... " >&6; }
4443 if ${lt_cv_sys_max_cmd_len+:} false; then :
4444 $as_echo_n "(cached) " >&6
4445 else
4446 i=0
4447 teststring="ABCD"
4448
4449 case $build_os in
4450 msdosdjgpp*)
4451 # On DJGPP, this test can blow up pretty badly due to problems in libc
4452 # (any single argument exceeding 2000 bytes causes a buffer overrun
4453 # during glob expansion). Even if it were fixed, the result of this
4454 # check would be larger than it should be.
4455 lt_cv_sys_max_cmd_len=12288; # 12K is about right
4456 ;;
4457
4458 gnu*)
4459 # Under GNU Hurd, this test is not required because there is
4460 # no limit to the length of command line arguments.
4461 # Libtool will interpret -1 as no limit whatsoever
4462 lt_cv_sys_max_cmd_len=-1;
4463 ;;
4464
4465 cygwin* | mingw* | cegcc*)
4466 # On Win9x/ME, this test blows up -- it succeeds, but takes
4467 # about 5 minutes as the teststring grows exponentially.
4468 # Worse, since 9x/ME are not pre-emptively multitasking,
4469 # you end up with a "frozen" computer, even though with patience
4470 # the test eventually succeeds (with a max line length of 256k).
4471 # Instead, let's just punt: use the minimum linelength reported by
4472 # all of the supported platforms: 8192 (on NT/2K/XP).
4473 lt_cv_sys_max_cmd_len=8192;
4474 ;;
4475
4476 mint*)
4477 # On MiNT this can take a long time and run out of memory.
4478 lt_cv_sys_max_cmd_len=8192;
4479 ;;
4480
4481 amigaos*)
4482 # On AmigaOS with pdksh, this test takes hours, literally.
4483 # So we just punt and use a minimum line length of 8192.
4484 lt_cv_sys_max_cmd_len=8192;
4485 ;;
4486
4487 netbsd* | freebsd* | openbsd* | darwin* | dragonfly*)
4488 # This has been around since 386BSD, at least. Likely further.
4489 if test -x /sbin/sysctl; then
4490 lt_cv_sys_max_cmd_len=`/sbin/sysctl -n kern.argmax`
4491 elif test -x /usr/sbin/sysctl; then
4492 lt_cv_sys_max_cmd_len=`/usr/sbin/sysctl -n kern.argmax`
4493 else
4494 lt_cv_sys_max_cmd_len=65536 # usable default for all BSDs
4495 fi
4496 # And add a safety zone
4497 lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4`
4498 lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3`
4499 ;;
4500
4501 interix*)
4502 # We know the value 262144 and hardcode it with a safety zone (like BSD)
4503 lt_cv_sys_max_cmd_len=196608
4504 ;;
4505
4506 os2*)
4507 # The test takes a long time on OS/2.
4508 lt_cv_sys_max_cmd_len=8192
4509 ;;
4510
4511 osf*)
4512 # Dr. Hans Ekkehard Plesser reports seeing a kernel panic running configure
4513 # due to this test when exec_disable_arg_limit is 1 on Tru64. It is not
4514 # nice to cause kernel panics so lets avoid the loop below.
4515 # First set a reasonable default.
4516 lt_cv_sys_max_cmd_len=16384
4517 #
4518 if test -x /sbin/sysconfig; then
4519 case `/sbin/sysconfig -q proc exec_disable_arg_limit` in
4520 *1*) lt_cv_sys_max_cmd_len=-1 ;;
4521 esac
4522 fi
4523 ;;
4524 sco3.2v5*)
4525 lt_cv_sys_max_cmd_len=102400
4526 ;;
4527 sysv5* | sco5v6* | sysv4.2uw2*)
4528 kargmax=`grep ARG_MAX /etc/conf/cf.d/stune 2>/dev/null`
4529 if test -n "$kargmax"; then
4530 lt_cv_sys_max_cmd_len=`echo $kargmax | sed 's/.*[ ]//'`
4531 else
4532 lt_cv_sys_max_cmd_len=32768
4533 fi
4534 ;;
4535 *)
4536 lt_cv_sys_max_cmd_len=`(getconf ARG_MAX) 2> /dev/null`
4537 if test -n "$lt_cv_sys_max_cmd_len"; then
4538 lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4`
4539 lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3`
4540 else
4541 # Make teststring a little bigger before we do anything with it.
4542 # a 1K string should be a reasonable start.
4543 for i in 1 2 3 4 5 6 7 8 ; do
4544 teststring=$teststring$teststring
4545 done
4546 SHELL=${SHELL-${CONFIG_SHELL-/bin/sh}}
4547 # If test is not a shell built-in, we'll probably end up computing a
4548 # maximum length that is only half of the actual maximum length, but
4549 # we can't tell.
4550 while { test "X"`env echo "$teststring$teststring" 2>/dev/null` \
4551 = "X$teststring$teststring"; } >/dev/null 2>&1 &&
4552 test $i != 17 # 1/2 MB should be enough
4553 do
4554 i=`expr $i + 1`
4555 teststring=$teststring$teststring
4556 done
4557 # Only check the string length outside the loop.
4558 lt_cv_sys_max_cmd_len=`expr "X$teststring" : ".*" 2>&1`
4559 teststring=
4560 # Add a significant safety factor because C++ compilers can tack on
4561 # massive amounts of additional arguments before passing them to the
4562 # linker. It appears as though 1/2 is a usable value.
4563 lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 2`
4564 fi
4565 ;;
4566 esac
4567
4568 fi
4569
4570 if test -n $lt_cv_sys_max_cmd_len ; then
4571 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_sys_max_cmd_len" >&5
4572 $as_echo "$lt_cv_sys_max_cmd_len" >&6; }
4573 else
4574 { $as_echo "$as_me:${as_lineno-$LINENO}: result: none" >&5
4575 $as_echo "none" >&6; }
4576 fi
4577 max_cmd_len=$lt_cv_sys_max_cmd_len
4578
4579
4580
4581
4582
4583
4584 : ${CP="cp -f"}
4585 : ${MV="mv -f"}
4586 : ${RM="rm -f"}
4587
4588 { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the shell understands some XSI constructs" >&5
4589 $as_echo_n "checking whether the shell understands some XSI constructs... " >&6; }
4590 # Try some XSI features
4591 xsi_shell=no
4592 ( _lt_dummy="a/b/c"
4593 test "${_lt_dummy##*/},${_lt_dummy%/*},${_lt_dummy#??}"${_lt_dummy%"$_lt_dummy"}, \
4594 = c,a/b,b/c, \
4595 && eval 'test $(( 1 + 1 )) -eq 2 \
4596 && test "${#_lt_dummy}" -eq 5' ) >/dev/null 2>&1 \
4597 && xsi_shell=yes
4598 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $xsi_shell" >&5
4599 $as_echo "$xsi_shell" >&6; }
4600
4601
4602 { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the shell understands \"+=\"" >&5
4603 $as_echo_n "checking whether the shell understands \"+=\"... " >&6; }
4604 lt_shell_append=no
4605 ( foo=bar; set foo baz; eval "$1+=\$2" && test "$foo" = barbaz ) \
4606 >/dev/null 2>&1 \
4607 && lt_shell_append=yes
4608 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_shell_append" >&5
4609 $as_echo "$lt_shell_append" >&6; }
4610
4611
4612 if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then
4613 lt_unset=unset
4614 else
4615 lt_unset=false
4616 fi
4617
4618
4619
4620
4621
4622 # test EBCDIC or ASCII
4623 case `echo X|tr X '\101'` in
4624 A) # ASCII based system
4625 # \n is not interpreted correctly by Solaris 8 /usr/ucb/tr
4626 lt_SP2NL='tr \040 \012'
4627 lt_NL2SP='tr \015\012 \040\040'
4628 ;;
4629 *) # EBCDIC based system
4630 lt_SP2NL='tr \100 \n'
4631 lt_NL2SP='tr \r\n \100\100'
4632 ;;
4633 esac
4634
4635
4636
4637
4638
4639
4640
4641
4642
4643 { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to convert $build file names to $host format" >&5
4644 $as_echo_n "checking how to convert $build file names to $host format... " >&6; }
4645 if ${lt_cv_to_host_file_cmd+:} false; then :
4646 $as_echo_n "(cached) " >&6
4647 else
4648 case $host in
4649 *-*-mingw* )
4650 case $build in
4651 *-*-mingw* ) # actually msys
4652 lt_cv_to_host_file_cmd=func_convert_file_msys_to_w32
4653 ;;
4654 *-*-cygwin* )
4655 lt_cv_to_host_file_cmd=func_convert_file_cygwin_to_w32
4656 ;;
4657 * ) # otherwise, assume *nix
4658 lt_cv_to_host_file_cmd=func_convert_file_nix_to_w32
4659 ;;
4660 esac
4661 ;;
4662 *-*-cygwin* )
4663 case $build in
4664 *-*-mingw* ) # actually msys
4665 lt_cv_to_host_file_cmd=func_convert_file_msys_to_cygwin
4666 ;;
4667 *-*-cygwin* )
4668 lt_cv_to_host_file_cmd=func_convert_file_noop
4669 ;;
4670 * ) # otherwise, assume *nix
4671 lt_cv_to_host_file_cmd=func_convert_file_nix_to_cygwin
4672 ;;
4673 esac
4674 ;;
4675 * ) # unhandled hosts (and "normal" native builds)
4676 lt_cv_to_host_file_cmd=func_convert_file_noop
4677 ;;
4678 esac
4679
4680 fi
4681
4682 to_host_file_cmd=$lt_cv_to_host_file_cmd
4683 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_to_host_file_cmd" >&5
4684 $as_echo "$lt_cv_to_host_file_cmd" >&6; }
4685
4686
4687
4688
4689
4690 { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to convert $build file names to toolchain format" >&5
4691 $as_echo_n "checking how to convert $build file names to toolchain format... " >&6; }
4692 if ${lt_cv_to_tool_file_cmd+:} false; then :
4693 $as_echo_n "(cached) " >&6
4694 else
4695 #assume ordinary cross tools, or native build.
4696 lt_cv_to_tool_file_cmd=func_convert_file_noop
4697 case $host in
4698 *-*-mingw* )
4699 case $build in
4700 *-*-mingw* ) # actually msys
4701 lt_cv_to_tool_file_cmd=func_convert_file_msys_to_w32
4702 ;;
4703 esac
4704 ;;
4705 esac
4706
4707 fi
4708
4709 to_tool_file_cmd=$lt_cv_to_tool_file_cmd
4710 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_to_tool_file_cmd" >&5
4711 $as_echo "$lt_cv_to_tool_file_cmd" >&6; }
4712
4713
4714
4715
4716
4717 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $LD option to reload object files" >&5
4718 $as_echo_n "checking for $LD option to reload object files... " >&6; }
4719 if ${lt_cv_ld_reload_flag+:} false; then :
4720 $as_echo_n "(cached) " >&6
4721 else
4722 lt_cv_ld_reload_flag='-r'
4723 fi
4724 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_reload_flag" >&5
4725 $as_echo "$lt_cv_ld_reload_flag" >&6; }
4726 reload_flag=$lt_cv_ld_reload_flag
4727 case $reload_flag in
4728 "" | " "*) ;;
4729 *) reload_flag=" $reload_flag" ;;
4730 esac
4731 reload_cmds='$LD$reload_flag -o $output$reload_objs'
4732 case $host_os in
4733 cygwin* | mingw* | pw32* | cegcc*)
4734 if test "$GCC" != yes; then
4735 reload_cmds=false
4736 fi
4737 ;;
4738 darwin*)
4739 if test "$GCC" = yes; then
4740 reload_cmds='$LTCC $LTCFLAGS -nostdlib ${wl}-r -o $output$reload_objs'
4741 else
4742 reload_cmds='$LD$reload_flag -o $output$reload_objs'
4743 fi
4744 ;;
4745 esac
4746
4747
4748
4749
4750
4751
4752
4753
4754
4755 if test -n "$ac_tool_prefix"; then
4756 # Extract the first word of "${ac_tool_prefix}objdump", so it can be a program name with args.
4757 set dummy ${ac_tool_prefix}objdump; ac_word=$2
4758 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
4759 $as_echo_n "checking for $ac_word... " >&6; }
4760 if ${ac_cv_prog_OBJDUMP+:} false; then :
4761 $as_echo_n "(cached) " >&6
4762 else
4763 if test -n "$OBJDUMP"; then
4764 ac_cv_prog_OBJDUMP="$OBJDUMP" # Let the user override the test.
4765 else
4766 as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
4767 for as_dir in $PATH
4768 do
4769 IFS=$as_save_IFS
4770 test -z "$as_dir" && as_dir=.
4771 for ac_exec_ext in '' $ac_executable_extensions; do
4772 if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
4773 ac_cv_prog_OBJDUMP="${ac_tool_prefix}objdump"
4774 $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
4775 break 2
4776 fi
4777 done
4778 done
4779 IFS=$as_save_IFS
4780
4781 fi
4782 fi
4783 OBJDUMP=$ac_cv_prog_OBJDUMP
4784 if test -n "$OBJDUMP"; then
4785 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OBJDUMP" >&5
4786 $as_echo "$OBJDUMP" >&6; }
4787 else
4788 { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
4789 $as_echo "no" >&6; }
4790 fi
4791
4792
4793 fi
4794 if test -z "$ac_cv_prog_OBJDUMP"; then
4795 ac_ct_OBJDUMP=$OBJDUMP
4796 # Extract the first word of "objdump", so it can be a program name with args.
4797 set dummy objdump; ac_word=$2
4798 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
4799 $as_echo_n "checking for $ac_word... " >&6; }
4800 if ${ac_cv_prog_ac_ct_OBJDUMP+:} false; then :
4801 $as_echo_n "(cached) " >&6
4802 else
4803 if test -n "$ac_ct_OBJDUMP"; then
4804 ac_cv_prog_ac_ct_OBJDUMP="$ac_ct_OBJDUMP" # Let the user override the test.
4805 else
4806 as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
4807 for as_dir in $PATH
4808 do
4809 IFS=$as_save_IFS
4810 test -z "$as_dir" && as_dir=.
4811 for ac_exec_ext in '' $ac_executable_extensions; do
4812 if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
4813 ac_cv_prog_ac_ct_OBJDUMP="objdump"
4814 $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
4815 break 2
4816 fi
4817 done
4818 done
4819 IFS=$as_save_IFS
4820
4821 fi
4822 fi
4823 ac_ct_OBJDUMP=$ac_cv_prog_ac_ct_OBJDUMP
4824 if test -n "$ac_ct_OBJDUMP"; then
4825 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OBJDUMP" >&5
4826 $as_echo "$ac_ct_OBJDUMP" >&6; }
4827 else
4828 { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
4829 $as_echo "no" >&6; }
4830 fi
4831
4832 if test "x$ac_ct_OBJDUMP" = x; then
4833 OBJDUMP="false"
4834 else
4835 case $cross_compiling:$ac_tool_warned in
4836 yes:)
4837 { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
4838 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
4839 ac_tool_warned=yes ;;
4840 esac
4841 OBJDUMP=$ac_ct_OBJDUMP
4842 fi
4843 else
4844 OBJDUMP="$ac_cv_prog_OBJDUMP"
4845 fi
4846
4847 test -z "$OBJDUMP" && OBJDUMP=objdump
4848
4849
4850
4851
4852
4853
4854
4855
4856
4857 { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to recognize dependent libraries" >&5
4858 $as_echo_n "checking how to recognize dependent libraries... " >&6; }
4859 if ${lt_cv_deplibs_check_method+:} false; then :
4860 $as_echo_n "(cached) " >&6
4861 else
4862 lt_cv_file_magic_cmd='$MAGIC_CMD'
4863 lt_cv_file_magic_test_file=
4864 lt_cv_deplibs_check_method='unknown'
4865 # Need to set the preceding variable on all platforms that support
4866 # interlibrary dependencies.
4867 # 'none' -- dependencies not supported.
4868 # `unknown' -- same as none, but documents that we really don't know.
4869 # 'pass_all' -- all dependencies passed with no checks.
4870 # 'test_compile' -- check by making test program.
4871 # 'file_magic [[regex]]' -- check by looking for files in library path
4872 # which responds to the $file_magic_cmd with a given extended regex.
4873 # If you have `file' or equivalent on your system and you're not sure
4874 # whether `pass_all' will *always* work, you probably want this one.
4875
4876 case $host_os in
4877 aix[4-9]*)
4878 lt_cv_deplibs_check_method=pass_all
4879 ;;
4880
4881 beos*)
4882 lt_cv_deplibs_check_method=pass_all
4883 ;;
4884
4885 bsdi[45]*)
4886 lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib)'
4887 lt_cv_file_magic_cmd='/usr/bin/file -L'
4888 lt_cv_file_magic_test_file=/shlib/libc.so
4889 ;;
4890
4891 cygwin*)
4892 # func_win32_libid is a shell function defined in ltmain.sh
4893 lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL'
4894 lt_cv_file_magic_cmd='func_win32_libid'
4895 ;;
4896
4897 mingw* | pw32*)
4898 # Base MSYS/MinGW do not provide the 'file' command needed by
4899 # func_win32_libid shell function, so use a weaker test based on 'objdump',
4900 # unless we find 'file', for example because we are cross-compiling.
4901 # func_win32_libid assumes BSD nm, so disallow it if using MS dumpbin.
4902 if ( test "$lt_cv_nm_interface" = "BSD nm" && file / ) >/dev/null 2>&1; then
4903 lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL'
4904 lt_cv_file_magic_cmd='func_win32_libid'
4905 else
4906 # Keep this pattern in sync with the one in func_win32_libid.
4907 lt_cv_deplibs_check_method='file_magic file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64)'
4908 lt_cv_file_magic_cmd='$OBJDUMP -f'
4909 fi
4910 ;;
4911
4912 cegcc*)
4913 # use the weaker test based on 'objdump'. See mingw*.
4914 lt_cv_deplibs_check_method='file_magic file format pe-arm-.*little(.*architecture: arm)?'
4915 lt_cv_file_magic_cmd='$OBJDUMP -f'
4916 ;;
4917
4918 darwin* | rhapsody*)
4919 lt_cv_deplibs_check_method=pass_all
4920 ;;
4921
4922 freebsd* | dragonfly*)
4923 if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then
4924 case $host_cpu in
4925 i*86 )
4926 # Not sure whether the presence of OpenBSD here was a mistake.
4927 # Let's accept both of them until this is cleared up.
4928 lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD|DragonFly)/i[3-9]86 (compact )?demand paged shared library'
4929 lt_cv_file_magic_cmd=/usr/bin/file
4930 lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*`
4931 ;;
4932 esac
4933 else
4934 lt_cv_deplibs_check_method=pass_all
4935 fi
4936 ;;
4937
4938 gnu*)
4939 lt_cv_deplibs_check_method=pass_all
4940 ;;
4941
4942 haiku*)
4943 lt_cv_deplibs_check_method=pass_all
4944 ;;
4945
4946 hpux10.20* | hpux11*)
4947 lt_cv_file_magic_cmd=/usr/bin/file
4948 case $host_cpu in
4949 ia64*)
4950 lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF-[0-9][0-9]) shared object file - IA64'
4951 lt_cv_file_magic_test_file=/usr/lib/hpux32/libc.so
4952 ;;
4953 hppa*64*)
4954 lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF[ -][0-9][0-9])(-bit)?( [LM]SB)? shared object( file)?[, -]* PA-RISC [0-9]\.[0-9]'
4955 lt_cv_file_magic_test_file=/usr/lib/pa20_64/libc.sl
4956 ;;
4957 *)
4958 lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|PA-RISC[0-9]\.[0-9]) shared library'
4959 lt_cv_file_magic_test_file=/usr/lib/libc.sl
4960 ;;
4961 esac
4962 ;;
4963
4964 interix[3-9]*)
4965 # PIC code is broken on Interix 3.x, that's why |\.a not |_pic\.a here
4966 lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so|\.a)$'
4967 ;;
4968
4969 irix5* | irix6* | nonstopux*)
4970 case $LD in
4971 *-32|*"-32 ") libmagic=32-bit;;
4972 *-n32|*"-n32 ") libmagic=N32;;
4973 *-64|*"-64 ") libmagic=64-bit;;
4974 *) libmagic=never-match;;
4975 esac
4976 lt_cv_deplibs_check_method=pass_all
4977 ;;
4978
4979 # This must be glibc/ELF.
4980 linux* | k*bsd*-gnu | kopensolaris*-gnu)
4981 lt_cv_deplibs_check_method=pass_all
4982 ;;
4983
4984 netbsd*)
4985 if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then
4986 lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|_pic\.a)$'
4987 else
4988 lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so|_pic\.a)$'
4989 fi
4990 ;;
4991
4992 newos6*)
4993 lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (executable|dynamic lib)'
4994 lt_cv_file_magic_cmd=/usr/bin/file
4995 lt_cv_file_magic_test_file=/usr/lib/libnls.so
4996 ;;
4997
4998 *nto* | *qnx*)
4999 lt_cv_deplibs_check_method=pass_all
5000 ;;
5001
5002 openbsd*)
5003 if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
5004 lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|\.so|_pic\.a)$'
5005 else
5006 lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|_pic\.a)$'
5007 fi
5008 ;;
5009
5010 osf3* | osf4* | osf5*)
5011 lt_cv_deplibs_check_method=pass_all
5012 ;;
5013
5014 rdos*)
5015 lt_cv_deplibs_check_method=pass_all
5016 ;;
5017
5018 solaris*)
5019 lt_cv_deplibs_check_method=pass_all
5020 ;;
5021
5022 sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*)
5023 lt_cv_deplibs_check_method=pass_all
5024 ;;
5025
5026 sysv4 | sysv4.3*)
5027 case $host_vendor in
5028 motorola)
5029 lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib) M[0-9][0-9]* Version [0-9]'
5030 lt_cv_file_magic_test_file=`echo /usr/lib/libc.so*`
5031 ;;
5032 ncr)
5033 lt_cv_deplibs_check_method=pass_all
5034 ;;
5035 sequent)
5036 lt_cv_file_magic_cmd='/bin/file'
5037 lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [LM]SB (shared object|dynamic lib )'
5038 ;;
5039 sni)
5040 lt_cv_file_magic_cmd='/bin/file'
5041 lt_cv_deplibs_check_method="file_magic ELF [0-9][0-9]*-bit [LM]SB dynamic lib"
5042 lt_cv_file_magic_test_file=/lib/libc.so
5043 ;;
5044 siemens)
5045 lt_cv_deplibs_check_method=pass_all
5046 ;;
5047 pc)
5048 lt_cv_deplibs_check_method=pass_all
5049 ;;
5050 esac
5051 ;;
5052
5053 tpf*)
5054 lt_cv_deplibs_check_method=pass_all
5055 ;;
5056 esac
5057
5058 fi
5059 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_deplibs_check_method" >&5
5060 $as_echo "$lt_cv_deplibs_check_method" >&6; }
5061
5062 file_magic_glob=
5063 want_nocaseglob=no
5064 if test "$build" = "$host"; then
5065 case $host_os in
5066 mingw* | pw32*)
5067 if ( shopt | grep nocaseglob ) >/dev/null 2>&1; then
5068 want_nocaseglob=yes
5069 else
5070 file_magic_glob=`echo aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ | $SED -e "s/\(..\)/s\/[\1]\/[\1]\/g;/g"`
5071 fi
5072 ;;
5073 esac
5074 fi
5075
5076 file_magic_cmd=$lt_cv_file_magic_cmd
5077 deplibs_check_method=$lt_cv_deplibs_check_method
5078 test -z "$deplibs_check_method" && deplibs_check_method=unknown
5079
5080
5081
5082
5083
5084
5085
5086
5087
5088
5089
5090
5091
5092
5093
5094
5095
5096
5097
5098
5099
5100
5101 if test -n "$ac_tool_prefix"; then
5102 # Extract the first word of "${ac_tool_prefix}dlltool", so it can be a program name with args.
5103 set dummy ${ac_tool_prefix}dlltool; ac_word=$2
5104 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
5105 $as_echo_n "checking for $ac_word... " >&6; }
5106 if ${ac_cv_prog_DLLTOOL+:} false; then :
5107 $as_echo_n "(cached) " >&6
5108 else
5109 if test -n "$DLLTOOL"; then
5110 ac_cv_prog_DLLTOOL="$DLLTOOL" # Let the user override the test.
5111 else
5112 as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
5113 for as_dir in $PATH
5114 do
5115 IFS=$as_save_IFS
5116 test -z "$as_dir" && as_dir=.
5117 for ac_exec_ext in '' $ac_executable_extensions; do
5118 if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
5119 ac_cv_prog_DLLTOOL="${ac_tool_prefix}dlltool"
5120 $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
5121 break 2
5122 fi
5123 done
5124 done
5125 IFS=$as_save_IFS
5126
5127 fi
5128 fi
5129 DLLTOOL=$ac_cv_prog_DLLTOOL
5130 if test -n "$DLLTOOL"; then
5131 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DLLTOOL" >&5
5132 $as_echo "$DLLTOOL" >&6; }
5133 else
5134 { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
5135 $as_echo "no" >&6; }
5136 fi
5137
5138
5139 fi
5140 if test -z "$ac_cv_prog_DLLTOOL"; then
5141 ac_ct_DLLTOOL=$DLLTOOL
5142 # Extract the first word of "dlltool", so it can be a program name with args.
5143 set dummy dlltool; ac_word=$2
5144 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
5145 $as_echo_n "checking for $ac_word... " >&6; }
5146 if ${ac_cv_prog_ac_ct_DLLTOOL+:} false; then :
5147 $as_echo_n "(cached) " >&6
5148 else
5149 if test -n "$ac_ct_DLLTOOL"; then
5150 ac_cv_prog_ac_ct_DLLTOOL="$ac_ct_DLLTOOL" # Let the user override the test.
5151 else
5152 as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
5153 for as_dir in $PATH
5154 do
5155 IFS=$as_save_IFS
5156 test -z "$as_dir" && as_dir=.
5157 for ac_exec_ext in '' $ac_executable_extensions; do
5158 if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
5159 ac_cv_prog_ac_ct_DLLTOOL="dlltool"
5160 $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
5161 break 2
5162 fi
5163 done
5164 done
5165 IFS=$as_save_IFS
5166
5167 fi
5168 fi
5169 ac_ct_DLLTOOL=$ac_cv_prog_ac_ct_DLLTOOL
5170 if test -n "$ac_ct_DLLTOOL"; then
5171 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DLLTOOL" >&5
5172 $as_echo "$ac_ct_DLLTOOL" >&6; }
5173 else
5174 { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
5175 $as_echo "no" >&6; }
5176 fi
5177
5178 if test "x$ac_ct_DLLTOOL" = x; then
5179 DLLTOOL="false"
5180 else
5181 case $cross_compiling:$ac_tool_warned in
5182 yes:)
5183 { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
5184 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
5185 ac_tool_warned=yes ;;
5186 esac
5187 DLLTOOL=$ac_ct_DLLTOOL
5188 fi
5189 else
5190 DLLTOOL="$ac_cv_prog_DLLTOOL"
5191 fi
5192
5193 test -z "$DLLTOOL" && DLLTOOL=dlltool
5194
5195
5196
5197
5198
5199
5200
5201
5202
5203
5204 { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to associate runtime and link libraries" >&5
5205 $as_echo_n "checking how to associate runtime and link libraries... " >&6; }
5206 if ${lt_cv_sharedlib_from_linklib_cmd+:} false; then :
5207 $as_echo_n "(cached) " >&6
5208 else
5209 lt_cv_sharedlib_from_linklib_cmd='unknown'
5210
5211 case $host_os in
5212 cygwin* | mingw* | pw32* | cegcc*)
5213 # two different shell functions defined in ltmain.sh
5214 # decide which to use based on capabilities of $DLLTOOL
5215 case `$DLLTOOL --help 2>&1` in
5216 *--identify-strict*)
5217 lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib
5218 ;;
5219 *)
5220 lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib_fallback
5221 ;;
5222 esac
5223 ;;
5224 *)
5225 # fallback: assume linklib IS sharedlib
5226 lt_cv_sharedlib_from_linklib_cmd="$ECHO"
5227 ;;
5228 esac
5229
5230 fi
5231 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_sharedlib_from_linklib_cmd" >&5
5232 $as_echo "$lt_cv_sharedlib_from_linklib_cmd" >&6; }
5233 sharedlib_from_linklib_cmd=$lt_cv_sharedlib_from_linklib_cmd
5234 test -z "$sharedlib_from_linklib_cmd" && sharedlib_from_linklib_cmd=$ECHO
5235
5236
5237
5238
5239
5240
5241
5242
5243 if test -n "$ac_tool_prefix"; then
5244 for ac_prog in ar
5245 do
5246 # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
5247 set dummy $ac_tool_prefix$ac_prog; ac_word=$2
5248 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
5249 $as_echo_n "checking for $ac_word... " >&6; }
5250 if ${ac_cv_prog_AR+:} false; then :
5251 $as_echo_n "(cached) " >&6
5252 else
5253 if test -n "$AR"; then
5254 ac_cv_prog_AR="$AR" # Let the user override the test.
5255 else
5256 as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
5257 for as_dir in $PATH
5258 do
5259 IFS=$as_save_IFS
5260 test -z "$as_dir" && as_dir=.
5261 for ac_exec_ext in '' $ac_executable_extensions; do
5262 if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
5263 ac_cv_prog_AR="$ac_tool_prefix$ac_prog"
5264 $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
5265 break 2
5266 fi
5267 done
5268 done
5269 IFS=$as_save_IFS
5270
5271 fi
5272 fi
5273 AR=$ac_cv_prog_AR
5274 if test -n "$AR"; then
5275 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AR" >&5
5276 $as_echo "$AR" >&6; }
5277 else
5278 { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
5279 $as_echo "no" >&6; }
5280 fi
5281
5282
5283 test -n "$AR" && break
5284 done
5285 fi
5286 if test -z "$AR"; then
5287 ac_ct_AR=$AR
5288 for ac_prog in ar
5289 do
5290 # Extract the first word of "$ac_prog", so it can be a program name with args.
5291 set dummy $ac_prog; ac_word=$2
5292 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
5293 $as_echo_n "checking for $ac_word... " >&6; }
5294 if ${ac_cv_prog_ac_ct_AR+:} false; then :
5295 $as_echo_n "(cached) " >&6
5296 else
5297 if test -n "$ac_ct_AR"; then
5298 ac_cv_prog_ac_ct_AR="$ac_ct_AR" # Let the user override the test.
5299 else
5300 as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
5301 for as_dir in $PATH
5302 do
5303 IFS=$as_save_IFS
5304 test -z "$as_dir" && as_dir=.
5305 for ac_exec_ext in '' $ac_executable_extensions; do
5306 if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
5307 ac_cv_prog_ac_ct_AR="$ac_prog"
5308 $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
5309 break 2
5310 fi
5311 done
5312 done
5313 IFS=$as_save_IFS
5314
5315 fi
5316 fi
5317 ac_ct_AR=$ac_cv_prog_ac_ct_AR
5318 if test -n "$ac_ct_AR"; then
5319 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_AR" >&5
5320 $as_echo "$ac_ct_AR" >&6; }
5321 else
5322 { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
5323 $as_echo "no" >&6; }
5324 fi
5325
5326
5327 test -n "$ac_ct_AR" && break
5328 done
5329
5330 if test "x$ac_ct_AR" = x; then
5331 AR="false"
5332 else
5333 case $cross_compiling:$ac_tool_warned in
5334 yes:)
5335 { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
5336 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
5337 ac_tool_warned=yes ;;
5338 esac
5339 AR=$ac_ct_AR
5340 fi
5341 fi
5342
5343 : ${AR=ar}
5344 : ${AR_FLAGS=cru}
5345
5346
5347
5348
5349
5350
5351
5352
5353
5354
5355
5356 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for archiver @FILE support" >&5
5357 $as_echo_n "checking for archiver @FILE support... " >&6; }
5358 if ${lt_cv_ar_at_file+:} false; then :
5359 $as_echo_n "(cached) " >&6
5360 else
5361 lt_cv_ar_at_file=no
5362 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
5363 /* end confdefs.h. */
5364
5365 int
5366 main ()
5367 {
5368
5369 ;
5370 return 0;
5371 }
5372 _ACEOF
5373 if ac_fn_c_try_compile "$LINENO"; then :
5374 echo conftest.$ac_objext > conftest.lst
5375 lt_ar_try='$AR $AR_FLAGS libconftest.a @conftest.lst >&5'
5376 { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$lt_ar_try\""; } >&5
5377 (eval $lt_ar_try) 2>&5
5378 ac_status=$?
5379 $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
5380 test $ac_status = 0; }
5381 if test "$ac_status" -eq 0; then
5382 # Ensure the archiver fails upon bogus file names.
5383 rm -f conftest.$ac_objext libconftest.a
5384 { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$lt_ar_try\""; } >&5
5385 (eval $lt_ar_try) 2>&5
5386 ac_status=$?
5387 $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
5388 test $ac_status = 0; }
5389 if test "$ac_status" -ne 0; then
5390 lt_cv_ar_at_file=@
5391 fi
5392 fi
5393 rm -f conftest.* libconftest.a
5394
5395 fi
5396 rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
5397
5398 fi
5399 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ar_at_file" >&5
5400 $as_echo "$lt_cv_ar_at_file" >&6; }
5401
5402 if test "x$lt_cv_ar_at_file" = xno; then
5403 archiver_list_spec=
5404 else
5405 archiver_list_spec=$lt_cv_ar_at_file
5406 fi
5407
5408
5409
5410
5411
5412
5413
5414 if test -n "$ac_tool_prefix"; then
5415 # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args.
5416 set dummy ${ac_tool_prefix}strip; ac_word=$2
5417 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
5418 $as_echo_n "checking for $ac_word... " >&6; }
5419 if ${ac_cv_prog_STRIP+:} false; then :
5420 $as_echo_n "(cached) " >&6
5421 else
5422 if test -n "$STRIP"; then
5423 ac_cv_prog_STRIP="$STRIP" # Let the user override the test.
5424 else
5425 as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
5426 for as_dir in $PATH
5427 do
5428 IFS=$as_save_IFS
5429 test -z "$as_dir" && as_dir=.
5430 for ac_exec_ext in '' $ac_executable_extensions; do
5431 if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
5432 ac_cv_prog_STRIP="${ac_tool_prefix}strip"
5433 $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
5434 break 2
5435 fi
5436 done
5437 done
5438 IFS=$as_save_IFS
5439
5440 fi
5441 fi
5442 STRIP=$ac_cv_prog_STRIP
5443 if test -n "$STRIP"; then
5444 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5
5445 $as_echo "$STRIP" >&6; }
5446 else
5447 { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
5448 $as_echo "no" >&6; }
5449 fi
5450
5451
5452 fi
5453 if test -z "$ac_cv_prog_STRIP"; then
5454 ac_ct_STRIP=$STRIP
5455 # Extract the first word of "strip", so it can be a program name with args.
5456 set dummy strip; ac_word=$2
5457 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
5458 $as_echo_n "checking for $ac_word... " >&6; }
5459 if ${ac_cv_prog_ac_ct_STRIP+:} false; then :
5460 $as_echo_n "(cached) " >&6
5461 else
5462 if test -n "$ac_ct_STRIP"; then
5463 ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test.
5464 else
5465 as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
5466 for as_dir in $PATH
5467 do
5468 IFS=$as_save_IFS
5469 test -z "$as_dir" && as_dir=.
5470 for ac_exec_ext in '' $ac_executable_extensions; do
5471 if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
5472 ac_cv_prog_ac_ct_STRIP="strip"
5473 $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
5474 break 2
5475 fi
5476 done
5477 done
5478 IFS=$as_save_IFS
5479
5480 fi
5481 fi
5482 ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP
5483 if test -n "$ac_ct_STRIP"; then
5484 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_STRIP" >&5
5485 $as_echo "$ac_ct_STRIP" >&6; }
5486 else
5487 { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
5488 $as_echo "no" >&6; }
5489 fi
5490
5491 if test "x$ac_ct_STRIP" = x; then
5492 STRIP=":"
5493 else
5494 case $cross_compiling:$ac_tool_warned in
5495 yes:)
5496 { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
5497 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
5498 ac_tool_warned=yes ;;
5499 esac
5500 STRIP=$ac_ct_STRIP
5501 fi
5502 else
5503 STRIP="$ac_cv_prog_STRIP"
5504 fi
5505
5506 test -z "$STRIP" && STRIP=:
5507
5508
5509
5510
5511
5512
5513 if test -n "$ac_tool_prefix"; then
5514 # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args.
5515 set dummy ${ac_tool_prefix}ranlib; ac_word=$2
5516 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
5517 $as_echo_n "checking for $ac_word... " >&6; }
5518 if ${ac_cv_prog_RANLIB+:} false; then :
5519 $as_echo_n "(cached) " >&6
5520 else
5521 if test -n "$RANLIB"; then
5522 ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test.
5523 else
5524 as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
5525 for as_dir in $PATH
5526 do
5527 IFS=$as_save_IFS
5528 test -z "$as_dir" && as_dir=.
5529 for ac_exec_ext in '' $ac_executable_extensions; do
5530 if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
5531 ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib"
5532 $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
5533 break 2
5534 fi
5535 done
5536 done
5537 IFS=$as_save_IFS
5538
5539 fi
5540 fi
5541 RANLIB=$ac_cv_prog_RANLIB
5542 if test -n "$RANLIB"; then
5543 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $RANLIB" >&5
5544 $as_echo "$RANLIB" >&6; }
5545 else
5546 { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
5547 $as_echo "no" >&6; }
5548 fi
5549
5550
5551 fi
5552 if test -z "$ac_cv_prog_RANLIB"; then
5553 ac_ct_RANLIB=$RANLIB
5554 # Extract the first word of "ranlib", so it can be a program name with args.
5555 set dummy ranlib; ac_word=$2
5556 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
5557 $as_echo_n "checking for $ac_word... " >&6; }
5558 if ${ac_cv_prog_ac_ct_RANLIB+:} false; then :
5559 $as_echo_n "(cached) " >&6
5560 else
5561 if test -n "$ac_ct_RANLIB"; then
5562 ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test.
5563 else
5564 as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
5565 for as_dir in $PATH
5566 do
5567 IFS=$as_save_IFS
5568 test -z "$as_dir" && as_dir=.
5569 for ac_exec_ext in '' $ac_executable_extensions; do
5570 if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
5571 ac_cv_prog_ac_ct_RANLIB="ranlib"
5572 $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
5573 break 2
5574 fi
5575 done
5576 done
5577 IFS=$as_save_IFS
5578
5579 fi
5580 fi
5581 ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB
5582 if test -n "$ac_ct_RANLIB"; then
5583 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_RANLIB" >&5
5584 $as_echo "$ac_ct_RANLIB" >&6; }
5585 else
5586 { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
5587 $as_echo "no" >&6; }
5588 fi
5589
5590 if test "x$ac_ct_RANLIB" = x; then
5591 RANLIB=":"
5592 else
5593 case $cross_compiling:$ac_tool_warned in
5594 yes:)
5595 { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
5596 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
5597 ac_tool_warned=yes ;;
5598 esac
5599 RANLIB=$ac_ct_RANLIB
5600 fi
5601 else
5602 RANLIB="$ac_cv_prog_RANLIB"
5603 fi
5604
5605 test -z "$RANLIB" && RANLIB=:
5606
5607
5608
5609
5610
5611
5612 # Determine commands to create old-style static archives.
5613 old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs'
5614 old_postinstall_cmds='chmod 644 $oldlib'
5615 old_postuninstall_cmds=
5616
5617 if test -n "$RANLIB"; then
5618 case $host_os in
5619 openbsd*)
5620 old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$tool_oldlib"
5621 ;;
5622 *)
5623 old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$tool_oldlib"
5624 ;;
5625 esac
5626 old_archive_cmds="$old_archive_cmds~\$RANLIB \$tool_oldlib"
5627 fi
5628
5629 case $host_os in
5630 darwin*)
5631 lock_old_archive_extraction=yes ;;
5632 *)
5633 lock_old_archive_extraction=no ;;
5634 esac
5635
5636
5637
5638
5639
5640
5641
5642
5643
5644
5645
5646
5647
5648
5649
5650
5651
5652
5653
5654
5655
5656
5657
5658
5659
5660
5661
5662
5663
5664
5665
5666
5667
5668
5669
5670
5671
5672
5673
5674 # If no C compiler was specified, use CC.
5675 LTCC=${LTCC-"$CC"}
5676
5677 # If no C compiler flags were specified, use CFLAGS.
5678 LTCFLAGS=${LTCFLAGS-"$CFLAGS"}
5679
5680 # Allow CC to be a program name with arguments.
5681 compiler=$CC
5682
5683
5684 # Check for command to grab the raw symbol name followed by C symbol from nm.
5685 { $as_echo "$as_me:${as_lineno-$LINENO}: checking command to parse $NM output from $compiler object" >&5
5686 $as_echo_n "checking command to parse $NM output from $compiler object... " >&6; }
5687 if ${lt_cv_sys_global_symbol_pipe+:} false; then :
5688 $as_echo_n "(cached) " >&6
5689 else
5690
5691 # These are sane defaults that work on at least a few old systems.
5692 # [They come from Ultrix. What could be older than Ultrix?!! ;)]
5693
5694 # Character class describing NM global symbol codes.
5695 symcode='[BCDEGRST]'
5696
5697 # Regexp to match symbols that can be accessed directly from C.
5698 sympat='\([_A-Za-z][_A-Za-z0-9]*\)'
5699
5700 # Define system-specific variables.
5701 case $host_os in
5702 aix*)
5703 symcode='[BCDT]'
5704 ;;
5705 cygwin* | mingw* | pw32* | cegcc*)
5706 symcode='[ABCDGISTW]'
5707 ;;
5708 hpux*)
5709 if test "$host_cpu" = ia64; then
5710 symcode='[ABCDEGRST]'
5711 fi
5712 ;;
5713 irix* | nonstopux*)
5714 symcode='[BCDEGRST]'
5715 ;;
5716 osf*)
5717 symcode='[BCDEGQRST]'
5718 ;;
5719 solaris*)
5720 symcode='[BDRT]'
5721 ;;
5722 sco3.2v5*)
5723 symcode='[DT]'
5724 ;;
5725 sysv4.2uw2*)
5726 symcode='[DT]'
5727 ;;
5728 sysv5* | sco5v6* | unixware* | OpenUNIX*)
5729 symcode='[ABDT]'
5730 ;;
5731 sysv4)
5732 symcode='[DFNSTU]'
5733 ;;
5734 esac
5735
5736 # If we're using GNU nm, then use its standard symbol codes.
5737 case `$NM -V 2>&1` in
5738 *GNU* | *'with BFD'*)
5739 symcode='[ABCDGIRSTW]' ;;
5740 esac
5741
5742 # Transform an extracted symbol line into a proper C declaration.
5743 # Some systems (esp. on ia64) link data and code symbols differently,
5744 # so use this general approach.
5745 lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'"
5746
5747 # Transform an extracted symbol line into symbol name and symbol address
5748 lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([^ ]*\)[ ]*$/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/ {\"\2\", (void *) \&\2},/p'"
5749 lt_cv_sys_global_symbol_to_c_name_address_lib_prefix="sed -n -e 's/^: \([^ ]*\)[ ]*$/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([^ ]*\) \(lib[^ ]*\)$/ {\"\2\", (void *) \&\2},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/ {\"lib\2\", (void *) \&\2},/p'"
5750
5751 # Handle CRLF in mingw tool chain
5752 opt_cr=
5753 case $build_os in
5754 mingw*)
5755 opt_cr=`$ECHO 'x\{0,1\}' | tr x '\015'` # option cr in regexp
5756 ;;
5757 esac
5758
5759 # Try without a prefix underscore, then with it.
5760 for ac_symprfx in "" "_"; do
5761
5762 # Transform symcode, sympat, and symprfx into a raw symbol and a C symbol.
5763 symxfrm="\\1 $ac_symprfx\\2 \\2"
5764
5765 # Write the raw and C identifiers.
5766 if test "$lt_cv_nm_interface" = "MS dumpbin"; then
5767 # Fake it for dumpbin and say T for any non-static function
5768 # and D for any global variable.
5769 # Also find C++ and __fastcall symbols from MSVC++,
5770 # which start with @ or ?.
5771 lt_cv_sys_global_symbol_pipe="$AWK '"\
5772 " {last_section=section; section=\$ 3};"\
5773 " /^COFF SYMBOL TABLE/{for(i in hide) delete hide[i]};"\
5774 " /Section length .*#relocs.*(pick any)/{hide[last_section]=1};"\
5775 " \$ 0!~/External *\|/{next};"\
5776 " / 0+ UNDEF /{next}; / UNDEF \([^|]\)*()/{next};"\
5777 " {if(hide[section]) next};"\
5778 " {f=0}; \$ 0~/\(\).*\|/{f=1}; {printf f ? \"T \" : \"D \"};"\
5779 " {split(\$ 0, a, /\||\r/); split(a[2], s)};"\
5780 " s[1]~/^[@?]/{print s[1], s[1]; next};"\
5781 " s[1]~prfx {split(s[1],t,\"@\"); print t[1], substr(t[1],length(prfx))}"\
5782 " ' prfx=^$ac_symprfx"
5783 else
5784 lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[ ]\($symcode$symcode*\)[ ][ ]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'"
5785 fi
5786 lt_cv_sys_global_symbol_pipe="$lt_cv_sys_global_symbol_pipe | sed '/ __gnu_lto/d'"
5787
5788 # Check to see that the pipe works correctly.
5789 pipe_works=no
5790
5791 rm -f conftest*
5792 cat > conftest.$ac_ext <<_LT_EOF
5793 #ifdef __cplusplus
5794 extern "C" {
5795 #endif
5796 char nm_test_var;
5797 void nm_test_func(void);
5798 void nm_test_func(void){}
5799 #ifdef __cplusplus
5800 }
5801 #endif
5802 int main(){nm_test_var='a';nm_test_func();return(0);}
5803 _LT_EOF
5804
5805 if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
5806 (eval $ac_compile) 2>&5
5807 ac_status=$?
5808 $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
5809 test $ac_status = 0; }; then
5810 # Now try to grab the symbols.
5811 nlist=conftest.nm
5812 if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$NM conftest.$ac_objext \| "$lt_cv_sys_global_symbol_pipe" \> $nlist\""; } >&5
5813 (eval $NM conftest.$ac_objext \| "$lt_cv_sys_global_symbol_pipe" \> $nlist) 2>&5
5814 ac_status=$?
5815 $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
5816 test $ac_status = 0; } && test -s "$nlist"; then
5817 # Try sorting and uniquifying the output.
5818 if sort "$nlist" | uniq > "$nlist"T; then
5819 mv -f "$nlist"T "$nlist"
5820 else
5821 rm -f "$nlist"T
5822 fi
5823
5824 # Make sure that we snagged all the symbols we need.
5825 if $GREP ' nm_test_var$' "$nlist" >/dev/null; then
5826 if $GREP ' nm_test_func$' "$nlist" >/dev/null; then
5827 cat <<_LT_EOF > conftest.$ac_ext
5828 /* Keep this code in sync between libtool.m4, ltmain, lt_system.h, and tests. */
5829 #if defined(_WIN32) || defined(__CYGWIN__) || defined(_WIN32_WCE)
5830 /* DATA imports from DLLs on WIN32 con't be const, because runtime
5831 relocations are performed -- see ld's documentation on pseudo-relocs. */
5832 # define LT_DLSYM_CONST
5833 #elif defined(__osf__)
5834 /* This system does not cope well with relocations in const data. */
5835 # define LT_DLSYM_CONST
5836 #else
5837 # define LT_DLSYM_CONST const
5838 #endif
5839
5840 #ifdef __cplusplus
5841 extern "C" {
5842 #endif
5843
5844 _LT_EOF
5845 # Now generate the symbol file.
5846 eval "$lt_cv_sys_global_symbol_to_cdecl"' < "$nlist" | $GREP -v main >> conftest.$ac_ext'
5847
5848 cat <<_LT_EOF >> conftest.$ac_ext
5849
5850 /* The mapping between symbol names and symbols. */
5851 LT_DLSYM_CONST struct {
5852 const char *name;
5853 void *address;
5854 }
5855 lt__PROGRAM__LTX_preloaded_symbols[] =
5856 {
5857 { "@PROGRAM@", (void *) 0 },
5858 _LT_EOF
5859 $SED "s/^$symcode$symcode* \(.*\) \(.*\)$/ {\"\2\", (void *) \&\2},/" < "$nlist" | $GREP -v main >> conftest.$ac_ext
5860 cat <<\_LT_EOF >> conftest.$ac_ext
5861 {0, (void *) 0}
5862 };
5863
5864 /* This works around a problem in FreeBSD linker */
5865 #ifdef FREEBSD_WORKAROUND
5866 static const void *lt_preloaded_setup() {
5867 return lt__PROGRAM__LTX_preloaded_symbols;
5868 }
5869 #endif
5870
5871 #ifdef __cplusplus
5872 }
5873 #endif
5874 _LT_EOF
5875 # Now try linking the two files.
5876 mv conftest.$ac_objext conftstm.$ac_objext
5877 lt_globsym_save_LIBS=$LIBS
5878 lt_globsym_save_CFLAGS=$CFLAGS
5879 LIBS="conftstm.$ac_objext"
5880 CFLAGS="$CFLAGS$lt_prog_compiler_no_builtin_flag"
5881 if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5
5882 (eval $ac_link) 2>&5
5883 ac_status=$?
5884 $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
5885 test $ac_status = 0; } && test -s conftest${ac_exeext}; then
5886 pipe_works=yes
5887 fi
5888 LIBS=$lt_globsym_save_LIBS
5889 CFLAGS=$lt_globsym_save_CFLAGS
5890 else
5891 echo "cannot find nm_test_func in $nlist" >&5
5892 fi
5893 else
5894 echo "cannot find nm_test_var in $nlist" >&5
5895 fi
5896 else
5897 echo "cannot run $lt_cv_sys_global_symbol_pipe" >&5
5898 fi
5899 else
5900 echo "$progname: failed program was:" >&5
5901 cat conftest.$ac_ext >&5
5902 fi
5903 rm -rf conftest* conftst*
5904
5905 # Do not use the global_symbol_pipe unless it works.
5906 if test "$pipe_works" = yes; then
5907 break
5908 else
5909 lt_cv_sys_global_symbol_pipe=
5910 fi
5911 done
5912
5913 fi
5914
5915 if test -z "$lt_cv_sys_global_symbol_pipe"; then
5916 lt_cv_sys_global_symbol_to_cdecl=
5917 fi
5918 if test -z "$lt_cv_sys_global_symbol_pipe$lt_cv_sys_global_symbol_to_cdecl"; then
5919 { $as_echo "$as_me:${as_lineno-$LINENO}: result: failed" >&5
5920 $as_echo "failed" >&6; }
5921 else
5922 { $as_echo "$as_me:${as_lineno-$LINENO}: result: ok" >&5
5923 $as_echo "ok" >&6; }
5924 fi
5925
5926 # Response file support.
5927 if test "$lt_cv_nm_interface" = "MS dumpbin"; then
5928 nm_file_list_spec='@'
5929 elif $NM --help 2>/dev/null | grep '[@]FILE' >/dev/null; then
5930 nm_file_list_spec='@'
5931 fi
5932
5933
5934
5935
5936
5937
5938
5939
5940
5941
5942
5943
5944
5945
5946
5947
5948
5949
5950
5951
5952
5953
5954
5955
5956
5957
5958
5959 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for sysroot" >&5
5960 $as_echo_n "checking for sysroot... " >&6; }
5961
5962 # Check whether --with-sysroot was given.
5963 if test "${with_sysroot+set}" = set; then :
5964 withval=$with_sysroot;
5965 else
5966 with_sysroot=no
5967 fi
5968
5969
5970 lt_sysroot=
5971 case ${with_sysroot} in #(
5972 yes)
5973 if test "$GCC" = yes; then
5974 lt_sysroot=`$CC --print-sysroot 2>/dev/null`
5975 fi
5976 ;; #(
5977 /*)
5978 lt_sysroot=`echo "$with_sysroot" | sed -e "$sed_quote_subst"`
5979 ;; #(
5980 no|'')
5981 ;; #(
5982 *)
5983 { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${with_sysroot}" >&5
5984 $as_echo "${with_sysroot}" >&6; }
5985 as_fn_error $? "The sysroot must be an absolute path." "$LINENO" 5
5986 ;;
5987 esac
5988
5989 { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${lt_sysroot:-no}" >&5
5990 $as_echo "${lt_sysroot:-no}" >&6; }
5991
5992
5993
5994
5995
5996 # Check whether --enable-libtool-lock was given.
5997 if test "${enable_libtool_lock+set}" = set; then :
5998 enableval=$enable_libtool_lock;
5999 fi
6000
6001 test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes
6002
6003 # Some flags need to be propagated to the compiler or linker for good
6004 # libtool support.
6005 case $host in
6006 ia64-*-hpux*)
6007 # Find out which ABI we are using.
6008 echo 'int i;' > conftest.$ac_ext
6009 if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
6010 (eval $ac_compile) 2>&5
6011 ac_status=$?
6012 $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
6013 test $ac_status = 0; }; then
6014 case `/usr/bin/file conftest.$ac_objext` in
6015 *ELF-32*)
6016 HPUX_IA64_MODE="32"
6017 ;;
6018 *ELF-64*)
6019 HPUX_IA64_MODE="64"
6020 ;;
6021 esac
6022 fi
6023 rm -rf conftest*
6024 ;;
6025 *-*-irix6*)
6026 # Find out which ABI we are using.
6027 echo '#line '$LINENO' "configure"' > conftest.$ac_ext
6028 if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
6029 (eval $ac_compile) 2>&5
6030 ac_status=$?
6031 $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
6032 test $ac_status = 0; }; then
6033 if test "$lt_cv_prog_gnu_ld" = yes; then
6034 case `/usr/bin/file conftest.$ac_objext` in
6035 *32-bit*)
6036 LD="${LD-ld} -melf32bsmip"
6037 ;;
6038 *N32*)
6039 LD="${LD-ld} -melf32bmipn32"
6040 ;;
6041 *64-bit*)
6042 LD="${LD-ld} -melf64bmip"
6043 ;;
6044 esac
6045 else
6046 case `/usr/bin/file conftest.$ac_objext` in
6047 *32-bit*)
6048 LD="${LD-ld} -32"
6049 ;;
6050 *N32*)
6051 LD="${LD-ld} -n32"
6052 ;;
6053 *64-bit*)
6054 LD="${LD-ld} -64"
6055 ;;
6056 esac
6057 fi
6058 fi
6059 rm -rf conftest*
6060 ;;
6061
6062 x86_64-*kfreebsd*-gnu|x86_64-*linux*|ppc*-*linux*|powerpc*-*linux*| \
6063 s390*-*linux*|s390*-*tpf*|sparc*-*linux*)
6064 # Find out which ABI we are using.
6065 echo 'int i;' > conftest.$ac_ext
6066 if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
6067 (eval $ac_compile) 2>&5
6068 ac_status=$?
6069 $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
6070 test $ac_status = 0; }; then
6071 case `/usr/bin/file conftest.o` in
6072 *32-bit*)
6073 case $host in
6074 x86_64-*kfreebsd*-gnu)
6075 LD="${LD-ld} -m elf_i386_fbsd"
6076 ;;
6077 x86_64-*linux*)
6078 LD="${LD-ld} -m elf_i386"
6079 ;;
6080 ppc64-*linux*|powerpc64-*linux*)
6081 LD="${LD-ld} -m elf32ppclinux"
6082 ;;
6083 s390x-*linux*)
6084 LD="${LD-ld} -m elf_s390"
6085 ;;
6086 sparc64-*linux*)
6087 LD="${LD-ld} -m elf32_sparc"
6088 ;;
6089 esac
6090 ;;
6091 *64-bit*)
6092 case $host in
6093 x86_64-*kfreebsd*-gnu)
6094 LD="${LD-ld} -m elf_x86_64_fbsd"
6095 ;;
6096 x86_64-*linux*)
6097 LD="${LD-ld} -m elf_x86_64"
6098 ;;
6099 ppc*-*linux*|powerpc*-*linux*)
6100 LD="${LD-ld} -m elf64ppc"
6101 ;;
6102 s390*-*linux*|s390*-*tpf*)
6103 LD="${LD-ld} -m elf64_s390"
6104 ;;
6105 sparc*-*linux*)
6106 LD="${LD-ld} -m elf64_sparc"
6107 ;;
6108 esac
6109 ;;
6110 esac
6111 fi
6112 rm -rf conftest*
6113 ;;
6114
6115 *-*-sco3.2v5*)
6116 # On SCO OpenServer 5, we need -belf to get full-featured binaries.
6117 SAVE_CFLAGS="$CFLAGS"
6118 CFLAGS="$CFLAGS -belf"
6119 { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C compiler needs -belf" >&5
6120 $as_echo_n "checking whether the C compiler needs -belf... " >&6; }
6121 if ${lt_cv_cc_needs_belf+:} false; then :
6122 $as_echo_n "(cached) " >&6
6123 else
6124 ac_ext=c
6125 ac_cpp='$CPP $CPPFLAGS'
6126 ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
6127 ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
6128 ac_compiler_gnu=$ac_cv_c_compiler_gnu
6129
6130 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
6131 /* end confdefs.h. */
6132
6133 int
6134 main ()
6135 {
6136
6137 ;
6138 return 0;
6139 }
6140 _ACEOF
6141 if ac_fn_c_try_link "$LINENO"; then :
6142 lt_cv_cc_needs_belf=yes
6143 else
6144 lt_cv_cc_needs_belf=no
6145 fi
6146 rm -f core conftest.err conftest.$ac_objext \
6147 conftest$ac_exeext conftest.$ac_ext
6148 ac_ext=c
6149 ac_cpp='$CPP $CPPFLAGS'
6150 ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
6151 ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
6152 ac_compiler_gnu=$ac_cv_c_compiler_gnu
6153
6154 fi
6155 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_cc_needs_belf" >&5
6156 $as_echo "$lt_cv_cc_needs_belf" >&6; }
6157 if test x"$lt_cv_cc_needs_belf" != x"yes"; then
6158 # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf
6159 CFLAGS="$SAVE_CFLAGS"
6160 fi
6161 ;;
6162 *-*solaris*)
6163 # Find out which ABI we are using.
6164 echo 'int i;' > conftest.$ac_ext
6165 if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
6166 (eval $ac_compile) 2>&5
6167 ac_status=$?
6168 $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
6169 test $ac_status = 0; }; then
6170 case `/usr/bin/file conftest.o` in
6171 *64-bit*)
6172 case $lt_cv_prog_gnu_ld in
6173 yes*)
6174 case $host in
6175 i?86-*-solaris*)
6176 LD="${LD-ld} -m elf_x86_64"
6177 ;;
6178 sparc*-*-solaris*)
6179 LD="${LD-ld} -m elf64_sparc"
6180 ;;
6181 esac
6182 # GNU ld 2.21 introduced _sol2 emulations. Use them if available.
6183 if ${LD-ld} -V | grep _sol2 >/dev/null 2>&1; then
6184 LD="${LD-ld}_sol2"
6185 fi
6186 ;;
6187 *)
6188 if ${LD-ld} -64 -r -o conftest2.o conftest.o >/dev/null 2>&1; then
6189 LD="${LD-ld} -64"
6190 fi
6191 ;;
6192 esac
6193 ;;
6194 esac
6195 fi
6196 rm -rf conftest*
6197 ;;
6198 esac
6199
6200 need_locks="$enable_libtool_lock"
6201
6202 if test -n "$ac_tool_prefix"; then
6203 # Extract the first word of "${ac_tool_prefix}mt", so it can be a program name with args.
6204 set dummy ${ac_tool_prefix}mt; ac_word=$2
6205 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
6206 $as_echo_n "checking for $ac_word... " >&6; }
6207 if ${ac_cv_prog_MANIFEST_TOOL+:} false; then :
6208 $as_echo_n "(cached) " >&6
6209 else
6210 if test -n "$MANIFEST_TOOL"; then
6211 ac_cv_prog_MANIFEST_TOOL="$MANIFEST_TOOL" # Let the user override the test.
6212 else
6213 as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
6214 for as_dir in $PATH
6215 do
6216 IFS=$as_save_IFS
6217 test -z "$as_dir" && as_dir=.
6218 for ac_exec_ext in '' $ac_executable_extensions; do
6219 if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
6220 ac_cv_prog_MANIFEST_TOOL="${ac_tool_prefix}mt"
6221 $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
6222 break 2
6223 fi
6224 done
6225 done
6226 IFS=$as_save_IFS
6227
6228 fi
6229 fi
6230 MANIFEST_TOOL=$ac_cv_prog_MANIFEST_TOOL
6231 if test -n "$MANIFEST_TOOL"; then
6232 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MANIFEST_TOOL" >&5
6233 $as_echo "$MANIFEST_TOOL" >&6; }
6234 else
6235 { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
6236 $as_echo "no" >&6; }
6237 fi
6238
6239
6240 fi
6241 if test -z "$ac_cv_prog_MANIFEST_TOOL"; then
6242 ac_ct_MANIFEST_TOOL=$MANIFEST_TOOL
6243 # Extract the first word of "mt", so it can be a program name with args.
6244 set dummy mt; ac_word=$2
6245 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
6246 $as_echo_n "checking for $ac_word... " >&6; }
6247 if ${ac_cv_prog_ac_ct_MANIFEST_TOOL+:} false; then :
6248 $as_echo_n "(cached) " >&6
6249 else
6250 if test -n "$ac_ct_MANIFEST_TOOL"; then
6251 ac_cv_prog_ac_ct_MANIFEST_TOOL="$ac_ct_MANIFEST_TOOL" # Let the user override the test.
6252 else
6253 as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
6254 for as_dir in $PATH
6255 do
6256 IFS=$as_save_IFS
6257 test -z "$as_dir" && as_dir=.
6258 for ac_exec_ext in '' $ac_executable_extensions; do
6259 if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
6260 ac_cv_prog_ac_ct_MANIFEST_TOOL="mt"
6261 $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
6262 break 2
6263 fi
6264 done
6265 done
6266 IFS=$as_save_IFS
6267
6268 fi
6269 fi
6270 ac_ct_MANIFEST_TOOL=$ac_cv_prog_ac_ct_MANIFEST_TOOL
6271 if test -n "$ac_ct_MANIFEST_TOOL"; then
6272 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_MANIFEST_TOOL" >&5
6273 $as_echo "$ac_ct_MANIFEST_TOOL" >&6; }
6274 else
6275 { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
6276 $as_echo "no" >&6; }
6277 fi
6278
6279 if test "x$ac_ct_MANIFEST_TOOL" = x; then
6280 MANIFEST_TOOL=":"
6281 else
6282 case $cross_compiling:$ac_tool_warned in
6283 yes:)
6284 { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
6285 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
6286 ac_tool_warned=yes ;;
6287 esac
6288 MANIFEST_TOOL=$ac_ct_MANIFEST_TOOL
6289 fi
6290 else
6291 MANIFEST_TOOL="$ac_cv_prog_MANIFEST_TOOL"
6292 fi
6293
6294 test -z "$MANIFEST_TOOL" && MANIFEST_TOOL=mt
6295 { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $MANIFEST_TOOL is a manifest tool" >&5
6296 $as_echo_n "checking if $MANIFEST_TOOL is a manifest tool... " >&6; }
6297 if ${lt_cv_path_mainfest_tool+:} false; then :
6298 $as_echo_n "(cached) " >&6
6299 else
6300 lt_cv_path_mainfest_tool=no
6301 echo "$as_me:$LINENO: $MANIFEST_TOOL '-?'" >&5
6302 $MANIFEST_TOOL '-?' 2>conftest.err > conftest.out
6303 cat conftest.err >&5
6304 if $GREP 'Manifest Tool' conftest.out > /dev/null; then
6305 lt_cv_path_mainfest_tool=yes
6306 fi
6307 rm -f conftest*
6308 fi
6309 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_path_mainfest_tool" >&5
6310 $as_echo "$lt_cv_path_mainfest_tool" >&6; }
6311 if test "x$lt_cv_path_mainfest_tool" != xyes; then
6312 MANIFEST_TOOL=:
6313 fi
6314
6315
6316
6317
6318
6319
6320 case $host_os in
6321 rhapsody* | darwin*)
6322 if test -n "$ac_tool_prefix"; then
6323 # Extract the first word of "${ac_tool_prefix}dsymutil", so it can be a program name with args.
6324 set dummy ${ac_tool_prefix}dsymutil; ac_word=$2
6325 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
6326 $as_echo_n "checking for $ac_word... " >&6; }
6327 if ${ac_cv_prog_DSYMUTIL+:} false; then :
6328 $as_echo_n "(cached) " >&6
6329 else
6330 if test -n "$DSYMUTIL"; then
6331 ac_cv_prog_DSYMUTIL="$DSYMUTIL" # Let the user override the test.
6332 else
6333 as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
6334 for as_dir in $PATH
6335 do
6336 IFS=$as_save_IFS
6337 test -z "$as_dir" && as_dir=.
6338 for ac_exec_ext in '' $ac_executable_extensions; do
6339 if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
6340 ac_cv_prog_DSYMUTIL="${ac_tool_prefix}dsymutil"
6341 $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
6342 break 2
6343 fi
6344 done
6345 done
6346 IFS=$as_save_IFS
6347
6348 fi
6349 fi
6350 DSYMUTIL=$ac_cv_prog_DSYMUTIL
6351 if test -n "$DSYMUTIL"; then
6352 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DSYMUTIL" >&5
6353 $as_echo "$DSYMUTIL" >&6; }
6354 else
6355 { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
6356 $as_echo "no" >&6; }
6357 fi
6358
6359
6360 fi
6361 if test -z "$ac_cv_prog_DSYMUTIL"; then
6362 ac_ct_DSYMUTIL=$DSYMUTIL
6363 # Extract the first word of "dsymutil", so it can be a program name with args.
6364 set dummy dsymutil; ac_word=$2
6365 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
6366 $as_echo_n "checking for $ac_word... " >&6; }
6367 if ${ac_cv_prog_ac_ct_DSYMUTIL+:} false; then :
6368 $as_echo_n "(cached) " >&6
6369 else
6370 if test -n "$ac_ct_DSYMUTIL"; then
6371 ac_cv_prog_ac_ct_DSYMUTIL="$ac_ct_DSYMUTIL" # Let the user override the test.
6372 else
6373 as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
6374 for as_dir in $PATH
6375 do
6376 IFS=$as_save_IFS
6377 test -z "$as_dir" && as_dir=.
6378 for ac_exec_ext in '' $ac_executable_extensions; do
6379 if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
6380 ac_cv_prog_ac_ct_DSYMUTIL="dsymutil"
6381 $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
6382 break 2
6383 fi
6384 done
6385 done
6386 IFS=$as_save_IFS
6387
6388 fi
6389 fi
6390 ac_ct_DSYMUTIL=$ac_cv_prog_ac_ct_DSYMUTIL
6391 if test -n "$ac_ct_DSYMUTIL"; then
6392 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DSYMUTIL" >&5
6393 $as_echo "$ac_ct_DSYMUTIL" >&6; }
6394 else
6395 { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
6396 $as_echo "no" >&6; }
6397 fi
6398
6399 if test "x$ac_ct_DSYMUTIL" = x; then
6400 DSYMUTIL=":"
6401 else
6402 case $cross_compiling:$ac_tool_warned in
6403 yes:)
6404 { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
6405 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
6406 ac_tool_warned=yes ;;
6407 esac
6408 DSYMUTIL=$ac_ct_DSYMUTIL
6409 fi
6410 else
6411 DSYMUTIL="$ac_cv_prog_DSYMUTIL"
6412 fi
6413
6414 if test -n "$ac_tool_prefix"; then
6415 # Extract the first word of "${ac_tool_prefix}nmedit", so it can be a program name with args.
6416 set dummy ${ac_tool_prefix}nmedit; ac_word=$2
6417 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
6418 $as_echo_n "checking for $ac_word... " >&6; }
6419 if ${ac_cv_prog_NMEDIT+:} false; then :
6420 $as_echo_n "(cached) " >&6
6421 else
6422 if test -n "$NMEDIT"; then
6423 ac_cv_prog_NMEDIT="$NMEDIT" # Let the user override the test.
6424 else
6425 as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
6426 for as_dir in $PATH
6427 do
6428 IFS=$as_save_IFS
6429 test -z "$as_dir" && as_dir=.
6430 for ac_exec_ext in '' $ac_executable_extensions; do
6431 if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
6432 ac_cv_prog_NMEDIT="${ac_tool_prefix}nmedit"
6433 $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
6434 break 2
6435 fi
6436 done
6437 done
6438 IFS=$as_save_IFS
6439
6440 fi
6441 fi
6442 NMEDIT=$ac_cv_prog_NMEDIT
6443 if test -n "$NMEDIT"; then
6444 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $NMEDIT" >&5
6445 $as_echo "$NMEDIT" >&6; }
6446 else
6447 { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
6448 $as_echo "no" >&6; }
6449 fi
6450
6451
6452 fi
6453 if test -z "$ac_cv_prog_NMEDIT"; then
6454 ac_ct_NMEDIT=$NMEDIT
6455 # Extract the first word of "nmedit", so it can be a program name with args.
6456 set dummy nmedit; ac_word=$2
6457 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
6458 $as_echo_n "checking for $ac_word... " >&6; }
6459 if ${ac_cv_prog_ac_ct_NMEDIT+:} false; then :
6460 $as_echo_n "(cached) " >&6
6461 else
6462 if test -n "$ac_ct_NMEDIT"; then
6463 ac_cv_prog_ac_ct_NMEDIT="$ac_ct_NMEDIT" # Let the user override the test.
6464 else
6465 as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
6466 for as_dir in $PATH
6467 do
6468 IFS=$as_save_IFS
6469 test -z "$as_dir" && as_dir=.
6470 for ac_exec_ext in '' $ac_executable_extensions; do
6471 if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
6472 ac_cv_prog_ac_ct_NMEDIT="nmedit"
6473 $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
6474 break 2
6475 fi
6476 done
6477 done
6478 IFS=$as_save_IFS
6479
6480 fi
6481 fi
6482 ac_ct_NMEDIT=$ac_cv_prog_ac_ct_NMEDIT
6483 if test -n "$ac_ct_NMEDIT"; then
6484 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_NMEDIT" >&5
6485 $as_echo "$ac_ct_NMEDIT" >&6; }
6486 else
6487 { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
6488 $as_echo "no" >&6; }
6489 fi
6490
6491 if test "x$ac_ct_NMEDIT" = x; then
6492 NMEDIT=":"
6493 else
6494 case $cross_compiling:$ac_tool_warned in
6495 yes:)
6496 { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
6497 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
6498 ac_tool_warned=yes ;;
6499 esac
6500 NMEDIT=$ac_ct_NMEDIT
6501 fi
6502 else
6503 NMEDIT="$ac_cv_prog_NMEDIT"
6504 fi
6505
6506 if test -n "$ac_tool_prefix"; then
6507 # Extract the first word of "${ac_tool_prefix}lipo", so it can be a program name with args.
6508 set dummy ${ac_tool_prefix}lipo; ac_word=$2
6509 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
6510 $as_echo_n "checking for $ac_word... " >&6; }
6511 if ${ac_cv_prog_LIPO+:} false; then :
6512 $as_echo_n "(cached) " >&6
6513 else
6514 if test -n "$LIPO"; then
6515 ac_cv_prog_LIPO="$LIPO" # Let the user override the test.
6516 else
6517 as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
6518 for as_dir in $PATH
6519 do
6520 IFS=$as_save_IFS
6521 test -z "$as_dir" && as_dir=.
6522 for ac_exec_ext in '' $ac_executable_extensions; do
6523 if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
6524 ac_cv_prog_LIPO="${ac_tool_prefix}lipo"
6525 $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
6526 break 2
6527 fi
6528 done
6529 done
6530 IFS=$as_save_IFS
6531
6532 fi
6533 fi
6534 LIPO=$ac_cv_prog_LIPO
6535 if test -n "$LIPO"; then
6536 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LIPO" >&5
6537 $as_echo "$LIPO" >&6; }
6538 else
6539 { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
6540 $as_echo "no" >&6; }
6541 fi
6542
6543
6544 fi
6545 if test -z "$ac_cv_prog_LIPO"; then
6546 ac_ct_LIPO=$LIPO
6547 # Extract the first word of "lipo", so it can be a program name with args.
6548 set dummy lipo; ac_word=$2
6549 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
6550 $as_echo_n "checking for $ac_word... " >&6; }
6551 if ${ac_cv_prog_ac_ct_LIPO+:} false; then :
6552 $as_echo_n "(cached) " >&6
6553 else
6554 if test -n "$ac_ct_LIPO"; then
6555 ac_cv_prog_ac_ct_LIPO="$ac_ct_LIPO" # Let the user override the test.
6556 else
6557 as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
6558 for as_dir in $PATH
6559 do
6560 IFS=$as_save_IFS
6561 test -z "$as_dir" && as_dir=.
6562 for ac_exec_ext in '' $ac_executable_extensions; do
6563 if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
6564 ac_cv_prog_ac_ct_LIPO="lipo"
6565 $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
6566 break 2
6567 fi
6568 done
6569 done
6570 IFS=$as_save_IFS
6571
6572 fi
6573 fi
6574 ac_ct_LIPO=$ac_cv_prog_ac_ct_LIPO
6575 if test -n "$ac_ct_LIPO"; then
6576 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_LIPO" >&5
6577 $as_echo "$ac_ct_LIPO" >&6; }
6578 else
6579 { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
6580 $as_echo "no" >&6; }
6581 fi
6582
6583 if test "x$ac_ct_LIPO" = x; then
6584 LIPO=":"
6585 else
6586 case $cross_compiling:$ac_tool_warned in
6587 yes:)
6588 { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
6589 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
6590 ac_tool_warned=yes ;;
6591 esac
6592 LIPO=$ac_ct_LIPO
6593 fi
6594 else
6595 LIPO="$ac_cv_prog_LIPO"
6596 fi
6597
6598 if test -n "$ac_tool_prefix"; then
6599 # Extract the first word of "${ac_tool_prefix}otool", so it can be a program name with args.
6600 set dummy ${ac_tool_prefix}otool; ac_word=$2
6601 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
6602 $as_echo_n "checking for $ac_word... " >&6; }
6603 if ${ac_cv_prog_OTOOL+:} false; then :
6604 $as_echo_n "(cached) " >&6
6605 else
6606 if test -n "$OTOOL"; then
6607 ac_cv_prog_OTOOL="$OTOOL" # Let the user override the test.
6608 else
6609 as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
6610 for as_dir in $PATH
6611 do
6612 IFS=$as_save_IFS
6613 test -z "$as_dir" && as_dir=.
6614 for ac_exec_ext in '' $ac_executable_extensions; do
6615 if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
6616 ac_cv_prog_OTOOL="${ac_tool_prefix}otool"
6617 $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
6618 break 2
6619 fi
6620 done
6621 done
6622 IFS=$as_save_IFS
6623
6624 fi
6625 fi
6626 OTOOL=$ac_cv_prog_OTOOL
6627 if test -n "$OTOOL"; then
6628 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OTOOL" >&5
6629 $as_echo "$OTOOL" >&6; }
6630 else
6631 { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
6632 $as_echo "no" >&6; }
6633 fi
6634
6635
6636 fi
6637 if test -z "$ac_cv_prog_OTOOL"; then
6638 ac_ct_OTOOL=$OTOOL
6639 # Extract the first word of "otool", so it can be a program name with args.
6640 set dummy otool; ac_word=$2
6641 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
6642 $as_echo_n "checking for $ac_word... " >&6; }
6643 if ${ac_cv_prog_ac_ct_OTOOL+:} false; then :
6644 $as_echo_n "(cached) " >&6
6645 else
6646 if test -n "$ac_ct_OTOOL"; then
6647 ac_cv_prog_ac_ct_OTOOL="$ac_ct_OTOOL" # Let the user override the test.
6648 else
6649 as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
6650 for as_dir in $PATH
6651 do
6652 IFS=$as_save_IFS
6653 test -z "$as_dir" && as_dir=.
6654 for ac_exec_ext in '' $ac_executable_extensions; do
6655 if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
6656 ac_cv_prog_ac_ct_OTOOL="otool"
6657 $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
6658 break 2
6659 fi
6660 done
6661 done
6662 IFS=$as_save_IFS
6663
6664 fi
6665 fi
6666 ac_ct_OTOOL=$ac_cv_prog_ac_ct_OTOOL
6667 if test -n "$ac_ct_OTOOL"; then
6668 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OTOOL" >&5
6669 $as_echo "$ac_ct_OTOOL" >&6; }
6670 else
6671 { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
6672 $as_echo "no" >&6; }
6673 fi
6674
6675 if test "x$ac_ct_OTOOL" = x; then
6676 OTOOL=":"
6677 else
6678 case $cross_compiling:$ac_tool_warned in
6679 yes:)
6680 { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
6681 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
6682 ac_tool_warned=yes ;;
6683 esac
6684 OTOOL=$ac_ct_OTOOL
6685 fi
6686 else
6687 OTOOL="$ac_cv_prog_OTOOL"
6688 fi
6689
6690 if test -n "$ac_tool_prefix"; then
6691 # Extract the first word of "${ac_tool_prefix}otool64", so it can be a program name with args.
6692 set dummy ${ac_tool_prefix}otool64; ac_word=$2
6693 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
6694 $as_echo_n "checking for $ac_word... " >&6; }
6695 if ${ac_cv_prog_OTOOL64+:} false; then :
6696 $as_echo_n "(cached) " >&6
6697 else
6698 if test -n "$OTOOL64"; then
6699 ac_cv_prog_OTOOL64="$OTOOL64" # Let the user override the test.
6700 else
6701 as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
6702 for as_dir in $PATH
6703 do
6704 IFS=$as_save_IFS
6705 test -z "$as_dir" && as_dir=.
6706 for ac_exec_ext in '' $ac_executable_extensions; do
6707 if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
6708 ac_cv_prog_OTOOL64="${ac_tool_prefix}otool64"
6709 $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
6710 break 2
6711 fi
6712 done
6713 done
6714 IFS=$as_save_IFS
6715
6716 fi
6717 fi
6718 OTOOL64=$ac_cv_prog_OTOOL64
6719 if test -n "$OTOOL64"; then
6720 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OTOOL64" >&5
6721 $as_echo "$OTOOL64" >&6; }
6722 else
6723 { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
6724 $as_echo "no" >&6; }
6725 fi
6726
6727
6728 fi
6729 if test -z "$ac_cv_prog_OTOOL64"; then
6730 ac_ct_OTOOL64=$OTOOL64
6731 # Extract the first word of "otool64", so it can be a program name with args.
6732 set dummy otool64; ac_word=$2
6733 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
6734 $as_echo_n "checking for $ac_word... " >&6; }
6735 if ${ac_cv_prog_ac_ct_OTOOL64+:} false; then :
6736 $as_echo_n "(cached) " >&6
6737 else
6738 if test -n "$ac_ct_OTOOL64"; then
6739 ac_cv_prog_ac_ct_OTOOL64="$ac_ct_OTOOL64" # Let the user override the test.
6740 else
6741 as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
6742 for as_dir in $PATH
6743 do
6744 IFS=$as_save_IFS
6745 test -z "$as_dir" && as_dir=.
6746 for ac_exec_ext in '' $ac_executable_extensions; do
6747 if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
6748 ac_cv_prog_ac_ct_OTOOL64="otool64"
6749 $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
6750 break 2
6751 fi
6752 done
6753 done
6754 IFS=$as_save_IFS
6755
6756 fi
6757 fi
6758 ac_ct_OTOOL64=$ac_cv_prog_ac_ct_OTOOL64
6759 if test -n "$ac_ct_OTOOL64"; then
6760 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OTOOL64" >&5
6761 $as_echo "$ac_ct_OTOOL64" >&6; }
6762 else
6763 { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
6764 $as_echo "no" >&6; }
6765 fi
6766
6767 if test "x$ac_ct_OTOOL64" = x; then
6768 OTOOL64=":"
6769 else
6770 case $cross_compiling:$ac_tool_warned in
6771 yes:)
6772 { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
6773 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
6774 ac_tool_warned=yes ;;
6775 esac
6776 OTOOL64=$ac_ct_OTOOL64
6777 fi
6778 else
6779 OTOOL64="$ac_cv_prog_OTOOL64"
6780 fi
6781
6782
6783
6784
6785
6786
6787
6788
6789
6790
6791
6792
6793
6794
6795
6796
6797
6798
6799
6800
6801
6802
6803
6804
6805
6806
6807
6808 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -single_module linker flag" >&5
6809 $as_echo_n "checking for -single_module linker flag... " >&6; }
6810 if ${lt_cv_apple_cc_single_mod+:} false; then :
6811 $as_echo_n "(cached) " >&6
6812 else
6813 lt_cv_apple_cc_single_mod=no
6814 if test -z "${LT_MULTI_MODULE}"; then
6815 # By default we will add the -single_module flag. You can override
6816 # by either setting the environment variable LT_MULTI_MODULE
6817 # non-empty at configure time, or by adding -multi_module to the
6818 # link flags.
6819 rm -rf libconftest.dylib*
6820 echo "int foo(void){return 1;}" > conftest.c
6821 echo "$LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \
6822 -dynamiclib -Wl,-single_module conftest.c" >&5
6823 $LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \
6824 -dynamiclib -Wl,-single_module conftest.c 2>conftest.err
6825 _lt_result=$?
6826 # If there is a non-empty error log, and "single_module"
6827 # appears in it, assume the flag caused a linker warning
6828 if test -s conftest.err && $GREP single_module conftest.err; then
6829 cat conftest.err >&5
6830 # Otherwise, if the output was created with a 0 exit code from
6831 # the compiler, it worked.
6832 elif test -f libconftest.dylib && test $_lt_result -eq 0; then
6833 lt_cv_apple_cc_single_mod=yes
6834 else
6835 cat conftest.err >&5
6836 fi
6837 rm -rf libconftest.dylib*
6838 rm -f conftest.*
6839 fi
6840 fi
6841 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_apple_cc_single_mod" >&5
6842 $as_echo "$lt_cv_apple_cc_single_mod" >&6; }
6843
6844 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -exported_symbols_list linker flag" >&5
6845 $as_echo_n "checking for -exported_symbols_list linker flag... " >&6; }
6846 if ${lt_cv_ld_exported_symbols_list+:} false; then :
6847 $as_echo_n "(cached) " >&6
6848 else
6849 lt_cv_ld_exported_symbols_list=no
6850 save_LDFLAGS=$LDFLAGS
6851 echo "_main" > conftest.sym
6852 LDFLAGS="$LDFLAGS -Wl,-exported_symbols_list,conftest.sym"
6853 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
6854 /* end confdefs.h. */
6855
6856 int
6857 main ()
6858 {
6859
6860 ;
6861 return 0;
6862 }
6863 _ACEOF
6864 if ac_fn_c_try_link "$LINENO"; then :
6865 lt_cv_ld_exported_symbols_list=yes
6866 else
6867 lt_cv_ld_exported_symbols_list=no
6868 fi
6869 rm -f core conftest.err conftest.$ac_objext \
6870 conftest$ac_exeext conftest.$ac_ext
6871 LDFLAGS="$save_LDFLAGS"
6872
6873 fi
6874 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_exported_symbols_list" >&5
6875 $as_echo "$lt_cv_ld_exported_symbols_list" >&6; }
6876
6877 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -force_load linker flag" >&5
6878 $as_echo_n "checking for -force_load linker flag... " >&6; }
6879 if ${lt_cv_ld_force_load+:} false; then :
6880 $as_echo_n "(cached) " >&6
6881 else
6882 lt_cv_ld_force_load=no
6883 cat > conftest.c << _LT_EOF
6884 int forced_loaded() { return 2;}
6885 _LT_EOF
6886 echo "$LTCC $LTCFLAGS -c -o conftest.o conftest.c" >&5
6887 $LTCC $LTCFLAGS -c -o conftest.o conftest.c 2>&5
6888 echo "$AR cru libconftest.a conftest.o" >&5
6889 $AR cru libconftest.a conftest.o 2>&5
6890 echo "$RANLIB libconftest.a" >&5
6891 $RANLIB libconftest.a 2>&5
6892 cat > conftest.c << _LT_EOF
6893 int main() { return 0;}
6894 _LT_EOF
6895 echo "$LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a" >&5
6896 $LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a 2>conftest.err
6897 _lt_result=$?
6898 if test -s conftest.err && $GREP force_load conftest.err; then
6899 cat conftest.err >&5
6900 elif test -f conftest && test $_lt_result -eq 0 && $GREP forced_load conftest >/dev/null 2>&1 ; then
6901 lt_cv_ld_force_load=yes
6902 else
6903 cat conftest.err >&5
6904 fi
6905 rm -f conftest.err libconftest.a conftest conftest.c
6906 rm -rf conftest.dSYM
6907
6908 fi
6909 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_force_load" >&5
6910 $as_echo "$lt_cv_ld_force_load" >&6; }
6911 case $host_os in
6912 rhapsody* | darwin1.[012])
6913 _lt_dar_allow_undefined='${wl}-undefined ${wl}suppress' ;;
6914 darwin1.*)
6915 _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;;
6916 darwin*) # darwin 5.x on
6917 # if running on 10.5 or later, the deployment target defaults
6918 # to the OS version, if on x86, and 10.4, the deployment
6919 # target defaults to 10.4. Don't you love it?
6920 case ${MACOSX_DEPLOYMENT_TARGET-10.0},$host in
6921 10.0,*86*-darwin8*|10.0,*-darwin[91]*)
6922 _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;;
6923 10.[012]*)
6924 _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;;
6925 10.*)
6926 _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;;
6927 esac
6928 ;;
6929 esac
6930 if test "$lt_cv_apple_cc_single_mod" = "yes"; then
6931 _lt_dar_single_mod='$single_module'
6932 fi
6933 if test "$lt_cv_ld_exported_symbols_list" = "yes"; then
6934 _lt_dar_export_syms=' ${wl}-exported_symbols_list,$output_objdir/${libname}-symbols.expsym'
6935 else
6936 _lt_dar_export_syms='~$NMEDIT -s $output_objdir/${libname}-symbols.expsym ${lib}'
6937 fi
6938 if test "$DSYMUTIL" != ":" && test "$lt_cv_ld_force_load" = "no"; then
6939 _lt_dsymutil='~$DSYMUTIL $lib || :'
6940 else
6941 _lt_dsymutil=
6942 fi
6943 ;;
6944 esac
6945
6946 ac_ext=c
6947 ac_cpp='$CPP $CPPFLAGS'
6948 ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
6949 ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
6950 ac_compiler_gnu=$ac_cv_c_compiler_gnu
6951 { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to run the C preprocessor" >&5
6952 $as_echo_n "checking how to run the C preprocessor... " >&6; }
6953 # On Suns, sometimes $CPP names a directory.
6954 if test -n "$CPP" && test -d "$CPP"; then
6955 CPP=
6956 fi
6957 if test -z "$CPP"; then
6958 if ${ac_cv_prog_CPP+:} false; then :
6959 $as_echo_n "(cached) " >&6
6960 else
6961 # Double quotes because CPP needs to be expanded
6962 for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp"
6963 do
6964 ac_preproc_ok=false
6965 for ac_c_preproc_warn_flag in '' yes
6966 do
6967 # Use a header file that comes with gcc, so configuring glibc
6968 # with a fresh cross-compiler works.
6969 # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
6970 # <limits.h> exists even on freestanding compilers.
6971 # On the NeXT, cc -E runs the code through the compiler's parser,
6972 # not just through cpp. "Syntax error" is here to catch this case.
6973 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
6974 /* end confdefs.h. */
6975 #ifdef __STDC__
6976 # include <limits.h>
6977 #else
6978 # include <assert.h>
6979 #endif
6980 Syntax error
6981 _ACEOF
6982 if ac_fn_c_try_cpp "$LINENO"; then :
6983
6984 else
6985 # Broken: fails on valid input.
6986 continue
6987 fi
6988 rm -f conftest.err conftest.i conftest.$ac_ext
6989
6990 # OK, works on sane cases. Now check whether nonexistent headers
6991 # can be detected and how.
6992 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
6993 /* end confdefs.h. */
6994 #include <ac_nonexistent.h>
6995 _ACEOF
6996 if ac_fn_c_try_cpp "$LINENO"; then :
6997 # Broken: success on invalid input.
6998 continue
6999 else
7000 # Passes both tests.
7001 ac_preproc_ok=:
7002 break
7003 fi
7004 rm -f conftest.err conftest.i conftest.$ac_ext
7005
7006 done
7007 # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
7008 rm -f conftest.i conftest.err conftest.$ac_ext
7009 if $ac_preproc_ok; then :
7010 break
7011 fi
7012
7013 done
7014 ac_cv_prog_CPP=$CPP
7015
7016 fi
7017 CPP=$ac_cv_prog_CPP
7018 else
7019 ac_cv_prog_CPP=$CPP
7020 fi
7021 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CPP" >&5
7022 $as_echo "$CPP" >&6; }
7023 ac_preproc_ok=false
7024 for ac_c_preproc_warn_flag in '' yes
7025 do
7026 # Use a header file that comes with gcc, so configuring glibc
7027 # with a fresh cross-compiler works.
7028 # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
7029 # <limits.h> exists even on freestanding compilers.
7030 # On the NeXT, cc -E runs the code through the compiler's parser,
7031 # not just through cpp. "Syntax error" is here to catch this case.
7032 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
7033 /* end confdefs.h. */
7034 #ifdef __STDC__
7035 # include <limits.h>
7036 #else
7037 # include <assert.h>
7038 #endif
7039 Syntax error
7040 _ACEOF
7041 if ac_fn_c_try_cpp "$LINENO"; then :
7042
7043 else
7044 # Broken: fails on valid input.
7045 continue
7046 fi
7047 rm -f conftest.err conftest.i conftest.$ac_ext
7048
7049 # OK, works on sane cases. Now check whether nonexistent headers
7050 # can be detected and how.
7051 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
7052 /* end confdefs.h. */
7053 #include <ac_nonexistent.h>
7054 _ACEOF
7055 if ac_fn_c_try_cpp "$LINENO"; then :
7056 # Broken: success on invalid input.
7057 continue
7058 else
7059 # Passes both tests.
7060 ac_preproc_ok=:
7061 break
7062 fi
7063 rm -f conftest.err conftest.i conftest.$ac_ext
7064
7065 done
7066 # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
7067 rm -f conftest.i conftest.err conftest.$ac_ext
7068 if $ac_preproc_ok; then :
7069
7070 else
7071 { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
7072 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
7073 as_fn_error $? "C preprocessor \"$CPP\" fails sanity check
7074 See \`config.log' for more details" "$LINENO" 5; }
7075 fi
7076
7077 ac_ext=c
7078 ac_cpp='$CPP $CPPFLAGS'
7079 ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
7080 ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
7081 ac_compiler_gnu=$ac_cv_c_compiler_gnu
7082
7083
7084 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ANSI C header files" >&5
7085 $as_echo_n "checking for ANSI C header files... " >&6; }
7086 if ${ac_cv_header_stdc+:} false; then :
7087 $as_echo_n "(cached) " >&6
7088 else
7089 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
7090 /* end confdefs.h. */
7091 #include <stdlib.h>
7092 #include <stdarg.h>
7093 #include <string.h>
7094 #include <float.h>
7095
7096 int
7097 main ()
7098 {
7099
7100 ;
7101 return 0;
7102 }
7103 _ACEOF
7104 if ac_fn_c_try_compile "$LINENO"; then :
7105 ac_cv_header_stdc=yes
7106 else
7107 ac_cv_header_stdc=no
7108 fi
7109 rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
7110
7111 if test $ac_cv_header_stdc = yes; then
7112 # SunOS 4.x string.h does not declare mem*, contrary to ANSI.
7113 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
7114 /* end confdefs.h. */
7115 #include <string.h>
7116
7117 _ACEOF
7118 if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
7119 $EGREP "memchr" >/dev/null 2>&1; then :
7120
7121 else
7122 ac_cv_header_stdc=no
7123 fi
7124 rm -f conftest*
7125
7126 fi
7127
7128 if test $ac_cv_header_stdc = yes; then
7129 # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI.
7130 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
7131 /* end confdefs.h. */
7132 #include <stdlib.h>
7133
7134 _ACEOF
7135 if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
7136 $EGREP "free" >/dev/null 2>&1; then :
7137
7138 else
7139 ac_cv_header_stdc=no
7140 fi
7141 rm -f conftest*
7142
7143 fi
7144
7145 if test $ac_cv_header_stdc = yes; then
7146 # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi.
7147 if test "$cross_compiling" = yes; then :
7148 :
7149 else
7150 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
7151 /* end confdefs.h. */
7152 #include <ctype.h>
7153 #include <stdlib.h>
7154 #if ((' ' & 0x0FF) == 0x020)
7155 # define ISLOWER(c) ('a' <= (c) && (c) <= 'z')
7156 # define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c))
7157 #else
7158 # define ISLOWER(c) \
7159 (('a' <= (c) && (c) <= 'i') \
7160 || ('j' <= (c) && (c) <= 'r') \
7161 || ('s' <= (c) && (c) <= 'z'))
7162 # define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c))
7163 #endif
7164
7165 #define XOR(e, f) (((e) && !(f)) || (!(e) && (f)))
7166 int
7167 main ()
7168 {
7169 int i;
7170 for (i = 0; i < 256; i++)
7171 if (XOR (islower (i), ISLOWER (i))
7172 || toupper (i) != TOUPPER (i))
7173 return 2;
7174 return 0;
7175 }
7176 _ACEOF
7177 if ac_fn_c_try_run "$LINENO"; then :
7178
7179 else
7180 ac_cv_header_stdc=no
7181 fi
7182 rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
7183 conftest.$ac_objext conftest.beam conftest.$ac_ext
7184 fi
7185
7186 fi
7187 fi
7188 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdc" >&5
7189 $as_echo "$ac_cv_header_stdc" >&6; }
7190 if test $ac_cv_header_stdc = yes; then
7191
7192 $as_echo "#define STDC_HEADERS 1" >>confdefs.h
7193
7194 fi
7195
7196 # On IRIX 5.3, sys/types and inttypes.h are conflicting.
7197 for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \
7198 inttypes.h stdint.h unistd.h
7199 do :
7200 as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
7201 ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default
7202 "
7203 if eval test \"x\$"$as_ac_Header"\" = x"yes"; then :
7204 cat >>confdefs.h <<_ACEOF
7205 #define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
7206 _ACEOF
7207
7208 fi
7209
7210 done
7211
7212
7213 for ac_header in dlfcn.h
7214 do :
7215 ac_fn_c_check_header_compile "$LINENO" "dlfcn.h" "ac_cv_header_dlfcn_h" "$ac_includes_default
7216 "
7217 if test "x$ac_cv_header_dlfcn_h" = xyes; then :
7218 cat >>confdefs.h <<_ACEOF
7219 #define HAVE_DLFCN_H 1
7220 _ACEOF
7221
7222 fi
7223
7224 done
7225
7226
7227
7228
7229
7230 # Set options
7231
7232
7233
7234 enable_dlopen=no
7235
7236
7237 enable_win32_dll=no
7238
7239
7240 # Check whether --enable-shared was given.
7241 if test "${enable_shared+set}" = set; then :
7242 enableval=$enable_shared; p=${PACKAGE-default}
7243 case $enableval in
7244 yes) enable_shared=yes ;;
7245 no) enable_shared=no ;;
7246 *)
7247 enable_shared=no
7248 # Look at the argument we got. We use all the common list separators.
7249 lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
7250 for pkg in $enableval; do
7251 IFS="$lt_save_ifs"
7252 if test "X$pkg" = "X$p"; then
7253 enable_shared=yes
7254 fi
7255 done
7256 IFS="$lt_save_ifs"
7257 ;;
7258 esac
7259 else
7260 enable_shared=yes
7261 fi
7262
7263
7264
7265
7266
7267
7268
7269
7270
7271 # Check whether --enable-static was given.
7272 if test "${enable_static+set}" = set; then :
7273 enableval=$enable_static; p=${PACKAGE-default}
7274 case $enableval in
7275 yes) enable_static=yes ;;
7276 no) enable_static=no ;;
7277 *)
7278 enable_static=no
7279 # Look at the argument we got. We use all the common list separators.
7280 lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
7281 for pkg in $enableval; do
7282 IFS="$lt_save_ifs"
7283 if test "X$pkg" = "X$p"; then
7284 enable_static=yes
7285 fi
7286 done
7287 IFS="$lt_save_ifs"
7288 ;;
7289 esac
7290 else
7291 enable_static=yes
7292 fi
7293
7294
7295
7296
7297
7298
7299
7300
7301
7302
7303 # Check whether --with-pic was given.
7304 if test "${with_pic+set}" = set; then :
7305 withval=$with_pic; lt_p=${PACKAGE-default}
7306 case $withval in
7307 yes|no) pic_mode=$withval ;;
7308 *)
7309 pic_mode=default
7310 # Look at the argument we got. We use all the common list separators.
7311 lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
7312 for lt_pkg in $withval; do
7313 IFS="$lt_save_ifs"
7314 if test "X$lt_pkg" = "X$lt_p"; then
7315 pic_mode=yes
7316 fi
7317 done
7318 IFS="$lt_save_ifs"
7319 ;;
7320 esac
7321 else
7322 pic_mode=default
7323 fi
7324
7325
7326 test -z "$pic_mode" && pic_mode=default
7327
7328
7329
7330
7331
7332
7333
7334 # Check whether --enable-fast-install was given.
7335 if test "${enable_fast_install+set}" = set; then :
7336 enableval=$enable_fast_install; p=${PACKAGE-default}
7337 case $enableval in
7338 yes) enable_fast_install=yes ;;
7339 no) enable_fast_install=no ;;
7340 *)
7341 enable_fast_install=no
7342 # Look at the argument we got. We use all the common list separators.
7343 lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
7344 for pkg in $enableval; do
7345 IFS="$lt_save_ifs"
7346 if test "X$pkg" = "X$p"; then
7347 enable_fast_install=yes
7348 fi
7349 done
7350 IFS="$lt_save_ifs"
7351 ;;
7352 esac
7353 else
7354 enable_fast_install=yes
7355 fi
7356
7357
7358
7359
7360
7361
7362
7363
7364
7365
7366
7367 # This can be used to rebuild libtool when needed
7368 LIBTOOL_DEPS="$ltmain"
7369
7370 # Always use our own libtool.
7371 LIBTOOL='$(SHELL) $(top_builddir)/libtool'
7372
7373
7374
7375
7376
7377
7378
7379
7380
7381
7382
7383
7384
7385
7386
7387
7388
7389
7390
7391
7392
7393
7394
7395
7396
7397
7398
7399
7400
7401
7402 test -z "$LN_S" && LN_S="ln -s"
7403
7404
7405
7406
7407
7408
7409
7410
7411
7412
7413
7414
7415
7416
7417 if test -n "${ZSH_VERSION+set}" ; then
7418 setopt NO_GLOB_SUBST
7419 fi
7420
7421 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for objdir" >&5
7422 $as_echo_n "checking for objdir... " >&6; }
7423 if ${lt_cv_objdir+:} false; then :
7424 $as_echo_n "(cached) " >&6
7425 else
7426 rm -f .libs 2>/dev/null
7427 mkdir .libs 2>/dev/null
7428 if test -d .libs; then
7429 lt_cv_objdir=.libs
7430 else
7431 # MS-DOS does not allow filenames that begin with a dot.
7432 lt_cv_objdir=_libs
7433 fi
7434 rmdir .libs 2>/dev/null
7435 fi
7436 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_objdir" >&5
7437 $as_echo "$lt_cv_objdir" >&6; }
7438 objdir=$lt_cv_objdir
7439
7440
7441
7442
7443
7444 cat >>confdefs.h <<_ACEOF
7445 #define LT_OBJDIR "$lt_cv_objdir/"
7446 _ACEOF
7447
7448
7449
7450
7451 case $host_os in
7452 aix3*)
7453 # AIX sometimes has problems with the GCC collect2 program. For some
7454 # reason, if we set the COLLECT_NAMES environment variable, the problems
7455 # vanish in a puff of smoke.
7456 if test "X${COLLECT_NAMES+set}" != Xset; then
7457 COLLECT_NAMES=
7458 export COLLECT_NAMES
7459 fi
7460 ;;
7461 esac
7462
7463 # Global variables:
7464 ofile=libtool
7465 can_build_shared=yes
7466
7467 # All known linkers require a `.a' archive for static linking (except MSVC,
7468 # which needs '.lib').
7469 libext=a
7470
7471 with_gnu_ld="$lt_cv_prog_gnu_ld"
7472
7473 old_CC="$CC"
7474 old_CFLAGS="$CFLAGS"
7475
7476 # Set sane defaults for various variables
7477 test -z "$CC" && CC=cc
7478 test -z "$LTCC" && LTCC=$CC
7479 test -z "$LTCFLAGS" && LTCFLAGS=$CFLAGS
7480 test -z "$LD" && LD=ld
7481 test -z "$ac_objext" && ac_objext=o
7482
7483 for cc_temp in $compiler""; do
7484 case $cc_temp in
7485 compile | *[\\/]compile | ccache | *[\\/]ccache ) ;;
7486 distcc | *[\\/]distcc | purify | *[\\/]purify ) ;;
7487 \-*) ;;
7488 *) break;;
7489 esac
7490 done
7491 cc_basename=`$ECHO "$cc_temp" | $SED "s%.*/%%; s%^$host_alias-%%"`
7492
7493
7494 # Only perform the check for file, if the check method requires it
7495 test -z "$MAGIC_CMD" && MAGIC_CMD=file
7496 case $deplibs_check_method in
7497 file_magic*)
7498 if test "$file_magic_cmd" = '$MAGIC_CMD'; then
7499 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ${ac_tool_prefix}file" >&5
7500 $as_echo_n "checking for ${ac_tool_prefix}file... " >&6; }
7501 if ${lt_cv_path_MAGIC_CMD+:} false; then :
7502 $as_echo_n "(cached) " >&6
7503 else
7504 case $MAGIC_CMD in
7505 [\\/*] | ?:[\\/]*)
7506 lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path.
7507 ;;
7508 *)
7509 lt_save_MAGIC_CMD="$MAGIC_CMD"
7510 lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
7511 ac_dummy="/usr/bin$PATH_SEPARATOR$PATH"
7512 for ac_dir in $ac_dummy; do
7513 IFS="$lt_save_ifs"
7514 test -z "$ac_dir" && ac_dir=.
7515 if test -f $ac_dir/${ac_tool_prefix}file; then
7516 lt_cv_path_MAGIC_CMD="$ac_dir/${ac_tool_prefix}file"
7517 if test -n "$file_magic_test_file"; then
7518 case $deplibs_check_method in
7519 "file_magic "*)
7520 file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"`
7521 MAGIC_CMD="$lt_cv_path_MAGIC_CMD"
7522 if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null |
7523 $EGREP "$file_magic_regex" > /dev/null; then
7524 :
7525 else
7526 cat <<_LT_EOF 1>&2
7527
7528 *** Warning: the command libtool uses to detect shared libraries,
7529 *** $file_magic_cmd, produces output that libtool cannot recognize.
7530 *** The result is that libtool may fail to recognize shared libraries
7531 *** as such. This will affect the creation of libtool libraries that
7532 *** depend on shared libraries, but programs linked with such libtool
7533 *** libraries will work regardless of this problem. Nevertheless, you
7534 *** may want to report the problem to your system manager and/or to
7535 *** bug-libtool@gnu.org
7536
7537 _LT_EOF
7538 fi ;;
7539 esac
7540 fi
7541 break
7542 fi
7543 done
7544 IFS="$lt_save_ifs"
7545 MAGIC_CMD="$lt_save_MAGIC_CMD"
7546 ;;
7547 esac
7548 fi
7549
7550 MAGIC_CMD="$lt_cv_path_MAGIC_CMD"
7551 if test -n "$MAGIC_CMD"; then
7552 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MAGIC_CMD" >&5
7553 $as_echo "$MAGIC_CMD" >&6; }
7554 else
7555 { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
7556 $as_echo "no" >&6; }
7557 fi
7558
7559
7560
7561
7562
7563 if test -z "$lt_cv_path_MAGIC_CMD"; then
7564 if test -n "$ac_tool_prefix"; then
7565 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for file" >&5
7566 $as_echo_n "checking for file... " >&6; }
7567 if ${lt_cv_path_MAGIC_CMD+:} false; then :
7568 $as_echo_n "(cached) " >&6
7569 else
7570 case $MAGIC_CMD in
7571 [\\/*] | ?:[\\/]*)
7572 lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path.
7573 ;;
7574 *)
7575 lt_save_MAGIC_CMD="$MAGIC_CMD"
7576 lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
7577 ac_dummy="/usr/bin$PATH_SEPARATOR$PATH"
7578 for ac_dir in $ac_dummy; do
7579 IFS="$lt_save_ifs"
7580 test -z "$ac_dir" && ac_dir=.
7581 if test -f $ac_dir/file; then
7582 lt_cv_path_MAGIC_CMD="$ac_dir/file"
7583 if test -n "$file_magic_test_file"; then
7584 case $deplibs_check_method in
7585 "file_magic "*)
7586 file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"`
7587 MAGIC_CMD="$lt_cv_path_MAGIC_CMD"
7588 if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null |
7589 $EGREP "$file_magic_regex" > /dev/null; then
7590 :
7591 else
7592 cat <<_LT_EOF 1>&2
7593
7594 *** Warning: the command libtool uses to detect shared libraries,
7595 *** $file_magic_cmd, produces output that libtool cannot recognize.
7596 *** The result is that libtool may fail to recognize shared libraries
7597 *** as such. This will affect the creation of libtool libraries that
7598 *** depend on shared libraries, but programs linked with such libtool
7599 *** libraries will work regardless of this problem. Nevertheless, you
7600 *** may want to report the problem to your system manager and/or to
7601 *** bug-libtool@gnu.org
7602
7603 _LT_EOF
7604 fi ;;
7605 esac
7606 fi
7607 break
7608 fi
7609 done
7610 IFS="$lt_save_ifs"
7611 MAGIC_CMD="$lt_save_MAGIC_CMD"
7612 ;;
7613 esac
7614 fi
7615
7616 MAGIC_CMD="$lt_cv_path_MAGIC_CMD"
7617 if test -n "$MAGIC_CMD"; then
7618 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MAGIC_CMD" >&5
7619 $as_echo "$MAGIC_CMD" >&6; }
7620 else
7621 { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
7622 $as_echo "no" >&6; }
7623 fi
7624
7625
7626 else
7627 MAGIC_CMD=:
7628 fi
7629 fi
7630
7631 fi
7632 ;;
7633 esac
7634
7635 # Use C for the default configuration in the libtool script
7636
7637 lt_save_CC="$CC"
7638 ac_ext=c
7639 ac_cpp='$CPP $CPPFLAGS'
7640 ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
7641 ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
7642 ac_compiler_gnu=$ac_cv_c_compiler_gnu
7643
7644
7645 # Source file extension for C test sources.
7646 ac_ext=c
7647
7648 # Object file extension for compiled C test sources.
7649 objext=o
7650 objext=$objext
7651
7652 # Code to be used in simple compile tests
7653 lt_simple_compile_test_code="int some_variable = 0;"
7654
7655 # Code to be used in simple link tests
7656 lt_simple_link_test_code='int main(){return(0);}'
7657
7658
7659
7660
7661
7662
7663
7664 # If no C compiler was specified, use CC.
7665 LTCC=${LTCC-"$CC"}
7666
7667 # If no C compiler flags were specified, use CFLAGS.
7668 LTCFLAGS=${LTCFLAGS-"$CFLAGS"}
7669
7670 # Allow CC to be a program name with arguments.
7671 compiler=$CC
7672
7673 # Save the default compiler, since it gets overwritten when the other
7674 # tags are being tested, and _LT_TAGVAR(compiler, []) is a NOP.
7675 compiler_DEFAULT=$CC
7676
7677 # save warnings/boilerplate of simple test code
7678 ac_outfile=conftest.$ac_objext
7679 echo "$lt_simple_compile_test_code" >conftest.$ac_ext
7680 eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err
7681 _lt_compiler_boilerplate=`cat conftest.err`
7682 $RM conftest*
7683
7684 ac_outfile=conftest.$ac_objext
7685 echo "$lt_simple_link_test_code" >conftest.$ac_ext
7686 eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err
7687 _lt_linker_boilerplate=`cat conftest.err`
7688 $RM -r conftest*
7689
7690
7691 ## CAVEAT EMPTOR:
7692 ## There is no encapsulation within the following macros, do not change
7693 ## the running order or otherwise move them around unless you know exactly
7694 ## what you are doing...
7695 if test -n "$compiler"; then
7696
7697 lt_prog_compiler_no_builtin_flag=
7698
7699 if test "$GCC" = yes; then
7700 case $cc_basename in
7701 nvcc*)
7702 lt_prog_compiler_no_builtin_flag=' -Xcompiler -fno-builtin' ;;
7703 *)
7704 lt_prog_compiler_no_builtin_flag=' -fno-builtin' ;;
7705 esac
7706
7707 { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -fno-rtti -fno-exceptions" >&5
7708 $as_echo_n "checking if $compiler supports -fno-rtti -fno-exceptions... " >&6; }
7709 if ${lt_cv_prog_compiler_rtti_exceptions+:} false; then :
7710 $as_echo_n "(cached) " >&6
7711 else
7712 lt_cv_prog_compiler_rtti_exceptions=no
7713 ac_outfile=conftest.$ac_objext
7714 echo "$lt_simple_compile_test_code" > conftest.$ac_ext
7715 lt_compiler_flag="-fno-rtti -fno-exceptions"
7716 # Insert the option either (1) after the last *FLAGS variable, or
7717 # (2) before a word containing "conftest.", or (3) at the end.
7718 # Note that $ac_compile itself does not contain backslashes and begins
7719 # with a dollar sign (not a hyphen), so the echo should work correctly.
7720 # The option is referenced via a variable to avoid confusing sed.
7721 lt_compile=`echo "$ac_compile" | $SED \
7722 -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
7723 -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
7724 -e 's:$: $lt_compiler_flag:'`
7725 (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5)
7726 (eval "$lt_compile" 2>conftest.err)
7727 ac_status=$?
7728 cat conftest.err >&5
7729 echo "$as_me:$LINENO: \$? = $ac_status" >&5
7730 if (exit $ac_status) && test -s "$ac_outfile"; then
7731 # The compiler can only warn and ignore the option if not recognized
7732 # So say no if there are warnings other than the usual output.
7733 $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp
7734 $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
7735 if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then
7736 lt_cv_prog_compiler_rtti_exceptions=yes
7737 fi
7738 fi
7739 $RM conftest*
7740
7741 fi
7742 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_rtti_exceptions" >&5
7743 $as_echo "$lt_cv_prog_compiler_rtti_exceptions" >&6; }
7744
7745 if test x"$lt_cv_prog_compiler_rtti_exceptions" = xyes; then
7746 lt_prog_compiler_no_builtin_flag="$lt_prog_compiler_no_builtin_flag -fno-rtti -fno-exceptions"
7747 else
7748 :
7749 fi
7750
7751 fi
7752
7753
7754
7755
7756
7757
7758 lt_prog_compiler_wl=
7759 lt_prog_compiler_pic=
7760 lt_prog_compiler_static=
7761
7762
7763 if test "$GCC" = yes; then
7764 lt_prog_compiler_wl='-Wl,'
7765 lt_prog_compiler_static='-static'
7766
7767 case $host_os in
7768 aix*)
7769 # All AIX code is PIC.
7770 if test "$host_cpu" = ia64; then
7771 # AIX 5 now supports IA64 processor
7772 lt_prog_compiler_static='-Bstatic'
7773 fi
7774 ;;
7775
7776 amigaos*)
7777 case $host_cpu in
7778 powerpc)
7779 # see comment about AmigaOS4 .so support
7780 lt_prog_compiler_pic='-fPIC'
7781 ;;
7782 m68k)
7783 # FIXME: we need at least 68020 code to build shared libraries, but
7784 # adding the `-m68020' flag to GCC prevents building anything better,
7785 # like `-m68040'.
7786 lt_prog_compiler_pic='-m68020 -resident32 -malways-restore-a4'
7787 ;;
7788 esac
7789 ;;
7790
7791 beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*)
7792 # PIC is the default for these OSes.
7793 ;;
7794
7795 mingw* | cygwin* | pw32* | os2* | cegcc*)
7796 # This hack is so that the source file can tell whether it is being
7797 # built for inclusion in a dll (and should export symbols for example).
7798 # Although the cygwin gcc ignores -fPIC, still need this for old-style
7799 # (--disable-auto-import) libraries
7800 lt_prog_compiler_pic='-DDLL_EXPORT'
7801 ;;
7802
7803 darwin* | rhapsody*)
7804 # PIC is the default on this platform
7805 # Common symbols not allowed in MH_DYLIB files
7806 lt_prog_compiler_pic='-fno-common'
7807 ;;
7808
7809 haiku*)
7810 # PIC is the default for Haiku.
7811 # The "-static" flag exists, but is broken.
7812 lt_prog_compiler_static=
7813 ;;
7814
7815 hpux*)
7816 # PIC is the default for 64-bit PA HP-UX, but not for 32-bit
7817 # PA HP-UX. On IA64 HP-UX, PIC is the default but the pic flag
7818 # sets the default TLS model and affects inlining.
7819 case $host_cpu in
7820 hppa*64*)
7821 # +Z the default
7822 ;;
7823 *)
7824 lt_prog_compiler_pic='-fPIC'
7825 ;;
7826 esac
7827 ;;
7828
7829 interix[3-9]*)
7830 # Interix 3.x gcc -fpic/-fPIC options generate broken code.
7831 # Instead, we relocate shared libraries at runtime.
7832 ;;
7833
7834 msdosdjgpp*)
7835 # Just because we use GCC doesn't mean we suddenly get shared libraries
7836 # on systems that don't support them.
7837 lt_prog_compiler_can_build_shared=no
7838 enable_shared=no
7839 ;;
7840
7841 *nto* | *qnx*)
7842 # QNX uses GNU C++, but need to define -shared option too, otherwise
7843 # it will coredump.
7844 lt_prog_compiler_pic='-fPIC -shared'
7845 ;;
7846
7847 sysv4*MP*)
7848 if test -d /usr/nec; then
7849 lt_prog_compiler_pic=-Kconform_pic
7850 fi
7851 ;;
7852
7853 *)
7854 lt_prog_compiler_pic='-fPIC'
7855 ;;
7856 esac
7857
7858 case $cc_basename in
7859 nvcc*) # Cuda Compiler Driver 2.2
7860 lt_prog_compiler_wl='-Xlinker '
7861 if test -n "$lt_prog_compiler_pic"; then
7862 lt_prog_compiler_pic="-Xcompiler $lt_prog_compiler_pic"
7863 fi
7864 ;;
7865 esac
7866 else
7867 # PORTME Check for flag to pass linker flags through the system compiler.
7868 case $host_os in
7869 aix*)
7870 lt_prog_compiler_wl='-Wl,'
7871 if test "$host_cpu" = ia64; then
7872 # AIX 5 now supports IA64 processor
7873 lt_prog_compiler_static='-Bstatic'
7874 else
7875 lt_prog_compiler_static='-bnso -bI:/lib/syscalls.exp'
7876 fi
7877 ;;
7878
7879 mingw* | cygwin* | pw32* | os2* | cegcc*)
7880 # This hack is so that the source file can tell whether it is being
7881 # built for inclusion in a dll (and should export symbols for example).
7882 lt_prog_compiler_pic='-DDLL_EXPORT'
7883 ;;
7884
7885 hpux9* | hpux10* | hpux11*)
7886 lt_prog_compiler_wl='-Wl,'
7887 # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but
7888 # not for PA HP-UX.
7889 case $host_cpu in
7890 hppa*64*|ia64*)
7891 # +Z the default
7892 ;;
7893 *)
7894 lt_prog_compiler_pic='+Z'
7895 ;;
7896 esac
7897 # Is there a better lt_prog_compiler_static that works with the bundled CC?
7898 lt_prog_compiler_static='${wl}-a ${wl}archive'
7899 ;;
7900
7901 irix5* | irix6* | nonstopux*)
7902 lt_prog_compiler_wl='-Wl,'
7903 # PIC (with -KPIC) is the default.
7904 lt_prog_compiler_static='-non_shared'
7905 ;;
7906
7907 linux* | k*bsd*-gnu | kopensolaris*-gnu)
7908 case $cc_basename in
7909 # old Intel for x86_64 which still supported -KPIC.
7910 ecc*)
7911 lt_prog_compiler_wl='-Wl,'
7912 lt_prog_compiler_pic='-KPIC'
7913 lt_prog_compiler_static='-static'
7914 ;;
7915 # icc used to be incompatible with GCC.
7916 # ICC 10 doesn't accept -KPIC any more.
7917 icc* | ifort*)
7918 lt_prog_compiler_wl='-Wl,'
7919 lt_prog_compiler_pic='-fPIC'
7920 lt_prog_compiler_static='-static'
7921 ;;
7922 # Lahey Fortran 8.1.
7923 lf95*)
7924 lt_prog_compiler_wl='-Wl,'
7925 lt_prog_compiler_pic='--shared'
7926 lt_prog_compiler_static='--static'
7927 ;;
7928 nagfor*)
7929 # NAG Fortran compiler
7930 lt_prog_compiler_wl='-Wl,-Wl,,'
7931 lt_prog_compiler_pic='-PIC'
7932 lt_prog_compiler_static='-Bstatic'
7933 ;;
7934 pgcc* | pgf77* | pgf90* | pgf95* | pgfortran*)
7935 # Portland Group compilers (*not* the Pentium gcc compiler,
7936 # which looks to be a dead project)
7937 lt_prog_compiler_wl='-Wl,'
7938 lt_prog_compiler_pic='-fpic'
7939 lt_prog_compiler_static='-Bstatic'
7940 ;;
7941 ccc*)
7942 lt_prog_compiler_wl='-Wl,'
7943 # All Alpha code is PIC.
7944 lt_prog_compiler_static='-non_shared'
7945 ;;
7946 xl* | bgxl* | bgf* | mpixl*)
7947 # IBM XL C 8.0/Fortran 10.1, 11.1 on PPC and BlueGene
7948 lt_prog_compiler_wl='-Wl,'
7949 lt_prog_compiler_pic='-qpic'
7950 lt_prog_compiler_static='-qstaticlink'
7951 ;;
7952 *)
7953 case `$CC -V 2>&1 | sed 5q` in
7954 *Sun\ Ceres\ Fortran* | *Sun*Fortran*\ [1-7].* | *Sun*Fortran*\ 8.[0-3]*)
7955 # Sun Fortran 8.3 passes all unrecognized flags to the linker
7956 lt_prog_compiler_pic='-KPIC'
7957 lt_prog_compiler_static='-Bstatic'
7958 lt_prog_compiler_wl=''
7959 ;;
7960 *Sun\ F* | *Sun*Fortran*)
7961 lt_prog_compiler_pic='-KPIC'
7962 lt_prog_compiler_static='-Bstatic'
7963 lt_prog_compiler_wl='-Qoption ld '
7964 ;;
7965 *Sun\ C*)
7966 # Sun C 5.9
7967 lt_prog_compiler_pic='-KPIC'
7968 lt_prog_compiler_static='-Bstatic'
7969 lt_prog_compiler_wl='-Wl,'
7970 ;;
7971 *Intel*\ [CF]*Compiler*)
7972 lt_prog_compiler_wl='-Wl,'
7973 lt_prog_compiler_pic='-fPIC'
7974 lt_prog_compiler_static='-static'
7975 ;;
7976 *Portland\ Group*)
7977 lt_prog_compiler_wl='-Wl,'
7978 lt_prog_compiler_pic='-fpic'
7979 lt_prog_compiler_static='-Bstatic'
7980 ;;
7981 esac
7982 ;;
7983 esac
7984 ;;
7985
7986 newsos6)
7987 lt_prog_compiler_pic='-KPIC'
7988 lt_prog_compiler_static='-Bstatic'
7989 ;;
7990
7991 *nto* | *qnx*)
7992 # QNX uses GNU C++, but need to define -shared option too, otherwise
7993 # it will coredump.
7994 lt_prog_compiler_pic='-fPIC -shared'
7995 ;;
7996
7997 osf3* | osf4* | osf5*)
7998 lt_prog_compiler_wl='-Wl,'
7999 # All OSF/1 code is PIC.
8000 lt_prog_compiler_static='-non_shared'
8001 ;;
8002
8003 rdos*)
8004 lt_prog_compiler_static='-non_shared'
8005 ;;
8006
8007 solaris*)
8008 lt_prog_compiler_pic='-KPIC'
8009 lt_prog_compiler_static='-Bstatic'
8010 case $cc_basename in
8011 f77* | f90* | f95* | sunf77* | sunf90* | sunf95*)
8012 lt_prog_compiler_wl='-Qoption ld ';;
8013 *)
8014 lt_prog_compiler_wl='-Wl,';;
8015 esac
8016 ;;
8017
8018 sunos4*)
8019 lt_prog_compiler_wl='-Qoption ld '
8020 lt_prog_compiler_pic='-PIC'
8021 lt_prog_compiler_static='-Bstatic'
8022 ;;
8023
8024 sysv4 | sysv4.2uw2* | sysv4.3*)
8025 lt_prog_compiler_wl='-Wl,'
8026 lt_prog_compiler_pic='-KPIC'
8027 lt_prog_compiler_static='-Bstatic'
8028 ;;
8029
8030 sysv4*MP*)
8031 if test -d /usr/nec ;then
8032 lt_prog_compiler_pic='-Kconform_pic'
8033 lt_prog_compiler_static='-Bstatic'
8034 fi
8035 ;;
8036
8037 sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*)
8038 lt_prog_compiler_wl='-Wl,'
8039 lt_prog_compiler_pic='-KPIC'
8040 lt_prog_compiler_static='-Bstatic'
8041 ;;
8042
8043 unicos*)
8044 lt_prog_compiler_wl='-Wl,'
8045 lt_prog_compiler_can_build_shared=no
8046 ;;
8047
8048 uts4*)
8049 lt_prog_compiler_pic='-pic'
8050 lt_prog_compiler_static='-Bstatic'
8051 ;;
8052
8053 *)
8054 lt_prog_compiler_can_build_shared=no
8055 ;;
8056 esac
8057 fi
8058
8059 case $host_os in
8060 # For platforms which do not support PIC, -DPIC is meaningless:
8061 *djgpp*)
8062 lt_prog_compiler_pic=
8063 ;;
8064 *)
8065 lt_prog_compiler_pic="$lt_prog_compiler_pic -DPIC"
8066 ;;
8067 esac
8068
8069 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $compiler option to produce PIC" >&5
8070 $as_echo_n "checking for $compiler option to produce PIC... " >&6; }
8071 if ${lt_cv_prog_compiler_pic+:} false; then :
8072 $as_echo_n "(cached) " >&6
8073 else
8074 lt_cv_prog_compiler_pic=$lt_prog_compiler_pic
8075 fi
8076 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic" >&5
8077 $as_echo "$lt_cv_prog_compiler_pic" >&6; }
8078 lt_prog_compiler_pic=$lt_cv_prog_compiler_pic
8079
8080 #
8081 # Check to make sure the PIC flag actually works.
8082 #
8083 if test -n "$lt_prog_compiler_pic"; then
8084 { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler PIC flag $lt_prog_compiler_pic works" >&5
8085 $as_echo_n "checking if $compiler PIC flag $lt_prog_compiler_pic works... " >&6; }
8086 if ${lt_cv_prog_compiler_pic_works+:} false; then :
8087 $as_echo_n "(cached) " >&6
8088 else
8089 lt_cv_prog_compiler_pic_works=no
8090 ac_outfile=conftest.$ac_objext
8091 echo "$lt_simple_compile_test_code" > conftest.$ac_ext
8092 lt_compiler_flag="$lt_prog_compiler_pic -DPIC"
8093 # Insert the option either (1) after the last *FLAGS variable, or
8094 # (2) before a word containing "conftest.", or (3) at the end.
8095 # Note that $ac_compile itself does not contain backslashes and begins
8096 # with a dollar sign (not a hyphen), so the echo should work correctly.
8097 # The option is referenced via a variable to avoid confusing sed.
8098 lt_compile=`echo "$ac_compile" | $SED \
8099 -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
8100 -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
8101 -e 's:$: $lt_compiler_flag:'`
8102 (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5)
8103 (eval "$lt_compile" 2>conftest.err)
8104 ac_status=$?
8105 cat conftest.err >&5
8106 echo "$as_me:$LINENO: \$? = $ac_status" >&5
8107 if (exit $ac_status) && test -s "$ac_outfile"; then
8108 # The compiler can only warn and ignore the option if not recognized
8109 # So say no if there are warnings other than the usual output.
8110 $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp
8111 $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
8112 if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then
8113 lt_cv_prog_compiler_pic_works=yes
8114 fi
8115 fi
8116 $RM conftest*
8117
8118 fi
8119 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic_works" >&5
8120 $as_echo "$lt_cv_prog_compiler_pic_works" >&6; }
8121
8122 if test x"$lt_cv_prog_compiler_pic_works" = xyes; then
8123 case $lt_prog_compiler_pic in
8124 "" | " "*) ;;
8125 *) lt_prog_compiler_pic=" $lt_prog_compiler_pic" ;;
8126 esac
8127 else
8128 lt_prog_compiler_pic=
8129 lt_prog_compiler_can_build_shared=no
8130 fi
8131
8132 fi
8133
8134
8135
8136
8137
8138
8139
8140
8141
8142
8143
8144 #
8145 # Check to make sure the static flag actually works.
8146 #
8147 wl=$lt_prog_compiler_wl eval lt_tmp_static_flag=\"$lt_prog_compiler_static\"
8148 { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler static flag $lt_tmp_static_flag works" >&5
8149 $as_echo_n "checking if $compiler static flag $lt_tmp_static_flag works... " >&6; }
8150 if ${lt_cv_prog_compiler_static_works+:} false; then :
8151 $as_echo_n "(cached) " >&6
8152 else
8153 lt_cv_prog_compiler_static_works=no
8154 save_LDFLAGS="$LDFLAGS"
8155 LDFLAGS="$LDFLAGS $lt_tmp_static_flag"
8156 echo "$lt_simple_link_test_code" > conftest.$ac_ext
8157 if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then
8158 # The linker can only warn and ignore the option if not recognized
8159 # So say no if there are warnings
8160 if test -s conftest.err; then
8161 # Append any errors to the config.log.
8162 cat conftest.err 1>&5
8163 $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp
8164 $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
8165 if diff conftest.exp conftest.er2 >/dev/null; then
8166 lt_cv_prog_compiler_static_works=yes
8167 fi
8168 else
8169 lt_cv_prog_compiler_static_works=yes
8170 fi
8171 fi
8172 $RM -r conftest*
8173 LDFLAGS="$save_LDFLAGS"
8174
8175 fi
8176 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_static_works" >&5
8177 $as_echo "$lt_cv_prog_compiler_static_works" >&6; }
8178
8179 if test x"$lt_cv_prog_compiler_static_works" = xyes; then
8180 :
8181 else
8182 lt_prog_compiler_static=
8183 fi
8184
8185
8186
8187
8188
8189
8190
8191 { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5
8192 $as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; }
8193 if ${lt_cv_prog_compiler_c_o+:} false; then :
8194 $as_echo_n "(cached) " >&6
8195 else
8196 lt_cv_prog_compiler_c_o=no
8197 $RM -r conftest 2>/dev/null
8198 mkdir conftest
8199 cd conftest
8200 mkdir out
8201 echo "$lt_simple_compile_test_code" > conftest.$ac_ext
8202
8203 lt_compiler_flag="-o out/conftest2.$ac_objext"
8204 # Insert the option either (1) after the last *FLAGS variable, or
8205 # (2) before a word containing "conftest.", or (3) at the end.
8206 # Note that $ac_compile itself does not contain backslashes and begins
8207 # with a dollar sign (not a hyphen), so the echo should work correctly.
8208 lt_compile=`echo "$ac_compile" | $SED \
8209 -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
8210 -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
8211 -e 's:$: $lt_compiler_flag:'`
8212 (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5)
8213 (eval "$lt_compile" 2>out/conftest.err)
8214 ac_status=$?
8215 cat out/conftest.err >&5
8216 echo "$as_me:$LINENO: \$? = $ac_status" >&5
8217 if (exit $ac_status) && test -s out/conftest2.$ac_objext
8218 then
8219 # The compiler can only warn and ignore the option if not recognized
8220 # So say no if there are warnings
8221 $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp
8222 $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2
8223 if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then
8224 lt_cv_prog_compiler_c_o=yes
8225 fi
8226 fi
8227 chmod u+w . 2>&5
8228 $RM conftest*
8229 # SGI C++ compiler will create directory out/ii_files/ for
8230 # template instantiation
8231 test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files
8232 $RM out/* && rmdir out
8233 cd ..
8234 $RM -r conftest
8235 $RM conftest*
8236
8237 fi
8238 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o" >&5
8239 $as_echo "$lt_cv_prog_compiler_c_o" >&6; }
8240
8241
8242
8243
8244
8245
8246 { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5
8247 $as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; }
8248 if ${lt_cv_prog_compiler_c_o+:} false; then :
8249 $as_echo_n "(cached) " >&6
8250 else
8251 lt_cv_prog_compiler_c_o=no
8252 $RM -r conftest 2>/dev/null
8253 mkdir conftest
8254 cd conftest
8255 mkdir out
8256 echo "$lt_simple_compile_test_code" > conftest.$ac_ext
8257
8258 lt_compiler_flag="-o out/conftest2.$ac_objext"
8259 # Insert the option either (1) after the last *FLAGS variable, or
8260 # (2) before a word containing "conftest.", or (3) at the end.
8261 # Note that $ac_compile itself does not contain backslashes and begins
8262 # with a dollar sign (not a hyphen), so the echo should work correctly.
8263 lt_compile=`echo "$ac_compile" | $SED \
8264 -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
8265 -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
8266 -e 's:$: $lt_compiler_flag:'`
8267 (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5)
8268 (eval "$lt_compile" 2>out/conftest.err)
8269 ac_status=$?
8270 cat out/conftest.err >&5
8271 echo "$as_me:$LINENO: \$? = $ac_status" >&5
8272 if (exit $ac_status) && test -s out/conftest2.$ac_objext
8273 then
8274 # The compiler can only warn and ignore the option if not recognized
8275 # So say no if there are warnings
8276 $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp
8277 $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2
8278 if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then
8279 lt_cv_prog_compiler_c_o=yes
8280 fi
8281 fi
8282 chmod u+w . 2>&5
8283 $RM conftest*
8284 # SGI C++ compiler will create directory out/ii_files/ for
8285 # template instantiation
8286 test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files
8287 $RM out/* && rmdir out
8288 cd ..
8289 $RM -r conftest
8290 $RM conftest*
8291
8292 fi
8293 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o" >&5
8294 $as_echo "$lt_cv_prog_compiler_c_o" >&6; }
8295
8296
8297
8298
8299 hard_links="nottested"
8300 if test "$lt_cv_prog_compiler_c_o" = no && test "$need_locks" != no; then
8301 # do not overwrite the value of need_locks provided by the user
8302 { $as_echo "$as_me:${as_lineno-$LINENO}: checking if we can lock with hard links" >&5
8303 $as_echo_n "checking if we can lock with hard links... " >&6; }
8304 hard_links=yes
8305 $RM conftest*
8306 ln conftest.a conftest.b 2>/dev/null && hard_links=no
8307 touch conftest.a
8308 ln conftest.a conftest.b 2>&5 || hard_links=no
8309 ln conftest.a conftest.b 2>/dev/null && hard_links=no
8310 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $hard_links" >&5
8311 $as_echo "$hard_links" >&6; }
8312 if test "$hard_links" = no; then
8313 { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5
8314 $as_echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;}
8315 need_locks=warn
8316 fi
8317 else
8318 need_locks=no
8319 fi
8320
8321
8322
8323
8324
8325
8326 { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $compiler linker ($LD) supports shared libraries" >&5
8327 $as_echo_n "checking whether the $compiler linker ($LD) supports shared libraries... " >&6; }
8328
8329 runpath_var=
8330 allow_undefined_flag=
8331 always_export_symbols=no
8332 archive_cmds=
8333 archive_expsym_cmds=
8334 compiler_needs_object=no
8335 enable_shared_with_static_runtimes=no
8336 export_dynamic_flag_spec=
8337 export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
8338 hardcode_automatic=no
8339 hardcode_direct=no
8340 hardcode_direct_absolute=no
8341 hardcode_libdir_flag_spec=
8342 hardcode_libdir_separator=
8343 hardcode_minus_L=no
8344 hardcode_shlibpath_var=unsupported
8345 inherit_rpath=no
8346 link_all_deplibs=unknown
8347 module_cmds=
8348 module_expsym_cmds=
8349 old_archive_from_new_cmds=
8350 old_archive_from_expsyms_cmds=
8351 thread_safe_flag_spec=
8352 whole_archive_flag_spec=
8353 # include_expsyms should be a list of space-separated symbols to be *always*
8354 # included in the symbol list
8355 include_expsyms=
8356 # exclude_expsyms can be an extended regexp of symbols to exclude
8357 # it will be wrapped by ` (' and `)$', so one must not match beginning or
8358 # end of line. Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc',
8359 # as well as any symbol that contains `d'.
8360 exclude_expsyms='_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*'
8361 # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out
8362 # platforms (ab)use it in PIC code, but their linkers get confused if
8363 # the symbol is explicitly referenced. Since portable code cannot
8364 # rely on this symbol name, it's probably fine to never include it in
8365 # preloaded symbol tables.
8366 # Exclude shared library initialization/finalization symbols.
8367 extract_expsyms_cmds=
8368
8369 case $host_os in
8370 cygwin* | mingw* | pw32* | cegcc*)
8371 # FIXME: the MSVC++ port hasn't been tested in a loooong time
8372 # When not using gcc, we currently assume that we are using
8373 # Microsoft Visual C++.
8374 if test "$GCC" != yes; then
8375 with_gnu_ld=no
8376 fi
8377 ;;
8378 interix*)
8379 # we just hope/assume this is gcc and not c89 (= MSVC++)
8380 with_gnu_ld=yes
8381 ;;
8382 openbsd*)
8383 with_gnu_ld=no
8384 ;;
8385 esac
8386
8387 ld_shlibs=yes
8388
8389 # On some targets, GNU ld is compatible enough with the native linker
8390 # that we're better off using the native interface for both.
8391 lt_use_gnu_ld_interface=no
8392 if test "$with_gnu_ld" = yes; then
8393 case $host_os in
8394 aix*)
8395 # The AIX port of GNU ld has always aspired to compatibility
8396 # with the native linker. However, as the warning in the GNU ld
8397 # block says, versions before 2.19.5* couldn't really create working
8398 # shared libraries, regardless of the interface used.
8399 case `$LD -v 2>&1` in
8400 *\ \(GNU\ Binutils\)\ 2.19.5*) ;;
8401 *\ \(GNU\ Binutils\)\ 2.[2-9]*) ;;
8402 *\ \(GNU\ Binutils\)\ [3-9]*) ;;
8403 *)
8404 lt_use_gnu_ld_interface=yes
8405 ;;
8406 esac
8407 ;;
8408 *)
8409 lt_use_gnu_ld_interface=yes
8410 ;;
8411 esac
8412 fi
8413
8414 if test "$lt_use_gnu_ld_interface" = yes; then
8415 # If archive_cmds runs LD, not CC, wlarc should be empty
8416 wlarc='${wl}'
8417
8418 # Set some defaults for GNU ld with shared library support. These
8419 # are reset later if shared libraries are not supported. Putting them
8420 # here allows them to be overridden if necessary.
8421 runpath_var=LD_RUN_PATH
8422 hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
8423 export_dynamic_flag_spec='${wl}--export-dynamic'
8424 # ancient GNU ld didn't support --whole-archive et. al.
8425 if $LD --help 2>&1 | $GREP 'no-whole-archive' > /dev/null; then
8426 whole_archive_flag_spec="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive'
8427 else
8428 whole_archive_flag_spec=
8429 fi
8430 supports_anon_versioning=no
8431 case `$LD -v 2>&1` in
8432 *GNU\ gold*) supports_anon_versioning=yes ;;
8433 *\ [01].* | *\ 2.[0-9].* | *\ 2.10.*) ;; # catch versions < 2.11
8434 *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ...
8435 *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ...
8436 *\ 2.11.*) ;; # other 2.11 versions
8437 *) supports_anon_versioning=yes ;;
8438 esac
8439
8440 # See if GNU ld supports shared libraries.
8441 case $host_os in
8442 aix[3-9]*)
8443 # On AIX/PPC, the GNU linker is very broken
8444 if test "$host_cpu" != ia64; then
8445 ld_shlibs=no
8446 cat <<_LT_EOF 1>&2
8447
8448 *** Warning: the GNU linker, at least up to release 2.19, is reported
8449 *** to be unable to reliably create shared libraries on AIX.
8450 *** Therefore, libtool is disabling shared libraries support. If you
8451 *** really care for shared libraries, you may want to install binutils
8452 *** 2.20 or above, or modify your PATH so that a non-GNU linker is found.
8453 *** You will then need to restart the configuration process.
8454
8455 _LT_EOF
8456 fi
8457 ;;
8458
8459 amigaos*)
8460 case $host_cpu in
8461 powerpc)
8462 # see comment about AmigaOS4 .so support
8463 archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
8464 archive_expsym_cmds=''
8465 ;;
8466 m68k)
8467 archive_cmds='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)'
8468 hardcode_libdir_flag_spec='-L$libdir'
8469 hardcode_minus_L=yes
8470 ;;
8471 esac
8472 ;;
8473
8474 beos*)
8475 if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
8476 allow_undefined_flag=unsupported
8477 # Joseph Beckenbach <jrb3@best.com> says some releases of gcc
8478 # support --undefined. This deserves some investigation. FIXME
8479 archive_cmds='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
8480 else
8481 ld_shlibs=no
8482 fi
8483 ;;
8484
8485 cygwin* | mingw* | pw32* | cegcc*)
8486 # _LT_TAGVAR(hardcode_libdir_flag_spec, ) is actually meaningless,
8487 # as there is no search path for DLLs.
8488 hardcode_libdir_flag_spec='-L$libdir'
8489 export_dynamic_flag_spec='${wl}--export-all-symbols'
8490 allow_undefined_flag=unsupported
8491 always_export_symbols=no
8492 enable_shared_with_static_runtimes=yes
8493 export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1 DATA/;s/^.*[ ]__nm__\([^ ]*\)[ ][^ ]*/\1 DATA/;/^I[ ]/d;/^[AITW][ ]/s/.* //'\'' | sort | uniq > $export_symbols'
8494 exclude_expsyms='[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname'
8495
8496 if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then
8497 archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
8498 # If the export-symbols file already is a .def file (1st line
8499 # is EXPORTS), use it as is; otherwise, prepend...
8500 archive_expsym_cmds='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then
8501 cp $export_symbols $output_objdir/$soname.def;
8502 else
8503 echo EXPORTS > $output_objdir/$soname.def;
8504 cat $export_symbols >> $output_objdir/$soname.def;
8505 fi~
8506 $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
8507 else
8508 ld_shlibs=no
8509 fi
8510 ;;
8511
8512 haiku*)
8513 archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
8514 link_all_deplibs=yes
8515 ;;
8516
8517 interix[3-9]*)
8518 hardcode_direct=no
8519 hardcode_shlibpath_var=no
8520 hardcode_libdir_flag_spec='${wl}-rpath,$libdir'
8521 export_dynamic_flag_spec='${wl}-E'
8522 # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc.
8523 # Instead, shared libraries are loaded at an image base (0x10000000 by
8524 # default) and relocated if they conflict, which is a slow very memory
8525 # consuming and fragmenting process. To avoid this, we pick a random,
8526 # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link
8527 # time. Moving up from 0x10000000 also allows more sbrk(2) space.
8528 archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
8529 archive_expsym_cmds='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
8530 ;;
8531
8532 gnu* | linux* | tpf* | k*bsd*-gnu | kopensolaris*-gnu)
8533 tmp_diet=no
8534 if test "$host_os" = linux-dietlibc; then
8535 case $cc_basename in
8536 diet\ *) tmp_diet=yes;; # linux-dietlibc with static linking (!diet-dyn)
8537 esac
8538 fi
8539 if $LD --help 2>&1 | $EGREP ': supported targets:.* elf' > /dev/null \
8540 && test "$tmp_diet" = no
8541 then
8542 tmp_addflag=' $pic_flag'
8543 tmp_sharedflag='-shared'
8544 case $cc_basename,$host_cpu in
8545 pgcc*) # Portland Group C compiler
8546 whole_archive_flag_spec='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive'
8547 tmp_addflag=' $pic_flag'
8548 ;;
8549 pgf77* | pgf90* | pgf95* | pgfortran*)
8550 # Portland Group f77 and f90 compilers
8551 whole_archive_flag_spec='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive'
8552 tmp_addflag=' $pic_flag -Mnomain' ;;
8553 ecc*,ia64* | icc*,ia64*) # Intel C compiler on ia64
8554 tmp_addflag=' -i_dynamic' ;;
8555 efc*,ia64* | ifort*,ia64*) # Intel Fortran compiler on ia64
8556 tmp_addflag=' -i_dynamic -nofor_main' ;;
8557 ifc* | ifort*) # Intel Fortran compiler
8558 tmp_addflag=' -nofor_main' ;;
8559 lf95*) # Lahey Fortran 8.1
8560 whole_archive_flag_spec=
8561 tmp_sharedflag='--shared' ;;
8562 xl[cC]* | bgxl[cC]* | mpixl[cC]*) # IBM XL C 8.0 on PPC (deal with xlf below)
8563 tmp_sharedflag='-qmkshrobj'
8564 tmp_addflag= ;;
8565 nvcc*) # Cuda Compiler Driver 2.2
8566 whole_archive_flag_spec='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive'
8567 compiler_needs_object=yes
8568 ;;
8569 esac
8570 case `$CC -V 2>&1 | sed 5q` in
8571 *Sun\ C*) # Sun C 5.9
8572 whole_archive_flag_spec='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive'
8573 compiler_needs_object=yes
8574 tmp_sharedflag='-G' ;;
8575 *Sun\ F*) # Sun Fortran 8.3
8576 tmp_sharedflag='-G' ;;
8577 esac
8578 archive_cmds='$CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
8579
8580 if test "x$supports_anon_versioning" = xyes; then
8581 archive_expsym_cmds='echo "{ global:" > $output_objdir/$libname.ver~
8582 cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
8583 echo "local: *; };" >> $output_objdir/$libname.ver~
8584 $CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib'
8585 fi
8586
8587 case $cc_basename in
8588 xlf* | bgf* | bgxlf* | mpixlf*)
8589 # IBM XL Fortran 10.1 on PPC cannot create shared libs itself
8590 whole_archive_flag_spec='--whole-archive$convenience --no-whole-archive'
8591 hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
8592 archive_cmds='$LD -shared $libobjs $deplibs $linker_flags -soname $soname -o $lib'
8593 if test "x$supports_anon_versioning" = xyes; then
8594 archive_expsym_cmds='echo "{ global:" > $output_objdir/$libname.ver~
8595 cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
8596 echo "local: *; };" >> $output_objdir/$libname.ver~
8597 $LD -shared $libobjs $deplibs $linker_flags -soname $soname -version-script $output_objdir/$libname.ver -o $lib'
8598 fi
8599 ;;
8600 esac
8601 else
8602 ld_shlibs=no
8603 fi
8604 ;;
8605
8606 netbsd*)
8607 if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then
8608 archive_cmds='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib'
8609 wlarc=
8610 else
8611 archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
8612 archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
8613 fi
8614 ;;
8615
8616 solaris*)
8617 if $LD -v 2>&1 | $GREP 'BFD 2\.8' > /dev/null; then
8618 ld_shlibs=no
8619 cat <<_LT_EOF 1>&2
8620
8621 *** Warning: The releases 2.8.* of the GNU linker cannot reliably
8622 *** create shared libraries on Solaris systems. Therefore, libtool
8623 *** is disabling shared libraries support. We urge you to upgrade GNU
8624 *** binutils to release 2.9.1 or newer. Another option is to modify
8625 *** your PATH or compiler configuration so that the native linker is
8626 *** used, and then restart.
8627
8628 _LT_EOF
8629 elif $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
8630 archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
8631 archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
8632 else
8633 ld_shlibs=no
8634 fi
8635 ;;
8636
8637 sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*)
8638 case `$LD -v 2>&1` in
8639 *\ [01].* | *\ 2.[0-9].* | *\ 2.1[0-5].*)
8640 ld_shlibs=no
8641 cat <<_LT_EOF 1>&2
8642
8643 *** Warning: Releases of the GNU linker prior to 2.16.91.0.3 can not
8644 *** reliably create shared libraries on SCO systems. Therefore, libtool
8645 *** is disabling shared libraries support. We urge you to upgrade GNU
8646 *** binutils to release 2.16.91.0.3 or newer. Another option is to modify
8647 *** your PATH or compiler configuration so that the native linker is
8648 *** used, and then restart.
8649
8650 _LT_EOF
8651 ;;
8652 *)
8653 # For security reasons, it is highly recommended that you always
8654 # use absolute paths for naming shared libraries, and exclude the
8655 # DT_RUNPATH tag from executables and libraries. But doing so
8656 # requires that you compile everything twice, which is a pain.
8657 if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
8658 hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
8659 archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
8660 archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
8661 else
8662 ld_shlibs=no
8663 fi
8664 ;;
8665 esac
8666 ;;
8667
8668 sunos4*)
8669 archive_cmds='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags'
8670 wlarc=
8671 hardcode_direct=yes
8672 hardcode_shlibpath_var=no
8673 ;;
8674
8675 *)
8676 if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
8677 archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
8678 archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
8679 else
8680 ld_shlibs=no
8681 fi
8682 ;;
8683 esac
8684
8685 if test "$ld_shlibs" = no; then
8686 runpath_var=
8687 hardcode_libdir_flag_spec=
8688 export_dynamic_flag_spec=
8689 whole_archive_flag_spec=
8690 fi
8691 else
8692 # PORTME fill in a description of your system's linker (not GNU ld)
8693 case $host_os in
8694 aix3*)
8695 allow_undefined_flag=unsupported
8696 always_export_symbols=yes
8697 archive_expsym_cmds='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname'
8698 # Note: this linker hardcodes the directories in LIBPATH if there
8699 # are no directories specified by -L.
8700 hardcode_minus_L=yes
8701 if test "$GCC" = yes && test -z "$lt_prog_compiler_static"; then
8702 # Neither direct hardcoding nor static linking is supported with a
8703 # broken collect2.
8704 hardcode_direct=unsupported
8705 fi
8706 ;;
8707
8708 aix[4-9]*)
8709 if test "$host_cpu" = ia64; then
8710 # On IA64, the linker does run time linking by default, so we don't
8711 # have to do anything special.
8712 aix_use_runtimelinking=no
8713 exp_sym_flag='-Bexport'
8714 no_entry_flag=""
8715 else
8716 # If we're using GNU nm, then we don't want the "-C" option.
8717 # -C means demangle to AIX nm, but means don't demangle with GNU nm
8718 # Also, AIX nm treats weak defined symbols like other global
8719 # defined symbols, whereas GNU nm marks them as "W".
8720 if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then
8721 export_symbols_cmds='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && (substr(\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols'
8722 else
8723 export_symbols_cmds='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && (substr(\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols'
8724 fi
8725 aix_use_runtimelinking=no
8726
8727 # Test if we are trying to use run time linking or normal
8728 # AIX style linking. If -brtl is somewhere in LDFLAGS, we
8729 # need to do runtime linking.
8730 case $host_os in aix4.[23]|aix4.[23].*|aix[5-9]*)
8731 for ld_flag in $LDFLAGS; do
8732 if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then
8733 aix_use_runtimelinking=yes
8734 break
8735 fi
8736 done
8737 ;;
8738 esac
8739
8740 exp_sym_flag='-bexport'
8741 no_entry_flag='-bnoentry'
8742 fi
8743
8744 # When large executables or shared objects are built, AIX ld can
8745 # have problems creating the table of contents. If linking a library
8746 # or program results in "error TOC overflow" add -mminimal-toc to
8747 # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not
8748 # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS.
8749
8750 archive_cmds=''
8751 hardcode_direct=yes
8752 hardcode_direct_absolute=yes
8753 hardcode_libdir_separator=':'
8754 link_all_deplibs=yes
8755 file_list_spec='${wl}-f,'
8756
8757 if test "$GCC" = yes; then
8758 case $host_os in aix4.[012]|aix4.[012].*)
8759 # We only want to do this on AIX 4.2 and lower, the check
8760 # below for broken collect2 doesn't work under 4.3+
8761 collect2name=`${CC} -print-prog-name=collect2`
8762 if test -f "$collect2name" &&
8763 strings "$collect2name" | $GREP resolve_lib_name >/dev/null
8764 then
8765 # We have reworked collect2
8766 :
8767 else
8768 # We have old collect2
8769 hardcode_direct=unsupported
8770 # It fails to find uninstalled libraries when the uninstalled
8771 # path is not listed in the libpath. Setting hardcode_minus_L
8772 # to unsupported forces relinking
8773 hardcode_minus_L=yes
8774 hardcode_libdir_flag_spec='-L$libdir'
8775 hardcode_libdir_separator=
8776 fi
8777 ;;
8778 esac
8779 shared_flag='-shared'
8780 if test "$aix_use_runtimelinking" = yes; then
8781 shared_flag="$shared_flag "'${wl}-G'
8782 fi
8783 else
8784 # not using gcc
8785 if test "$host_cpu" = ia64; then
8786 # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release
8787 # chokes on -Wl,-G. The following line is correct:
8788 shared_flag='-G'
8789 else
8790 if test "$aix_use_runtimelinking" = yes; then
8791 shared_flag='${wl}-G'
8792 else
8793 shared_flag='${wl}-bM:SRE'
8794 fi
8795 fi
8796 fi
8797
8798 export_dynamic_flag_spec='${wl}-bexpall'
8799 # It seems that -bexpall does not export symbols beginning with
8800 # underscore (_), so it is better to generate a list of symbols to export.
8801 always_export_symbols=yes
8802 if test "$aix_use_runtimelinking" = yes; then
8803 # Warning - without using the other runtime loading flags (-brtl),
8804 # -berok will link without error, but may produce a broken library.
8805 allow_undefined_flag='-berok'
8806 # Determine the default libpath from the value encoded in an
8807 # empty executable.
8808 if test "${lt_cv_aix_libpath+set}" = set; then
8809 aix_libpath=$lt_cv_aix_libpath
8810 else
8811 if ${lt_cv_aix_libpath_+:} false; then :
8812 $as_echo_n "(cached) " >&6
8813 else
8814 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
8815 /* end confdefs.h. */
8816
8817 int
8818 main ()
8819 {
8820
8821 ;
8822 return 0;
8823 }
8824 _ACEOF
8825 if ac_fn_c_try_link "$LINENO"; then :
8826
8827 lt_aix_libpath_sed='
8828 /Import File Strings/,/^$/ {
8829 /^0/ {
8830 s/^0 *\([^ ]*\) *$/\1/
8831 p
8832 }
8833 }'
8834 lt_cv_aix_libpath_=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
8835 # Check for a 64-bit object if we didn't find anything.
8836 if test -z "$lt_cv_aix_libpath_"; then
8837 lt_cv_aix_libpath_=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
8838 fi
8839 fi
8840 rm -f core conftest.err conftest.$ac_objext \
8841 conftest$ac_exeext conftest.$ac_ext
8842 if test -z "$lt_cv_aix_libpath_"; then
8843 lt_cv_aix_libpath_="/usr/lib:/lib"
8844 fi
8845
8846 fi
8847
8848 aix_libpath=$lt_cv_aix_libpath_
8849 fi
8850
8851 hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath"
8852 archive_expsym_cmds='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then func_echo_all "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag"
8853 else
8854 if test "$host_cpu" = ia64; then
8855 hardcode_libdir_flag_spec='${wl}-R $libdir:/usr/lib:/lib'
8856 allow_undefined_flag="-z nodefs"
8857 archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols"
8858 else
8859 # Determine the default libpath from the value encoded in an
8860 # empty executable.
8861 if test "${lt_cv_aix_libpath+set}" = set; then
8862 aix_libpath=$lt_cv_aix_libpath
8863 else
8864 if ${lt_cv_aix_libpath_+:} false; then :
8865 $as_echo_n "(cached) " >&6
8866 else
8867 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
8868 /* end confdefs.h. */
8869
8870 int
8871 main ()
8872 {
8873
8874 ;
8875 return 0;
8876 }
8877 _ACEOF
8878 if ac_fn_c_try_link "$LINENO"; then :
8879
8880 lt_aix_libpath_sed='
8881 /Import File Strings/,/^$/ {
8882 /^0/ {
8883 s/^0 *\([^ ]*\) *$/\1/
8884 p
8885 }
8886 }'
8887 lt_cv_aix_libpath_=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
8888 # Check for a 64-bit object if we didn't find anything.
8889 if test -z "$lt_cv_aix_libpath_"; then
8890 lt_cv_aix_libpath_=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
8891 fi
8892 fi
8893 rm -f core conftest.err conftest.$ac_objext \
8894 conftest$ac_exeext conftest.$ac_ext
8895 if test -z "$lt_cv_aix_libpath_"; then
8896 lt_cv_aix_libpath_="/usr/lib:/lib"
8897 fi
8898
8899 fi
8900
8901 aix_libpath=$lt_cv_aix_libpath_
8902 fi
8903
8904 hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath"
8905 # Warning - without using the other run time loading flags,
8906 # -berok will link without error, but may produce a broken library.
8907 no_undefined_flag=' ${wl}-bernotok'
8908 allow_undefined_flag=' ${wl}-berok'
8909 if test "$with_gnu_ld" = yes; then
8910 # We only use this code for GNU lds that support --whole-archive.
8911 whole_archive_flag_spec='${wl}--whole-archive$convenience ${wl}--no-whole-archive'
8912 else
8913 # Exported symbols can be pulled into shared objects from archives
8914 whole_archive_flag_spec='$convenience'
8915 fi
8916 archive_cmds_need_lc=yes
8917 # This is similar to how AIX traditionally builds its shared libraries.
8918 archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname'
8919 fi
8920 fi
8921 ;;
8922
8923 amigaos*)
8924 case $host_cpu in
8925 powerpc)
8926 # see comment about AmigaOS4 .so support
8927 archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
8928 archive_expsym_cmds=''
8929 ;;
8930 m68k)
8931 archive_cmds='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)'
8932 hardcode_libdir_flag_spec='-L$libdir'
8933 hardcode_minus_L=yes
8934 ;;
8935 esac
8936 ;;
8937
8938 bsdi[45]*)
8939 export_dynamic_flag_spec=-rdynamic
8940 ;;
8941
8942 cygwin* | mingw* | pw32* | cegcc*)
8943 # When not using gcc, we currently assume that we are using
8944 # Microsoft Visual C++.
8945 # hardcode_libdir_flag_spec is actually meaningless, as there is
8946 # no search path for DLLs.
8947 case $cc_basename in
8948 cl*)
8949 # Native MSVC
8950 hardcode_libdir_flag_spec=' '
8951 allow_undefined_flag=unsupported
8952 always_export_symbols=yes
8953 file_list_spec='@'
8954 # Tell ltmain to make .lib files, not .a files.
8955 libext=lib
8956 # Tell ltmain to make .dll files, not .so files.
8957 shrext_cmds=".dll"
8958 # FIXME: Setting linknames here is a bad hack.
8959 archive_cmds='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-dll~linknames='
8960 archive_expsym_cmds='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then
8961 sed -n -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' -e '1\\\!p' < $export_symbols > $output_objdir/$soname.exp;
8962 else
8963 sed -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' < $export_symbols > $output_objdir/$soname.exp;
8964 fi~
8965 $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~
8966 linknames='
8967 # The linker will not automatically build a static lib if we build a DLL.
8968 # _LT_TAGVAR(old_archive_from_new_cmds, )='true'
8969 enable_shared_with_static_runtimes=yes
8970 exclude_expsyms='_NULL_IMPORT_DESCRIPTOR|_IMPORT_DESCRIPTOR_.*'
8971 export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1,DATA/'\'' | $SED -e '\''/^[AITW][ ]/s/.*[ ]//'\'' | sort | uniq > $export_symbols'
8972 # Don't use ranlib
8973 old_postinstall_cmds='chmod 644 $oldlib'
8974 postlink_cmds='lt_outputfile="@OUTPUT@"~
8975 lt_tool_outputfile="@TOOL_OUTPUT@"~
8976 case $lt_outputfile in
8977 *.exe|*.EXE) ;;
8978 *)
8979 lt_outputfile="$lt_outputfile.exe"
8980 lt_tool_outputfile="$lt_tool_outputfile.exe"
8981 ;;
8982 esac~
8983 if test "$MANIFEST_TOOL" != ":" && test -f "$lt_outputfile.manifest"; then
8984 $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1;
8985 $RM "$lt_outputfile.manifest";
8986 fi'
8987 ;;
8988 *)
8989 # Assume MSVC wrapper
8990 hardcode_libdir_flag_spec=' '
8991 allow_undefined_flag=unsupported
8992 # Tell ltmain to make .lib files, not .a files.
8993 libext=lib
8994 # Tell ltmain to make .dll files, not .so files.
8995 shrext_cmds=".dll"
8996 # FIXME: Setting linknames here is a bad hack.
8997 archive_cmds='$CC -o $lib $libobjs $compiler_flags `func_echo_all "$deplibs" | $SED '\''s/ -lc$//'\''` -link -dll~linknames='
8998 # The linker will automatically build a .lib file if we build a DLL.
8999 old_archive_from_new_cmds='true'
9000 # FIXME: Should let the user specify the lib program.
9001 old_archive_cmds='lib -OUT:$oldlib$oldobjs$old_deplibs'
9002 enable_shared_with_static_runtimes=yes
9003 ;;
9004 esac
9005 ;;
9006
9007 darwin* | rhapsody*)
9008
9009
9010 archive_cmds_need_lc=no
9011 hardcode_direct=no
9012 hardcode_automatic=yes
9013 hardcode_shlibpath_var=unsupported
9014 if test "$lt_cv_ld_force_load" = "yes"; then
9015 whole_archive_flag_spec='`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience ${wl}-force_load,$conv\"; done; func_echo_all \"$new_convenience\"`'
9016
9017 else
9018 whole_archive_flag_spec=''
9019 fi
9020 link_all_deplibs=yes
9021 allow_undefined_flag="$_lt_dar_allow_undefined"
9022 case $cc_basename in
9023 ifort*) _lt_dar_can_shared=yes ;;
9024 *) _lt_dar_can_shared=$GCC ;;
9025 esac
9026 if test "$_lt_dar_can_shared" = "yes"; then
9027 output_verbose_link_cmd=func_echo_all
9028 archive_cmds="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod${_lt_dsymutil}"
9029 module_cmds="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dsymutil}"
9030 archive_expsym_cmds="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring ${_lt_dar_single_mod}${_lt_dar_export_syms}${_lt_dsymutil}"
9031 module_expsym_cmds="sed -e 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dar_export_syms}${_lt_dsymutil}"
9032
9033 else
9034 ld_shlibs=no
9035 fi
9036
9037 ;;
9038
9039 dgux*)
9040 archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
9041 hardcode_libdir_flag_spec='-L$libdir'
9042 hardcode_shlibpath_var=no
9043 ;;
9044
9045 # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor
9046 # support. Future versions do this automatically, but an explicit c++rt0.o
9047 # does not break anything, and helps significantly (at the cost of a little
9048 # extra space).
9049 freebsd2.2*)
9050 archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o'
9051 hardcode_libdir_flag_spec='-R$libdir'
9052 hardcode_direct=yes
9053 hardcode_shlibpath_var=no
9054 ;;
9055
9056 # Unfortunately, older versions of FreeBSD 2 do not have this feature.
9057 freebsd2.*)
9058 archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
9059 hardcode_direct=yes
9060 hardcode_minus_L=yes
9061 hardcode_shlibpath_var=no
9062 ;;
9063
9064 # FreeBSD 3 and greater uses gcc -shared to do shared libraries.
9065 freebsd* | dragonfly*)
9066 archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
9067 hardcode_libdir_flag_spec='-R$libdir'
9068 hardcode_direct=yes
9069 hardcode_shlibpath_var=no
9070 ;;
9071
9072 hpux9*)
9073 if test "$GCC" = yes; then
9074 archive_cmds='$RM $output_objdir/$soname~$CC -shared $pic_flag ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
9075 else
9076 archive_cmds='$RM $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
9077 fi
9078 hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir'
9079 hardcode_libdir_separator=:
9080 hardcode_direct=yes
9081
9082 # hardcode_minus_L: Not really in the search PATH,
9083 # but as the default location of the library.
9084 hardcode_minus_L=yes
9085 export_dynamic_flag_spec='${wl}-E'
9086 ;;
9087
9088 hpux10*)
9089 if test "$GCC" = yes && test "$with_gnu_ld" = no; then
9090 archive_cmds='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
9091 else
9092 archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags'
9093 fi
9094 if test "$with_gnu_ld" = no; then
9095 hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir'
9096 hardcode_libdir_separator=:
9097 hardcode_direct=yes
9098 hardcode_direct_absolute=yes
9099 export_dynamic_flag_spec='${wl}-E'
9100 # hardcode_minus_L: Not really in the search PATH,
9101 # but as the default location of the library.
9102 hardcode_minus_L=yes
9103 fi
9104 ;;
9105
9106 hpux11*)
9107 if test "$GCC" = yes && test "$with_gnu_ld" = no; then
9108 case $host_cpu in
9109 hppa*64*)
9110 archive_cmds='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
9111 ;;
9112 ia64*)
9113 archive_cmds='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags'
9114 ;;
9115 *)
9116 archive_cmds='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
9117 ;;
9118 esac
9119 else
9120 case $host_cpu in
9121 hppa*64*)
9122 archive_cmds='$CC -b ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
9123 ;;
9124 ia64*)
9125 archive_cmds='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags'
9126 ;;
9127 *)
9128
9129 # Older versions of the 11.00 compiler do not understand -b yet
9130 # (HP92453-01 A.11.01.20 doesn't, HP92453-01 B.11.X.35175-35176.GP does)
9131 { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC understands -b" >&5
9132 $as_echo_n "checking if $CC understands -b... " >&6; }
9133 if ${lt_cv_prog_compiler__b+:} false; then :
9134 $as_echo_n "(cached) " >&6
9135 else
9136 lt_cv_prog_compiler__b=no
9137 save_LDFLAGS="$LDFLAGS"
9138 LDFLAGS="$LDFLAGS -b"
9139 echo "$lt_simple_link_test_code" > conftest.$ac_ext
9140 if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then
9141 # The linker can only warn and ignore the option if not recognized
9142 # So say no if there are warnings
9143 if test -s conftest.err; then
9144 # Append any errors to the config.log.
9145 cat conftest.err 1>&5
9146 $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp
9147 $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
9148 if diff conftest.exp conftest.er2 >/dev/null; then
9149 lt_cv_prog_compiler__b=yes
9150 fi
9151 else
9152 lt_cv_prog_compiler__b=yes
9153 fi
9154 fi
9155 $RM -r conftest*
9156 LDFLAGS="$save_LDFLAGS"
9157
9158 fi
9159 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler__b" >&5
9160 $as_echo "$lt_cv_prog_compiler__b" >&6; }
9161
9162 if test x"$lt_cv_prog_compiler__b" = xyes; then
9163 archive_cmds='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
9164 else
9165 archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags'
9166 fi
9167
9168 ;;
9169 esac
9170 fi
9171 if test "$with_gnu_ld" = no; then
9172 hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir'
9173 hardcode_libdir_separator=:
9174
9175 case $host_cpu in
9176 hppa*64*|ia64*)
9177 hardcode_direct=no
9178 hardcode_shlibpath_var=no
9179 ;;
9180 *)
9181 hardcode_direct=yes
9182 hardcode_direct_absolute=yes
9183 export_dynamic_flag_spec='${wl}-E'
9184
9185 # hardcode_minus_L: Not really in the search PATH,
9186 # but as the default location of the library.
9187 hardcode_minus_L=yes
9188 ;;
9189 esac
9190 fi
9191 ;;
9192
9193 irix5* | irix6* | nonstopux*)
9194 if test "$GCC" = yes; then
9195 archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
9196 # Try to use the -exported_symbol ld option, if it does not
9197 # work, assume that -exports_file does not work either and
9198 # implicitly export all symbols.
9199 # This should be the same for all languages, so no per-tag cache variable.
9200 { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $host_os linker accepts -exported_symbol" >&5
9201 $as_echo_n "checking whether the $host_os linker accepts -exported_symbol... " >&6; }
9202 if ${lt_cv_irix_exported_symbol+:} false; then :
9203 $as_echo_n "(cached) " >&6
9204 else
9205 save_LDFLAGS="$LDFLAGS"
9206 LDFLAGS="$LDFLAGS -shared ${wl}-exported_symbol ${wl}foo ${wl}-update_registry ${wl}/dev/null"
9207 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
9208 /* end confdefs.h. */
9209 int foo (void) { return 0; }
9210 _ACEOF
9211 if ac_fn_c_try_link "$LINENO"; then :
9212 lt_cv_irix_exported_symbol=yes
9213 else
9214 lt_cv_irix_exported_symbol=no
9215 fi
9216 rm -f core conftest.err conftest.$ac_objext \
9217 conftest$ac_exeext conftest.$ac_ext
9218 LDFLAGS="$save_LDFLAGS"
9219 fi
9220 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_irix_exported_symbol" >&5
9221 $as_echo "$lt_cv_irix_exported_symbol" >&6; }
9222 if test "$lt_cv_irix_exported_symbol" = yes; then
9223 archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations ${wl}-exports_file ${wl}$export_symbols -o $lib'
9224 fi
9225 else
9226 archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib'
9227 archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -exports_file $export_symbols -o $lib'
9228 fi
9229 archive_cmds_need_lc='no'
9230 hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
9231 hardcode_libdir_separator=:
9232 inherit_rpath=yes
9233 link_all_deplibs=yes
9234 ;;
9235
9236 netbsd*)
9237 if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then
9238 archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out
9239 else
9240 archive_cmds='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF
9241 fi
9242 hardcode_libdir_flag_spec='-R$libdir'
9243 hardcode_direct=yes
9244 hardcode_shlibpath_var=no
9245 ;;
9246
9247 newsos6)
9248 archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
9249 hardcode_direct=yes
9250 hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
9251 hardcode_libdir_separator=:
9252 hardcode_shlibpath_var=no
9253 ;;
9254
9255 *nto* | *qnx*)
9256 ;;
9257
9258 openbsd*)
9259 if test -f /usr/libexec/ld.so; then
9260 hardcode_direct=yes
9261 hardcode_shlibpath_var=no
9262 hardcode_direct_absolute=yes
9263 if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
9264 archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
9265 archive_expsym_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols'
9266 hardcode_libdir_flag_spec='${wl}-rpath,$libdir'
9267 export_dynamic_flag_spec='${wl}-E'
9268 else
9269 case $host_os in
9270 openbsd[01].* | openbsd2.[0-7] | openbsd2.[0-7].*)
9271 archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
9272 hardcode_libdir_flag_spec='-R$libdir'
9273 ;;
9274 *)
9275 archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
9276 hardcode_libdir_flag_spec='${wl}-rpath,$libdir'
9277 ;;
9278 esac
9279 fi
9280 else
9281 ld_shlibs=no
9282 fi
9283 ;;
9284
9285 os2*)
9286 hardcode_libdir_flag_spec='-L$libdir'
9287 hardcode_minus_L=yes
9288 allow_undefined_flag=unsupported
9289 archive_cmds='$ECHO "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~echo DATA >> $output_objdir/$libname.def~echo " SINGLE NONSHARED" >> $output_objdir/$libname.def~echo EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def'
9290 old_archive_from_new_cmds='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def'
9291 ;;
9292
9293 osf3*)
9294 if test "$GCC" = yes; then
9295 allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*'
9296 archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
9297 else
9298 allow_undefined_flag=' -expect_unresolved \*'
9299 archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib'
9300 fi
9301 archive_cmds_need_lc='no'
9302 hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
9303 hardcode_libdir_separator=:
9304 ;;
9305
9306 osf4* | osf5*) # as osf3* with the addition of -msym flag
9307 if test "$GCC" = yes; then
9308 allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*'
9309 archive_cmds='$CC -shared${allow_undefined_flag} $pic_flag $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
9310 hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
9311 else
9312 allow_undefined_flag=' -expect_unresolved \*'
9313 archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib'
9314 archive_expsym_cmds='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; printf "%s\\n" "-hidden">> $lib.exp~
9315 $CC -shared${allow_undefined_flag} ${wl}-input ${wl}$lib.exp $compiler_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib~$RM $lib.exp'
9316
9317 # Both c and cxx compiler support -rpath directly
9318 hardcode_libdir_flag_spec='-rpath $libdir'
9319 fi
9320 archive_cmds_need_lc='no'
9321 hardcode_libdir_separator=:
9322 ;;
9323
9324 solaris*)
9325 no_undefined_flag=' -z defs'
9326 if test "$GCC" = yes; then
9327 wlarc='${wl}'
9328 archive_cmds='$CC -shared $pic_flag ${wl}-z ${wl}text ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
9329 archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
9330 $CC -shared $pic_flag ${wl}-z ${wl}text ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp'
9331 else
9332 case `$CC -V 2>&1` in
9333 *"Compilers 5.0"*)
9334 wlarc=''
9335 archive_cmds='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags'
9336 archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
9337 $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$RM $lib.exp'
9338 ;;
9339 *)
9340 wlarc='${wl}'
9341 archive_cmds='$CC -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $compiler_flags'
9342 archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
9343 $CC -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp'
9344 ;;
9345 esac
9346 fi
9347 hardcode_libdir_flag_spec='-R$libdir'
9348 hardcode_shlibpath_var=no
9349 case $host_os in
9350 solaris2.[0-5] | solaris2.[0-5].*) ;;
9351 *)
9352 # The compiler driver will combine and reorder linker options,
9353 # but understands `-z linker_flag'. GCC discards it without `$wl',
9354 # but is careful enough not to reorder.
9355 # Supported since Solaris 2.6 (maybe 2.5.1?)
9356 if test "$GCC" = yes; then
9357 whole_archive_flag_spec='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract'
9358 else
9359 whole_archive_flag_spec='-z allextract$convenience -z defaultextract'
9360 fi
9361 ;;
9362 esac
9363 link_all_deplibs=yes
9364 ;;
9365
9366 sunos4*)
9367 if test "x$host_vendor" = xsequent; then
9368 # Use $CC to link under sequent, because it throws in some extra .o
9369 # files that make .init and .fini sections work.
9370 archive_cmds='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags'
9371 else
9372 archive_cmds='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags'
9373 fi
9374 hardcode_libdir_flag_spec='-L$libdir'
9375 hardcode_direct=yes
9376 hardcode_minus_L=yes
9377 hardcode_shlibpath_var=no
9378 ;;
9379
9380 sysv4)
9381 case $host_vendor in
9382 sni)
9383 archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
9384 hardcode_direct=yes # is this really true???
9385 ;;
9386 siemens)
9387 ## LD is ld it makes a PLAMLIB
9388 ## CC just makes a GrossModule.
9389 archive_cmds='$LD -G -o $lib $libobjs $deplibs $linker_flags'
9390 reload_cmds='$CC -r -o $output$reload_objs'
9391 hardcode_direct=no
9392 ;;
9393 motorola)
9394 archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
9395 hardcode_direct=no #Motorola manual says yes, but my tests say they lie
9396 ;;
9397 esac
9398 runpath_var='LD_RUN_PATH'
9399 hardcode_shlibpath_var=no
9400 ;;
9401
9402 sysv4.3*)
9403 archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
9404 hardcode_shlibpath_var=no
9405 export_dynamic_flag_spec='-Bexport'
9406 ;;
9407
9408 sysv4*MP*)
9409 if test -d /usr/nec; then
9410 archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
9411 hardcode_shlibpath_var=no
9412 runpath_var=LD_RUN_PATH
9413 hardcode_runpath_var=yes
9414 ld_shlibs=yes
9415 fi
9416 ;;
9417
9418 sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7* | sco3.2v5.0.[024]*)
9419 no_undefined_flag='${wl}-z,text'
9420 archive_cmds_need_lc=no
9421 hardcode_shlibpath_var=no
9422 runpath_var='LD_RUN_PATH'
9423
9424 if test "$GCC" = yes; then
9425 archive_cmds='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
9426 archive_expsym_cmds='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
9427 else
9428 archive_cmds='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
9429 archive_expsym_cmds='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
9430 fi
9431 ;;
9432
9433 sysv5* | sco3.2v5* | sco5v6*)
9434 # Note: We can NOT use -z defs as we might desire, because we do not
9435 # link with -lc, and that would cause any symbols used from libc to
9436 # always be unresolved, which means just about no library would
9437 # ever link correctly. If we're not using GNU ld we use -z text
9438 # though, which does catch some bad symbols but isn't as heavy-handed
9439 # as -z defs.
9440 no_undefined_flag='${wl}-z,text'
9441 allow_undefined_flag='${wl}-z,nodefs'
9442 archive_cmds_need_lc=no
9443 hardcode_shlibpath_var=no
9444 hardcode_libdir_flag_spec='${wl}-R,$libdir'
9445 hardcode_libdir_separator=':'
9446 link_all_deplibs=yes
9447 export_dynamic_flag_spec='${wl}-Bexport'
9448 runpath_var='LD_RUN_PATH'
9449
9450 if test "$GCC" = yes; then
9451 archive_cmds='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
9452 archive_expsym_cmds='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
9453 else
9454 archive_cmds='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
9455 archive_expsym_cmds='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
9456 fi
9457 ;;
9458
9459 uts4*)
9460 archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
9461 hardcode_libdir_flag_spec='-L$libdir'
9462 hardcode_shlibpath_var=no
9463 ;;
9464
9465 *)
9466 ld_shlibs=no
9467 ;;
9468 esac
9469
9470 if test x$host_vendor = xsni; then
9471 case $host in
9472 sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*)
9473 export_dynamic_flag_spec='${wl}-Blargedynsym'
9474 ;;
9475 esac
9476 fi
9477 fi
9478
9479 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ld_shlibs" >&5
9480 $as_echo "$ld_shlibs" >&6; }
9481 test "$ld_shlibs" = no && can_build_shared=no
9482
9483 with_gnu_ld=$with_gnu_ld
9484
9485
9486
9487
9488
9489
9490
9491
9492
9493
9494
9495
9496
9497
9498
9499 #
9500 # Do we need to explicitly link libc?
9501 #
9502 case "x$archive_cmds_need_lc" in
9503 x|xyes)
9504 # Assume -lc should be added
9505 archive_cmds_need_lc=yes
9506
9507 if test "$enable_shared" = yes && test "$GCC" = yes; then
9508 case $archive_cmds in
9509 *'~'*)
9510 # FIXME: we may have to deal with multi-command sequences.
9511 ;;
9512 '$CC '*)
9513 # Test whether the compiler implicitly links with -lc since on some
9514 # systems, -lgcc has to come before -lc. If gcc already passes -lc
9515 # to ld, don't add -lc before -lgcc.
9516 { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether -lc should be explicitly linked in" >&5
9517 $as_echo_n "checking whether -lc should be explicitly linked in... " >&6; }
9518 if ${lt_cv_archive_cmds_need_lc+:} false; then :
9519 $as_echo_n "(cached) " >&6
9520 else
9521 $RM conftest*
9522 echo "$lt_simple_compile_test_code" > conftest.$ac_ext
9523
9524 if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
9525 (eval $ac_compile) 2>&5
9526 ac_status=$?
9527 $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
9528 test $ac_status = 0; } 2>conftest.err; then
9529 soname=conftest
9530 lib=conftest
9531 libobjs=conftest.$ac_objext
9532 deplibs=
9533 wl=$lt_prog_compiler_wl
9534 pic_flag=$lt_prog_compiler_pic
9535 compiler_flags=-v
9536 linker_flags=-v
9537 verstring=
9538 output_objdir=.
9539 libname=conftest
9540 lt_save_allow_undefined_flag=$allow_undefined_flag
9541 allow_undefined_flag=
9542 if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$archive_cmds 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1\""; } >&5
9543 (eval $archive_cmds 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1) 2>&5
9544 ac_status=$?
9545 $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
9546 test $ac_status = 0; }
9547 then
9548 lt_cv_archive_cmds_need_lc=no
9549 else
9550 lt_cv_archive_cmds_need_lc=yes
9551 fi
9552 allow_undefined_flag=$lt_save_allow_undefined_flag
9553 else
9554 cat conftest.err 1>&5
9555 fi
9556 $RM conftest*
9557
9558 fi
9559 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_archive_cmds_need_lc" >&5
9560 $as_echo "$lt_cv_archive_cmds_need_lc" >&6; }
9561 archive_cmds_need_lc=$lt_cv_archive_cmds_need_lc
9562 ;;
9563 esac
9564 fi
9565 ;;
9566 esac
9567
9568
9569
9570
9571
9572
9573
9574
9575
9576
9577
9578
9579
9580
9581
9582
9583
9584
9585
9586
9587
9588
9589
9590
9591
9592
9593
9594
9595
9596
9597
9598
9599
9600
9601
9602
9603
9604
9605
9606
9607
9608
9609
9610
9611
9612
9613
9614
9615
9616
9617
9618
9619
9620
9621
9622
9623
9624
9625
9626
9627
9628
9629
9630
9631
9632
9633
9634
9635
9636
9637
9638
9639
9640
9641
9642
9643
9644
9645
9646
9647
9648
9649
9650
9651
9652
9653
9654
9655
9656
9657
9658
9659
9660
9661
9662
9663
9664
9665
9666
9667
9668
9669
9670
9671
9672
9673
9674
9675
9676
9677
9678
9679
9680
9681
9682
9683
9684
9685
9686
9687
9688
9689
9690
9691
9692
9693
9694
9695
9696
9697
9698
9699
9700
9701
9702
9703
9704
9705
9706
9707
9708
9709
9710
9711
9712
9713
9714
9715
9716
9717
9718
9719 { $as_echo "$as_me:${as_lineno-$LINENO}: checking dynamic linker characteristics" >&5
9720 $as_echo_n "checking dynamic linker characteristics... " >&6; }
9721
9722 if test "$GCC" = yes; then
9723 case $host_os in
9724 darwin*) lt_awk_arg="/^libraries:/,/LR/" ;;
9725 *) lt_awk_arg="/^libraries:/" ;;
9726 esac
9727 case $host_os in
9728 mingw* | cegcc*) lt_sed_strip_eq="s,=\([A-Za-z]:\),\1,g" ;;
9729 *) lt_sed_strip_eq="s,=/,/,g" ;;
9730 esac
9731 lt_search_path_spec=`$CC -print-search-dirs | awk $lt_awk_arg | $SED -e "s/^libraries://" -e $lt_sed_strip_eq`
9732 case $lt_search_path_spec in
9733 *\;*)
9734 # if the path contains ";" then we assume it to be the separator
9735 # otherwise default to the standard path separator (i.e. ":") - it is
9736 # assumed that no part of a normal pathname contains ";" but that should
9737 # okay in the real world where ";" in dirpaths is itself problematic.
9738 lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED 's/;/ /g'`
9739 ;;
9740 *)
9741 lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED "s/$PATH_SEPARATOR/ /g"`
9742 ;;
9743 esac
9744 # Ok, now we have the path, separated by spaces, we can step through it
9745 # and add multilib dir if necessary.
9746 lt_tmp_lt_search_path_spec=
9747 lt_multi_os_dir=`$CC $CPPFLAGS $CFLAGS $LDFLAGS -print-multi-os-directory 2>/dev/null`
9748 for lt_sys_path in $lt_search_path_spec; do
9749 if test -d "$lt_sys_path/$lt_multi_os_dir"; then
9750 lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path/$lt_multi_os_dir"
9751 else
9752 test -d "$lt_sys_path" && \
9753 lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path"
9754 fi
9755 done
9756 lt_search_path_spec=`$ECHO "$lt_tmp_lt_search_path_spec" | awk '
9757 BEGIN {RS=" "; FS="/|\n";} {
9758 lt_foo="";
9759 lt_count=0;
9760 for (lt_i = NF; lt_i > 0; lt_i--) {
9761 if ($lt_i != "" && $lt_i != ".") {
9762 if ($lt_i == "..") {
9763 lt_count++;
9764 } else {
9765 if (lt_count == 0) {
9766 lt_foo="/" $lt_i lt_foo;
9767 } else {
9768 lt_count--;
9769 }
9770 }
9771 }
9772 }
9773 if (lt_foo != "") { lt_freq[lt_foo]++; }
9774 if (lt_freq[lt_foo] == 1) { print lt_foo; }
9775 }'`
9776 # AWK program above erroneously prepends '/' to C:/dos/paths
9777 # for these hosts.
9778 case $host_os in
9779 mingw* | cegcc*) lt_search_path_spec=`$ECHO "$lt_search_path_spec" |\
9780 $SED 's,/\([A-Za-z]:\),\1,g'` ;;
9781 esac
9782 sys_lib_search_path_spec=`$ECHO "$lt_search_path_spec" | $lt_NL2SP`
9783 else
9784 sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib"
9785 fi
9786 library_names_spec=
9787 libname_spec='lib$name'
9788 soname_spec=
9789 shrext_cmds=".so"
9790 postinstall_cmds=
9791 postuninstall_cmds=
9792 finish_cmds=
9793 finish_eval=
9794 shlibpath_var=
9795 shlibpath_overrides_runpath=unknown
9796 version_type=none
9797 dynamic_linker="$host_os ld.so"
9798 sys_lib_dlsearch_path_spec="/lib /usr/lib"
9799 need_lib_prefix=unknown
9800 hardcode_into_libs=no
9801
9802 # when you set need_version to no, make sure it does not cause -set_version
9803 # flags to be left without arguments
9804 need_version=unknown
9805
9806 case $host_os in
9807 aix3*)
9808 version_type=linux # correct to gnu/linux during the next big refactor
9809 library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a'
9810 shlibpath_var=LIBPATH
9811
9812 # AIX 3 has no versioning support, so we append a major version to the name.
9813 soname_spec='${libname}${release}${shared_ext}$major'
9814 ;;
9815
9816 aix[4-9]*)
9817 version_type=linux # correct to gnu/linux during the next big refactor
9818 need_lib_prefix=no
9819 need_version=no
9820 hardcode_into_libs=yes
9821 if test "$host_cpu" = ia64; then
9822 # AIX 5 supports IA64
9823 library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}'
9824 shlibpath_var=LD_LIBRARY_PATH
9825 else
9826 # With GCC up to 2.95.x, collect2 would create an import file
9827 # for dependence libraries. The import file would start with
9828 # the line `#! .'. This would cause the generated library to
9829 # depend on `.', always an invalid library. This was fixed in
9830 # development snapshots of GCC prior to 3.0.
9831 case $host_os in
9832 aix4 | aix4.[01] | aix4.[01].*)
9833 if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)'
9834 echo ' yes '
9835 echo '#endif'; } | ${CC} -E - | $GREP yes > /dev/null; then
9836 :
9837 else
9838 can_build_shared=no
9839 fi
9840 ;;
9841 esac
9842 # AIX (on Power*) has no versioning support, so currently we can not hardcode correct
9843 # soname into executable. Probably we can add versioning support to
9844 # collect2, so additional links can be useful in future.
9845 if test "$aix_use_runtimelinking" = yes; then
9846 # If using run time linking (on AIX 4.2 or later) use lib<name>.so
9847 # instead of lib<name>.a to let people know that these are not
9848 # typical AIX shared libraries.
9849 library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
9850 else
9851 # We preserve .a as extension for shared libraries through AIX4.2
9852 # and later when we are not doing run time linking.
9853 library_names_spec='${libname}${release}.a $libname.a'
9854 soname_spec='${libname}${release}${shared_ext}$major'
9855 fi
9856 shlibpath_var=LIBPATH
9857 fi
9858 ;;
9859
9860 amigaos*)
9861 case $host_cpu in
9862 powerpc)
9863 # Since July 2007 AmigaOS4 officially supports .so libraries.
9864 # When compiling the executable, add -use-dynld -Lsobjs: to the compileline.
9865 library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
9866 ;;
9867 m68k)
9868 library_names_spec='$libname.ixlibrary $libname.a'
9869 # Create ${libname}_ixlibrary.a entries in /sys/libs.
9870 finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`func_echo_all "$lib" | $SED '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $RM /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done'
9871 ;;
9872 esac
9873 ;;
9874
9875 beos*)
9876 library_names_spec='${libname}${shared_ext}'
9877 dynamic_linker="$host_os ld.so"
9878 shlibpath_var=LIBRARY_PATH
9879 ;;
9880
9881 bsdi[45]*)
9882 version_type=linux # correct to gnu/linux during the next big refactor
9883 need_version=no
9884 library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
9885 soname_spec='${libname}${release}${shared_ext}$major'
9886 finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir'
9887 shlibpath_var=LD_LIBRARY_PATH
9888 sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib"
9889 sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib"
9890 # the default ld.so.conf also contains /usr/contrib/lib and
9891 # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow
9892 # libtool to hard-code these into programs
9893 ;;
9894
9895 cygwin* | mingw* | pw32* | cegcc*)
9896 version_type=windows
9897 shrext_cmds=".dll"
9898 need_version=no
9899 need_lib_prefix=no
9900
9901 case $GCC,$cc_basename in
9902 yes,*)
9903 # gcc
9904 library_names_spec='$libname.dll.a'
9905 # DLL is installed to $(libdir)/../bin by postinstall_cmds
9906 postinstall_cmds='base_file=`basename \${file}`~
9907 dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~
9908 dldir=$destdir/`dirname \$dlpath`~
9909 test -d \$dldir || mkdir -p \$dldir~
9910 $install_prog $dir/$dlname \$dldir/$dlname~
9911 chmod a+x \$dldir/$dlname~
9912 if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then
9913 eval '\''$striplib \$dldir/$dlname'\'' || exit \$?;
9914 fi'
9915 postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~
9916 dlpath=$dir/\$dldll~
9917 $RM \$dlpath'
9918 shlibpath_overrides_runpath=yes
9919
9920 case $host_os in
9921 cygwin*)
9922 # Cygwin DLLs use 'cyg' prefix rather than 'lib'
9923 soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
9924
9925 sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/lib/w32api"
9926 ;;
9927 mingw* | cegcc*)
9928 # MinGW DLLs use traditional 'lib' prefix
9929 soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
9930 ;;
9931 pw32*)
9932 # pw32 DLLs use 'pw' prefix rather than 'lib'
9933 library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
9934 ;;
9935 esac
9936 dynamic_linker='Win32 ld.exe'
9937 ;;
9938
9939 *,cl*)
9940 # Native MSVC
9941 libname_spec='$name'
9942 soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
9943 library_names_spec='${libname}.dll.lib'
9944
9945 case $build_os in
9946 mingw*)
9947 sys_lib_search_path_spec=
9948 lt_save_ifs=$IFS
9949 IFS=';'
9950 for lt_path in $LIB
9951 do
9952 IFS=$lt_save_ifs
9953 # Let DOS variable expansion print the short 8.3 style file name.
9954 lt_path=`cd "$lt_path" 2>/dev/null && cmd //C "for %i in (".") do @echo %~si"`
9955 sys_lib_search_path_spec="$sys_lib_search_path_spec $lt_path"
9956 done
9957 IFS=$lt_save_ifs
9958 # Convert to MSYS style.
9959 sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | sed -e 's|\\\\|/|g' -e 's| \\([a-zA-Z]\\):| /\\1|g' -e 's|^ ||'`
9960 ;;
9961 cygwin*)
9962 # Convert to unix form, then to dos form, then back to unix form
9963 # but this time dos style (no spaces!) so that the unix form looks
9964 # like /cygdrive/c/PROGRA~1:/cygdr...
9965 sys_lib_search_path_spec=`cygpath --path --unix "$LIB"`
9966 sys_lib_search_path_spec=`cygpath --path --dos "$sys_lib_search_path_spec" 2>/dev/null`
9967 sys_lib_search_path_spec=`cygpath --path --unix "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"`
9968 ;;
9969 *)
9970 sys_lib_search_path_spec="$LIB"
9971 if $ECHO "$sys_lib_search_path_spec" | $GREP ';[c-zC-Z]:/' >/dev/null; then
9972 # It is most probably a Windows format PATH.
9973 sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'`
9974 else
9975 sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"`
9976 fi
9977 # FIXME: find the short name or the path components, as spaces are
9978 # common. (e.g. "Program Files" -> "PROGRA~1")
9979 ;;
9980 esac
9981
9982 # DLL is installed to $(libdir)/../bin by postinstall_cmds
9983 postinstall_cmds='base_file=`basename \${file}`~
9984 dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~
9985 dldir=$destdir/`dirname \$dlpath`~
9986 test -d \$dldir || mkdir -p \$dldir~
9987 $install_prog $dir/$dlname \$dldir/$dlname'
9988 postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~
9989 dlpath=$dir/\$dldll~
9990 $RM \$dlpath'
9991 shlibpath_overrides_runpath=yes
9992 dynamic_linker='Win32 link.exe'
9993 ;;
9994
9995 *)
9996 # Assume MSVC wrapper
9997 library_names_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext} $libname.lib'
9998 dynamic_linker='Win32 ld.exe'
9999 ;;
10000 esac
10001 # FIXME: first we should search . and the directory the executable is in
10002 shlibpath_var=PATH
10003 ;;
10004
10005 darwin* | rhapsody*)
10006 dynamic_linker="$host_os dyld"
10007 version_type=darwin
10008 need_lib_prefix=no
10009 need_version=no
10010 library_names_spec='${libname}${release}${major}$shared_ext ${libname}$shared_ext'
10011 soname_spec='${libname}${release}${major}$shared_ext'
10012 shlibpath_overrides_runpath=yes
10013 shlibpath_var=DYLD_LIBRARY_PATH
10014 shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`'
10015
10016 sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/local/lib"
10017 sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib'
10018 ;;
10019
10020 dgux*)
10021 version_type=linux # correct to gnu/linux during the next big refactor
10022 need_lib_prefix=no
10023 need_version=no
10024 library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext'
10025 soname_spec='${libname}${release}${shared_ext}$major'
10026 shlibpath_var=LD_LIBRARY_PATH
10027 ;;
10028
10029 freebsd* | dragonfly*)
10030 # DragonFly does not have aout. When/if they implement a new
10031 # versioning mechanism, adjust this.
10032 if test -x /usr/bin/objformat; then
10033 objformat=`/usr/bin/objformat`
10034 else
10035 case $host_os in
10036 freebsd[23].*) objformat=aout ;;
10037 *) objformat=elf ;;
10038 esac
10039 fi
10040 version_type=freebsd-$objformat
10041 case $version_type in
10042 freebsd-elf*)
10043 library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}'
10044 need_version=no
10045 need_lib_prefix=no
10046 ;;
10047 freebsd-*)
10048 library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix'
10049 need_version=yes
10050 ;;
10051 esac
10052 shlibpath_var=LD_LIBRARY_PATH
10053 case $host_os in
10054 freebsd2.*)
10055 shlibpath_overrides_runpath=yes
10056 ;;
10057 freebsd3.[01]* | freebsdelf3.[01]*)
10058 shlibpath_overrides_runpath=yes
10059 hardcode_into_libs=yes
10060 ;;
10061 freebsd3.[2-9]* | freebsdelf3.[2-9]* | \
10062 freebsd4.[0-5] | freebsdelf4.[0-5] | freebsd4.1.1 | freebsdelf4.1.1)
10063 shlibpath_overrides_runpath=no
10064 hardcode_into_libs=yes
10065 ;;
10066 *) # from 4.6 on, and DragonFly
10067 shlibpath_overrides_runpath=yes
10068 hardcode_into_libs=yes
10069 ;;
10070 esac
10071 ;;
10072
10073 gnu*)
10074 version_type=linux # correct to gnu/linux during the next big refactor
10075 need_lib_prefix=no
10076 need_version=no
10077 library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}'
10078 soname_spec='${libname}${release}${shared_ext}$major'
10079 shlibpath_var=LD_LIBRARY_PATH
10080 shlibpath_overrides_runpath=no
10081 hardcode_into_libs=yes
10082 ;;
10083
10084 haiku*)
10085 version_type=linux # correct to gnu/linux during the next big refactor
10086 need_lib_prefix=no
10087 need_version=no
10088 dynamic_linker="$host_os runtime_loader"
10089 library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}'
10090 soname_spec='${libname}${release}${shared_ext}$major'
10091 shlibpath_var=LIBRARY_PATH
10092 shlibpath_overrides_runpath=yes
10093 sys_lib_dlsearch_path_spec='/boot/home/config/lib /boot/common/lib /boot/system/lib'
10094 hardcode_into_libs=yes
10095 ;;
10096
10097 hpux9* | hpux10* | hpux11*)
10098 # Give a soname corresponding to the major version so that dld.sl refuses to
10099 # link against other versions.
10100 version_type=sunos
10101 need_lib_prefix=no
10102 need_version=no
10103 case $host_cpu in
10104 ia64*)
10105 shrext_cmds='.so'
10106 hardcode_into_libs=yes
10107 dynamic_linker="$host_os dld.so"
10108 shlibpath_var=LD_LIBRARY_PATH
10109 shlibpath_overrides_runpath=yes # Unless +noenvvar is specified.
10110 library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
10111 soname_spec='${libname}${release}${shared_ext}$major'
10112 if test "X$HPUX_IA64_MODE" = X32; then
10113 sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib"
10114 else
10115 sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64"
10116 fi
10117 sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
10118 ;;
10119 hppa*64*)
10120 shrext_cmds='.sl'
10121 hardcode_into_libs=yes
10122 dynamic_linker="$host_os dld.sl"
10123 shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH
10124 shlibpath_overrides_runpath=yes # Unless +noenvvar is specified.
10125 library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
10126 soname_spec='${libname}${release}${shared_ext}$major'
10127 sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64"
10128 sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
10129 ;;
10130 *)
10131 shrext_cmds='.sl'
10132 dynamic_linker="$host_os dld.sl"
10133 shlibpath_var=SHLIB_PATH
10134 shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH
10135 library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
10136 soname_spec='${libname}${release}${shared_ext}$major'
10137 ;;
10138 esac
10139 # HP-UX runs *really* slowly unless shared libraries are mode 555, ...
10140 postinstall_cmds='chmod 555 $lib'
10141 # or fails outright, so override atomically:
10142 install_override_mode=555
10143 ;;
10144
10145 interix[3-9]*)
10146 version_type=linux # correct to gnu/linux during the next big refactor
10147 need_lib_prefix=no
10148 need_version=no
10149 library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
10150 soname_spec='${libname}${release}${shared_ext}$major'
10151 dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)'
10152 shlibpath_var=LD_LIBRARY_PATH
10153 shlibpath_overrides_runpath=no
10154 hardcode_into_libs=yes
10155 ;;
10156
10157 irix5* | irix6* | nonstopux*)
10158 case $host_os in
10159 nonstopux*) version_type=nonstopux ;;
10160 *)
10161 if test "$lt_cv_prog_gnu_ld" = yes; then
10162 version_type=linux # correct to gnu/linux during the next big refactor
10163 else
10164 version_type=irix
10165 fi ;;
10166 esac
10167 need_lib_prefix=no
10168 need_version=no
10169 soname_spec='${libname}${release}${shared_ext}$major'
10170 library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}'
10171 case $host_os in
10172 irix5* | nonstopux*)
10173 libsuff= shlibsuff=
10174 ;;
10175 *)
10176 case $LD in # libtool.m4 will add one of these switches to LD
10177 *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ")
10178 libsuff= shlibsuff= libmagic=32-bit;;
10179 *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ")
10180 libsuff=32 shlibsuff=N32 libmagic=N32;;
10181 *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ")
10182 libsuff=64 shlibsuff=64 libmagic=64-bit;;
10183 *) libsuff= shlibsuff= libmagic=never-match;;
10184 esac
10185 ;;
10186 esac
10187 shlibpath_var=LD_LIBRARY${shlibsuff}_PATH
10188 shlibpath_overrides_runpath=no
10189 sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}"
10190 sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}"
10191 hardcode_into_libs=yes
10192 ;;
10193
10194 # No shared lib support for Linux oldld, aout, or coff.
10195 linux*oldld* | linux*aout* | linux*coff*)
10196 dynamic_linker=no
10197 ;;
10198
10199 # This must be glibc/ELF.
10200 linux* | k*bsd*-gnu | kopensolaris*-gnu)
10201 version_type=linux # correct to gnu/linux during the next big refactor
10202 need_lib_prefix=no
10203 need_version=no
10204 library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
10205 soname_spec='${libname}${release}${shared_ext}$major'
10206 finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir'
10207 shlibpath_var=LD_LIBRARY_PATH
10208 shlibpath_overrides_runpath=no
10209
10210 # Some binutils ld are patched to set DT_RUNPATH
10211 if ${lt_cv_shlibpath_overrides_runpath+:} false; then :
10212 $as_echo_n "(cached) " >&6
10213 else
10214 lt_cv_shlibpath_overrides_runpath=no
10215 save_LDFLAGS=$LDFLAGS
10216 save_libdir=$libdir
10217 eval "libdir=/foo; wl=\"$lt_prog_compiler_wl\"; \
10218 LDFLAGS=\"\$LDFLAGS $hardcode_libdir_flag_spec\""
10219 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
10220 /* end confdefs.h. */
10221
10222 int
10223 main ()
10224 {
10225
10226 ;
10227 return 0;
10228 }
10229 _ACEOF
10230 if ac_fn_c_try_link "$LINENO"; then :
10231 if ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null; then :
10232 lt_cv_shlibpath_overrides_runpath=yes
10233 fi
10234 fi
10235 rm -f core conftest.err conftest.$ac_objext \
10236 conftest$ac_exeext conftest.$ac_ext
10237 LDFLAGS=$save_LDFLAGS
10238 libdir=$save_libdir
10239
10240 fi
10241
10242 shlibpath_overrides_runpath=$lt_cv_shlibpath_overrides_runpath
10243
10244 # This implies no fast_install, which is unacceptable.
10245 # Some rework will be needed to allow for fast_install
10246 # before this can be enabled.
10247 hardcode_into_libs=yes
10248
10249 # Append ld.so.conf contents to the search path
10250 if test -f /etc/ld.so.conf; then
10251 lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[ ]*hwcap[ ]/d;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;s/"//g;/^$/d' | tr '\n' ' '`
10252 sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra"
10253 fi
10254
10255 # We used to test for /lib/ld.so.1 and disable shared libraries on
10256 # powerpc, because MkLinux only supported shared libraries with the
10257 # GNU dynamic linker. Since this was broken with cross compilers,
10258 # most powerpc-linux boxes support dynamic linking these days and
10259 # people can always --disable-shared, the test was removed, and we
10260 # assume the GNU/Linux dynamic linker is in use.
10261 dynamic_linker='GNU/Linux ld.so'
10262 ;;
10263
10264 netbsd*)
10265 version_type=sunos
10266 need_lib_prefix=no
10267 need_version=no
10268 if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then
10269 library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
10270 finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
10271 dynamic_linker='NetBSD (a.out) ld.so'
10272 else
10273 library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
10274 soname_spec='${libname}${release}${shared_ext}$major'
10275 dynamic_linker='NetBSD ld.elf_so'
10276 fi
10277 shlibpath_var=LD_LIBRARY_PATH
10278 shlibpath_overrides_runpath=yes
10279 hardcode_into_libs=yes
10280 ;;
10281
10282 newsos6)
10283 version_type=linux # correct to gnu/linux during the next big refactor
10284 library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
10285 shlibpath_var=LD_LIBRARY_PATH
10286 shlibpath_overrides_runpath=yes
10287 ;;
10288
10289 *nto* | *qnx*)
10290 version_type=qnx
10291 need_lib_prefix=no
10292 need_version=no
10293 library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
10294 soname_spec='${libname}${release}${shared_ext}$major'
10295 shlibpath_var=LD_LIBRARY_PATH
10296 shlibpath_overrides_runpath=no
10297 hardcode_into_libs=yes
10298 dynamic_linker='ldqnx.so'
10299 ;;
10300
10301 openbsd*)
10302 version_type=sunos
10303 sys_lib_dlsearch_path_spec="/usr/lib"
10304 need_lib_prefix=no
10305 # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs.
10306 case $host_os in
10307 openbsd3.3 | openbsd3.3.*) need_version=yes ;;
10308 *) need_version=no ;;
10309 esac
10310 library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
10311 finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
10312 shlibpath_var=LD_LIBRARY_PATH
10313 if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
10314 case $host_os in
10315 openbsd2.[89] | openbsd2.[89].*)
10316 shlibpath_overrides_runpath=no
10317 ;;
10318 *)
10319 shlibpath_overrides_runpath=yes
10320 ;;
10321 esac
10322 else
10323 shlibpath_overrides_runpath=yes
10324 fi
10325 ;;
10326
10327 os2*)
10328 libname_spec='$name'
10329 shrext_cmds=".dll"
10330 need_lib_prefix=no
10331 library_names_spec='$libname${shared_ext} $libname.a'
10332 dynamic_linker='OS/2 ld.exe'
10333 shlibpath_var=LIBPATH
10334 ;;
10335
10336 osf3* | osf4* | osf5*)
10337 version_type=osf
10338 need_lib_prefix=no
10339 need_version=no
10340 soname_spec='${libname}${release}${shared_ext}$major'
10341 library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
10342 shlibpath_var=LD_LIBRARY_PATH
10343 sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib"
10344 sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec"
10345 ;;
10346
10347 rdos*)
10348 dynamic_linker=no
10349 ;;
10350
10351 solaris*)
10352 version_type=linux # correct to gnu/linux during the next big refactor
10353 need_lib_prefix=no
10354 need_version=no
10355 library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
10356 soname_spec='${libname}${release}${shared_ext}$major'
10357 shlibpath_var=LD_LIBRARY_PATH
10358 shlibpath_overrides_runpath=yes
10359 hardcode_into_libs=yes
10360 # ldd complains unless libraries are executable
10361 postinstall_cmds='chmod +x $lib'
10362 ;;
10363
10364 sunos4*)
10365 version_type=sunos
10366 library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
10367 finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir'
10368 shlibpath_var=LD_LIBRARY_PATH
10369 shlibpath_overrides_runpath=yes
10370 if test "$with_gnu_ld" = yes; then
10371 need_lib_prefix=no
10372 fi
10373 need_version=yes
10374 ;;
10375
10376 sysv4 | sysv4.3*)
10377 version_type=linux # correct to gnu/linux during the next big refactor
10378 library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
10379 soname_spec='${libname}${release}${shared_ext}$major'
10380 shlibpath_var=LD_LIBRARY_PATH
10381 case $host_vendor in
10382 sni)
10383 shlibpath_overrides_runpath=no
10384 need_lib_prefix=no
10385 runpath_var=LD_RUN_PATH
10386 ;;
10387 siemens)
10388 need_lib_prefix=no
10389 ;;
10390 motorola)
10391 need_lib_prefix=no
10392 need_version=no
10393 shlibpath_overrides_runpath=no
10394 sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib'
10395 ;;
10396 esac
10397 ;;
10398
10399 sysv4*MP*)
10400 if test -d /usr/nec ;then
10401 version_type=linux # correct to gnu/linux during the next big refactor
10402 library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}'
10403 soname_spec='$libname${shared_ext}.$major'
10404 shlibpath_var=LD_LIBRARY_PATH
10405 fi
10406 ;;
10407
10408 sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*)
10409 version_type=freebsd-elf
10410 need_lib_prefix=no
10411 need_version=no
10412 library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}'
10413 soname_spec='${libname}${release}${shared_ext}$major'
10414 shlibpath_var=LD_LIBRARY_PATH
10415 shlibpath_overrides_runpath=yes
10416 hardcode_into_libs=yes
10417 if test "$with_gnu_ld" = yes; then
10418 sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib'
10419 else
10420 sys_lib_search_path_spec='/usr/ccs/lib /usr/lib'
10421 case $host_os in
10422 sco3.2v5*)
10423 sys_lib_search_path_spec="$sys_lib_search_path_spec /lib"
10424 ;;
10425 esac
10426 fi
10427 sys_lib_dlsearch_path_spec='/usr/lib'
10428 ;;
10429
10430 tpf*)
10431 # TPF is a cross-target only. Preferred cross-host = GNU/Linux.
10432 version_type=linux # correct to gnu/linux during the next big refactor
10433 need_lib_prefix=no
10434 need_version=no
10435 library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
10436 shlibpath_var=LD_LIBRARY_PATH
10437 shlibpath_overrides_runpath=no
10438 hardcode_into_libs=yes
10439 ;;
10440
10441 uts4*)
10442 version_type=linux # correct to gnu/linux during the next big refactor
10443 library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
10444 soname_spec='${libname}${release}${shared_ext}$major'
10445 shlibpath_var=LD_LIBRARY_PATH
10446 ;;
10447
10448 *)
10449 dynamic_linker=no
10450 ;;
10451 esac
10452 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $dynamic_linker" >&5
10453 $as_echo "$dynamic_linker" >&6; }
10454 test "$dynamic_linker" = no && can_build_shared=no
10455
10456 variables_saved_for_relink="PATH $shlibpath_var $runpath_var"
10457 if test "$GCC" = yes; then
10458 variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH"
10459 fi
10460
10461 if test "${lt_cv_sys_lib_search_path_spec+set}" = set; then
10462 sys_lib_search_path_spec="$lt_cv_sys_lib_search_path_spec"
10463 fi
10464 if test "${lt_cv_sys_lib_dlsearch_path_spec+set}" = set; then
10465 sys_lib_dlsearch_path_spec="$lt_cv_sys_lib_dlsearch_path_spec"
10466 fi
10467
10468
10469
10470
10471
10472
10473
10474
10475
10476
10477
10478
10479
10480
10481
10482
10483
10484
10485
10486
10487
10488
10489
10490
10491
10492
10493
10494
10495
10496
10497
10498
10499
10500
10501
10502
10503
10504
10505
10506
10507
10508
10509
10510
10511
10512
10513
10514
10515
10516
10517
10518
10519
10520
10521
10522
10523
10524
10525
10526
10527
10528
10529
10530
10531
10532
10533
10534
10535
10536
10537
10538
10539
10540
10541
10542
10543
10544
10545
10546
10547
10548
10549
10550
10551
10552
10553
10554
10555
10556
10557
10558
10559 { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to hardcode library paths into programs" >&5
10560 $as_echo_n "checking how to hardcode library paths into programs... " >&6; }
10561 hardcode_action=
10562 if test -n "$hardcode_libdir_flag_spec" ||
10563 test -n "$runpath_var" ||
10564 test "X$hardcode_automatic" = "Xyes" ; then
10565
10566 # We can hardcode non-existent directories.
10567 if test "$hardcode_direct" != no &&
10568 # If the only mechanism to avoid hardcoding is shlibpath_var, we
10569 # have to relink, otherwise we might link with an installed library
10570 # when we should be linking with a yet-to-be-installed one
10571 ## test "$_LT_TAGVAR(hardcode_shlibpath_var, )" != no &&
10572 test "$hardcode_minus_L" != no; then
10573 # Linking always hardcodes the temporary library directory.
10574 hardcode_action=relink
10575 else
10576 # We can link without hardcoding, and we can hardcode nonexisting dirs.
10577 hardcode_action=immediate
10578 fi
10579 else
10580 # We cannot hardcode anything, or else we can only hardcode existing
10581 # directories.
10582 hardcode_action=unsupported
10583 fi
10584 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $hardcode_action" >&5
10585 $as_echo "$hardcode_action" >&6; }
10586
10587 if test "$hardcode_action" = relink ||
10588 test "$inherit_rpath" = yes; then
10589 # Fast installation is not supported
10590 enable_fast_install=no
10591 elif test "$shlibpath_overrides_runpath" = yes ||
10592 test "$enable_shared" = no; then
10593 # Fast installation is not necessary
10594 enable_fast_install=needless
10595 fi
10596
10597
10598
10599
10600
10601
10602 if test "x$enable_dlopen" != xyes; then
10603 enable_dlopen=unknown
10604 enable_dlopen_self=unknown
10605 enable_dlopen_self_static=unknown
10606 else
10607 lt_cv_dlopen=no
10608 lt_cv_dlopen_libs=
10609
10610 case $host_os in
10611 beos*)
10612 lt_cv_dlopen="load_add_on"
10613 lt_cv_dlopen_libs=
10614 lt_cv_dlopen_self=yes
10615 ;;
10616
10617 mingw* | pw32* | cegcc*)
10618 lt_cv_dlopen="LoadLibrary"
10619 lt_cv_dlopen_libs=
10620 ;;
10621
10622 cygwin*)
10623 lt_cv_dlopen="dlopen"
10624 lt_cv_dlopen_libs=
10625 ;;
10626
10627 darwin*)
10628 # if libdl is installed we need to link against it
10629 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -ldl" >&5
10630 $as_echo_n "checking for dlopen in -ldl... " >&6; }
10631 if ${ac_cv_lib_dl_dlopen+:} false; then :
10632 $as_echo_n "(cached) " >&6
10633 else
10634 ac_check_lib_save_LIBS=$LIBS
10635 LIBS="-ldl $LIBS"
10636 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
10637 /* end confdefs.h. */
10638
10639 /* Override any GCC internal prototype to avoid an error.
10640 Use char because int might match the return type of a GCC
10641 builtin and then its argument prototype would still apply. */
10642 #ifdef __cplusplus
10643 extern "C"
10644 #endif
10645 char dlopen ();
10646 int
10647 main ()
10648 {
10649 return dlopen ();
10650 ;
10651 return 0;
10652 }
10653 _ACEOF
10654 if ac_fn_c_try_link "$LINENO"; then :
10655 ac_cv_lib_dl_dlopen=yes
10656 else
10657 ac_cv_lib_dl_dlopen=no
10658 fi
10659 rm -f core conftest.err conftest.$ac_objext \
10660 conftest$ac_exeext conftest.$ac_ext
10661 LIBS=$ac_check_lib_save_LIBS
10662 fi
10663 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlopen" >&5
10664 $as_echo "$ac_cv_lib_dl_dlopen" >&6; }
10665 if test "x$ac_cv_lib_dl_dlopen" = xyes; then :
10666 lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"
10667 else
10668
10669 lt_cv_dlopen="dyld"
10670 lt_cv_dlopen_libs=
10671 lt_cv_dlopen_self=yes
10672
10673 fi
10674
10675 ;;
10676
10677 *)
10678 ac_fn_c_check_func "$LINENO" "shl_load" "ac_cv_func_shl_load"
10679 if test "x$ac_cv_func_shl_load" = xyes; then :
10680 lt_cv_dlopen="shl_load"
10681 else
10682 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for shl_load in -ldld" >&5
10683 $as_echo_n "checking for shl_load in -ldld... " >&6; }
10684 if ${ac_cv_lib_dld_shl_load+:} false; then :
10685 $as_echo_n "(cached) " >&6
10686 else
10687 ac_check_lib_save_LIBS=$LIBS
10688 LIBS="-ldld $LIBS"
10689 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
10690 /* end confdefs.h. */
10691
10692 /* Override any GCC internal prototype to avoid an error.
10693 Use char because int might match the return type of a GCC
10694 builtin and then its argument prototype would still apply. */
10695 #ifdef __cplusplus
10696 extern "C"
10697 #endif
10698 char shl_load ();
10699 int
10700 main ()
10701 {
10702 return shl_load ();
10703 ;
10704 return 0;
10705 }
10706 _ACEOF
10707 if ac_fn_c_try_link "$LINENO"; then :
10708 ac_cv_lib_dld_shl_load=yes
10709 else
10710 ac_cv_lib_dld_shl_load=no
10711 fi
10712 rm -f core conftest.err conftest.$ac_objext \
10713 conftest$ac_exeext conftest.$ac_ext
10714 LIBS=$ac_check_lib_save_LIBS
10715 fi
10716 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dld_shl_load" >&5
10717 $as_echo "$ac_cv_lib_dld_shl_load" >&6; }
10718 if test "x$ac_cv_lib_dld_shl_load" = xyes; then :
10719 lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-ldld"
10720 else
10721 ac_fn_c_check_func "$LINENO" "dlopen" "ac_cv_func_dlopen"
10722 if test "x$ac_cv_func_dlopen" = xyes; then :
10723 lt_cv_dlopen="dlopen"
10724 else
10725 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -ldl" >&5
10726 $as_echo_n "checking for dlopen in -ldl... " >&6; }
10727 if ${ac_cv_lib_dl_dlopen+:} false; then :
10728 $as_echo_n "(cached) " >&6
10729 else
10730 ac_check_lib_save_LIBS=$LIBS
10731 LIBS="-ldl $LIBS"
10732 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
10733 /* end confdefs.h. */
10734
10735 /* Override any GCC internal prototype to avoid an error.
10736 Use char because int might match the return type of a GCC
10737 builtin and then its argument prototype would still apply. */
10738 #ifdef __cplusplus
10739 extern "C"
10740 #endif
10741 char dlopen ();
10742 int
10743 main ()
10744 {
10745 return dlopen ();
10746 ;
10747 return 0;
10748 }
10749 _ACEOF
10750 if ac_fn_c_try_link "$LINENO"; then :
10751 ac_cv_lib_dl_dlopen=yes
10752 else
10753 ac_cv_lib_dl_dlopen=no
10754 fi
10755 rm -f core conftest.err conftest.$ac_objext \
10756 conftest$ac_exeext conftest.$ac_ext
10757 LIBS=$ac_check_lib_save_LIBS
10758 fi
10759 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlopen" >&5
10760 $as_echo "$ac_cv_lib_dl_dlopen" >&6; }
10761 if test "x$ac_cv_lib_dl_dlopen" = xyes; then :
10762 lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"
10763 else
10764 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -lsvld" >&5
10765 $as_echo_n "checking for dlopen in -lsvld... " >&6; }
10766 if ${ac_cv_lib_svld_dlopen+:} false; then :
10767 $as_echo_n "(cached) " >&6
10768 else
10769 ac_check_lib_save_LIBS=$LIBS
10770 LIBS="-lsvld $LIBS"
10771 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
10772 /* end confdefs.h. */
10773
10774 /* Override any GCC internal prototype to avoid an error.
10775 Use char because int might match the return type of a GCC
10776 builtin and then its argument prototype would still apply. */
10777 #ifdef __cplusplus
10778 extern "C"
10779 #endif
10780 char dlopen ();
10781 int
10782 main ()
10783 {
10784 return dlopen ();
10785 ;
10786 return 0;
10787 }
10788 _ACEOF
10789 if ac_fn_c_try_link "$LINENO"; then :
10790 ac_cv_lib_svld_dlopen=yes
10791 else
10792 ac_cv_lib_svld_dlopen=no
10793 fi
10794 rm -f core conftest.err conftest.$ac_objext \
10795 conftest$ac_exeext conftest.$ac_ext
10796 LIBS=$ac_check_lib_save_LIBS
10797 fi
10798 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_svld_dlopen" >&5
10799 $as_echo "$ac_cv_lib_svld_dlopen" >&6; }
10800 if test "x$ac_cv_lib_svld_dlopen" = xyes; then :
10801 lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld"
10802 else
10803 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dld_link in -ldld" >&5
10804 $as_echo_n "checking for dld_link in -ldld... " >&6; }
10805 if ${ac_cv_lib_dld_dld_link+:} false; then :
10806 $as_echo_n "(cached) " >&6
10807 else
10808 ac_check_lib_save_LIBS=$LIBS
10809 LIBS="-ldld $LIBS"
10810 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
10811 /* end confdefs.h. */
10812
10813 /* Override any GCC internal prototype to avoid an error.
10814 Use char because int might match the return type of a GCC
10815 builtin and then its argument prototype would still apply. */
10816 #ifdef __cplusplus
10817 extern "C"
10818 #endif
10819 char dld_link ();
10820 int
10821 main ()
10822 {
10823 return dld_link ();
10824 ;
10825 return 0;
10826 }
10827 _ACEOF
10828 if ac_fn_c_try_link "$LINENO"; then :
10829 ac_cv_lib_dld_dld_link=yes
10830 else
10831 ac_cv_lib_dld_dld_link=no
10832 fi
10833 rm -f core conftest.err conftest.$ac_objext \
10834 conftest$ac_exeext conftest.$ac_ext
10835 LIBS=$ac_check_lib_save_LIBS
10836 fi
10837 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dld_dld_link" >&5
10838 $as_echo "$ac_cv_lib_dld_dld_link" >&6; }
10839 if test "x$ac_cv_lib_dld_dld_link" = xyes; then :
10840 lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-ldld"
10841 fi
10842
10843
10844 fi
10845
10846
10847 fi
10848
10849
10850 fi
10851
10852
10853 fi
10854
10855
10856 fi
10857
10858 ;;
10859 esac
10860
10861 if test "x$lt_cv_dlopen" != xno; then
10862 enable_dlopen=yes
10863 else
10864 enable_dlopen=no
10865 fi
10866
10867 case $lt_cv_dlopen in
10868 dlopen)
10869 save_CPPFLAGS="$CPPFLAGS"
10870 test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H"
10871
10872 save_LDFLAGS="$LDFLAGS"
10873 wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\"
10874
10875 save_LIBS="$LIBS"
10876 LIBS="$lt_cv_dlopen_libs $LIBS"
10877
10878 { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether a program can dlopen itself" >&5
10879 $as_echo_n "checking whether a program can dlopen itself... " >&6; }
10880 if ${lt_cv_dlopen_self+:} false; then :
10881 $as_echo_n "(cached) " >&6
10882 else
10883 if test "$cross_compiling" = yes; then :
10884 lt_cv_dlopen_self=cross
10885 else
10886 lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
10887 lt_status=$lt_dlunknown
10888 cat > conftest.$ac_ext <<_LT_EOF
10889 #line $LINENO "configure"
10890 #include "confdefs.h"
10891
10892 #if HAVE_DLFCN_H
10893 #include <dlfcn.h>
10894 #endif
10895
10896 #include <stdio.h>
10897
10898 #ifdef RTLD_GLOBAL
10899 # define LT_DLGLOBAL RTLD_GLOBAL
10900 #else
10901 # ifdef DL_GLOBAL
10902 # define LT_DLGLOBAL DL_GLOBAL
10903 # else
10904 # define LT_DLGLOBAL 0
10905 # endif
10906 #endif
10907
10908 /* We may have to define LT_DLLAZY_OR_NOW in the command line if we
10909 find out it does not work in some platform. */
10910 #ifndef LT_DLLAZY_OR_NOW
10911 # ifdef RTLD_LAZY
10912 # define LT_DLLAZY_OR_NOW RTLD_LAZY
10913 # else
10914 # ifdef DL_LAZY
10915 # define LT_DLLAZY_OR_NOW DL_LAZY
10916 # else
10917 # ifdef RTLD_NOW
10918 # define LT_DLLAZY_OR_NOW RTLD_NOW
10919 # else
10920 # ifdef DL_NOW
10921 # define LT_DLLAZY_OR_NOW DL_NOW
10922 # else
10923 # define LT_DLLAZY_OR_NOW 0
10924 # endif
10925 # endif
10926 # endif
10927 # endif
10928 #endif
10929
10930 /* When -fvisbility=hidden is used, assume the code has been annotated
10931 correspondingly for the symbols needed. */
10932 #if defined(__GNUC__) && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3))
10933 int fnord () __attribute__((visibility("default")));
10934 #endif
10935
10936 int fnord () { return 42; }
10937 int main ()
10938 {
10939 void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW);
10940 int status = $lt_dlunknown;
10941
10942 if (self)
10943 {
10944 if (dlsym (self,"fnord")) status = $lt_dlno_uscore;
10945 else
10946 {
10947 if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore;
10948 else puts (dlerror ());
10949 }
10950 /* dlclose (self); */
10951 }
10952 else
10953 puts (dlerror ());
10954
10955 return status;
10956 }
10957 _LT_EOF
10958 if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5
10959 (eval $ac_link) 2>&5
10960 ac_status=$?
10961 $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
10962 test $ac_status = 0; } && test -s conftest${ac_exeext} 2>/dev/null; then
10963 (./conftest; exit; ) >&5 2>/dev/null
10964 lt_status=$?
10965 case x$lt_status in
10966 x$lt_dlno_uscore) lt_cv_dlopen_self=yes ;;
10967 x$lt_dlneed_uscore) lt_cv_dlopen_self=yes ;;
10968 x$lt_dlunknown|x*) lt_cv_dlopen_self=no ;;
10969 esac
10970 else :
10971 # compilation failed
10972 lt_cv_dlopen_self=no
10973 fi
10974 fi
10975 rm -fr conftest*
10976
10977
10978 fi
10979 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_dlopen_self" >&5
10980 $as_echo "$lt_cv_dlopen_self" >&6; }
10981
10982 if test "x$lt_cv_dlopen_self" = xyes; then
10983 wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $lt_prog_compiler_static\"
10984 { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether a statically linked program can dlopen itself" >&5
10985 $as_echo_n "checking whether a statically linked program can dlopen itself... " >&6; }
10986 if ${lt_cv_dlopen_self_static+:} false; then :
10987 $as_echo_n "(cached) " >&6
10988 else
10989 if test "$cross_compiling" = yes; then :
10990 lt_cv_dlopen_self_static=cross
10991 else
10992 lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
10993 lt_status=$lt_dlunknown
10994 cat > conftest.$ac_ext <<_LT_EOF
10995 #line $LINENO "configure"
10996 #include "confdefs.h"
10997
10998 #if HAVE_DLFCN_H
10999 #include <dlfcn.h>
11000 #endif
11001
11002 #include <stdio.h>
11003
11004 #ifdef RTLD_GLOBAL
11005 # define LT_DLGLOBAL RTLD_GLOBAL
11006 #else
11007 # ifdef DL_GLOBAL
11008 # define LT_DLGLOBAL DL_GLOBAL
11009 # else
11010 # define LT_DLGLOBAL 0
11011 # endif
11012 #endif
11013
11014 /* We may have to define LT_DLLAZY_OR_NOW in the command line if we
11015 find out it does not work in some platform. */
11016 #ifndef LT_DLLAZY_OR_NOW
11017 # ifdef RTLD_LAZY
11018 # define LT_DLLAZY_OR_NOW RTLD_LAZY
11019 # else
11020 # ifdef DL_LAZY
11021 # define LT_DLLAZY_OR_NOW DL_LAZY
11022 # else
11023 # ifdef RTLD_NOW
11024 # define LT_DLLAZY_OR_NOW RTLD_NOW
11025 # else
11026 # ifdef DL_NOW
11027 # define LT_DLLAZY_OR_NOW DL_NOW
11028 # else
11029 # define LT_DLLAZY_OR_NOW 0
11030 # endif
11031 # endif
11032 # endif
11033 # endif
11034 #endif
11035
11036 /* When -fvisbility=hidden is used, assume the code has been annotated
11037 correspondingly for the symbols needed. */
11038 #if defined(__GNUC__) && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3))
11039 int fnord () __attribute__((visibility("default")));
11040 #endif
11041
11042 int fnord () { return 42; }
11043 int main ()
11044 {
11045 void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW);
11046 int status = $lt_dlunknown;
11047
11048 if (self)
11049 {
11050 if (dlsym (self,"fnord")) status = $lt_dlno_uscore;
11051 else
11052 {
11053 if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore;
11054 else puts (dlerror ());
11055 }
11056 /* dlclose (self); */
11057 }
11058 else
11059 puts (dlerror ());
11060
11061 return status;
11062 }
11063 _LT_EOF
11064 if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5
11065 (eval $ac_link) 2>&5
11066 ac_status=$?
11067 $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
11068 test $ac_status = 0; } && test -s conftest${ac_exeext} 2>/dev/null; then
11069 (./conftest; exit; ) >&5 2>/dev/null
11070 lt_status=$?
11071 case x$lt_status in
11072 x$lt_dlno_uscore) lt_cv_dlopen_self_static=yes ;;
11073 x$lt_dlneed_uscore) lt_cv_dlopen_self_static=yes ;;
11074 x$lt_dlunknown|x*) lt_cv_dlopen_self_static=no ;;
11075 esac
11076 else :
11077 # compilation failed
11078 lt_cv_dlopen_self_static=no
11079 fi
11080 fi
11081 rm -fr conftest*
11082
11083
11084 fi
11085 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_dlopen_self_static" >&5
11086 $as_echo "$lt_cv_dlopen_self_static" >&6; }
11087 fi
11088
11089 CPPFLAGS="$save_CPPFLAGS"
11090 LDFLAGS="$save_LDFLAGS"
11091 LIBS="$save_LIBS"
11092 ;;
11093 esac
11094
11095 case $lt_cv_dlopen_self in
11096 yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;;
11097 *) enable_dlopen_self=unknown ;;
11098 esac
11099
11100 case $lt_cv_dlopen_self_static in
11101 yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;;
11102 *) enable_dlopen_self_static=unknown ;;
11103 esac
11104 fi
11105
11106
11107
11108
11109
11110
11111
11112
11113
11114
11115
11116
11117
11118
11119
11120
11121
11122 striplib=
11123 old_striplib=
11124 { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether stripping libraries is possible" >&5
11125 $as_echo_n "checking whether stripping libraries is possible... " >&6; }
11126 if test -n "$STRIP" && $STRIP -V 2>&1 | $GREP "GNU strip" >/dev/null; then
11127 test -z "$old_striplib" && old_striplib="$STRIP --strip-debug"
11128 test -z "$striplib" && striplib="$STRIP --strip-unneeded"
11129 { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
11130 $as_echo "yes" >&6; }
11131 else
11132 # FIXME - insert some real tests, host_os isn't really good enough
11133 case $host_os in
11134 darwin*)
11135 if test -n "$STRIP" ; then
11136 striplib="$STRIP -x"
11137 old_striplib="$STRIP -S"
11138 { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
11139 $as_echo "yes" >&6; }
11140 else
11141 { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
11142 $as_echo "no" >&6; }
11143 fi
11144 ;;
11145 *)
11146 { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
11147 $as_echo "no" >&6; }
11148 ;;
11149 esac
11150 fi
11151
11152
11153
11154
11155
11156
11157
11158
11159
11160
11161
11162
11163 # Report which library types will actually be built
11164 { $as_echo "$as_me:${as_lineno-$LINENO}: checking if libtool supports shared libraries" >&5
11165 $as_echo_n "checking if libtool supports shared libraries... " >&6; }
11166 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $can_build_shared" >&5
11167 $as_echo "$can_build_shared" >&6; }
11168
11169 { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to build shared libraries" >&5
11170 $as_echo_n "checking whether to build shared libraries... " >&6; }
11171 test "$can_build_shared" = "no" && enable_shared=no
11172
11173 # On AIX, shared libraries and static libraries use the same namespace, and
11174 # are all built from PIC.
11175 case $host_os in
11176 aix3*)
11177 test "$enable_shared" = yes && enable_static=no
11178 if test -n "$RANLIB"; then
11179 archive_cmds="$archive_cmds~\$RANLIB \$lib"
11180 postinstall_cmds='$RANLIB $lib'
11181 fi
11182 ;;
11183
11184 aix[4-9]*)
11185 if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then
11186 test "$enable_shared" = yes && enable_static=no
11187 fi
11188 ;;
11189 esac
11190 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_shared" >&5
11191 $as_echo "$enable_shared" >&6; }
11192
11193 { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to build static libraries" >&5
11194 $as_echo_n "checking whether to build static libraries... " >&6; }
11195 # Make sure either enable_shared or enable_static is yes.
11196 test "$enable_shared" = yes || enable_static=yes
11197 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_static" >&5
11198 $as_echo "$enable_static" >&6; }
11199
11200
11201
11202
11203 fi
11204 ac_ext=c
11205 ac_cpp='$CPP $CPPFLAGS'
11206 ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
11207 ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
11208 ac_compiler_gnu=$ac_cv_c_compiler_gnu
11209
11210 CC="$lt_save_CC"
11211
11212
11213
11214
11215
11216
11217
11218
11219
11220
11221
11222
11223
11224
11225
11226 ac_config_commands="$ac_config_commands libtool"
11227
11228
11229
11230
11231 # Only expand once:
11232
11233 # libtool
11234
11235
11236 ac_config_headers="$ac_config_headers include/config.h"
11237
11238
11239
11240
11241
11242 { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to enable maintainer-specific portions of Makefiles" >&5
11243 $as_echo_n "checking whether to enable maintainer-specific portions of Makefiles... " >&6; }
11244 # Check whether --enable-maintainer-mode was given.
11245 if test "${enable_maintainer_mode+set}" = set; then :
11246 enableval=$enable_maintainer_mode; USE_MAINTAINER_MODE=$enableval
11247 else
11248 USE_MAINTAINER_MODE=no
11249 fi
11250
11251 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $USE_MAINTAINER_MODE" >&5
11252 $as_echo "$USE_MAINTAINER_MODE" >&6; }
11253 if test $USE_MAINTAINER_MODE = yes; then
11254 MAINTAINER_MODE_TRUE=
11255 MAINTAINER_MODE_FALSE='#'
11256 else
11257 MAINTAINER_MODE_TRUE='#'
11258 MAINTAINER_MODE_FALSE=
11259 fi
11260
11261 MAINT=$MAINTAINER_MODE_TRUE
11262
11263
11264
11265 ac_ext=c
11266 ac_cpp='$CPP $CPPFLAGS'
11267 ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
11268 ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
11269 ac_compiler_gnu=$ac_cv_c_compiler_gnu
11270 if test -n "$ac_tool_prefix"; then
11271 # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args.
11272 set dummy ${ac_tool_prefix}gcc; ac_word=$2
11273 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
11274 $as_echo_n "checking for $ac_word... " >&6; }
11275 if ${ac_cv_prog_CC+:} false; then :
11276 $as_echo_n "(cached) " >&6
11277 else
11278 if test -n "$CC"; then
11279 ac_cv_prog_CC="$CC" # Let the user override the test.
11280 else
11281 as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
11282 for as_dir in $PATH
11283 do
11284 IFS=$as_save_IFS
11285 test -z "$as_dir" && as_dir=.
11286 for ac_exec_ext in '' $ac_executable_extensions; do
11287 if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
11288 ac_cv_prog_CC="${ac_tool_prefix}gcc"
11289 $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
11290 break 2
11291 fi
11292 done
11293 done
11294 IFS=$as_save_IFS
11295
11296 fi
11297 fi
11298 CC=$ac_cv_prog_CC
11299 if test -n "$CC"; then
11300 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
11301 $as_echo "$CC" >&6; }
11302 else
11303 { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
11304 $as_echo "no" >&6; }
11305 fi
11306
11307
11308 fi
11309 if test -z "$ac_cv_prog_CC"; then
11310 ac_ct_CC=$CC
11311 # Extract the first word of "gcc", so it can be a program name with args.
11312 set dummy gcc; ac_word=$2
11313 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
11314 $as_echo_n "checking for $ac_word... " >&6; }
11315 if ${ac_cv_prog_ac_ct_CC+:} false; then :
11316 $as_echo_n "(cached) " >&6
11317 else
11318 if test -n "$ac_ct_CC"; then
11319 ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.
11320 else
11321 as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
11322 for as_dir in $PATH
11323 do
11324 IFS=$as_save_IFS
11325 test -z "$as_dir" && as_dir=.
11326 for ac_exec_ext in '' $ac_executable_extensions; do
11327 if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
11328 ac_cv_prog_ac_ct_CC="gcc"
11329 $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
11330 break 2
11331 fi
11332 done
11333 done
11334 IFS=$as_save_IFS
11335
11336 fi
11337 fi
11338 ac_ct_CC=$ac_cv_prog_ac_ct_CC
11339 if test -n "$ac_ct_CC"; then
11340 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5
11341 $as_echo "$ac_ct_CC" >&6; }
11342 else
11343 { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
11344 $as_echo "no" >&6; }
11345 fi
11346
11347 if test "x$ac_ct_CC" = x; then
11348 CC=""
11349 else
11350 case $cross_compiling:$ac_tool_warned in
11351 yes:)
11352 { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
11353 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
11354 ac_tool_warned=yes ;;
11355 esac
11356 CC=$ac_ct_CC
11357 fi
11358 else
11359 CC="$ac_cv_prog_CC"
11360 fi
11361
11362 if test -z "$CC"; then
11363 if test -n "$ac_tool_prefix"; then
11364 # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args.
11365 set dummy ${ac_tool_prefix}cc; ac_word=$2
11366 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
11367 $as_echo_n "checking for $ac_word... " >&6; }
11368 if ${ac_cv_prog_CC+:} false; then :
11369 $as_echo_n "(cached) " >&6
11370 else
11371 if test -n "$CC"; then
11372 ac_cv_prog_CC="$CC" # Let the user override the test.
11373 else
11374 as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
11375 for as_dir in $PATH
11376 do
11377 IFS=$as_save_IFS
11378 test -z "$as_dir" && as_dir=.
11379 for ac_exec_ext in '' $ac_executable_extensions; do
11380 if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
11381 ac_cv_prog_CC="${ac_tool_prefix}cc"
11382 $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
11383 break 2
11384 fi
11385 done
11386 done
11387 IFS=$as_save_IFS
11388
11389 fi
11390 fi
11391 CC=$ac_cv_prog_CC
11392 if test -n "$CC"; then
11393 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
11394 $as_echo "$CC" >&6; }
11395 else
11396 { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
11397 $as_echo "no" >&6; }
11398 fi
11399
11400
11401 fi
11402 fi
11403 if test -z "$CC"; then
11404 # Extract the first word of "cc", so it can be a program name with args.
11405 set dummy cc; ac_word=$2
11406 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
11407 $as_echo_n "checking for $ac_word... " >&6; }
11408 if ${ac_cv_prog_CC+:} false; then :
11409 $as_echo_n "(cached) " >&6
11410 else
11411 if test -n "$CC"; then
11412 ac_cv_prog_CC="$CC" # Let the user override the test.
11413 else
11414 ac_prog_rejected=no
11415 as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
11416 for as_dir in $PATH
11417 do
11418 IFS=$as_save_IFS
11419 test -z "$as_dir" && as_dir=.
11420 for ac_exec_ext in '' $ac_executable_extensions; do
11421 if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
11422 if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then
11423 ac_prog_rejected=yes
11424 continue
11425 fi
11426 ac_cv_prog_CC="cc"
11427 $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
11428 break 2
11429 fi
11430 done
11431 done
11432 IFS=$as_save_IFS
11433
11434 if test $ac_prog_rejected = yes; then
11435 # We found a bogon in the path, so make sure we never use it.
11436 set dummy $ac_cv_prog_CC
11437 shift
11438 if test $# != 0; then
11439 # We chose a different compiler from the bogus one.
11440 # However, it has the same basename, so the bogon will be chosen
11441 # first if we set CC to just the basename; use the full file name.
11442 shift
11443 ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@"
11444 fi
11445 fi
11446 fi
11447 fi
11448 CC=$ac_cv_prog_CC
11449 if test -n "$CC"; then
11450 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
11451 $as_echo "$CC" >&6; }
11452 else
11453 { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
11454 $as_echo "no" >&6; }
11455 fi
11456
11457
11458 fi
11459 if test -z "$CC"; then
11460 if test -n "$ac_tool_prefix"; then
11461 for ac_prog in cl.exe
11462 do
11463 # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
11464 set dummy $ac_tool_prefix$ac_prog; ac_word=$2
11465 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
11466 $as_echo_n "checking for $ac_word... " >&6; }
11467 if ${ac_cv_prog_CC+:} false; then :
11468 $as_echo_n "(cached) " >&6
11469 else
11470 if test -n "$CC"; then
11471 ac_cv_prog_CC="$CC" # Let the user override the test.
11472 else
11473 as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
11474 for as_dir in $PATH
11475 do
11476 IFS=$as_save_IFS
11477 test -z "$as_dir" && as_dir=.
11478 for ac_exec_ext in '' $ac_executable_extensions; do
11479 if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
11480 ac_cv_prog_CC="$ac_tool_prefix$ac_prog"
11481 $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
11482 break 2
11483 fi
11484 done
11485 done
11486 IFS=$as_save_IFS
11487
11488 fi
11489 fi
11490 CC=$ac_cv_prog_CC
11491 if test -n "$CC"; then
11492 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
11493 $as_echo "$CC" >&6; }
11494 else
11495 { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
11496 $as_echo "no" >&6; }
11497 fi
11498
11499
11500 test -n "$CC" && break
11501 done
11502 fi
11503 if test -z "$CC"; then
11504 ac_ct_CC=$CC
11505 for ac_prog in cl.exe
11506 do
11507 # Extract the first word of "$ac_prog", so it can be a program name with args.
11508 set dummy $ac_prog; ac_word=$2
11509 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
11510 $as_echo_n "checking for $ac_word... " >&6; }
11511 if ${ac_cv_prog_ac_ct_CC+:} false; then :
11512 $as_echo_n "(cached) " >&6
11513 else
11514 if test -n "$ac_ct_CC"; then
11515 ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.
11516 else
11517 as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
11518 for as_dir in $PATH
11519 do
11520 IFS=$as_save_IFS
11521 test -z "$as_dir" && as_dir=.
11522 for ac_exec_ext in '' $ac_executable_extensions; do
11523 if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
11524 ac_cv_prog_ac_ct_CC="$ac_prog"
11525 $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
11526 break 2
11527 fi
11528 done
11529 done
11530 IFS=$as_save_IFS
11531
11532 fi
11533 fi
11534 ac_ct_CC=$ac_cv_prog_ac_ct_CC
11535 if test -n "$ac_ct_CC"; then
11536 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5
11537 $as_echo "$ac_ct_CC" >&6; }
11538 else
11539 { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
11540 $as_echo "no" >&6; }
11541 fi
11542
11543
11544 test -n "$ac_ct_CC" && break
11545 done
11546
11547 if test "x$ac_ct_CC" = x; then
11548 CC=""
11549 else
11550 case $cross_compiling:$ac_tool_warned in
11551 yes:)
11552 { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
11553 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
11554 ac_tool_warned=yes ;;
11555 esac
11556 CC=$ac_ct_CC
11557 fi
11558 fi
11559
11560 fi
11561
11562
11563 test -z "$CC" && { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
11564 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
11565 as_fn_error $? "no acceptable C compiler found in \$PATH
11566 See \`config.log' for more details" "$LINENO" 5; }
11567
11568 # Provide some information about the compiler.
11569 $as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5
11570 set X $ac_compile
11571 ac_compiler=$2
11572 for ac_option in --version -v -V -qversion; do
11573 { { ac_try="$ac_compiler $ac_option >&5"
11574 case "(($ac_try" in
11575 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
11576 *) ac_try_echo=$ac_try;;
11577 esac
11578 eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
11579 $as_echo "$ac_try_echo"; } >&5
11580 (eval "$ac_compiler $ac_option >&5") 2>conftest.err
11581 ac_status=$?
11582 if test -s conftest.err; then
11583 sed '10a\
11584 ... rest of stderr output deleted ...
11585 10q' conftest.err >conftest.er1
11586 cat conftest.er1 >&5
11587 fi
11588 rm -f conftest.er1 conftest.err
11589 $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
11590 test $ac_status = 0; }
11591 done
11592
11593 { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C compiler" >&5
11594 $as_echo_n "checking whether we are using the GNU C compiler... " >&6; }
11595 if ${ac_cv_c_compiler_gnu+:} false; then :
11596 $as_echo_n "(cached) " >&6
11597 else
11598 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
11599 /* end confdefs.h. */
11600
11601 int
11602 main ()
11603 {
11604 #ifndef __GNUC__
11605 choke me
11606 #endif
11607
11608 ;
11609 return 0;
11610 }
11611 _ACEOF
11612 if ac_fn_c_try_compile "$LINENO"; then :
11613 ac_compiler_gnu=yes
11614 else
11615 ac_compiler_gnu=no
11616 fi
11617 rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
11618 ac_cv_c_compiler_gnu=$ac_compiler_gnu
11619
11620 fi
11621 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5
11622 $as_echo "$ac_cv_c_compiler_gnu" >&6; }
11623 if test $ac_compiler_gnu = yes; then
11624 GCC=yes
11625 else
11626 GCC=
11627 fi
11628 ac_test_CFLAGS=${CFLAGS+set}
11629 ac_save_CFLAGS=$CFLAGS
11630 { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5
11631 $as_echo_n "checking whether $CC accepts -g... " >&6; }
11632 if ${ac_cv_prog_cc_g+:} false; then :
11633 $as_echo_n "(cached) " >&6
11634 else
11635 ac_save_c_werror_flag=$ac_c_werror_flag
11636 ac_c_werror_flag=yes
11637 ac_cv_prog_cc_g=no
11638 CFLAGS="-g"
11639 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
11640 /* end confdefs.h. */
11641
11642 int
11643 main ()
11644 {
11645
11646 ;
11647 return 0;
11648 }
11649 _ACEOF
11650 if ac_fn_c_try_compile "$LINENO"; then :
11651 ac_cv_prog_cc_g=yes
11652 else
11653 CFLAGS=""
11654 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
11655 /* end confdefs.h. */
11656
11657 int
11658 main ()
11659 {
11660
11661 ;
11662 return 0;
11663 }
11664 _ACEOF
11665 if ac_fn_c_try_compile "$LINENO"; then :
11666
11667 else
11668 ac_c_werror_flag=$ac_save_c_werror_flag
11669 CFLAGS="-g"
11670 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
11671 /* end confdefs.h. */
11672
11673 int
11674 main ()
11675 {
11676
11677 ;
11678 return 0;
11679 }
11680 _ACEOF
11681 if ac_fn_c_try_compile "$LINENO"; then :
11682 ac_cv_prog_cc_g=yes
11683 fi
11684 rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
11685 fi
11686 rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
11687 fi
11688 rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
11689 ac_c_werror_flag=$ac_save_c_werror_flag
11690 fi
11691 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5
11692 $as_echo "$ac_cv_prog_cc_g" >&6; }
11693 if test "$ac_test_CFLAGS" = set; then
11694 CFLAGS=$ac_save_CFLAGS
11695 elif test $ac_cv_prog_cc_g = yes; then
11696 if test "$GCC" = yes; then
11697 CFLAGS="-g -O2"
11698 else
11699 CFLAGS="-g"
11700 fi
11701 else
11702 if test "$GCC" = yes; then
11703 CFLAGS="-O2"
11704 else
11705 CFLAGS=
11706 fi
11707 fi
11708 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO C89" >&5
11709 $as_echo_n "checking for $CC option to accept ISO C89... " >&6; }
11710 if ${ac_cv_prog_cc_c89+:} false; then :
11711 $as_echo_n "(cached) " >&6
11712 else
11713 ac_cv_prog_cc_c89=no
11714 ac_save_CC=$CC
11715 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
11716 /* end confdefs.h. */
11717 #include <stdarg.h>
11718 #include <stdio.h>
11719 struct stat;
11720 /* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */
11721 struct buf { int x; };
11722 FILE * (*rcsopen) (struct buf *, struct stat *, int);
11723 static char *e (p, i)
11724 char **p;
11725 int i;
11726 {
11727 return p[i];
11728 }
11729 static char *f (char * (*g) (char **, int), char **p, ...)
11730 {
11731 char *s;
11732 va_list v;
11733 va_start (v,p);
11734 s = g (p, va_arg (v,int));
11735 va_end (v);
11736 return s;
11737 }
11738
11739 /* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has
11740 function prototypes and stuff, but not '\xHH' hex character constants.
11741 These don't provoke an error unfortunately, instead are silently treated
11742 as 'x'. The following induces an error, until -std is added to get
11743 proper ANSI mode. Curiously '\x00'!='x' always comes out true, for an
11744 array size at least. It's necessary to write '\x00'==0 to get something
11745 that's true only with -std. */
11746 int osf4_cc_array ['\x00' == 0 ? 1 : -1];
11747
11748 /* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters
11749 inside strings and character constants. */
11750 #define FOO(x) 'x'
11751 int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1];
11752
11753 int test (int i, double x);
11754 struct s1 {int (*f) (int a);};
11755 struct s2 {int (*f) (double a);};
11756 int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int);
11757 int argc;
11758 char **argv;
11759 int
11760 main ()
11761 {
11762 return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1];
11763 ;
11764 return 0;
11765 }
11766 _ACEOF
11767 for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \
11768 -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__"
11769 do
11770 CC="$ac_save_CC $ac_arg"
11771 if ac_fn_c_try_compile "$LINENO"; then :
11772 ac_cv_prog_cc_c89=$ac_arg
11773 fi
11774 rm -f core conftest.err conftest.$ac_objext
11775 test "x$ac_cv_prog_cc_c89" != "xno" && break
11776 done
11777 rm -f conftest.$ac_ext
11778 CC=$ac_save_CC
11779
11780 fi
11781 # AC_CACHE_VAL
11782 case "x$ac_cv_prog_cc_c89" in
11783 x)
11784 { $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed" >&5
11785 $as_echo "none needed" >&6; } ;;
11786 xno)
11787 { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5
11788 $as_echo "unsupported" >&6; } ;;
11789 *)
11790 CC="$CC $ac_cv_prog_cc_c89"
11791 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5
11792 $as_echo "$ac_cv_prog_cc_c89" >&6; } ;;
11793 esac
11794 if test "x$ac_cv_prog_cc_c89" != xno; then :
11795
11796 fi
11797
11798 ac_ext=c
11799 ac_cpp='$CPP $CPPFLAGS'
11800 ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
11801 ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
11802 ac_compiler_gnu=$ac_cv_c_compiler_gnu
11803
11804 ac_ext=c
11805 ac_cpp='$CPP $CPPFLAGS'
11806 ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
11807 ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
11808 ac_compiler_gnu=$ac_cv_c_compiler_gnu
11809 { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC understands -c and -o together" >&5
11810 $as_echo_n "checking whether $CC understands -c and -o together... " >&6; }
11811 if ${am_cv_prog_cc_c_o+:} false; then :
11812 $as_echo_n "(cached) " >&6
11813 else
11814 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
11815 /* end confdefs.h. */
11816
11817 int
11818 main ()
11819 {
11820
11821 ;
11822 return 0;
11823 }
11824 _ACEOF
11825 # Make sure it works both with $CC and with simple cc.
11826 # Following AC_PROG_CC_C_O, we do the test twice because some
11827 # compilers refuse to overwrite an existing .o file with -o,
11828 # though they will create one.
11829 am_cv_prog_cc_c_o=yes
11830 for am_i in 1 2; do
11831 if { echo "$as_me:$LINENO: $CC -c conftest.$ac_ext -o conftest2.$ac_objext" >&5
11832 ($CC -c conftest.$ac_ext -o conftest2.$ac_objext) >&5 2>&5
11833 ac_status=$?
11834 echo "$as_me:$LINENO: \$? = $ac_status" >&5
11835 (exit $ac_status); } \
11836 && test -f conftest2.$ac_objext; then
11837 : OK
11838 else
11839 am_cv_prog_cc_c_o=no
11840 break
11841 fi
11842 done
11843 rm -f core conftest*
11844 unset am_i
11845 fi
11846 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_prog_cc_c_o" >&5
11847 $as_echo "$am_cv_prog_cc_c_o" >&6; }
11848 if test "$am_cv_prog_cc_c_o" != yes; then
11849 # Losing compiler, so override with the script.
11850 # FIXME: It is wrong to rewrite CC.
11851 # But if we don't then we get into trouble of one sort or another.
11852 # A longer-term fix would be to have automake use am__CC in this case,
11853 # and then we could set am__CC="\$(top_srcdir)/compile \$(CC)"
11854 CC="$am_aux_dir/compile $CC"
11855 fi
11856 ac_ext=c
11857 ac_cpp='$CPP $CPPFLAGS'
11858 ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
11859 ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
11860 ac_compiler_gnu=$ac_cv_c_compiler_gnu
11861
11862
11863
11864 # Check for jerasure/gf_complete headers
11865 for ac_header in jerasure.h cauchy.h galois.h liberation.h reed_sol.h gf_complete.h
11866 do :
11867 as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
11868 ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default"
11869 if eval test \"x\$"$as_ac_Header"\" = x"yes"; then :
11870 cat >>confdefs.h <<_ACEOF
11871 #define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
11872 _ACEOF
11873
11874 fi
11875
11876 done
11877
11878
11879 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for jerasure_autoconf_test in -lJerasure" >&5
11880 $as_echo_n "checking for jerasure_autoconf_test in -lJerasure... " >&6; }
11881 if ${ac_cv_lib_Jerasure_jerasure_autoconf_test+:} false; then :
11882 $as_echo_n "(cached) " >&6
11883 else
11884 ac_check_lib_save_LIBS=$LIBS
11885 LIBS="-lJerasure $LIBS"
11886 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
11887 /* end confdefs.h. */
11888
11889 /* Override any GCC internal prototype to avoid an error.
11890 Use char because int might match the return type of a GCC
11891 builtin and then its argument prototype would still apply. */
11892 #ifdef __cplusplus
11893 extern "C"
11894 #endif
11895 char jerasure_autoconf_test ();
11896 int
11897 main ()
11898 {
11899 return jerasure_autoconf_test ();
11900 ;
11901 return 0;
11902 }
11903 _ACEOF
11904 if ac_fn_c_try_link "$LINENO"; then :
11905 ac_cv_lib_Jerasure_jerasure_autoconf_test=yes
11906 else
11907 ac_cv_lib_Jerasure_jerasure_autoconf_test=no
11908 fi
11909 rm -f core conftest.err conftest.$ac_objext \
11910 conftest$ac_exeext conftest.$ac_ext
11911 LIBS=$ac_check_lib_save_LIBS
11912 fi
11913 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_Jerasure_jerasure_autoconf_test" >&5
11914 $as_echo "$ac_cv_lib_Jerasure_jerasure_autoconf_test" >&6; }
11915 if test "x$ac_cv_lib_Jerasure_jerasure_autoconf_test" = xyes; then :
11916
11917 echo "Found libJerasure"
11918 HAVE_LIBJERASURE = 1
11919
11920 else
11921
11922 echo "Error! You need to have libJerasure installed."
11923 echo "libJerasure is available from bitbucket.org/kmgreen2/jerasure-kmg.git"
11924 exit -1
11925
11926 fi
11927
11928
11929 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for gf_init_easy in -lgf_complete" >&5
11930 $as_echo_n "checking for gf_init_easy in -lgf_complete... " >&6; }
11931 if ${ac_cv_lib_gf_complete_gf_init_easy+:} false; then :
11932 $as_echo_n "(cached) " >&6
11933 else
11934 ac_check_lib_save_LIBS=$LIBS
11935 LIBS="-lgf_complete $LIBS"
11936 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
11937 /* end confdefs.h. */
11938
11939 /* Override any GCC internal prototype to avoid an error.
11940 Use char because int might match the return type of a GCC
11941 builtin and then its argument prototype would still apply. */
11942 #ifdef __cplusplus
11943 extern "C"
11944 #endif
11945 char gf_init_easy ();
11946 int
11947 main ()
11948 {
11949 return gf_init_easy ();
11950 ;
11951 return 0;
11952 }
11953 _ACEOF
11954 if ac_fn_c_try_link "$LINENO"; then :
11955 ac_cv_lib_gf_complete_gf_init_easy=yes
11956 else
11957 ac_cv_lib_gf_complete_gf_init_easy=no
11958 fi
11959 rm -f core conftest.err conftest.$ac_objext \
11960 conftest$ac_exeext conftest.$ac_ext
11961 LIBS=$ac_check_lib_save_LIBS
11962 fi
11963 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_gf_complete_gf_init_easy" >&5
11964 $as_echo "$ac_cv_lib_gf_complete_gf_init_easy" >&6; }
11965 if test "x$ac_cv_lib_gf_complete_gf_init_easy" = xyes; then :
11966
11967 echo "Found libgf_complete"
11968 HAVE_LIBGF_COMPLETE = 1
11969
11970 else
11971
11972 echo "Error! You need to have gf_complete installed."
11973 echo "gf_complete is available from http://web.eecs.utk.edu/~plank/plank/papers/CS-13-703.html"
11974 exit -1
11975
11976 fi
11977
11978
11979
11980 ac_ext=c
11981 ac_cpp='$CPP $CPPFLAGS'
11982 ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
11983 ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
11984 ac_compiler_gnu=$ac_cv_c_compiler_gnu
11985
11986 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for x86 cpuid output" >&5
11987 $as_echo_n "checking for x86 cpuid output... " >&6; }
11988 if ${ax_cv_gcc_x86_cpuid_+:} false; then :
11989 $as_echo_n "(cached) " >&6
11990 else
11991 if test "$cross_compiling" = yes; then :
11992 ax_cv_gcc_x86_cpuid_=unknown
11993 else
11994 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
11995 /* end confdefs.h. */
11996 #include <stdio.h>
11997 int
11998 main ()
11999 {
12000
12001 int op = , eax, ebx, ecx, edx;
12002 FILE *f;
12003 __asm__("cpuid"
12004 : "=a" (eax), "=b" (ebx), "=c" (ecx), "=d" (edx)
12005 : "a" (op));
12006 f = fopen("conftest_cpuid", "w"); if (!f) return 1;
12007 fprintf(f, "%x:%x:%x:%x\n", eax, ebx, ecx, edx);
12008 fclose(f);
12009 return 0;
12010
12011 ;
12012 return 0;
12013 }
12014 _ACEOF
12015 if ac_fn_c_try_run "$LINENO"; then :
12016 ax_cv_gcc_x86_cpuid_=`cat conftest_cpuid`; rm -f conftest_cpuid
12017 else
12018 ax_cv_gcc_x86_cpuid_=unknown; rm -f conftest_cpuid
12019 fi
12020 rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
12021 conftest.$ac_objext conftest.beam conftest.$ac_ext
12022 fi
12023
12024 fi
12025 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_cv_gcc_x86_cpuid_" >&5
12026 $as_echo "$ax_cv_gcc_x86_cpuid_" >&6; }
12027 ac_ext=c
12028 ac_cpp='$CPP $CPPFLAGS'
12029 ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
12030 ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
12031 ac_compiler_gnu=$ac_cv_c_compiler_gnu
12032
12033
12034
12035 ac_ext=c
12036 ac_cpp='$CPP $CPPFLAGS'
12037 ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
12038 ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
12039 ac_compiler_gnu=$ac_cv_c_compiler_gnu
12040
12041 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for x86-AVX xgetbv output" >&5
12042 $as_echo_n "checking for x86-AVX xgetbv output... " >&6; }
12043 if ${ax_cv_gcc_x86_avx_xgetbv_+:} false; then :
12044 $as_echo_n "(cached) " >&6
12045 else
12046 if test "$cross_compiling" = yes; then :
12047 ax_cv_gcc_x86_avx_xgetbv_=unknown
12048 else
12049 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
12050 /* end confdefs.h. */
12051 #include <stdio.h>
12052 int
12053 main ()
12054 {
12055
12056 int op = , eax, edx;
12057 FILE *f;
12058 /* Opcodes for xgetbv */
12059 __asm__(".byte 0x0f, 0x01, 0xd0"
12060 : "=a" (eax), "=d" (edx)
12061 : "c" (op));
12062 f = fopen("conftest_xgetbv", "w"); if (!f) return 1;
12063 fprintf(f, "%x:%x\n", eax, edx);
12064 fclose(f);
12065 return 0;
12066
12067 ;
12068 return 0;
12069 }
12070 _ACEOF
12071 if ac_fn_c_try_run "$LINENO"; then :
12072 ax_cv_gcc_x86_avx_xgetbv_=`cat conftest_xgetbv`; rm -f conftest_xgetbv
12073 else
12074 ax_cv_gcc_x86_avx_xgetbv_=unknown; rm -f conftest_xgetbv
12075 fi
12076 rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
12077 conftest.$ac_objext conftest.beam conftest.$ac_ext
12078 fi
12079
12080 fi
12081 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_cv_gcc_x86_avx_xgetbv_" >&5
12082 $as_echo "$ax_cv_gcc_x86_avx_xgetbv_" >&6; }
12083 ac_ext=c
12084 ac_cpp='$CPP $CPPFLAGS'
12085 ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
12086 ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
12087 ac_compiler_gnu=$ac_cv_c_compiler_gnu
12088
12089
12090
12091
12092
12093 case $host_cpu in
12094 powerpc*)
12095 { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether altivec is supported" >&5
12096 $as_echo_n "checking whether altivec is supported... " >&6; }
12097 if ${ax_cv_have_altivec_ext+:} false; then :
12098 $as_echo_n "(cached) " >&6
12099 else
12100
12101 if test `/usr/sbin/sysctl -a 2>/dev/null| grep -c hw.optional.altivec` != 0; then
12102 if test `/usr/sbin/sysctl -n hw.optional.altivec` = 1; then
12103 ax_cv_have_altivec_ext=yes
12104 fi
12105 fi
12106
12107 fi
12108 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_cv_have_altivec_ext" >&5
12109 $as_echo "$ax_cv_have_altivec_ext" >&6; }
12110
12111 if test "$ax_cv_have_altivec_ext" = yes; then
12112
12113 $as_echo "#define HAVE_ALTIVEC /**/" >>confdefs.h
12114
12115 { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether C compiler accepts -faltivec" >&5
12116 $as_echo_n "checking whether C compiler accepts -faltivec... " >&6; }
12117 if ${ax_cv_check_cflags___faltivec+:} false; then :
12118 $as_echo_n "(cached) " >&6
12119 else
12120
12121 ax_check_save_flags=$CFLAGS
12122 CFLAGS="$CFLAGS -faltivec"
12123 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
12124 /* end confdefs.h. */
12125
12126 int
12127 main ()
12128 {
12129
12130 ;
12131 return 0;
12132 }
12133 _ACEOF
12134 if ac_fn_c_try_compile "$LINENO"; then :
12135 ax_cv_check_cflags___faltivec=yes
12136 else
12137 ax_cv_check_cflags___faltivec=no
12138 fi
12139 rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
12140 CFLAGS=$ax_check_save_flags
12141 fi
12142 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_cv_check_cflags___faltivec" >&5
12143 $as_echo "$ax_cv_check_cflags___faltivec" >&6; }
12144 if test x"$ax_cv_check_cflags___faltivec" = xyes; then :
12145 SIMD_FLAGS="$SIMD_FLAGS -faltivec"
12146 else
12147 :
12148 fi
12149
12150 fi
12151 ;;
12152
12153
12154 i[3456]86*|x86_64*|amd64*)
12155
12156
12157
12158
12159
12160 ac_ext=c
12161 ac_cpp='$CPP $CPPFLAGS'
12162 ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
12163 ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
12164 ac_compiler_gnu=$ac_cv_c_compiler_gnu
12165
12166 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for x86 cpuid 0x00000001 output" >&5
12167 $as_echo_n "checking for x86 cpuid 0x00000001 output... " >&6; }
12168 if ${ax_cv_gcc_x86_cpuid_0x00000001+:} false; then :
12169 $as_echo_n "(cached) " >&6
12170 else
12171 if test "$cross_compiling" = yes; then :
12172 ax_cv_gcc_x86_cpuid_0x00000001=unknown
12173 else
12174 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
12175 /* end confdefs.h. */
12176 #include <stdio.h>
12177 int
12178 main ()
12179 {
12180
12181 int op = 0x00000001, eax, ebx, ecx, edx;
12182 FILE *f;
12183 __asm__("cpuid"
12184 : "=a" (eax), "=b" (ebx), "=c" (ecx), "=d" (edx)
12185 : "a" (op));
12186 f = fopen("conftest_cpuid", "w"); if (!f) return 1;
12187 fprintf(f, "%x:%x:%x:%x\n", eax, ebx, ecx, edx);
12188 fclose(f);
12189 return 0;
12190
12191 ;
12192 return 0;
12193 }
12194 _ACEOF
12195 if ac_fn_c_try_run "$LINENO"; then :
12196 ax_cv_gcc_x86_cpuid_0x00000001=`cat conftest_cpuid`; rm -f conftest_cpuid
12197 else
12198 ax_cv_gcc_x86_cpuid_0x00000001=unknown; rm -f conftest_cpuid
12199 fi
12200 rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
12201 conftest.$ac_objext conftest.beam conftest.$ac_ext
12202 fi
12203
12204 fi
12205 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_cv_gcc_x86_cpuid_0x00000001" >&5
12206 $as_echo "$ax_cv_gcc_x86_cpuid_0x00000001" >&6; }
12207 ac_ext=c
12208 ac_cpp='$CPP $CPPFLAGS'
12209 ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
12210 ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
12211 ac_compiler_gnu=$ac_cv_c_compiler_gnu
12212
12213
12214 ecx=`echo $ax_cv_gcc_x86_cpuid_0x00000001 | cut -d ":" -f 3`
12215 edx=`echo $ax_cv_gcc_x86_cpuid_0x00000001 | cut -d ":" -f 4`
12216
12217 { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether mmx is supported" >&5
12218 $as_echo_n "checking whether mmx is supported... " >&6; }
12219 if ${ax_cv_have_mmx_ext+:} false; then :
12220 $as_echo_n "(cached) " >&6
12221 else
12222
12223 ax_cv_have_mmx_ext=no
12224 if test "$((0x$edx>>23&0x01))" = 1; then
12225 ax_cv_have_mmx_ext=yes
12226 fi
12227
12228 fi
12229 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_cv_have_mmx_ext" >&5
12230 $as_echo "$ax_cv_have_mmx_ext" >&6; }
12231
12232 { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether sse is supported" >&5
12233 $as_echo_n "checking whether sse is supported... " >&6; }
12234 if ${ax_cv_have_sse_ext+:} false; then :
12235 $as_echo_n "(cached) " >&6
12236 else
12237
12238 ax_cv_have_sse_ext=no
12239 if test "$((0x$edx>>25&0x01))" = 1; then
12240 ax_cv_have_sse_ext=yes
12241 fi
12242
12243 fi
12244 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_cv_have_sse_ext" >&5
12245 $as_echo "$ax_cv_have_sse_ext" >&6; }
12246
12247 { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether sse2 is supported" >&5
12248 $as_echo_n "checking whether sse2 is supported... " >&6; }
12249 if ${ax_cv_have_sse2_ext+:} false; then :
12250 $as_echo_n "(cached) " >&6
12251 else
12252
12253 ax_cv_have_sse2_ext=no
12254 if test "$((0x$edx>>26&0x01))" = 1; then
12255 ax_cv_have_sse2_ext=yes
12256 fi
12257
12258 fi
12259 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_cv_have_sse2_ext" >&5
12260 $as_echo "$ax_cv_have_sse2_ext" >&6; }
12261
12262 { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether sse3 is supported" >&5
12263 $as_echo_n "checking whether sse3 is supported... " >&6; }
12264 if ${ax_cv_have_sse3_ext+:} false; then :
12265 $as_echo_n "(cached) " >&6
12266 else
12267
12268 ax_cv_have_sse3_ext=no
12269 if test "$((0x$ecx&0x01))" = 1; then
12270 ax_cv_have_sse3_ext=yes
12271 fi
12272
12273 fi
12274 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_cv_have_sse3_ext" >&5
12275 $as_echo "$ax_cv_have_sse3_ext" >&6; }
12276
12277 { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ssse3 is supported" >&5
12278 $as_echo_n "checking whether ssse3 is supported... " >&6; }
12279 if ${ax_cv_have_ssse3_ext+:} false; then :
12280 $as_echo_n "(cached) " >&6
12281 else
12282
12283 ax_cv_have_ssse3_ext=no
12284 if test "$((0x$ecx>>9&0x01))" = 1; then
12285 ax_cv_have_ssse3_ext=yes
12286 fi
12287
12288 fi
12289 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_cv_have_ssse3_ext" >&5
12290 $as_echo "$ax_cv_have_ssse3_ext" >&6; }
12291
12292 { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether sse4.1 is supported" >&5
12293 $as_echo_n "checking whether sse4.1 is supported... " >&6; }
12294 if ${ax_cv_have_sse41_ext+:} false; then :
12295 $as_echo_n "(cached) " >&6
12296 else
12297
12298 ax_cv_have_sse41_ext=no
12299 if test "$((0x$ecx>>19&0x01))" = 1; then
12300 ax_cv_have_sse41_ext=yes
12301 fi
12302
12303 fi
12304 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_cv_have_sse41_ext" >&5
12305 $as_echo "$ax_cv_have_sse41_ext" >&6; }
12306
12307 { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether sse4.2 is supported" >&5
12308 $as_echo_n "checking whether sse4.2 is supported... " >&6; }
12309 if ${ax_cv_have_sse42_ext+:} false; then :
12310 $as_echo_n "(cached) " >&6
12311 else
12312
12313 ax_cv_have_sse42_ext=no
12314 if test "$((0x$ecx>>20&0x01))" = 1; then
12315 ax_cv_have_sse42_ext=yes
12316 fi
12317
12318 fi
12319 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_cv_have_sse42_ext" >&5
12320 $as_echo "$ax_cv_have_sse42_ext" >&6; }
12321
12322 { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether avx is supported by processor" >&5
12323 $as_echo_n "checking whether avx is supported by processor... " >&6; }
12324 if ${ax_cv_have_avx_cpu_ext+:} false; then :
12325 $as_echo_n "(cached) " >&6
12326 else
12327
12328 ax_cv_have_avx_cpu_ext=no
12329 if test "$((0x$ecx>>28&0x01))" = 1; then
12330 ax_cv_have_avx_cpu_ext=yes
12331 fi
12332
12333 fi
12334 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_cv_have_avx_cpu_ext" >&5
12335 $as_echo "$ax_cv_have_avx_cpu_ext" >&6; }
12336
12337 if test x"$ax_cv_have_avx_cpu_ext" = x"yes"; then
12338
12339 ac_ext=c
12340 ac_cpp='$CPP $CPPFLAGS'
12341 ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
12342 ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
12343 ac_compiler_gnu=$ac_cv_c_compiler_gnu
12344
12345 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for x86-AVX xgetbv 0x00000000 output" >&5
12346 $as_echo_n "checking for x86-AVX xgetbv 0x00000000 output... " >&6; }
12347 if ${ax_cv_gcc_x86_avx_xgetbv_0x00000000+:} false; then :
12348 $as_echo_n "(cached) " >&6
12349 else
12350 if test "$cross_compiling" = yes; then :
12351 ax_cv_gcc_x86_avx_xgetbv_0x00000000=unknown
12352 else
12353 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
12354 /* end confdefs.h. */
12355 #include <stdio.h>
12356 int
12357 main ()
12358 {
12359
12360 int op = 0x00000000, eax, edx;
12361 FILE *f;
12362 /* Opcodes for xgetbv */
12363 __asm__(".byte 0x0f, 0x01, 0xd0"
12364 : "=a" (eax), "=d" (edx)
12365 : "c" (op));
12366 f = fopen("conftest_xgetbv", "w"); if (!f) return 1;
12367 fprintf(f, "%x:%x\n", eax, edx);
12368 fclose(f);
12369 return 0;
12370
12371 ;
12372 return 0;
12373 }
12374 _ACEOF
12375 if ac_fn_c_try_run "$LINENO"; then :
12376 ax_cv_gcc_x86_avx_xgetbv_0x00000000=`cat conftest_xgetbv`; rm -f conftest_xgetbv
12377 else
12378 ax_cv_gcc_x86_avx_xgetbv_0x00000000=unknown; rm -f conftest_xgetbv
12379 fi
12380 rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
12381 conftest.$ac_objext conftest.beam conftest.$ac_ext
12382 fi
12383
12384 fi
12385 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_cv_gcc_x86_avx_xgetbv_0x00000000" >&5
12386 $as_echo "$ax_cv_gcc_x86_avx_xgetbv_0x00000000" >&6; }
12387 ac_ext=c
12388 ac_cpp='$CPP $CPPFLAGS'
12389 ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
12390 ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
12391 ac_compiler_gnu=$ac_cv_c_compiler_gnu
12392
12393
12394
12395 xgetbv_eax="0"
12396 if test x"$ax_cv_gcc_x86_avx_xgetbv_0x00000000" != x"unknown"; then
12397 xgetbv_eax=`echo $ax_cv_gcc_x86_avx_xgetbv_0x00000000 | cut -d ":" -f 1`
12398 fi
12399
12400 { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether avx is supported by operating system" >&5
12401 $as_echo_n "checking whether avx is supported by operating system... " >&6; }
12402 if ${ax_cv_have_avx_ext+:} false; then :
12403 $as_echo_n "(cached) " >&6
12404 else
12405
12406 ax_cv_have_avx_ext=no
12407
12408 if test "$((0x$ecx>>27&0x01))" = 1; then
12409 if test "$((0x$xgetbv_eax&0x6))" = 6; then
12410 ax_cv_have_avx_ext=yes
12411 fi
12412 fi
12413
12414 fi
12415 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_cv_have_avx_ext" >&5
12416 $as_echo "$ax_cv_have_avx_ext" >&6; }
12417 if test x"$ax_cv_have_avx_ext" = x"no"; then
12418 { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Your processor supports AVX, but your operating system doesn't" >&5
12419 $as_echo "$as_me: WARNING: Your processor supports AVX, but your operating system doesn't" >&2;}
12420 fi
12421 fi
12422
12423 if test "$ax_cv_have_mmx_ext" = yes; then
12424 { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether C compiler accepts -mmmx" >&5
12425 $as_echo_n "checking whether C compiler accepts -mmmx... " >&6; }
12426 if ${ax_cv_check_cflags___mmmx+:} false; then :
12427 $as_echo_n "(cached) " >&6
12428 else
12429
12430 ax_check_save_flags=$CFLAGS
12431 CFLAGS="$CFLAGS -mmmx"
12432 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
12433 /* end confdefs.h. */
12434
12435 int
12436 main ()
12437 {
12438
12439 ;
12440 return 0;
12441 }
12442 _ACEOF
12443 if ac_fn_c_try_compile "$LINENO"; then :
12444 ax_cv_check_cflags___mmmx=yes
12445 else
12446 ax_cv_check_cflags___mmmx=no
12447 fi
12448 rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
12449 CFLAGS=$ax_check_save_flags
12450 fi
12451 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_cv_check_cflags___mmmx" >&5
12452 $as_echo "$ax_cv_check_cflags___mmmx" >&6; }
12453 if test x"$ax_cv_check_cflags___mmmx" = xyes; then :
12454 ax_cv_support_mmx_ext=yes
12455 else
12456 :
12457 fi
12458
12459 if test x"$ax_cv_support_mmx_ext" = x"yes"; then
12460 SIMD_FLAGS="$SIMD_FLAGS -mmmx"
12461
12462 $as_echo "#define HAVE_MMX /**/" >>confdefs.h
12463
12464 else
12465 { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Your processor supports mmx instructions but not your compiler, can you try another compiler?" >&5
12466 $as_echo "$as_me: WARNING: Your processor supports mmx instructions but not your compiler, can you try another compiler?" >&2;}
12467 fi
12468 fi
12469
12470 if test "$ac_cv_sizeof_long" -eq 8; then
12471 SIMD_FLAGS="$SIMD_FLAGS -DARCH_64"
12472 fi
12473
12474 if test "$ax_cv_have_sse_ext" = yes; then
12475 { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether C compiler accepts -msse" >&5
12476 $as_echo_n "checking whether C compiler accepts -msse... " >&6; }
12477 if ${ax_cv_check_cflags___msse+:} false; then :
12478 $as_echo_n "(cached) " >&6
12479 else
12480
12481 ax_check_save_flags=$CFLAGS
12482 CFLAGS="$CFLAGS -msse"
12483 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
12484 /* end confdefs.h. */
12485
12486 int
12487 main ()
12488 {
12489
12490 ;
12491 return 0;
12492 }
12493 _ACEOF
12494 if ac_fn_c_try_compile "$LINENO"; then :
12495 ax_cv_check_cflags___msse=yes
12496 else
12497 ax_cv_check_cflags___msse=no
12498 fi
12499 rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
12500 CFLAGS=$ax_check_save_flags
12501 fi
12502 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_cv_check_cflags___msse" >&5
12503 $as_echo "$ax_cv_check_cflags___msse" >&6; }
12504 if test x"$ax_cv_check_cflags___msse" = xyes; then :
12505 ax_cv_support_sse_ext=yes
12506 else
12507 :
12508 fi
12509
12510 if test x"$ax_cv_support_sse_ext" = x"yes"; then
12511 SIMD_FLAGS="$SIMD_FLAGS -msse -DINTEL_SSE"
12512
12513 $as_echo "#define HAVE_SSE /**/" >>confdefs.h
12514
12515 else
12516 { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Your processor supports sse instructions but not your compiler, can you try another compiler?" >&5
12517 $as_echo "$as_me: WARNING: Your processor supports sse instructions but not your compiler, can you try another compiler?" >&2;}
12518 fi
12519 fi
12520
12521 if test "$ax_cv_have_sse2_ext" = yes; then
12522 { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether C compiler accepts -msse2" >&5
12523 $as_echo_n "checking whether C compiler accepts -msse2... " >&6; }
12524 if ${ax_cv_check_cflags___msse2+:} false; then :
12525 $as_echo_n "(cached) " >&6
12526 else
12527
12528 ax_check_save_flags=$CFLAGS
12529 CFLAGS="$CFLAGS -msse2"
12530 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
12531 /* end confdefs.h. */
12532
12533 int
12534 main ()
12535 {
12536
12537 ;
12538 return 0;
12539 }
12540 _ACEOF
12541 if ac_fn_c_try_compile "$LINENO"; then :
12542 ax_cv_check_cflags___msse2=yes
12543 else
12544 ax_cv_check_cflags___msse2=no
12545 fi
12546 rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
12547 CFLAGS=$ax_check_save_flags
12548 fi
12549 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_cv_check_cflags___msse2" >&5
12550 $as_echo "$ax_cv_check_cflags___msse2" >&6; }
12551 if test x"$ax_cv_check_cflags___msse2" = xyes; then :
12552 ax_cv_support_sse2_ext=yes
12553 else
12554 :
12555 fi
12556
12557 if test x"$ax_cv_support_sse2_ext" = x"yes"; then
12558 SIMD_FLAGS="$SIMD_FLAGS -msse2 -DINTEL_SSE2"
12559
12560 $as_echo "#define HAVE_SSE2 /**/" >>confdefs.h
12561
12562 else
12563 { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Your processor supports sse2 instructions but not your compiler, can you try another compiler?" >&5
12564 $as_echo "$as_me: WARNING: Your processor supports sse2 instructions but not your compiler, can you try another compiler?" >&2;}
12565 fi
12566 fi
12567
12568 if test "$ax_cv_have_sse3_ext" = yes; then
12569 { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether C compiler accepts -msse3" >&5
12570 $as_echo_n "checking whether C compiler accepts -msse3... " >&6; }
12571 if ${ax_cv_check_cflags___msse3+:} false; then :
12572 $as_echo_n "(cached) " >&6
12573 else
12574
12575 ax_check_save_flags=$CFLAGS
12576 CFLAGS="$CFLAGS -msse3"
12577 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
12578 /* end confdefs.h. */
12579
12580 int
12581 main ()
12582 {
12583
12584 ;
12585 return 0;
12586 }
12587 _ACEOF
12588 if ac_fn_c_try_compile "$LINENO"; then :
12589 ax_cv_check_cflags___msse3=yes
12590 else
12591 ax_cv_check_cflags___msse3=no
12592 fi
12593 rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
12594 CFLAGS=$ax_check_save_flags
12595 fi
12596 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_cv_check_cflags___msse3" >&5
12597 $as_echo "$ax_cv_check_cflags___msse3" >&6; }
12598 if test x"$ax_cv_check_cflags___msse3" = xyes; then :
12599 ax_cv_support_sse3_ext=yes
12600 else
12601 :
12602 fi
12603
12604 if test x"$ax_cv_support_sse3_ext" = x"yes"; then
12605 SIMD_FLAGS="$SIMD_FLAGS -msse3 -DINTEL_SSE3"
12606
12607 $as_echo "#define HAVE_SSE3 /**/" >>confdefs.h
12608
12609 else
12610 { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Your processor supports sse3 instructions but not your compiler, can you try another compiler?" >&5
12611 $as_echo "$as_me: WARNING: Your processor supports sse3 instructions but not your compiler, can you try another compiler?" >&2;}
12612 fi
12613 fi
12614
12615 if test "$ax_cv_have_ssse3_ext" = yes; then
12616 { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether C compiler accepts -mssse3" >&5
12617 $as_echo_n "checking whether C compiler accepts -mssse3... " >&6; }
12618 if ${ax_cv_check_cflags___mssse3+:} false; then :
12619 $as_echo_n "(cached) " >&6
12620 else
12621
12622 ax_check_save_flags=$CFLAGS
12623 CFLAGS="$CFLAGS -mssse3"
12624 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
12625 /* end confdefs.h. */
12626
12627 int
12628 main ()
12629 {
12630
12631 ;
12632 return 0;
12633 }
12634 _ACEOF
12635 if ac_fn_c_try_compile "$LINENO"; then :
12636 ax_cv_check_cflags___mssse3=yes
12637 else
12638 ax_cv_check_cflags___mssse3=no
12639 fi
12640 rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
12641 CFLAGS=$ax_check_save_flags
12642 fi
12643 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_cv_check_cflags___mssse3" >&5
12644 $as_echo "$ax_cv_check_cflags___mssse3" >&6; }
12645 if test x"$ax_cv_check_cflags___mssse3" = xyes; then :
12646 ax_cv_support_ssse3_ext=yes
12647 else
12648 :
12649 fi
12650
12651 if test x"$ax_cv_support_ssse3_ext" = x"yes"; then
12652 SIMD_FLAGS="$SIMD_FLAGS -mssse3"
12653
12654 $as_echo "#define HAVE_SSSE3 /**/" >>confdefs.h
12655
12656 else
12657 { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Your processor supports ssse3 instructions but not your compiler, can you try another compiler?" >&5
12658 $as_echo "$as_me: WARNING: Your processor supports ssse3 instructions but not your compiler, can you try another compiler?" >&2;}
12659 fi
12660 fi
12661
12662 if test "$ax_cv_have_sse41_ext" = yes; then
12663 { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether C compiler accepts -msse4.1" >&5
12664 $as_echo_n "checking whether C compiler accepts -msse4.1... " >&6; }
12665 if ${ax_cv_check_cflags___msse4_1+:} false; then :
12666 $as_echo_n "(cached) " >&6
12667 else
12668
12669 ax_check_save_flags=$CFLAGS
12670 CFLAGS="$CFLAGS -msse4.1"
12671 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
12672 /* end confdefs.h. */
12673
12674 int
12675 main ()
12676 {
12677
12678 ;
12679 return 0;
12680 }
12681 _ACEOF
12682 if ac_fn_c_try_compile "$LINENO"; then :
12683 ax_cv_check_cflags___msse4_1=yes
12684 else
12685 ax_cv_check_cflags___msse4_1=no
12686 fi
12687 rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
12688 CFLAGS=$ax_check_save_flags
12689 fi
12690 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_cv_check_cflags___msse4_1" >&5
12691 $as_echo "$ax_cv_check_cflags___msse4_1" >&6; }
12692 if test x"$ax_cv_check_cflags___msse4_1" = xyes; then :
12693 ax_cv_support_sse41_ext=yes
12694 else
12695 :
12696 fi
12697
12698 if test x"$ax_cv_support_sse41_ext" = x"yes"; then
12699 SIMD_FLAGS="$SIMD_FLAGS -msse4.1 -DINTEL_SSE4"
12700
12701 $as_echo "#define HAVE_SSE4_1 /**/" >>confdefs.h
12702
12703 else
12704 { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Your processor supports sse4.1 instructions but not your compiler, can you try another compiler?" >&5
12705 $as_echo "$as_me: WARNING: Your processor supports sse4.1 instructions but not your compiler, can you try another compiler?" >&2;}
12706 fi
12707 fi
12708
12709 if test "$ax_cv_have_sse42_ext" = yes; then
12710 { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether C compiler accepts -msse4.2" >&5
12711 $as_echo_n "checking whether C compiler accepts -msse4.2... " >&6; }
12712 if ${ax_cv_check_cflags___msse4_2+:} false; then :
12713 $as_echo_n "(cached) " >&6
12714 else
12715
12716 ax_check_save_flags=$CFLAGS
12717 CFLAGS="$CFLAGS -msse4.2"
12718 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
12719 /* end confdefs.h. */
12720
12721 int
12722 main ()
12723 {
12724
12725 ;
12726 return 0;
12727 }
12728 _ACEOF
12729 if ac_fn_c_try_compile "$LINENO"; then :
12730 ax_cv_check_cflags___msse4_2=yes
12731 else
12732 ax_cv_check_cflags___msse4_2=no
12733 fi
12734 rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
12735 CFLAGS=$ax_check_save_flags
12736 fi
12737 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_cv_check_cflags___msse4_2" >&5
12738 $as_echo "$ax_cv_check_cflags___msse4_2" >&6; }
12739 if test x"$ax_cv_check_cflags___msse4_2" = xyes; then :
12740 ax_cv_support_sse42_ext=yes
12741 else
12742 :
12743 fi
12744
12745 if test x"$ax_cv_support_sse42_ext" = x"yes"; then
12746 SIMD_FLAGS="$SIMD_FLAGS -msse4.2 -DINTEL_SSE4"
12747
12748 $as_echo "#define HAVE_SSE4_2 /**/" >>confdefs.h
12749
12750 else
12751 { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Your processor supports sse4.2 instructions but not your compiler, can you try another compiler?" >&5
12752 $as_echo "$as_me: WARNING: Your processor supports sse4.2 instructions but not your compiler, can you try another compiler?" >&2;}
12753 fi
12754 fi
12755
12756 if test "$ax_cv_have_avx_ext" = yes; then
12757 { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether C compiler accepts -mavx" >&5
12758 $as_echo_n "checking whether C compiler accepts -mavx... " >&6; }
12759 if ${ax_cv_check_cflags___mavx+:} false; then :
12760 $as_echo_n "(cached) " >&6
12761 else
12762
12763 ax_check_save_flags=$CFLAGS
12764 CFLAGS="$CFLAGS -mavx"
12765 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
12766 /* end confdefs.h. */
12767
12768 int
12769 main ()
12770 {
12771
12772 ;
12773 return 0;
12774 }
12775 _ACEOF
12776 if ac_fn_c_try_compile "$LINENO"; then :
12777 ax_cv_check_cflags___mavx=yes
12778 else
12779 ax_cv_check_cflags___mavx=no
12780 fi
12781 rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
12782 CFLAGS=$ax_check_save_flags
12783 fi
12784 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_cv_check_cflags___mavx" >&5
12785 $as_echo "$ax_cv_check_cflags___mavx" >&6; }
12786 if test x"$ax_cv_check_cflags___mavx" = xyes; then :
12787 ax_cv_support_avx_ext=yes
12788 else
12789 :
12790 fi
12791
12792 if test x"$ax_cv_support_avx_ext" = x"yes"; then
12793 SIMD_FLAGS="$SIMD_FLAGS -mavx"
12794
12795 $as_echo "#define HAVE_AVX /**/" >>confdefs.h
12796
12797 else
12798 { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Your processor supports avx instructions but not your compiler, can you try another compiler?" >&5
12799 $as_echo "$as_me: WARNING: Your processor supports avx instructions but not your compiler, can you try another compiler?" >&2;}
12800 fi
12801 fi
12802
12803 ;;
12804 esac
12805
12806
12807
12808
12809 # Check whether --enable-debug was given.
12810 if test "${enable_debug+set}" = set; then :
12811 enableval=$enable_debug; case "${enableval}" in
12812 yes) debug=true ;;
12813 no) debug=false ;;
12814 *) as_fn_error $? "bad value ${enableval} for --enable-debug" "$LINENO" 5 ;;
12815 esac
12816 else
12817 debug=false
12818 fi
12819
12820 if test x"$debug" = x"true"; then
12821 DEBUG_TRUE=
12822 DEBUG_FALSE='#'
12823 else
12824 DEBUG_TRUE='#'
12825 DEBUG_FALSE=
12826 fi
12827
12828 ac_config_files="$ac_config_files Makefile"
12829
12830 cat >confcache <<\_ACEOF
12831 # This file is a shell script that caches the results of configure
12832 # tests run on this system so they can be shared between configure
12833 # scripts and configure runs, see configure's option --config-cache.
12834 # It is not useful on other systems. If it contains results you don't
12835 # want to keep, you may remove or edit it.
12836 #
12837 # config.status only pays attention to the cache file if you give it
12838 # the --recheck option to rerun configure.
12839 #
12840 # `ac_cv_env_foo' variables (set or unset) will be overridden when
12841 # loading this file, other *unset* `ac_cv_foo' will be assigned the
12842 # following values.
12843
12844 _ACEOF
12845
12846 # The following way of writing the cache mishandles newlines in values,
12847 # but we know of no workaround that is simple, portable, and efficient.
12848 # So, we kill variables containing newlines.
12849 # Ultrix sh set writes to stderr and can't be redirected directly,
12850 # and sets the high bit in the cache file unless we assign to the vars.
12851 (
12852 for ac_var in `(set) 2>&1 | sed -n 's/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'`; do
12853 eval ac_val=\$$ac_var
12854 case $ac_val in #(
12855 *${as_nl}*)
12856 case $ac_var in #(
12857 *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5
12858 $as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;;
12859 esac
12860 case $ac_var in #(
12861 _ | IFS | as_nl) ;; #(
12862 BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #(
12863 *) { eval $ac_var=; unset $ac_var;} ;;
12864 esac ;;
12865 esac
12866 done
12867
12868 (set) 2>&1 |
12869 case $as_nl`(ac_space=' '; set) 2>&1` in #(
12870 *${as_nl}ac_space=\ *)
12871 # `set' does not quote correctly, so add quotes: double-quote
12872 # substitution turns \\\\ into \\, and sed turns \\ into \.
12873 sed -n \
12874 "s/'/'\\\\''/g;
12875 s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p"
12876 ;; #(
12877 *)
12878 # `set' quotes correctly as required by POSIX, so do not add quotes.
12879 sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p"
12880 ;;
12881 esac |
12882 sort
12883 ) |
12884 sed '
12885 /^ac_cv_env_/b end
12886 t clear
12887 :clear
12888 s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/
12889 t end
12890 s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/
12891 :end' >>confcache
12892 if diff "$cache_file" confcache >/dev/null 2>&1; then :; else
12893 if test -w "$cache_file"; then
12894 if test "x$cache_file" != "x/dev/null"; then
12895 { $as_echo "$as_me:${as_lineno-$LINENO}: updating cache $cache_file" >&5
12896 $as_echo "$as_me: updating cache $cache_file" >&6;}
12897 if test ! -f "$cache_file" || test -h "$cache_file"; then
12898 cat confcache >"$cache_file"
12899 else
12900 case $cache_file in #(
12901 */* | ?:*)
12902 mv -f confcache "$cache_file"$$ &&
12903 mv -f "$cache_file"$$ "$cache_file" ;; #(
12904 *)
12905 mv -f confcache "$cache_file" ;;
12906 esac
12907 fi
12908 fi
12909 else
12910 { $as_echo "$as_me:${as_lineno-$LINENO}: not updating unwritable cache $cache_file" >&5
12911 $as_echo "$as_me: not updating unwritable cache $cache_file" >&6;}
12912 fi
12913 fi
12914 rm -f confcache
12915
12916 test "x$prefix" = xNONE && prefix=$ac_default_prefix
12917 # Let make expand exec_prefix.
12918 test "x$exec_prefix" = xNONE && exec_prefix='${prefix}'
12919
12920 DEFS=-DHAVE_CONFIG_H
12921
12922 ac_libobjs=
12923 ac_ltlibobjs=
12924 U=
12925 for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue
12926 # 1. Remove the extension, and $U if already installed.
12927 ac_script='s/\$U\././;s/\.o$//;s/\.obj$//'
12928 ac_i=`$as_echo "$ac_i" | sed "$ac_script"`
12929 # 2. Prepend LIBOBJDIR. When used with automake>=1.10 LIBOBJDIR
12930 # will be set to the directory where LIBOBJS objects are built.
12931 as_fn_append ac_libobjs " \${LIBOBJDIR}$ac_i\$U.$ac_objext"
12932 as_fn_append ac_ltlibobjs " \${LIBOBJDIR}$ac_i"'$U.lo'
12933 done
12934 LIBOBJS=$ac_libobjs
12935
12936 LTLIBOBJS=$ac_ltlibobjs
12937
12938
12939 { $as_echo "$as_me:${as_lineno-$LINENO}: checking that generated files are newer than configure" >&5
12940 $as_echo_n "checking that generated files are newer than configure... " >&6; }
12941 if test -n "$am_sleep_pid"; then
12942 # Hide warnings about reused PIDs.
12943 wait $am_sleep_pid 2>/dev/null
12944 fi
12945 { $as_echo "$as_me:${as_lineno-$LINENO}: result: done" >&5
12946 $as_echo "done" >&6; }
12947 if test -n "$EXEEXT"; then
12948 am__EXEEXT_TRUE=
12949 am__EXEEXT_FALSE='#'
12950 else
12951 am__EXEEXT_TRUE='#'
12952 am__EXEEXT_FALSE=
12953 fi
12954
12955 if test -z "${MAINTAINER_MODE_TRUE}" && test -z "${MAINTAINER_MODE_FALSE}"; then
12956 as_fn_error $? "conditional \"MAINTAINER_MODE\" was never defined.
12957 Usually this means the macro was only invoked conditionally." "$LINENO" 5
12958 fi
12959 if test -z "${DEBUG_TRUE}" && test -z "${DEBUG_FALSE}"; then
12960 as_fn_error $? "conditional \"DEBUG\" was never defined.
12961 Usually this means the macro was only invoked conditionally." "$LINENO" 5
12962 fi
12963
12964 : "${CONFIG_STATUS=./config.status}"
12965 ac_write_fail=0
12966 ac_clean_files_save=$ac_clean_files
12967 ac_clean_files="$ac_clean_files $CONFIG_STATUS"
12968 { $as_echo "$as_me:${as_lineno-$LINENO}: creating $CONFIG_STATUS" >&5
12969 $as_echo "$as_me: creating $CONFIG_STATUS" >&6;}
12970 as_write_fail=0
12971 cat >$CONFIG_STATUS <<_ASEOF || as_write_fail=1
12972 #! $SHELL
12973 # Generated by $as_me.
12974 # Run this file to recreate the current configuration.
12975 # Compiler output produced by configure, useful for debugging
12976 # configure, is in config.log if it exists.
12977
12978 debug=false
12979 ac_cs_recheck=false
12980 ac_cs_silent=false
12981
12982 SHELL=\${CONFIG_SHELL-$SHELL}
12983 export SHELL
12984 _ASEOF
12985 cat >>$CONFIG_STATUS <<\_ASEOF || as_write_fail=1
12986 ## -------------------- ##
12987 ## M4sh Initialization. ##
12988 ## -------------------- ##
12989
12990 # Be more Bourne compatible
12991 DUALCASE=1; export DUALCASE # for MKS sh
12992 if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then :
12993 emulate sh
12994 NULLCMD=:
12995 # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which
12996 # is contrary to our usage. Disable this feature.
12997 alias -g '${1+"$@"}'='"$@"'
12998 setopt NO_GLOB_SUBST
12999 else
13000 case `(set -o) 2>/dev/null` in #(
13001 *posix*) :
13002 set -o posix ;; #(
13003 *) :
13004 ;;
13005 esac
13006 fi
13007
13008
13009 as_nl='
13010 '
13011 export as_nl
13012 # Printing a long string crashes Solaris 7 /usr/bin/printf.
13013 as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'
13014 as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo
13015 as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo
13016 # Prefer a ksh shell builtin over an external printf program on Solaris,
13017 # but without wasting forks for bash or zsh.
13018 if test -z "$BASH_VERSION$ZSH_VERSION" \
13019 && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then
13020 as_echo='print -r --'
13021 as_echo_n='print -rn --'
13022 elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then
13023 as_echo='printf %s\n'
13024 as_echo_n='printf %s'
13025 else
13026 if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then
13027 as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"'
13028 as_echo_n='/usr/ucb/echo -n'
13029 else
13030 as_echo_body='eval expr "X$1" : "X\\(.*\\)"'
13031 as_echo_n_body='eval
13032 arg=$1;
13033 case $arg in #(
13034 *"$as_nl"*)
13035 expr "X$arg" : "X\\(.*\\)$as_nl";
13036 arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;;
13037 esac;
13038 expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl"
13039 '
13040 export as_echo_n_body
13041 as_echo_n='sh -c $as_echo_n_body as_echo'
13042 fi
13043 export as_echo_body
13044 as_echo='sh -c $as_echo_body as_echo'
13045 fi
13046
13047 # The user is always right.
13048 if test "${PATH_SEPARATOR+set}" != set; then
13049 PATH_SEPARATOR=:
13050 (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && {
13051 (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 ||
13052 PATH_SEPARATOR=';'
13053 }
13054 fi
13055
13056
13057 # IFS
13058 # We need space, tab and new line, in precisely that order. Quoting is
13059 # there to prevent editors from complaining about space-tab.
13060 # (If _AS_PATH_WALK were called with IFS unset, it would disable word
13061 # splitting by setting IFS to empty value.)
13062 IFS=" "" $as_nl"
13063
13064 # Find who we are. Look in the path if we contain no directory separator.
13065 as_myself=
13066 case $0 in #((
13067 *[\\/]* ) as_myself=$0 ;;
13068 *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
13069 for as_dir in $PATH
13070 do
13071 IFS=$as_save_IFS
13072 test -z "$as_dir" && as_dir=.
13073 test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break
13074 done
13075 IFS=$as_save_IFS
13076
13077 ;;
13078 esac
13079 # We did not find ourselves, most probably we were run as `sh COMMAND'
13080 # in which case we are not to be found in the path.
13081 if test "x$as_myself" = x; then
13082 as_myself=$0
13083 fi
13084 if test ! -f "$as_myself"; then
13085 $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2
13086 exit 1
13087 fi
13088
13089 # Unset variables that we do not need and which cause bugs (e.g. in
13090 # pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1"
13091 # suppresses any "Segmentation fault" message there. '((' could
13092 # trigger a bug in pdksh 5.2.14.
13093 for as_var in BASH_ENV ENV MAIL MAILPATH
13094 do eval test x\${$as_var+set} = xset \
13095 && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || :
13096 done
13097 PS1='$ '
13098 PS2='> '
13099 PS4='+ '
13100
13101 # NLS nuisances.
13102 LC_ALL=C
13103 export LC_ALL
13104 LANGUAGE=C
13105 export LANGUAGE
13106
13107 # CDPATH.
13108 (unset CDPATH) >/dev/null 2>&1 && unset CDPATH
13109
13110
13111 # as_fn_error STATUS ERROR [LINENO LOG_FD]
13112 # ----------------------------------------
13113 # Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are
13114 # provided, also output the error to LOG_FD, referencing LINENO. Then exit the
13115 # script with STATUS, using 1 if that was 0.
13116 as_fn_error ()
13117 {
13118 as_status=$1; test $as_status -eq 0 && as_status=1
13119 if test "$4"; then
13120 as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
13121 $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4
13122 fi
13123 $as_echo "$as_me: error: $2" >&2
13124 as_fn_exit $as_status
13125 } # as_fn_error
13126
13127
13128 # as_fn_set_status STATUS
13129 # -----------------------
13130 # Set $? to STATUS, without forking.
13131 as_fn_set_status ()
13132 {
13133 return $1
13134 } # as_fn_set_status
13135
13136 # as_fn_exit STATUS
13137 # -----------------
13138 # Exit the shell with STATUS, even in a "trap 0" or "set -e" context.
13139 as_fn_exit ()
13140 {
13141 set +e
13142 as_fn_set_status $1
13143 exit $1
13144 } # as_fn_exit
13145
13146 # as_fn_unset VAR
13147 # ---------------
13148 # Portably unset VAR.
13149 as_fn_unset ()
13150 {
13151 { eval $1=; unset $1;}
13152 }
13153 as_unset=as_fn_unset
13154 # as_fn_append VAR VALUE
13155 # ----------------------
13156 # Append the text in VALUE to the end of the definition contained in VAR. Take
13157 # advantage of any shell optimizations that allow amortized linear growth over
13158 # repeated appends, instead of the typical quadratic growth present in naive
13159 # implementations.
13160 if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then :
13161 eval 'as_fn_append ()
13162 {
13163 eval $1+=\$2
13164 }'
13165 else
13166 as_fn_append ()
13167 {
13168 eval $1=\$$1\$2
13169 }
13170 fi # as_fn_append
13171
13172 # as_fn_arith ARG...
13173 # ------------------
13174 # Perform arithmetic evaluation on the ARGs, and store the result in the
13175 # global $as_val. Take advantage of shells that can avoid forks. The arguments
13176 # must be portable across $(()) and expr.
13177 if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then :
13178 eval 'as_fn_arith ()
13179 {
13180 as_val=$(( $* ))
13181 }'
13182 else
13183 as_fn_arith ()
13184 {
13185 as_val=`expr "$@" || test $? -eq 1`
13186 }
13187 fi # as_fn_arith
13188
13189
13190 if expr a : '\(a\)' >/dev/null 2>&1 &&
13191 test "X`expr 00001 : '.*\(...\)'`" = X001; then
13192 as_expr=expr
13193 else
13194 as_expr=false
13195 fi
13196
13197 if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then
13198 as_basename=basename
13199 else
13200 as_basename=false
13201 fi
13202
13203 if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then
13204 as_dirname=dirname
13205 else
13206 as_dirname=false
13207 fi
13208
13209 as_me=`$as_basename -- "$0" ||
13210 $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \
13211 X"$0" : 'X\(//\)$' \| \
13212 X"$0" : 'X\(/\)' \| . 2>/dev/null ||
13213 $as_echo X/"$0" |
13214 sed '/^.*\/\([^/][^/]*\)\/*$/{
13215 s//\1/
13216 q
13217 }
13218 /^X\/\(\/\/\)$/{
13219 s//\1/
13220 q
13221 }
13222 /^X\/\(\/\).*/{
13223 s//\1/
13224 q
13225 }
13226 s/.*/./; q'`
13227
13228 # Avoid depending upon Character Ranges.
13229 as_cr_letters='abcdefghijklmnopqrstuvwxyz'
13230 as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ'
13231 as_cr_Letters=$as_cr_letters$as_cr_LETTERS
13232 as_cr_digits='0123456789'
13233 as_cr_alnum=$as_cr_Letters$as_cr_digits
13234
13235 ECHO_C= ECHO_N= ECHO_T=
13236 case `echo -n x` in #(((((
13237 -n*)
13238 case `echo 'xy\c'` in
13239 *c*) ECHO_T=' ';; # ECHO_T is single tab character.
13240 xy) ECHO_C='\c';;
13241 *) echo `echo ksh88 bug on AIX 6.1` > /dev/null
13242 ECHO_T=' ';;
13243 esac;;
13244 *)
13245 ECHO_N='-n';;
13246 esac
13247
13248 rm -f conf$$ conf$$.exe conf$$.file
13249 if test -d conf$$.dir; then
13250 rm -f conf$$.dir/conf$$.file
13251 else
13252 rm -f conf$$.dir
13253 mkdir conf$$.dir 2>/dev/null
13254 fi
13255 if (echo >conf$$.file) 2>/dev/null; then
13256 if ln -s conf$$.file conf$$ 2>/dev/null; then
13257 as_ln_s='ln -s'
13258 # ... but there are two gotchas:
13259 # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail.
13260 # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable.
13261 # In both cases, we have to default to `cp -pR'.
13262 ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe ||
13263 as_ln_s='cp -pR'
13264 elif ln conf$$.file conf$$ 2>/dev/null; then
13265 as_ln_s=ln
13266 else
13267 as_ln_s='cp -pR'
13268 fi
13269 else
13270 as_ln_s='cp -pR'
13271 fi
13272 rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file
13273 rmdir conf$$.dir 2>/dev/null
13274
13275
13276 # as_fn_mkdir_p
13277 # -------------
13278 # Create "$as_dir" as a directory, including parents if necessary.
13279 as_fn_mkdir_p ()
13280 {
13281
13282 case $as_dir in #(
13283 -*) as_dir=./$as_dir;;
13284 esac
13285 test -d "$as_dir" || eval $as_mkdir_p || {
13286 as_dirs=
13287 while :; do
13288 case $as_dir in #(
13289 *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'(
13290 *) as_qdir=$as_dir;;
13291 esac
13292 as_dirs="'$as_qdir' $as_dirs"
13293 as_dir=`$as_dirname -- "$as_dir" ||
13294 $as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
13295 X"$as_dir" : 'X\(//\)[^/]' \| \
13296 X"$as_dir" : 'X\(//\)$' \| \
13297 X"$as_dir" : 'X\(/\)' \| . 2>/dev/null ||
13298 $as_echo X"$as_dir" |
13299 sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
13300 s//\1/
13301 q
13302 }
13303 /^X\(\/\/\)[^/].*/{
13304 s//\1/
13305 q
13306 }
13307 /^X\(\/\/\)$/{
13308 s//\1/
13309 q
13310 }
13311 /^X\(\/\).*/{
13312 s//\1/
13313 q
13314 }
13315 s/.*/./; q'`
13316 test -d "$as_dir" && break
13317 done
13318 test -z "$as_dirs" || eval "mkdir $as_dirs"
13319 } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir"
13320
13321
13322 } # as_fn_mkdir_p
13323 if mkdir -p . 2>/dev/null; then
13324 as_mkdir_p='mkdir -p "$as_dir"'
13325 else
13326 test -d ./-p && rmdir ./-p
13327 as_mkdir_p=false
13328 fi
13329
13330
13331 # as_fn_executable_p FILE
13332 # -----------------------
13333 # Test if FILE is an executable regular file.
13334 as_fn_executable_p ()
13335 {
13336 test -f "$1" && test -x "$1"
13337 } # as_fn_executable_p
13338 as_test_x='test -x'
13339 as_executable_p=as_fn_executable_p
13340
13341 # Sed expression to map a string onto a valid CPP name.
13342 as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'"
13343
13344 # Sed expression to map a string onto a valid variable name.
13345 as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'"
13346
13347
13348 exec 6>&1
13349 ## ----------------------------------- ##
13350 ## Main body of $CONFIG_STATUS script. ##
13351 ## ----------------------------------- ##
13352 _ASEOF
13353 test $as_write_fail = 0 && chmod +x $CONFIG_STATUS || ac_write_fail=1
13354
13355 cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
13356 # Save the log message, to keep $0 and so on meaningful, and to
13357 # report actual input values of CONFIG_FILES etc. instead of their
13358 # values after options handling.
13359 ac_log="
13360 This file was extended by erasurecode $as_me 0.1, which was
13361 generated by GNU Autoconf 2.69. Invocation command line was
13362
13363 CONFIG_FILES = $CONFIG_FILES
13364 CONFIG_HEADERS = $CONFIG_HEADERS
13365 CONFIG_LINKS = $CONFIG_LINKS
13366 CONFIG_COMMANDS = $CONFIG_COMMANDS
13367 $ $0 $@
13368
13369 on `(hostname || uname -n) 2>/dev/null | sed 1q`
13370 "
13371
13372 _ACEOF
13373
13374 case $ac_config_files in *"
13375 "*) set x $ac_config_files; shift; ac_config_files=$*;;
13376 esac
13377
13378 case $ac_config_headers in *"
13379 "*) set x $ac_config_headers; shift; ac_config_headers=$*;;
13380 esac
13381
13382
13383 cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
13384 # Files that config.status was made for.
13385 config_files="$ac_config_files"
13386 config_headers="$ac_config_headers"
13387 config_commands="$ac_config_commands"
13388
13389 _ACEOF
13390
13391 cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
13392 ac_cs_usage="\
13393 \`$as_me' instantiates files and other configuration actions
13394 from templates according to the current configuration. Unless the files
13395 and actions are specified as TAGs, all are instantiated by default.
13396
13397 Usage: $0 [OPTION]... [TAG]...
13398
13399 -h, --help print this help, then exit
13400 -V, --version print version number and configuration settings, then exit
13401 --config print configuration, then exit
13402 -q, --quiet, --silent
13403 do not print progress messages
13404 -d, --debug don't remove temporary files
13405 --recheck update $as_me by reconfiguring in the same conditions
13406 --file=FILE[:TEMPLATE]
13407 instantiate the configuration file FILE
13408 --header=FILE[:TEMPLATE]
13409 instantiate the configuration header FILE
13410
13411 Configuration files:
13412 $config_files
13413
13414 Configuration headers:
13415 $config_headers
13416
13417 Configuration commands:
13418 $config_commands
13419
13420 Report bugs to the package provider."
13421
13422 _ACEOF
13423 cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
13424 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
13425 ac_cs_version="\\
13426 erasurecode config.status 0.1
13427 configured by $0, generated by GNU Autoconf 2.69,
13428 with options \\"\$ac_cs_config\\"
13429
13430 Copyright (C) 2012 Free Software Foundation, Inc.
13431 This config.status script is free software; the Free Software Foundation
13432 gives unlimited permission to copy, distribute and modify it."
13433
13434 ac_pwd='$ac_pwd'
13435 srcdir='$srcdir'
13436 INSTALL='$INSTALL'
13437 MKDIR_P='$MKDIR_P'
13438 AWK='$AWK'
13439 test -n "\$AWK" || AWK=awk
13440 _ACEOF
13441
13442 cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
13443 # The default lists apply if the user does not specify any file.
13444 ac_need_defaults=:
13445 while test $# != 0
13446 do
13447 case $1 in
13448 --*=?*)
13449 ac_option=`expr "X$1" : 'X\([^=]*\)='`
13450 ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'`
13451 ac_shift=:
13452 ;;
13453 --*=)
13454 ac_option=`expr "X$1" : 'X\([^=]*\)='`
13455 ac_optarg=
13456 ac_shift=:
13457 ;;
13458 *)
13459 ac_option=$1
13460 ac_optarg=$2
13461 ac_shift=shift
13462 ;;
13463 esac
13464
13465 case $ac_option in
13466 # Handling of the options.
13467 -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r)
13468 ac_cs_recheck=: ;;
13469 --version | --versio | --versi | --vers | --ver | --ve | --v | -V )
13470 $as_echo "$ac_cs_version"; exit ;;
13471 --config | --confi | --conf | --con | --co | --c )
13472 $as_echo "$ac_cs_config"; exit ;;
13473 --debug | --debu | --deb | --de | --d | -d )
13474 debug=: ;;
13475 --file | --fil | --fi | --f )
13476 $ac_shift
13477 case $ac_optarg in
13478 *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;;
13479 '') as_fn_error $? "missing file argument" ;;
13480 esac
13481 as_fn_append CONFIG_FILES " '$ac_optarg'"
13482 ac_need_defaults=false;;
13483 --header | --heade | --head | --hea )
13484 $ac_shift
13485 case $ac_optarg in
13486 *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;;
13487 esac
13488 as_fn_append CONFIG_HEADERS " '$ac_optarg'"
13489 ac_need_defaults=false;;
13490 --he | --h)
13491 # Conflict between --help and --header
13492 as_fn_error $? "ambiguous option: \`$1'
13493 Try \`$0 --help' for more information.";;
13494 --help | --hel | -h )
13495 $as_echo "$ac_cs_usage"; exit ;;
13496 -q | -quiet | --quiet | --quie | --qui | --qu | --q \
13497 | -silent | --silent | --silen | --sile | --sil | --si | --s)
13498 ac_cs_silent=: ;;
13499
13500 # This is an error.
13501 -*) as_fn_error $? "unrecognized option: \`$1'
13502 Try \`$0 --help' for more information." ;;
13503
13504 *) as_fn_append ac_config_targets " $1"
13505 ac_need_defaults=false ;;
13506
13507 esac
13508 shift
13509 done
13510
13511 ac_configure_extra_args=
13512
13513 if $ac_cs_silent; then
13514 exec 6>/dev/null
13515 ac_configure_extra_args="$ac_configure_extra_args --silent"
13516 fi
13517
13518 _ACEOF
13519 cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
13520 if \$ac_cs_recheck; then
13521 set X $SHELL '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion
13522 shift
13523 \$as_echo "running CONFIG_SHELL=$SHELL \$*" >&6
13524 CONFIG_SHELL='$SHELL'
13525 export CONFIG_SHELL
13526 exec "\$@"
13527 fi
13528
13529 _ACEOF
13530 cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
13531 exec 5>>config.log
13532 {
13533 echo
13534 sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX
13535 ## Running $as_me. ##
13536 _ASBOX
13537 $as_echo "$ac_log"
13538 } >&5
13539
13540 _ACEOF
13541 cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
13542 #
13543 # INIT-COMMANDS
13544 #
13545
13546
13547 # The HP-UX ksh and POSIX shell print the target directory to stdout
13548 # if CDPATH is set.
13549 (unset CDPATH) >/dev/null 2>&1 && unset CDPATH
13550
13551 sed_quote_subst='$sed_quote_subst'
13552 double_quote_subst='$double_quote_subst'
13553 delay_variable_subst='$delay_variable_subst'
13554 macro_version='`$ECHO "$macro_version" | $SED "$delay_single_quote_subst"`'
13555 macro_revision='`$ECHO "$macro_revision" | $SED "$delay_single_quote_subst"`'
13556 enable_shared='`$ECHO "$enable_shared" | $SED "$delay_single_quote_subst"`'
13557 enable_static='`$ECHO "$enable_static" | $SED "$delay_single_quote_subst"`'
13558 pic_mode='`$ECHO "$pic_mode" | $SED "$delay_single_quote_subst"`'
13559 enable_fast_install='`$ECHO "$enable_fast_install" | $SED "$delay_single_quote_subst"`'
13560 SHELL='`$ECHO "$SHELL" | $SED "$delay_single_quote_subst"`'
13561 ECHO='`$ECHO "$ECHO" | $SED "$delay_single_quote_subst"`'
13562 PATH_SEPARATOR='`$ECHO "$PATH_SEPARATOR" | $SED "$delay_single_quote_subst"`'
13563 host_alias='`$ECHO "$host_alias" | $SED "$delay_single_quote_subst"`'
13564 host='`$ECHO "$host" | $SED "$delay_single_quote_subst"`'
13565 host_os='`$ECHO "$host_os" | $SED "$delay_single_quote_subst"`'
13566 build_alias='`$ECHO "$build_alias" | $SED "$delay_single_quote_subst"`'
13567 build='`$ECHO "$build" | $SED "$delay_single_quote_subst"`'
13568 build_os='`$ECHO "$build_os" | $SED "$delay_single_quote_subst"`'
13569 SED='`$ECHO "$SED" | $SED "$delay_single_quote_subst"`'
13570 Xsed='`$ECHO "$Xsed" | $SED "$delay_single_quote_subst"`'
13571 GREP='`$ECHO "$GREP" | $SED "$delay_single_quote_subst"`'
13572 EGREP='`$ECHO "$EGREP" | $SED "$delay_single_quote_subst"`'
13573 FGREP='`$ECHO "$FGREP" | $SED "$delay_single_quote_subst"`'
13574 LD='`$ECHO "$LD" | $SED "$delay_single_quote_subst"`'
13575 NM='`$ECHO "$NM" | $SED "$delay_single_quote_subst"`'
13576 LN_S='`$ECHO "$LN_S" | $SED "$delay_single_quote_subst"`'
13577 max_cmd_len='`$ECHO "$max_cmd_len" | $SED "$delay_single_quote_subst"`'
13578 ac_objext='`$ECHO "$ac_objext" | $SED "$delay_single_quote_subst"`'
13579 exeext='`$ECHO "$exeext" | $SED "$delay_single_quote_subst"`'
13580 lt_unset='`$ECHO "$lt_unset" | $SED "$delay_single_quote_subst"`'
13581 lt_SP2NL='`$ECHO "$lt_SP2NL" | $SED "$delay_single_quote_subst"`'
13582 lt_NL2SP='`$ECHO "$lt_NL2SP" | $SED "$delay_single_quote_subst"`'
13583 lt_cv_to_host_file_cmd='`$ECHO "$lt_cv_to_host_file_cmd" | $SED "$delay_single_quote_subst"`'
13584 lt_cv_to_tool_file_cmd='`$ECHO "$lt_cv_to_tool_file_cmd" | $SED "$delay_single_quote_subst"`'
13585 reload_flag='`$ECHO "$reload_flag" | $SED "$delay_single_quote_subst"`'
13586 reload_cmds='`$ECHO "$reload_cmds" | $SED "$delay_single_quote_subst"`'
13587 OBJDUMP='`$ECHO "$OBJDUMP" | $SED "$delay_single_quote_subst"`'
13588 deplibs_check_method='`$ECHO "$deplibs_check_method" | $SED "$delay_single_quote_subst"`'
13589 file_magic_cmd='`$ECHO "$file_magic_cmd" | $SED "$delay_single_quote_subst"`'
13590 file_magic_glob='`$ECHO "$file_magic_glob" | $SED "$delay_single_quote_subst"`'
13591 want_nocaseglob='`$ECHO "$want_nocaseglob" | $SED "$delay_single_quote_subst"`'
13592 DLLTOOL='`$ECHO "$DLLTOOL" | $SED "$delay_single_quote_subst"`'
13593 sharedlib_from_linklib_cmd='`$ECHO "$sharedlib_from_linklib_cmd" | $SED "$delay_single_quote_subst"`'
13594 AR='`$ECHO "$AR" | $SED "$delay_single_quote_subst"`'
13595 AR_FLAGS='`$ECHO "$AR_FLAGS" | $SED "$delay_single_quote_subst"`'
13596 archiver_list_spec='`$ECHO "$archiver_list_spec" | $SED "$delay_single_quote_subst"`'
13597 STRIP='`$ECHO "$STRIP" | $SED "$delay_single_quote_subst"`'
13598 RANLIB='`$ECHO "$RANLIB" | $SED "$delay_single_quote_subst"`'
13599 old_postinstall_cmds='`$ECHO "$old_postinstall_cmds" | $SED "$delay_single_quote_subst"`'
13600 old_postuninstall_cmds='`$ECHO "$old_postuninstall_cmds" | $SED "$delay_single_quote_subst"`'
13601 old_archive_cmds='`$ECHO "$old_archive_cmds" | $SED "$delay_single_quote_subst"`'
13602 lock_old_archive_extraction='`$ECHO "$lock_old_archive_extraction" | $SED "$delay_single_quote_subst"`'
13603 CC='`$ECHO "$CC" | $SED "$delay_single_quote_subst"`'
13604 CFLAGS='`$ECHO "$CFLAGS" | $SED "$delay_single_quote_subst"`'
13605 compiler='`$ECHO "$compiler" | $SED "$delay_single_quote_subst"`'
13606 GCC='`$ECHO "$GCC" | $SED "$delay_single_quote_subst"`'
13607 lt_cv_sys_global_symbol_pipe='`$ECHO "$lt_cv_sys_global_symbol_pipe" | $SED "$delay_single_quote_subst"`'
13608 lt_cv_sys_global_symbol_to_cdecl='`$ECHO "$lt_cv_sys_global_symbol_to_cdecl" | $SED "$delay_single_quote_subst"`'
13609 lt_cv_sys_global_symbol_to_c_name_address='`$ECHO "$lt_cv_sys_global_symbol_to_c_name_address" | $SED "$delay_single_quote_subst"`'
13610 lt_cv_sys_global_symbol_to_c_name_address_lib_prefix='`$ECHO "$lt_cv_sys_global_symbol_to_c_name_address_lib_prefix" | $SED "$delay_single_quote_subst"`'
13611 nm_file_list_spec='`$ECHO "$nm_file_list_spec" | $SED "$delay_single_quote_subst"`'
13612 lt_sysroot='`$ECHO "$lt_sysroot" | $SED "$delay_single_quote_subst"`'
13613 objdir='`$ECHO "$objdir" | $SED "$delay_single_quote_subst"`'
13614 MAGIC_CMD='`$ECHO "$MAGIC_CMD" | $SED "$delay_single_quote_subst"`'
13615 lt_prog_compiler_no_builtin_flag='`$ECHO "$lt_prog_compiler_no_builtin_flag" | $SED "$delay_single_quote_subst"`'
13616 lt_prog_compiler_pic='`$ECHO "$lt_prog_compiler_pic" | $SED "$delay_single_quote_subst"`'
13617 lt_prog_compiler_wl='`$ECHO "$lt_prog_compiler_wl" | $SED "$delay_single_quote_subst"`'
13618 lt_prog_compiler_static='`$ECHO "$lt_prog_compiler_static" | $SED "$delay_single_quote_subst"`'
13619 lt_cv_prog_compiler_c_o='`$ECHO "$lt_cv_prog_compiler_c_o" | $SED "$delay_single_quote_subst"`'
13620 need_locks='`$ECHO "$need_locks" | $SED "$delay_single_quote_subst"`'
13621 MANIFEST_TOOL='`$ECHO "$MANIFEST_TOOL" | $SED "$delay_single_quote_subst"`'
13622 DSYMUTIL='`$ECHO "$DSYMUTIL" | $SED "$delay_single_quote_subst"`'
13623 NMEDIT='`$ECHO "$NMEDIT" | $SED "$delay_single_quote_subst"`'
13624 LIPO='`$ECHO "$LIPO" | $SED "$delay_single_quote_subst"`'
13625 OTOOL='`$ECHO "$OTOOL" | $SED "$delay_single_quote_subst"`'
13626 OTOOL64='`$ECHO "$OTOOL64" | $SED "$delay_single_quote_subst"`'
13627 libext='`$ECHO "$libext" | $SED "$delay_single_quote_subst"`'
13628 shrext_cmds='`$ECHO "$shrext_cmds" | $SED "$delay_single_quote_subst"`'
13629 extract_expsyms_cmds='`$ECHO "$extract_expsyms_cmds" | $SED "$delay_single_quote_subst"`'
13630 archive_cmds_need_lc='`$ECHO "$archive_cmds_need_lc" | $SED "$delay_single_quote_subst"`'
13631 enable_shared_with_static_runtimes='`$ECHO "$enable_shared_with_static_runtimes" | $SED "$delay_single_quote_subst"`'
13632 export_dynamic_flag_spec='`$ECHO "$export_dynamic_flag_spec" | $SED "$delay_single_quote_subst"`'
13633 whole_archive_flag_spec='`$ECHO "$whole_archive_flag_spec" | $SED "$delay_single_quote_subst"`'
13634 compiler_needs_object='`$ECHO "$compiler_needs_object" | $SED "$delay_single_quote_subst"`'
13635 old_archive_from_new_cmds='`$ECHO "$old_archive_from_new_cmds" | $SED "$delay_single_quote_subst"`'
13636 old_archive_from_expsyms_cmds='`$ECHO "$old_archive_from_expsyms_cmds" | $SED "$delay_single_quote_subst"`'
13637 archive_cmds='`$ECHO "$archive_cmds" | $SED "$delay_single_quote_subst"`'
13638 archive_expsym_cmds='`$ECHO "$archive_expsym_cmds" | $SED "$delay_single_quote_subst"`'
13639 module_cmds='`$ECHO "$module_cmds" | $SED "$delay_single_quote_subst"`'
13640 module_expsym_cmds='`$ECHO "$module_expsym_cmds" | $SED "$delay_single_quote_subst"`'
13641 with_gnu_ld='`$ECHO "$with_gnu_ld" | $SED "$delay_single_quote_subst"`'
13642 allow_undefined_flag='`$ECHO "$allow_undefined_flag" | $SED "$delay_single_quote_subst"`'
13643 no_undefined_flag='`$ECHO "$no_undefined_flag" | $SED "$delay_single_quote_subst"`'
13644 hardcode_libdir_flag_spec='`$ECHO "$hardcode_libdir_flag_spec" | $SED "$delay_single_quote_subst"`'
13645 hardcode_libdir_separator='`$ECHO "$hardcode_libdir_separator" | $SED "$delay_single_quote_subst"`'
13646 hardcode_direct='`$ECHO "$hardcode_direct" | $SED "$delay_single_quote_subst"`'
13647 hardcode_direct_absolute='`$ECHO "$hardcode_direct_absolute" | $SED "$delay_single_quote_subst"`'
13648 hardcode_minus_L='`$ECHO "$hardcode_minus_L" | $SED "$delay_single_quote_subst"`'
13649 hardcode_shlibpath_var='`$ECHO "$hardcode_shlibpath_var" | $SED "$delay_single_quote_subst"`'
13650 hardcode_automatic='`$ECHO "$hardcode_automatic" | $SED "$delay_single_quote_subst"`'
13651 inherit_rpath='`$ECHO "$inherit_rpath" | $SED "$delay_single_quote_subst"`'
13652 link_all_deplibs='`$ECHO "$link_all_deplibs" | $SED "$delay_single_quote_subst"`'
13653 always_export_symbols='`$ECHO "$always_export_symbols" | $SED "$delay_single_quote_subst"`'
13654 export_symbols_cmds='`$ECHO "$export_symbols_cmds" | $SED "$delay_single_quote_subst"`'
13655 exclude_expsyms='`$ECHO "$exclude_expsyms" | $SED "$delay_single_quote_subst"`'
13656 include_expsyms='`$ECHO "$include_expsyms" | $SED "$delay_single_quote_subst"`'
13657 prelink_cmds='`$ECHO "$prelink_cmds" | $SED "$delay_single_quote_subst"`'
13658 postlink_cmds='`$ECHO "$postlink_cmds" | $SED "$delay_single_quote_subst"`'
13659 file_list_spec='`$ECHO "$file_list_spec" | $SED "$delay_single_quote_subst"`'
13660 variables_saved_for_relink='`$ECHO "$variables_saved_for_relink" | $SED "$delay_single_quote_subst"`'
13661 need_lib_prefix='`$ECHO "$need_lib_prefix" | $SED "$delay_single_quote_subst"`'
13662 need_version='`$ECHO "$need_version" | $SED "$delay_single_quote_subst"`'
13663 version_type='`$ECHO "$version_type" | $SED "$delay_single_quote_subst"`'
13664 runpath_var='`$ECHO "$runpath_var" | $SED "$delay_single_quote_subst"`'
13665 shlibpath_var='`$ECHO "$shlibpath_var" | $SED "$delay_single_quote_subst"`'
13666 shlibpath_overrides_runpath='`$ECHO "$shlibpath_overrides_runpath" | $SED "$delay_single_quote_subst"`'
13667 libname_spec='`$ECHO "$libname_spec" | $SED "$delay_single_quote_subst"`'
13668 library_names_spec='`$ECHO "$library_names_spec" | $SED "$delay_single_quote_subst"`'
13669 soname_spec='`$ECHO "$soname_spec" | $SED "$delay_single_quote_subst"`'
13670 install_override_mode='`$ECHO "$install_override_mode" | $SED "$delay_single_quote_subst"`'
13671 postinstall_cmds='`$ECHO "$postinstall_cmds" | $SED "$delay_single_quote_subst"`'
13672 postuninstall_cmds='`$ECHO "$postuninstall_cmds" | $SED "$delay_single_quote_subst"`'
13673 finish_cmds='`$ECHO "$finish_cmds" | $SED "$delay_single_quote_subst"`'
13674 finish_eval='`$ECHO "$finish_eval" | $SED "$delay_single_quote_subst"`'
13675 hardcode_into_libs='`$ECHO "$hardcode_into_libs" | $SED "$delay_single_quote_subst"`'
13676 sys_lib_search_path_spec='`$ECHO "$sys_lib_search_path_spec" | $SED "$delay_single_quote_subst"`'
13677 sys_lib_dlsearch_path_spec='`$ECHO "$sys_lib_dlsearch_path_spec" | $SED "$delay_single_quote_subst"`'
13678 hardcode_action='`$ECHO "$hardcode_action" | $SED "$delay_single_quote_subst"`'
13679 enable_dlopen='`$ECHO "$enable_dlopen" | $SED "$delay_single_quote_subst"`'
13680 enable_dlopen_self='`$ECHO "$enable_dlopen_self" | $SED "$delay_single_quote_subst"`'
13681 enable_dlopen_self_static='`$ECHO "$enable_dlopen_self_static" | $SED "$delay_single_quote_subst"`'
13682 old_striplib='`$ECHO "$old_striplib" | $SED "$delay_single_quote_subst"`'
13683 striplib='`$ECHO "$striplib" | $SED "$delay_single_quote_subst"`'
13684
13685 LTCC='$LTCC'
13686 LTCFLAGS='$LTCFLAGS'
13687 compiler='$compiler_DEFAULT'
13688
13689 # A function that is used when there is no print builtin or printf.
13690 func_fallback_echo ()
13691 {
13692 eval 'cat <<_LTECHO_EOF
13693 \$1
13694 _LTECHO_EOF'
13695 }
13696
13697 # Quote evaled strings.
13698 for var in SHELL \
13699 ECHO \
13700 PATH_SEPARATOR \
13701 SED \
13702 GREP \
13703 EGREP \
13704 FGREP \
13705 LD \
13706 NM \
13707 LN_S \
13708 lt_SP2NL \
13709 lt_NL2SP \
13710 reload_flag \
13711 OBJDUMP \
13712 deplibs_check_method \
13713 file_magic_cmd \
13714 file_magic_glob \
13715 want_nocaseglob \
13716 DLLTOOL \
13717 sharedlib_from_linklib_cmd \
13718 AR \
13719 AR_FLAGS \
13720 archiver_list_spec \
13721 STRIP \
13722 RANLIB \
13723 CC \
13724 CFLAGS \
13725 compiler \
13726 lt_cv_sys_global_symbol_pipe \
13727 lt_cv_sys_global_symbol_to_cdecl \
13728 lt_cv_sys_global_symbol_to_c_name_address \
13729 lt_cv_sys_global_symbol_to_c_name_address_lib_prefix \
13730 nm_file_list_spec \
13731 lt_prog_compiler_no_builtin_flag \
13732 lt_prog_compiler_pic \
13733 lt_prog_compiler_wl \
13734 lt_prog_compiler_static \
13735 lt_cv_prog_compiler_c_o \
13736 need_locks \
13737 MANIFEST_TOOL \
13738 DSYMUTIL \
13739 NMEDIT \
13740 LIPO \
13741 OTOOL \
13742 OTOOL64 \
13743 shrext_cmds \
13744 export_dynamic_flag_spec \
13745 whole_archive_flag_spec \
13746 compiler_needs_object \
13747 with_gnu_ld \
13748 allow_undefined_flag \
13749 no_undefined_flag \
13750 hardcode_libdir_flag_spec \
13751 hardcode_libdir_separator \
13752 exclude_expsyms \
13753 include_expsyms \
13754 file_list_spec \
13755 variables_saved_for_relink \
13756 libname_spec \
13757 library_names_spec \
13758 soname_spec \
13759 install_override_mode \
13760 finish_eval \
13761 old_striplib \
13762 striplib; do
13763 case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in
13764 *[\\\\\\\`\\"\\\$]*)
13765 eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED \\"\\\$sed_quote_subst\\"\\\`\\\\\\""
13766 ;;
13767 *)
13768 eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\""
13769 ;;
13770 esac
13771 done
13772
13773 # Double-quote double-evaled strings.
13774 for var in reload_cmds \
13775 old_postinstall_cmds \
13776 old_postuninstall_cmds \
13777 old_archive_cmds \
13778 extract_expsyms_cmds \
13779 old_archive_from_new_cmds \
13780 old_archive_from_expsyms_cmds \
13781 archive_cmds \
13782 archive_expsym_cmds \
13783 module_cmds \
13784 module_expsym_cmds \
13785 export_symbols_cmds \
13786 prelink_cmds \
13787 postlink_cmds \
13788 postinstall_cmds \
13789 postuninstall_cmds \
13790 finish_cmds \
13791 sys_lib_search_path_spec \
13792 sys_lib_dlsearch_path_spec; do
13793 case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in
13794 *[\\\\\\\`\\"\\\$]*)
13795 eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED -e \\"\\\$double_quote_subst\\" -e \\"\\\$sed_quote_subst\\" -e \\"\\\$delay_variable_subst\\"\\\`\\\\\\""
13796 ;;
13797 *)
13798 eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\""
13799 ;;
13800 esac
13801 done
13802
13803 ac_aux_dir='$ac_aux_dir'
13804 xsi_shell='$xsi_shell'
13805 lt_shell_append='$lt_shell_append'
13806
13807 # See if we are running on zsh, and set the options which allow our
13808 # commands through without removal of \ escapes INIT.
13809 if test -n "\${ZSH_VERSION+set}" ; then
13810 setopt NO_GLOB_SUBST
13811 fi
13812
13813
13814 PACKAGE='$PACKAGE'
13815 VERSION='$VERSION'
13816 TIMESTAMP='$TIMESTAMP'
13817 RM='$RM'
13818 ofile='$ofile'
13819
13820
13821
13822
13823 _ACEOF
13824
13825 cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
13826
13827 # Handling of arguments.
13828 for ac_config_target in $ac_config_targets
13829 do
13830 case $ac_config_target in
13831 "libtool") CONFIG_COMMANDS="$CONFIG_COMMANDS libtool" ;;
13832 "include/config.h") CONFIG_HEADERS="$CONFIG_HEADERS include/config.h" ;;
13833 "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;;
13834
13835 *) as_fn_error $? "invalid argument: \`$ac_config_target'" "$LINENO" 5;;
13836 esac
13837 done
13838
13839
13840 # If the user did not use the arguments to specify the items to instantiate,
13841 # then the envvar interface is used. Set only those that are not.
13842 # We use the long form for the default assignment because of an extremely
13843 # bizarre bug on SunOS 4.1.3.
13844 if $ac_need_defaults; then
13845 test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files
13846 test "${CONFIG_HEADERS+set}" = set || CONFIG_HEADERS=$config_headers
13847 test "${CONFIG_COMMANDS+set}" = set || CONFIG_COMMANDS=$config_commands
13848 fi
13849
13850 # Have a temporary directory for convenience. Make it in the build tree
13851 # simply because there is no reason against having it here, and in addition,
13852 # creating and moving files from /tmp can sometimes cause problems.
13853 # Hook for its removal unless debugging.
13854 # Note that there is a small window in which the directory will not be cleaned:
13855 # after its creation but before its name has been assigned to `$tmp'.
13856 $debug ||
13857 {
13858 tmp= ac_tmp=
13859 trap 'exit_status=$?
13860 : "${ac_tmp:=$tmp}"
13861 { test ! -d "$ac_tmp" || rm -fr "$ac_tmp"; } && exit $exit_status
13862 ' 0
13863 trap 'as_fn_exit 1' 1 2 13 15
13864 }
13865 # Create a (secure) tmp directory for tmp files.
13866
13867 {
13868 tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` &&
13869 test -d "$tmp"
13870 } ||
13871 {
13872 tmp=./conf$$-$RANDOM
13873 (umask 077 && mkdir "$tmp")
13874 } || as_fn_error $? "cannot create a temporary directory in ." "$LINENO" 5
13875 ac_tmp=$tmp
13876
13877 # Set up the scripts for CONFIG_FILES section.
13878 # No need to generate them if there are no CONFIG_FILES.
13879 # This happens for instance with `./config.status config.h'.
13880 if test -n "$CONFIG_FILES"; then
13881
13882
13883 ac_cr=`echo X | tr X '\015'`
13884 # On cygwin, bash can eat \r inside `` if the user requested igncr.
13885 # But we know of no other shell where ac_cr would be empty at this
13886 # point, so we can use a bashism as a fallback.
13887 if test "x$ac_cr" = x; then
13888 eval ac_cr=\$\'\\r\'
13889 fi
13890 ac_cs_awk_cr=`$AWK 'BEGIN { print "a\rb" }' </dev/null 2>/dev/null`
13891 if test "$ac_cs_awk_cr" = "a${ac_cr}b"; then
13892 ac_cs_awk_cr='\\r'
13893 else
13894 ac_cs_awk_cr=$ac_cr
13895 fi
13896
13897 echo 'BEGIN {' >"$ac_tmp/subs1.awk" &&
13898 _ACEOF
13899
13900
13901 {
13902 echo "cat >conf$$subs.awk <<_ACEOF" &&
13903 echo "$ac_subst_vars" | sed 's/.*/&!$&$ac_delim/' &&
13904 echo "_ACEOF"
13905 } >conf$$subs.sh ||
13906 as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5
13907 ac_delim_num=`echo "$ac_subst_vars" | grep -c '^'`
13908 ac_delim='%!_!# '
13909 for ac_last_try in false false false false false :; do
13910 . ./conf$$subs.sh ||
13911 as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5
13912
13913 ac_delim_n=`sed -n "s/.*$ac_delim\$/X/p" conf$$subs.awk | grep -c X`
13914 if test $ac_delim_n = $ac_delim_num; then
13915 break
13916 elif $ac_last_try; then
13917 as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5
13918 else
13919 ac_delim="$ac_delim!$ac_delim _$ac_delim!! "
13920 fi
13921 done
13922 rm -f conf$$subs.sh
13923
13924 cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
13925 cat >>"\$ac_tmp/subs1.awk" <<\\_ACAWK &&
13926 _ACEOF
13927 sed -n '
13928 h
13929 s/^/S["/; s/!.*/"]=/
13930 p
13931 g
13932 s/^[^!]*!//
13933 :repl
13934 t repl
13935 s/'"$ac_delim"'$//
13936 t delim
13937 :nl
13938 h
13939 s/\(.\{148\}\)..*/\1/
13940 t more1
13941 s/["\\]/\\&/g; s/^/"/; s/$/\\n"\\/
13942 p
13943 n
13944 b repl
13945 :more1
13946 s/["\\]/\\&/g; s/^/"/; s/$/"\\/
13947 p
13948 g
13949 s/.\{148\}//
13950 t nl
13951 :delim
13952 h
13953 s/\(.\{148\}\)..*/\1/
13954 t more2
13955 s/["\\]/\\&/g; s/^/"/; s/$/"/
13956 p
13957 b
13958 :more2
13959 s/["\\]/\\&/g; s/^/"/; s/$/"\\/
13960 p
13961 g
13962 s/.\{148\}//
13963 t delim
13964 ' <conf$$subs.awk | sed '
13965 /^[^""]/{
13966 N
13967 s/\n//
13968 }
13969 ' >>$CONFIG_STATUS || ac_write_fail=1
13970 rm -f conf$$subs.awk
13971 cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
13972 _ACAWK
13973 cat >>"\$ac_tmp/subs1.awk" <<_ACAWK &&
13974 for (key in S) S_is_set[key] = 1
13975 FS = ""
13976
13977 }
13978 {
13979 line = $ 0
13980 nfields = split(line, field, "@")
13981 substed = 0
13982 len = length(field[1])
13983 for (i = 2; i < nfields; i++) {
13984 key = field[i]
13985 keylen = length(key)
13986 if (S_is_set[key]) {
13987 value = S[key]
13988 line = substr(line, 1, len) "" value "" substr(line, len + keylen + 3)
13989 len += length(value) + length(field[++i])
13990 substed = 1
13991 } else
13992 len += 1 + keylen
13993 }
13994
13995 print line
13996 }
13997
13998 _ACAWK
13999 _ACEOF
14000 cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
14001 if sed "s/$ac_cr//" < /dev/null > /dev/null 2>&1; then
14002 sed "s/$ac_cr\$//; s/$ac_cr/$ac_cs_awk_cr/g"
14003 else
14004 cat
14005 fi < "$ac_tmp/subs1.awk" > "$ac_tmp/subs.awk" \
14006 || as_fn_error $? "could not setup config files machinery" "$LINENO" 5
14007 _ACEOF
14008
14009 # VPATH may cause trouble with some makes, so we remove sole $(srcdir),
14010 # ${srcdir} and @srcdir@ entries from VPATH if srcdir is ".", strip leading and
14011 # trailing colons and then remove the whole line if VPATH becomes empty
14012 # (actually we leave an empty line to preserve line numbers).
14013 if test "x$srcdir" = x.; then
14014 ac_vpsub='/^[ ]*VPATH[ ]*=[ ]*/{
14015 h
14016 s///
14017 s/^/:/
14018 s/[ ]*$/:/
14019 s/:\$(srcdir):/:/g
14020 s/:\${srcdir}:/:/g
14021 s/:@srcdir@:/:/g
14022 s/^:*//
14023 s/:*$//
14024 x
14025 s/\(=[ ]*\).*/\1/
14026 G
14027 s/\n//
14028 s/^[^=]*=[ ]*$//
14029 }'
14030 fi
14031
14032 cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
14033 fi # test -n "$CONFIG_FILES"
14034
14035 # Set up the scripts for CONFIG_HEADERS section.
14036 # No need to generate them if there are no CONFIG_HEADERS.
14037 # This happens for instance with `./config.status Makefile'.
14038 if test -n "$CONFIG_HEADERS"; then
14039 cat >"$ac_tmp/defines.awk" <<\_ACAWK ||
14040 BEGIN {
14041 _ACEOF
14042
14043 # Transform confdefs.h into an awk script `defines.awk', embedded as
14044 # here-document in config.status, that substitutes the proper values into
14045 # config.h.in to produce config.h.
14046
14047 # Create a delimiter string that does not exist in confdefs.h, to ease
14048 # handling of long lines.
14049 ac_delim='%!_!# '
14050 for ac_last_try in false false :; do
14051 ac_tt=`sed -n "/$ac_delim/p" confdefs.h`
14052 if test -z "$ac_tt"; then
14053 break
14054 elif $ac_last_try; then
14055 as_fn_error $? "could not make $CONFIG_HEADERS" "$LINENO" 5
14056 else
14057 ac_delim="$ac_delim!$ac_delim _$ac_delim!! "
14058 fi
14059 done
14060
14061 # For the awk script, D is an array of macro values keyed by name,
14062 # likewise P contains macro parameters if any. Preserve backslash
14063 # newline sequences.
14064
14065 ac_word_re=[_$as_cr_Letters][_$as_cr_alnum]*
14066 sed -n '
14067 s/.\{148\}/&'"$ac_delim"'/g
14068 t rset
14069 :rset
14070 s/^[ ]*#[ ]*define[ ][ ]*/ /
14071 t def
14072 d
14073 :def
14074 s/\\$//
14075 t bsnl
14076 s/["\\]/\\&/g
14077 s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\
14078 D["\1"]=" \3"/p
14079 s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2"/p
14080 d
14081 :bsnl
14082 s/["\\]/\\&/g
14083 s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\
14084 D["\1"]=" \3\\\\\\n"\\/p
14085 t cont
14086 s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2\\\\\\n"\\/p
14087 t cont
14088 d
14089 :cont
14090 n
14091 s/.\{148\}/&'"$ac_delim"'/g
14092 t clear
14093 :clear
14094 s/\\$//
14095 t bsnlc
14096 s/["\\]/\\&/g; s/^/"/; s/$/"/p
14097 d
14098 :bsnlc
14099 s/["\\]/\\&/g; s/^/"/; s/$/\\\\\\n"\\/p
14100 b cont
14101 ' <confdefs.h | sed '
14102 s/'"$ac_delim"'/"\\\
14103 "/g' >>$CONFIG_STATUS || ac_write_fail=1
14104
14105 cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
14106 for (key in D) D_is_set[key] = 1
14107 FS = ""
14108 }
14109 /^[\t ]*#[\t ]*(define|undef)[\t ]+$ac_word_re([\t (]|\$)/ {
14110 line = \$ 0
14111 split(line, arg, " ")
14112 if (arg[1] == "#") {
14113 defundef = arg[2]
14114 mac1 = arg[3]
14115 } else {
14116 defundef = substr(arg[1], 2)
14117 mac1 = arg[2]
14118 }
14119 split(mac1, mac2, "(") #)
14120 macro = mac2[1]
14121 prefix = substr(line, 1, index(line, defundef) - 1)
14122 if (D_is_set[macro]) {
14123 # Preserve the white space surrounding the "#".
14124 print prefix "define", macro P[macro] D[macro]
14125 next
14126 } else {
14127 # Replace #undef with comments. This is necessary, for example,
14128 # in the case of _POSIX_SOURCE, which is predefined and required
14129 # on some systems where configure will not decide to define it.
14130 if (defundef == "undef") {
14131 print "/*", prefix defundef, macro, "*/"
14132 next
14133 }
14134 }
14135 }
14136 { print }
14137 _ACAWK
14138 _ACEOF
14139 cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
14140 as_fn_error $? "could not setup config headers machinery" "$LINENO" 5
14141 fi # test -n "$CONFIG_HEADERS"
14142
14143
14144 eval set X " :F $CONFIG_FILES :H $CONFIG_HEADERS :C $CONFIG_COMMANDS"
14145 shift
14146 for ac_tag
14147 do
14148 case $ac_tag in
14149 :[FHLC]) ac_mode=$ac_tag; continue;;
14150 esac
14151 case $ac_mode$ac_tag in
14152 :[FHL]*:*);;
14153 :L* | :C*:*) as_fn_error $? "invalid tag \`$ac_tag'" "$LINENO" 5;;
14154 :[FH]-) ac_tag=-:-;;
14155 :[FH]*) ac_tag=$ac_tag:$ac_tag.in;;
14156 esac
14157 ac_save_IFS=$IFS
14158 IFS=:
14159 set x $ac_tag
14160 IFS=$ac_save_IFS
14161 shift
14162 ac_file=$1
14163 shift
14164
14165 case $ac_mode in
14166 :L) ac_source=$1;;
14167 :[FH])
14168 ac_file_inputs=
14169 for ac_f
14170 do
14171 case $ac_f in
14172 -) ac_f="$ac_tmp/stdin";;
14173 *) # Look for the file first in the build tree, then in the source tree
14174 # (if the path is not absolute). The absolute path cannot be DOS-style,
14175 # because $ac_f cannot contain `:'.
14176 test -f "$ac_f" ||
14177 case $ac_f in
14178 [\\/$]*) false;;
14179 *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";;
14180 esac ||
14181 as_fn_error 1 "cannot find input file: \`$ac_f'" "$LINENO" 5;;
14182 esac
14183 case $ac_f in *\'*) ac_f=`$as_echo "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac
14184 as_fn_append ac_file_inputs " '$ac_f'"
14185 done
14186
14187 # Let's still pretend it is `configure' which instantiates (i.e., don't
14188 # use $as_me), people would be surprised to read:
14189 # /* config.h. Generated by config.status. */
14190 configure_input='Generated from '`
14191 $as_echo "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g'
14192 `' by configure.'
14193 if test x"$ac_file" != x-; then
14194 configure_input="$ac_file. $configure_input"
14195 { $as_echo "$as_me:${as_lineno-$LINENO}: creating $ac_file" >&5
14196 $as_echo "$as_me: creating $ac_file" >&6;}
14197 fi
14198 # Neutralize special characters interpreted by sed in replacement strings.
14199 case $configure_input in #(
14200 *\&* | *\|* | *\\* )
14201 ac_sed_conf_input=`$as_echo "$configure_input" |
14202 sed 's/[\\\\&|]/\\\\&/g'`;; #(
14203 *) ac_sed_conf_input=$configure_input;;
14204 esac
14205
14206 case $ac_tag in
14207 *:-:* | *:-) cat >"$ac_tmp/stdin" \
14208 || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;;
14209 esac
14210 ;;
14211 esac
14212
14213 ac_dir=`$as_dirname -- "$ac_file" ||
14214 $as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
14215 X"$ac_file" : 'X\(//\)[^/]' \| \
14216 X"$ac_file" : 'X\(//\)$' \| \
14217 X"$ac_file" : 'X\(/\)' \| . 2>/dev/null ||
14218 $as_echo X"$ac_file" |
14219 sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
14220 s//\1/
14221 q
14222 }
14223 /^X\(\/\/\)[^/].*/{
14224 s//\1/
14225 q
14226 }
14227 /^X\(\/\/\)$/{
14228 s//\1/
14229 q
14230 }
14231 /^X\(\/\).*/{
14232 s//\1/
14233 q
14234 }
14235 s/.*/./; q'`
14236 as_dir="$ac_dir"; as_fn_mkdir_p
14237 ac_builddir=.
14238
14239 case "$ac_dir" in
14240 .) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;;
14241 *)
14242 ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'`
14243 # A ".." for each directory in $ac_dir_suffix.
14244 ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'`
14245 case $ac_top_builddir_sub in
14246 "") ac_top_builddir_sub=. ac_top_build_prefix= ;;
14247 *) ac_top_build_prefix=$ac_top_builddir_sub/ ;;
14248 esac ;;
14249 esac
14250 ac_abs_top_builddir=$ac_pwd
14251 ac_abs_builddir=$ac_pwd$ac_dir_suffix
14252 # for backward compatibility:
14253 ac_top_builddir=$ac_top_build_prefix
14254
14255 case $srcdir in
14256 .) # We are building in place.
14257 ac_srcdir=.
14258 ac_top_srcdir=$ac_top_builddir_sub
14259 ac_abs_top_srcdir=$ac_pwd ;;
14260 [\\/]* | ?:[\\/]* ) # Absolute name.
14261 ac_srcdir=$srcdir$ac_dir_suffix;
14262 ac_top_srcdir=$srcdir
14263 ac_abs_top_srcdir=$srcdir ;;
14264 *) # Relative name.
14265 ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix
14266 ac_top_srcdir=$ac_top_build_prefix$srcdir
14267 ac_abs_top_srcdir=$ac_pwd/$srcdir ;;
14268 esac
14269 ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix
14270
14271
14272 case $ac_mode in
14273 :F)
14274 #
14275 # CONFIG_FILE
14276 #
14277
14278 case $INSTALL in
14279 [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;;
14280 *) ac_INSTALL=$ac_top_build_prefix$INSTALL ;;
14281 esac
14282 ac_MKDIR_P=$MKDIR_P
14283 case $MKDIR_P in
14284 [\\/$]* | ?:[\\/]* ) ;;
14285 */*) ac_MKDIR_P=$ac_top_build_prefix$MKDIR_P ;;
14286 esac
14287 _ACEOF
14288
14289 cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
14290 # If the template does not know about datarootdir, expand it.
14291 # FIXME: This hack should be removed a few years after 2.60.
14292 ac_datarootdir_hack=; ac_datarootdir_seen=
14293 ac_sed_dataroot='
14294 /datarootdir/ {
14295 p
14296 q
14297 }
14298 /@datadir@/p
14299 /@docdir@/p
14300 /@infodir@/p
14301 /@localedir@/p
14302 /@mandir@/p'
14303 case `eval "sed -n \"\$ac_sed_dataroot\" $ac_file_inputs"` in
14304 *datarootdir*) ac_datarootdir_seen=yes;;
14305 *@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*)
14306 { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5
14307 $as_echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;}
14308 _ACEOF
14309 cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
14310 ac_datarootdir_hack='
14311 s&@datadir@&$datadir&g
14312 s&@docdir@&$docdir&g
14313 s&@infodir@&$infodir&g
14314 s&@localedir@&$localedir&g
14315 s&@mandir@&$mandir&g
14316 s&\\\${datarootdir}&$datarootdir&g' ;;
14317 esac
14318 _ACEOF
14319
14320 # Neutralize VPATH when `$srcdir' = `.'.
14321 # Shell code in configure.ac might set extrasub.
14322 # FIXME: do we really want to maintain this feature?
14323 cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
14324 ac_sed_extra="$ac_vpsub
14325 $extrasub
14326 _ACEOF
14327 cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
14328 :t
14329 /@[a-zA-Z_][a-zA-Z_0-9]*@/!b
14330 s|@configure_input@|$ac_sed_conf_input|;t t
14331 s&@top_builddir@&$ac_top_builddir_sub&;t t
14332 s&@top_build_prefix@&$ac_top_build_prefix&;t t
14333 s&@srcdir@&$ac_srcdir&;t t
14334 s&@abs_srcdir@&$ac_abs_srcdir&;t t
14335 s&@top_srcdir@&$ac_top_srcdir&;t t
14336 s&@abs_top_srcdir@&$ac_abs_top_srcdir&;t t
14337 s&@builddir@&$ac_builddir&;t t
14338 s&@abs_builddir@&$ac_abs_builddir&;t t
14339 s&@abs_top_builddir@&$ac_abs_top_builddir&;t t
14340 s&@INSTALL@&$ac_INSTALL&;t t
14341 s&@MKDIR_P@&$ac_MKDIR_P&;t t
14342 $ac_datarootdir_hack
14343 "
14344 eval sed \"\$ac_sed_extra\" "$ac_file_inputs" | $AWK -f "$ac_tmp/subs.awk" \
14345 >$ac_tmp/out || as_fn_error $? "could not create $ac_file" "$LINENO" 5
14346
14347 test -z "$ac_datarootdir_hack$ac_datarootdir_seen" &&
14348 { ac_out=`sed -n '/\${datarootdir}/p' "$ac_tmp/out"`; test -n "$ac_out"; } &&
14349 { ac_out=`sed -n '/^[ ]*datarootdir[ ]*:*=/p' \
14350 "$ac_tmp/out"`; test -z "$ac_out"; } &&
14351 { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file contains a reference to the variable \`datarootdir'
14352 which seems to be undefined. Please make sure it is defined" >&5
14353 $as_echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir'
14354 which seems to be undefined. Please make sure it is defined" >&2;}
14355
14356 rm -f "$ac_tmp/stdin"
14357 case $ac_file in
14358 -) cat "$ac_tmp/out" && rm -f "$ac_tmp/out";;
14359 *) rm -f "$ac_file" && mv "$ac_tmp/out" "$ac_file";;
14360 esac \
14361 || as_fn_error $? "could not create $ac_file" "$LINENO" 5
14362 ;;
14363 :H)
14364 #
14365 # CONFIG_HEADER
14366 #
14367 if test x"$ac_file" != x-; then
14368 {
14369 $as_echo "/* $configure_input */" \
14370 && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs"
14371 } >"$ac_tmp/config.h" \
14372 || as_fn_error $? "could not create $ac_file" "$LINENO" 5
14373 if diff "$ac_file" "$ac_tmp/config.h" >/dev/null 2>&1; then
14374 { $as_echo "$as_me:${as_lineno-$LINENO}: $ac_file is unchanged" >&5
14375 $as_echo "$as_me: $ac_file is unchanged" >&6;}
14376 else
14377 rm -f "$ac_file"
14378 mv "$ac_tmp/config.h" "$ac_file" \
14379 || as_fn_error $? "could not create $ac_file" "$LINENO" 5
14380 fi
14381 else
14382 $as_echo "/* $configure_input */" \
14383 && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" \
14384 || as_fn_error $? "could not create -" "$LINENO" 5
14385 fi
14386 # Compute "$ac_file"'s index in $config_headers.
14387 _am_arg="$ac_file"
14388 _am_stamp_count=1
14389 for _am_header in $config_headers :; do
14390 case $_am_header in
14391 $_am_arg | $_am_arg:* )
14392 break ;;
14393 * )
14394 _am_stamp_count=`expr $_am_stamp_count + 1` ;;
14395 esac
14396 done
14397 echo "timestamp for $_am_arg" >`$as_dirname -- "$_am_arg" ||
14398 $as_expr X"$_am_arg" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
14399 X"$_am_arg" : 'X\(//\)[^/]' \| \
14400 X"$_am_arg" : 'X\(//\)$' \| \
14401 X"$_am_arg" : 'X\(/\)' \| . 2>/dev/null ||
14402 $as_echo X"$_am_arg" |
14403 sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
14404 s//\1/
14405 q
14406 }
14407 /^X\(\/\/\)[^/].*/{
14408 s//\1/
14409 q
14410 }
14411 /^X\(\/\/\)$/{
14412 s//\1/
14413 q
14414 }
14415 /^X\(\/\).*/{
14416 s//\1/
14417 q
14418 }
14419 s/.*/./; q'`/stamp-h$_am_stamp_count
14420 ;;
14421
14422 :C) { $as_echo "$as_me:${as_lineno-$LINENO}: executing $ac_file commands" >&5
14423 $as_echo "$as_me: executing $ac_file commands" >&6;}
14424 ;;
14425 esac
14426
14427
14428 case $ac_file$ac_mode in
14429 "libtool":C)
14430
14431 # See if we are running on zsh, and set the options which allow our
14432 # commands through without removal of \ escapes.
14433 if test -n "${ZSH_VERSION+set}" ; then
14434 setopt NO_GLOB_SUBST
14435 fi
14436
14437 cfgfile="${ofile}T"
14438 trap "$RM \"$cfgfile\"; exit 1" 1 2 15
14439 $RM "$cfgfile"
14440
14441 cat <<_LT_EOF >> "$cfgfile"
14442 #! $SHELL
14443
14444 # `$ECHO "$ofile" | sed 's%^.*/%%'` - Provide generalized library-building support services.
14445 # Generated automatically by $as_me ($PACKAGE$TIMESTAMP) $VERSION
14446 # Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`:
14447 # NOTE: Changes made to this file will be lost: look at ltmain.sh.
14448 #
14449 # Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005,
14450 # 2006, 2007, 2008, 2009, 2010, 2011 Free Software
14451 # Foundation, Inc.
14452 # Written by Gordon Matzigkeit, 1996
14453 #
14454 # This file is part of GNU Libtool.
14455 #
14456 # GNU Libtool is free software; you can redistribute it and/or
14457 # modify it under the terms of the GNU General Public License as
14458 # published by the Free Software Foundation; either version 2 of
14459 # the License, or (at your option) any later version.
14460 #
14461 # As a special exception to the GNU General Public License,
14462 # if you distribute this file as part of a program or library that
14463 # is built using GNU Libtool, you may include this file under the
14464 # same distribution terms that you use for the rest of that program.
14465 #
14466 # GNU Libtool is distributed in the hope that it will be useful,
14467 # but WITHOUT ANY WARRANTY; without even the implied warranty of
14468 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14469 # GNU General Public License for more details.
14470 #
14471 # You should have received a copy of the GNU General Public License
14472 # along with GNU Libtool; see the file COPYING. If not, a copy
14473 # can be downloaded from http://www.gnu.org/licenses/gpl.html, or
14474 # obtained by writing to the Free Software Foundation, Inc.,
14475 # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
14476
14477
14478 # The names of the tagged configurations supported by this script.
14479 available_tags=""
14480
14481 # ### BEGIN LIBTOOL CONFIG
14482
14483 # Which release of libtool.m4 was used?
14484 macro_version=$macro_version
14485 macro_revision=$macro_revision
14486
14487 # Whether or not to build shared libraries.
14488 build_libtool_libs=$enable_shared
14489
14490 # Whether or not to build static libraries.
14491 build_old_libs=$enable_static
14492
14493 # What type of objects to build.
14494 pic_mode=$pic_mode
14495
14496 # Whether or not to optimize for fast installation.
14497 fast_install=$enable_fast_install
14498
14499 # Shell to use when invoking shell scripts.
14500 SHELL=$lt_SHELL
14501
14502 # An echo program that protects backslashes.
14503 ECHO=$lt_ECHO
14504
14505 # The PATH separator for the build system.
14506 PATH_SEPARATOR=$lt_PATH_SEPARATOR
14507
14508 # The host system.
14509 host_alias=$host_alias
14510 host=$host
14511 host_os=$host_os
14512
14513 # The build system.
14514 build_alias=$build_alias
14515 build=$build
14516 build_os=$build_os
14517
14518 # A sed program that does not truncate output.
14519 SED=$lt_SED
14520
14521 # Sed that helps us avoid accidentally triggering echo(1) options like -n.
14522 Xsed="\$SED -e 1s/^X//"
14523
14524 # A grep program that handles long lines.
14525 GREP=$lt_GREP
14526
14527 # An ERE matcher.
14528 EGREP=$lt_EGREP
14529
14530 # A literal string matcher.
14531 FGREP=$lt_FGREP
14532
14533 # A BSD- or MS-compatible name lister.
14534 NM=$lt_NM
14535
14536 # Whether we need soft or hard links.
14537 LN_S=$lt_LN_S
14538
14539 # What is the maximum length of a command?
14540 max_cmd_len=$max_cmd_len
14541
14542 # Object file suffix (normally "o").
14543 objext=$ac_objext
14544
14545 # Executable file suffix (normally "").
14546 exeext=$exeext
14547
14548 # whether the shell understands "unset".
14549 lt_unset=$lt_unset
14550
14551 # turn spaces into newlines.
14552 SP2NL=$lt_lt_SP2NL
14553
14554 # turn newlines into spaces.
14555 NL2SP=$lt_lt_NL2SP
14556
14557 # convert \$build file names to \$host format.
14558 to_host_file_cmd=$lt_cv_to_host_file_cmd
14559
14560 # convert \$build files to toolchain format.
14561 to_tool_file_cmd=$lt_cv_to_tool_file_cmd
14562
14563 # An object symbol dumper.
14564 OBJDUMP=$lt_OBJDUMP
14565
14566 # Method to check whether dependent libraries are shared objects.
14567 deplibs_check_method=$lt_deplibs_check_method
14568
14569 # Command to use when deplibs_check_method = "file_magic".
14570 file_magic_cmd=$lt_file_magic_cmd
14571
14572 # How to find potential files when deplibs_check_method = "file_magic".
14573 file_magic_glob=$lt_file_magic_glob
14574
14575 # Find potential files using nocaseglob when deplibs_check_method = "file_magic".
14576 want_nocaseglob=$lt_want_nocaseglob
14577
14578 # DLL creation program.
14579 DLLTOOL=$lt_DLLTOOL
14580
14581 # Command to associate shared and link libraries.
14582 sharedlib_from_linklib_cmd=$lt_sharedlib_from_linklib_cmd
14583
14584 # The archiver.
14585 AR=$lt_AR
14586
14587 # Flags to create an archive.
14588 AR_FLAGS=$lt_AR_FLAGS
14589
14590 # How to feed a file listing to the archiver.
14591 archiver_list_spec=$lt_archiver_list_spec
14592
14593 # A symbol stripping program.
14594 STRIP=$lt_STRIP
14595
14596 # Commands used to install an old-style archive.
14597 RANLIB=$lt_RANLIB
14598 old_postinstall_cmds=$lt_old_postinstall_cmds
14599 old_postuninstall_cmds=$lt_old_postuninstall_cmds
14600
14601 # Whether to use a lock for old archive extraction.
14602 lock_old_archive_extraction=$lock_old_archive_extraction
14603
14604 # A C compiler.
14605 LTCC=$lt_CC
14606
14607 # LTCC compiler flags.
14608 LTCFLAGS=$lt_CFLAGS
14609
14610 # Take the output of nm and produce a listing of raw symbols and C names.
14611 global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe
14612
14613 # Transform the output of nm in a proper C declaration.
14614 global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl
14615
14616 # Transform the output of nm in a C name address pair.
14617 global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address
14618
14619 # Transform the output of nm in a C name address pair when lib prefix is needed.
14620 global_symbol_to_c_name_address_lib_prefix=$lt_lt_cv_sys_global_symbol_to_c_name_address_lib_prefix
14621
14622 # Specify filename containing input files for \$NM.
14623 nm_file_list_spec=$lt_nm_file_list_spec
14624
14625 # The root where to search for dependent libraries,and in which our libraries should be installed.
14626 lt_sysroot=$lt_sysroot
14627
14628 # The name of the directory that contains temporary libtool files.
14629 objdir=$objdir
14630
14631 # Used to examine libraries when file_magic_cmd begins with "file".
14632 MAGIC_CMD=$MAGIC_CMD
14633
14634 # Must we lock files when doing compilation?
14635 need_locks=$lt_need_locks
14636
14637 # Manifest tool.
14638 MANIFEST_TOOL=$lt_MANIFEST_TOOL
14639
14640 # Tool to manipulate archived DWARF debug symbol files on Mac OS X.
14641 DSYMUTIL=$lt_DSYMUTIL
14642
14643 # Tool to change global to local symbols on Mac OS X.
14644 NMEDIT=$lt_NMEDIT
14645
14646 # Tool to manipulate fat objects and archives on Mac OS X.
14647 LIPO=$lt_LIPO
14648
14649 # ldd/readelf like tool for Mach-O binaries on Mac OS X.
14650 OTOOL=$lt_OTOOL
14651
14652 # ldd/readelf like tool for 64 bit Mach-O binaries on Mac OS X 10.4.
14653 OTOOL64=$lt_OTOOL64
14654
14655 # Old archive suffix (normally "a").
14656 libext=$libext
14657
14658 # Shared library suffix (normally ".so").
14659 shrext_cmds=$lt_shrext_cmds
14660
14661 # The commands to extract the exported symbol list from a shared archive.
14662 extract_expsyms_cmds=$lt_extract_expsyms_cmds
14663
14664 # Variables whose values should be saved in libtool wrapper scripts and
14665 # restored at link time.
14666 variables_saved_for_relink=$lt_variables_saved_for_relink
14667
14668 # Do we need the "lib" prefix for modules?
14669 need_lib_prefix=$need_lib_prefix
14670
14671 # Do we need a version for libraries?
14672 need_version=$need_version
14673
14674 # Library versioning type.
14675 version_type=$version_type
14676
14677 # Shared library runtime path variable.
14678 runpath_var=$runpath_var
14679
14680 # Shared library path variable.
14681 shlibpath_var=$shlibpath_var
14682
14683 # Is shlibpath searched before the hard-coded library search path?
14684 shlibpath_overrides_runpath=$shlibpath_overrides_runpath
14685
14686 # Format of library name prefix.
14687 libname_spec=$lt_libname_spec
14688
14689 # List of archive names. First name is the real one, the rest are links.
14690 # The last name is the one that the linker finds with -lNAME
14691 library_names_spec=$lt_library_names_spec
14692
14693 # The coded name of the library, if different from the real name.
14694 soname_spec=$lt_soname_spec
14695
14696 # Permission mode override for installation of shared libraries.
14697 install_override_mode=$lt_install_override_mode
14698
14699 # Command to use after installation of a shared archive.
14700 postinstall_cmds=$lt_postinstall_cmds
14701
14702 # Command to use after uninstallation of a shared archive.
14703 postuninstall_cmds=$lt_postuninstall_cmds
14704
14705 # Commands used to finish a libtool library installation in a directory.
14706 finish_cmds=$lt_finish_cmds
14707
14708 # As "finish_cmds", except a single script fragment to be evaled but
14709 # not shown.
14710 finish_eval=$lt_finish_eval
14711
14712 # Whether we should hardcode library paths into libraries.
14713 hardcode_into_libs=$hardcode_into_libs
14714
14715 # Compile-time system search path for libraries.
14716 sys_lib_search_path_spec=$lt_sys_lib_search_path_spec
14717
14718 # Run-time system search path for libraries.
14719 sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec
14720
14721 # Whether dlopen is supported.
14722 dlopen_support=$enable_dlopen
14723
14724 # Whether dlopen of programs is supported.
14725 dlopen_self=$enable_dlopen_self
14726
14727 # Whether dlopen of statically linked programs is supported.
14728 dlopen_self_static=$enable_dlopen_self_static
14729
14730 # Commands to strip libraries.
14731 old_striplib=$lt_old_striplib
14732 striplib=$lt_striplib
14733
14734
14735 # The linker used to build libraries.
14736 LD=$lt_LD
14737
14738 # How to create reloadable object files.
14739 reload_flag=$lt_reload_flag
14740 reload_cmds=$lt_reload_cmds
14741
14742 # Commands used to build an old-style archive.
14743 old_archive_cmds=$lt_old_archive_cmds
14744
14745 # A language specific compiler.
14746 CC=$lt_compiler
14747
14748 # Is the compiler the GNU compiler?
14749 with_gcc=$GCC
14750
14751 # Compiler flag to turn off builtin functions.
14752 no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag
14753
14754 # Additional compiler flags for building library objects.
14755 pic_flag=$lt_lt_prog_compiler_pic
14756
14757 # How to pass a linker flag through the compiler.
14758 wl=$lt_lt_prog_compiler_wl
14759
14760 # Compiler flag to prevent dynamic linking.
14761 link_static_flag=$lt_lt_prog_compiler_static
14762
14763 # Does compiler simultaneously support -c and -o options?
14764 compiler_c_o=$lt_lt_cv_prog_compiler_c_o
14765
14766 # Whether or not to add -lc for building shared libraries.
14767 build_libtool_need_lc=$archive_cmds_need_lc
14768
14769 # Whether or not to disallow shared libs when runtime libs are static.
14770 allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes
14771
14772 # Compiler flag to allow reflexive dlopens.
14773 export_dynamic_flag_spec=$lt_export_dynamic_flag_spec
14774
14775 # Compiler flag to generate shared objects directly from archives.
14776 whole_archive_flag_spec=$lt_whole_archive_flag_spec
14777
14778 # Whether the compiler copes with passing no objects directly.
14779 compiler_needs_object=$lt_compiler_needs_object
14780
14781 # Create an old-style archive from a shared archive.
14782 old_archive_from_new_cmds=$lt_old_archive_from_new_cmds
14783
14784 # Create a temporary old-style archive to link instead of a shared archive.
14785 old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds
14786
14787 # Commands used to build a shared archive.
14788 archive_cmds=$lt_archive_cmds
14789 archive_expsym_cmds=$lt_archive_expsym_cmds
14790
14791 # Commands used to build a loadable module if different from building
14792 # a shared archive.
14793 module_cmds=$lt_module_cmds
14794 module_expsym_cmds=$lt_module_expsym_cmds
14795
14796 # Whether we are building with GNU ld or not.
14797 with_gnu_ld=$lt_with_gnu_ld
14798
14799 # Flag that allows shared libraries with undefined symbols to be built.
14800 allow_undefined_flag=$lt_allow_undefined_flag
14801
14802 # Flag that enforces no undefined symbols.
14803 no_undefined_flag=$lt_no_undefined_flag
14804
14805 # Flag to hardcode \$libdir into a binary during linking.
14806 # This must work even if \$libdir does not exist
14807 hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec
14808
14809 # Whether we need a single "-rpath" flag with a separated argument.
14810 hardcode_libdir_separator=$lt_hardcode_libdir_separator
14811
14812 # Set to "yes" if using DIR/libNAME\${shared_ext} during linking hardcodes
14813 # DIR into the resulting binary.
14814 hardcode_direct=$hardcode_direct
14815
14816 # Set to "yes" if using DIR/libNAME\${shared_ext} during linking hardcodes
14817 # DIR into the resulting binary and the resulting library dependency is
14818 # "absolute",i.e impossible to change by setting \${shlibpath_var} if the
14819 # library is relocated.
14820 hardcode_direct_absolute=$hardcode_direct_absolute
14821
14822 # Set to "yes" if using the -LDIR flag during linking hardcodes DIR
14823 # into the resulting binary.
14824 hardcode_minus_L=$hardcode_minus_L
14825
14826 # Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR
14827 # into the resulting binary.
14828 hardcode_shlibpath_var=$hardcode_shlibpath_var
14829
14830 # Set to "yes" if building a shared library automatically hardcodes DIR
14831 # into the library and all subsequent libraries and executables linked
14832 # against it.
14833 hardcode_automatic=$hardcode_automatic
14834
14835 # Set to yes if linker adds runtime paths of dependent libraries
14836 # to runtime path list.
14837 inherit_rpath=$inherit_rpath
14838
14839 # Whether libtool must link a program against all its dependency libraries.
14840 link_all_deplibs=$link_all_deplibs
14841
14842 # Set to "yes" if exported symbols are required.
14843 always_export_symbols=$always_export_symbols
14844
14845 # The commands to list exported symbols.
14846 export_symbols_cmds=$lt_export_symbols_cmds
14847
14848 # Symbols that should not be listed in the preloaded symbols.
14849 exclude_expsyms=$lt_exclude_expsyms
14850
14851 # Symbols that must always be exported.
14852 include_expsyms=$lt_include_expsyms
14853
14854 # Commands necessary for linking programs (against libraries) with templates.
14855 prelink_cmds=$lt_prelink_cmds
14856
14857 # Commands necessary for finishing linking programs.
14858 postlink_cmds=$lt_postlink_cmds
14859
14860 # Specify filename containing input files.
14861 file_list_spec=$lt_file_list_spec
14862
14863 # How to hardcode a shared library path into an executable.
14864 hardcode_action=$hardcode_action
14865
14866 # ### END LIBTOOL CONFIG
14867
14868 _LT_EOF
14869
14870 case $host_os in
14871 aix3*)
14872 cat <<\_LT_EOF >> "$cfgfile"
14873 # AIX sometimes has problems with the GCC collect2 program. For some
14874 # reason, if we set the COLLECT_NAMES environment variable, the problems
14875 # vanish in a puff of smoke.
14876 if test "X${COLLECT_NAMES+set}" != Xset; then
14877 COLLECT_NAMES=
14878 export COLLECT_NAMES
14879 fi
14880 _LT_EOF
14881 ;;
14882 esac
14883
14884
14885 ltmain="$ac_aux_dir/ltmain.sh"
14886
14887
14888 # We use sed instead of cat because bash on DJGPP gets confused if
14889 # if finds mixed CR/LF and LF-only lines. Since sed operates in
14890 # text mode, it properly converts lines to CR/LF. This bash problem
14891 # is reportedly fixed, but why not run on old versions too?
14892 sed '$q' "$ltmain" >> "$cfgfile" \
14893 || (rm -f "$cfgfile"; exit 1)
14894
14895 if test x"$xsi_shell" = xyes; then
14896 sed -e '/^func_dirname ()$/,/^} # func_dirname /c\
14897 func_dirname ()\
14898 {\
14899 \ case ${1} in\
14900 \ */*) func_dirname_result="${1%/*}${2}" ;;\
14901 \ * ) func_dirname_result="${3}" ;;\
14902 \ esac\
14903 } # Extended-shell func_dirname implementation' "$cfgfile" > $cfgfile.tmp \
14904 && mv -f "$cfgfile.tmp" "$cfgfile" \
14905 || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
14906 test 0 -eq $? || _lt_function_replace_fail=:
14907
14908
14909 sed -e '/^func_basename ()$/,/^} # func_basename /c\
14910 func_basename ()\
14911 {\
14912 \ func_basename_result="${1##*/}"\
14913 } # Extended-shell func_basename implementation' "$cfgfile" > $cfgfile.tmp \
14914 && mv -f "$cfgfile.tmp" "$cfgfile" \
14915 || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
14916 test 0 -eq $? || _lt_function_replace_fail=:
14917
14918
14919 sed -e '/^func_dirname_and_basename ()$/,/^} # func_dirname_and_basename /c\
14920 func_dirname_and_basename ()\
14921 {\
14922 \ case ${1} in\
14923 \ */*) func_dirname_result="${1%/*}${2}" ;;\
14924 \ * ) func_dirname_result="${3}" ;;\
14925 \ esac\
14926 \ func_basename_result="${1##*/}"\
14927 } # Extended-shell func_dirname_and_basename implementation' "$cfgfile" > $cfgfile.tmp \
14928 && mv -f "$cfgfile.tmp" "$cfgfile" \
14929 || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
14930 test 0 -eq $? || _lt_function_replace_fail=:
14931
14932
14933 sed -e '/^func_stripname ()$/,/^} # func_stripname /c\
14934 func_stripname ()\
14935 {\
14936 \ # pdksh 5.2.14 does not do ${X%$Y} correctly if both X and Y are\
14937 \ # positional parameters, so assign one to ordinary parameter first.\
14938 \ func_stripname_result=${3}\
14939 \ func_stripname_result=${func_stripname_result#"${1}"}\
14940 \ func_stripname_result=${func_stripname_result%"${2}"}\
14941 } # Extended-shell func_stripname implementation' "$cfgfile" > $cfgfile.tmp \
14942 && mv -f "$cfgfile.tmp" "$cfgfile" \
14943 || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
14944 test 0 -eq $? || _lt_function_replace_fail=:
14945
14946
14947 sed -e '/^func_split_long_opt ()$/,/^} # func_split_long_opt /c\
14948 func_split_long_opt ()\
14949 {\
14950 \ func_split_long_opt_name=${1%%=*}\
14951 \ func_split_long_opt_arg=${1#*=}\
14952 } # Extended-shell func_split_long_opt implementation' "$cfgfile" > $cfgfile.tmp \
14953 && mv -f "$cfgfile.tmp" "$cfgfile" \
14954 || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
14955 test 0 -eq $? || _lt_function_replace_fail=:
14956
14957
14958 sed -e '/^func_split_short_opt ()$/,/^} # func_split_short_opt /c\
14959 func_split_short_opt ()\
14960 {\
14961 \ func_split_short_opt_arg=${1#??}\
14962 \ func_split_short_opt_name=${1%"$func_split_short_opt_arg"}\
14963 } # Extended-shell func_split_short_opt implementation' "$cfgfile" > $cfgfile.tmp \
14964 && mv -f "$cfgfile.tmp" "$cfgfile" \
14965 || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
14966 test 0 -eq $? || _lt_function_replace_fail=:
14967
14968
14969 sed -e '/^func_lo2o ()$/,/^} # func_lo2o /c\
14970 func_lo2o ()\
14971 {\
14972 \ case ${1} in\
14973 \ *.lo) func_lo2o_result=${1%.lo}.${objext} ;;\
14974 \ *) func_lo2o_result=${1} ;;\
14975 \ esac\
14976 } # Extended-shell func_lo2o implementation' "$cfgfile" > $cfgfile.tmp \
14977 && mv -f "$cfgfile.tmp" "$cfgfile" \
14978 || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
14979 test 0 -eq $? || _lt_function_replace_fail=:
14980
14981
14982 sed -e '/^func_xform ()$/,/^} # func_xform /c\
14983 func_xform ()\
14984 {\
14985 func_xform_result=${1%.*}.lo\
14986 } # Extended-shell func_xform implementation' "$cfgfile" > $cfgfile.tmp \
14987 && mv -f "$cfgfile.tmp" "$cfgfile" \
14988 || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
14989 test 0 -eq $? || _lt_function_replace_fail=:
14990
14991
14992 sed -e '/^func_arith ()$/,/^} # func_arith /c\
14993 func_arith ()\
14994 {\
14995 func_arith_result=$(( $* ))\
14996 } # Extended-shell func_arith implementation' "$cfgfile" > $cfgfile.tmp \
14997 && mv -f "$cfgfile.tmp" "$cfgfile" \
14998 || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
14999 test 0 -eq $? || _lt_function_replace_fail=:
15000
15001
15002 sed -e '/^func_len ()$/,/^} # func_len /c\
15003 func_len ()\
15004 {\
15005 func_len_result=${#1}\
15006 } # Extended-shell func_len implementation' "$cfgfile" > $cfgfile.tmp \
15007 && mv -f "$cfgfile.tmp" "$cfgfile" \
15008 || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
15009 test 0 -eq $? || _lt_function_replace_fail=:
15010
15011 fi
15012
15013 if test x"$lt_shell_append" = xyes; then
15014 sed -e '/^func_append ()$/,/^} # func_append /c\
15015 func_append ()\
15016 {\
15017 eval "${1}+=\\${2}"\
15018 } # Extended-shell func_append implementation' "$cfgfile" > $cfgfile.tmp \
15019 && mv -f "$cfgfile.tmp" "$cfgfile" \
15020 || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
15021 test 0 -eq $? || _lt_function_replace_fail=:
15022
15023
15024 sed -e '/^func_append_quoted ()$/,/^} # func_append_quoted /c\
15025 func_append_quoted ()\
15026 {\
15027 \ func_quote_for_eval "${2}"\
15028 \ eval "${1}+=\\\\ \\$func_quote_for_eval_result"\
15029 } # Extended-shell func_append_quoted implementation' "$cfgfile" > $cfgfile.tmp \
15030 && mv -f "$cfgfile.tmp" "$cfgfile" \
15031 || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
15032 test 0 -eq $? || _lt_function_replace_fail=:
15033
15034
15035 # Save a `func_append' function call where possible by direct use of '+='
15036 sed -e 's%func_append \([a-zA-Z_]\{1,\}\) "%\1+="%g' $cfgfile > $cfgfile.tmp \
15037 && mv -f "$cfgfile.tmp" "$cfgfile" \
15038 || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
15039 test 0 -eq $? || _lt_function_replace_fail=:
15040 else
15041 # Save a `func_append' function call even when '+=' is not available
15042 sed -e 's%func_append \([a-zA-Z_]\{1,\}\) "%\1="$\1%g' $cfgfile > $cfgfile.tmp \
15043 && mv -f "$cfgfile.tmp" "$cfgfile" \
15044 || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
15045 test 0 -eq $? || _lt_function_replace_fail=:
15046 fi
15047
15048 if test x"$_lt_function_replace_fail" = x":"; then
15049 { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Unable to substitute extended shell functions in $ofile" >&5
15050 $as_echo "$as_me: WARNING: Unable to substitute extended shell functions in $ofile" >&2;}
15051 fi
15052
15053
15054 mv -f "$cfgfile" "$ofile" ||
15055 (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile")
15056 chmod +x "$ofile"
15057
15058 ;;
15059
15060 esac
15061 done # for ac_tag
15062
15063
15064 as_fn_exit 0
15065 _ACEOF
15066 ac_clean_files=$ac_clean_files_save
15067
15068 test $ac_write_fail = 0 ||
15069 as_fn_error $? "write failure creating $CONFIG_STATUS" "$LINENO" 5
15070
15071
15072 # configure is writing to config.log, and then calls config.status.
15073 # config.status does its own redirection, appending to config.log.
15074 # Unfortunately, on DOS this fails, as config.log is still kept open
15075 # by configure, so config.status won't be able to write to it; its
15076 # output is simply discarded. So we exec the FD to /dev/null,
15077 # effectively closing config.log, so it can be properly (re)opened and
15078 # appended to by config.status. When coming back to configure, we
15079 # need to make the FD available again.
15080 if test "$no_create" != yes; then
15081 ac_cs_success=:
15082 ac_config_status_args=
15083 test "$silent" = yes &&
15084 ac_config_status_args="$ac_config_status_args --quiet"
15085 exec 5>/dev/null
15086 $SHELL $CONFIG_STATUS $ac_config_status_args || ac_cs_success=false
15087 exec 5>>config.log
15088 # Use ||, not &&, to avoid exiting from the if with $? = 1, which
15089 # would make configure fail if this is the last instruction.
15090 $ac_cs_success || as_fn_exit 1
15091 fi
15092 if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then
15093 { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: unrecognized options: $ac_unrecognized_opts" >&5
15094 $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;}
15095 fi
15096
15097
+0
-66
configure.ac less more
0 # c_eclib autoconf template
1
2 # FIXME - add project url as the last argument
3 AC_INIT(erasurecode,0.1)
4
5 AC_PREREQ([2.61])
6
7 AM_INIT_AUTOMAKE([subdir-objects no-dependencies])
8 LT_INIT # libtool
9
10 AC_CONFIG_SRCDIR(src)
11 AC_CONFIG_HEADER(include/config.h)
12
13 dnl Needed when reconfiguring with 'autoreconf -i -s'
14 AC_CONFIG_MACRO_DIR([m4])
15
16 AM_MAINTAINER_MODE([disable])
17
18 dnl Compiling with per-target flags requires AM_PROG_CC_C_O.
19 AC_PROG_CC
20
21 # Check for jerasure/gf_complete headers
22 AC_CHECK_HEADERS(jerasure.h cauchy.h galois.h liberation.h reed_sol.h gf_complete.h)
23
24 dnl Default behavior of AC_CHECK_LIB if the library is found is to set the HAVE_LIB*
25 dnl variable and add the library to LIBS, which has the result of all compiles
26 dnl --including those performed by configure-- linking against the discovered
27 dnl library. This un-necessary linkage can increase build time as well as
28 dnl complicates configuration, so default behavior has been overridden so we dont
29 dnl set the LIBS.
30 AC_CHECK_LIB([Jerasure], [jerasure_autoconf_test],
31 [
32 echo "Found libJerasure"
33 HAVE_LIBJERASURE = 1
34 ],
35 [
36 echo "Error! You need to have libJerasure installed."
37 echo "libJerasure is available from bitbucket.org/kmgreen2/jerasure-kmg.git"
38 exit -1
39 ])
40
41 AC_CHECK_LIB([gf_complete], [gf_init_easy],
42 [
43 echo "Found libgf_complete"
44 HAVE_LIBGF_COMPLETE = 1
45 ],
46 [
47 echo "Error! You need to have gf_complete installed."
48 echo "gf_complete is available from http://web.eecs.utk.edu/~plank/plank/papers/CS-13-703.html"
49 exit -1
50 ])
51
52 AX_EXT()
53
54 AC_ARG_ENABLE(debug,
55 AS_HELP_STRING([--enable-debug],
56 [enable debugging, default: no]),
57 [case "${enableval}" in
58 yes) debug=true ;;
59 no) debug=false ;;
60 *) AC_MSG_ERROR([bad value ${enableval} for --enable-debug]) ;;
61 esac],
62 [debug=false])
63 AM_CONDITIONAL(DEBUG, test x"$debug" = x"true")
64 AC_OUTPUT(Makefile)
65
+0
-791
depcomp less more
0 #! /bin/sh
1 # depcomp - compile a program generating dependencies as side-effects
2
3 scriptversion=2013-05-30.07; # UTC
4
5 # Copyright (C) 1999-2013 Free Software Foundation, Inc.
6
7 # This program is free software; you can redistribute it and/or modify
8 # it under the terms of the GNU General Public License as published by
9 # the Free Software Foundation; either version 2, or (at your option)
10 # any later version.
11
12 # This program is distributed in the hope that it will be useful,
13 # but WITHOUT ANY WARRANTY; without even the implied warranty of
14 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 # GNU General Public License for more details.
16
17 # You should have received a copy of the GNU General Public License
18 # along with this program. If not, see <http://www.gnu.org/licenses/>.
19
20 # As a special exception to the GNU General Public License, if you
21 # distribute this file as part of a program that contains a
22 # configuration script generated by Autoconf, you may include it under
23 # the same distribution terms that you use for the rest of that program.
24
25 # Originally written by Alexandre Oliva <oliva@dcc.unicamp.br>.
26
27 case $1 in
28 '')
29 echo "$0: No command. Try '$0 --help' for more information." 1>&2
30 exit 1;
31 ;;
32 -h | --h*)
33 cat <<\EOF
34 Usage: depcomp [--help] [--version] PROGRAM [ARGS]
35
36 Run PROGRAMS ARGS to compile a file, generating dependencies
37 as side-effects.
38
39 Environment variables:
40 depmode Dependency tracking mode.
41 source Source file read by 'PROGRAMS ARGS'.
42 object Object file output by 'PROGRAMS ARGS'.
43 DEPDIR directory where to store dependencies.
44 depfile Dependency file to output.
45 tmpdepfile Temporary file to use when outputting dependencies.
46 libtool Whether libtool is used (yes/no).
47
48 Report bugs to <bug-automake@gnu.org>.
49 EOF
50 exit $?
51 ;;
52 -v | --v*)
53 echo "depcomp $scriptversion"
54 exit $?
55 ;;
56 esac
57
58 # Get the directory component of the given path, and save it in the
59 # global variables '$dir'. Note that this directory component will
60 # be either empty or ending with a '/' character. This is deliberate.
61 set_dir_from ()
62 {
63 case $1 in
64 */*) dir=`echo "$1" | sed -e 's|/[^/]*$|/|'`;;
65 *) dir=;;
66 esac
67 }
68
69 # Get the suffix-stripped basename of the given path, and save it the
70 # global variable '$base'.
71 set_base_from ()
72 {
73 base=`echo "$1" | sed -e 's|^.*/||' -e 's/\.[^.]*$//'`
74 }
75
76 # If no dependency file was actually created by the compiler invocation,
77 # we still have to create a dummy depfile, to avoid errors with the
78 # Makefile "include basename.Plo" scheme.
79 make_dummy_depfile ()
80 {
81 echo "#dummy" > "$depfile"
82 }
83
84 # Factor out some common post-processing of the generated depfile.
85 # Requires the auxiliary global variable '$tmpdepfile' to be set.
86 aix_post_process_depfile ()
87 {
88 # If the compiler actually managed to produce a dependency file,
89 # post-process it.
90 if test -f "$tmpdepfile"; then
91 # Each line is of the form 'foo.o: dependency.h'.
92 # Do two passes, one to just change these to
93 # $object: dependency.h
94 # and one to simply output
95 # dependency.h:
96 # which is needed to avoid the deleted-header problem.
97 { sed -e "s,^.*\.[$lower]*:,$object:," < "$tmpdepfile"
98 sed -e "s,^.*\.[$lower]*:[$tab ]*,," -e 's,$,:,' < "$tmpdepfile"
99 } > "$depfile"
100 rm -f "$tmpdepfile"
101 else
102 make_dummy_depfile
103 fi
104 }
105
106 # A tabulation character.
107 tab=' '
108 # A newline character.
109 nl='
110 '
111 # Character ranges might be problematic outside the C locale.
112 # These definitions help.
113 upper=ABCDEFGHIJKLMNOPQRSTUVWXYZ
114 lower=abcdefghijklmnopqrstuvwxyz
115 digits=0123456789
116 alpha=${upper}${lower}
117
118 if test -z "$depmode" || test -z "$source" || test -z "$object"; then
119 echo "depcomp: Variables source, object and depmode must be set" 1>&2
120 exit 1
121 fi
122
123 # Dependencies for sub/bar.o or sub/bar.obj go into sub/.deps/bar.Po.
124 depfile=${depfile-`echo "$object" |
125 sed 's|[^\\/]*$|'${DEPDIR-.deps}'/&|;s|\.\([^.]*\)$|.P\1|;s|Pobj$|Po|'`}
126 tmpdepfile=${tmpdepfile-`echo "$depfile" | sed 's/\.\([^.]*\)$/.T\1/'`}
127
128 rm -f "$tmpdepfile"
129
130 # Avoid interferences from the environment.
131 gccflag= dashmflag=
132
133 # Some modes work just like other modes, but use different flags. We
134 # parameterize here, but still list the modes in the big case below,
135 # to make depend.m4 easier to write. Note that we *cannot* use a case
136 # here, because this file can only contain one case statement.
137 if test "$depmode" = hp; then
138 # HP compiler uses -M and no extra arg.
139 gccflag=-M
140 depmode=gcc
141 fi
142
143 if test "$depmode" = dashXmstdout; then
144 # This is just like dashmstdout with a different argument.
145 dashmflag=-xM
146 depmode=dashmstdout
147 fi
148
149 cygpath_u="cygpath -u -f -"
150 if test "$depmode" = msvcmsys; then
151 # This is just like msvisualcpp but w/o cygpath translation.
152 # Just convert the backslash-escaped backslashes to single forward
153 # slashes to satisfy depend.m4
154 cygpath_u='sed s,\\\\,/,g'
155 depmode=msvisualcpp
156 fi
157
158 if test "$depmode" = msvc7msys; then
159 # This is just like msvc7 but w/o cygpath translation.
160 # Just convert the backslash-escaped backslashes to single forward
161 # slashes to satisfy depend.m4
162 cygpath_u='sed s,\\\\,/,g'
163 depmode=msvc7
164 fi
165
166 if test "$depmode" = xlc; then
167 # IBM C/C++ Compilers xlc/xlC can output gcc-like dependency information.
168 gccflag=-qmakedep=gcc,-MF
169 depmode=gcc
170 fi
171
172 case "$depmode" in
173 gcc3)
174 ## gcc 3 implements dependency tracking that does exactly what
175 ## we want. Yay! Note: for some reason libtool 1.4 doesn't like
176 ## it if -MD -MP comes after the -MF stuff. Hmm.
177 ## Unfortunately, FreeBSD c89 acceptance of flags depends upon
178 ## the command line argument order; so add the flags where they
179 ## appear in depend2.am. Note that the slowdown incurred here
180 ## affects only configure: in makefiles, %FASTDEP% shortcuts this.
181 for arg
182 do
183 case $arg in
184 -c) set fnord "$@" -MT "$object" -MD -MP -MF "$tmpdepfile" "$arg" ;;
185 *) set fnord "$@" "$arg" ;;
186 esac
187 shift # fnord
188 shift # $arg
189 done
190 "$@"
191 stat=$?
192 if test $stat -ne 0; then
193 rm -f "$tmpdepfile"
194 exit $stat
195 fi
196 mv "$tmpdepfile" "$depfile"
197 ;;
198
199 gcc)
200 ## Note that this doesn't just cater to obsosete pre-3.x GCC compilers.
201 ## but also to in-use compilers like IMB xlc/xlC and the HP C compiler.
202 ## (see the conditional assignment to $gccflag above).
203 ## There are various ways to get dependency output from gcc. Here's
204 ## why we pick this rather obscure method:
205 ## - Don't want to use -MD because we'd like the dependencies to end
206 ## up in a subdir. Having to rename by hand is ugly.
207 ## (We might end up doing this anyway to support other compilers.)
208 ## - The DEPENDENCIES_OUTPUT environment variable makes gcc act like
209 ## -MM, not -M (despite what the docs say). Also, it might not be
210 ## supported by the other compilers which use the 'gcc' depmode.
211 ## - Using -M directly means running the compiler twice (even worse
212 ## than renaming).
213 if test -z "$gccflag"; then
214 gccflag=-MD,
215 fi
216 "$@" -Wp,"$gccflag$tmpdepfile"
217 stat=$?
218 if test $stat -ne 0; then
219 rm -f "$tmpdepfile"
220 exit $stat
221 fi
222 rm -f "$depfile"
223 echo "$object : \\" > "$depfile"
224 # The second -e expression handles DOS-style file names with drive
225 # letters.
226 sed -e 's/^[^:]*: / /' \
227 -e 's/^['$alpha']:\/[^:]*: / /' < "$tmpdepfile" >> "$depfile"
228 ## This next piece of magic avoids the "deleted header file" problem.
229 ## The problem is that when a header file which appears in a .P file
230 ## is deleted, the dependency causes make to die (because there is
231 ## typically no way to rebuild the header). We avoid this by adding
232 ## dummy dependencies for each header file. Too bad gcc doesn't do
233 ## this for us directly.
234 ## Some versions of gcc put a space before the ':'. On the theory
235 ## that the space means something, we add a space to the output as
236 ## well. hp depmode also adds that space, but also prefixes the VPATH
237 ## to the object. Take care to not repeat it in the output.
238 ## Some versions of the HPUX 10.20 sed can't process this invocation
239 ## correctly. Breaking it into two sed invocations is a workaround.
240 tr ' ' "$nl" < "$tmpdepfile" \
241 | sed -e 's/^\\$//' -e '/^$/d' -e "s|.*$object$||" -e '/:$/d' \
242 | sed -e 's/$/ :/' >> "$depfile"
243 rm -f "$tmpdepfile"
244 ;;
245
246 hp)
247 # This case exists only to let depend.m4 do its work. It works by
248 # looking at the text of this script. This case will never be run,
249 # since it is checked for above.
250 exit 1
251 ;;
252
253 sgi)
254 if test "$libtool" = yes; then
255 "$@" "-Wp,-MDupdate,$tmpdepfile"
256 else
257 "$@" -MDupdate "$tmpdepfile"
258 fi
259 stat=$?
260 if test $stat -ne 0; then
261 rm -f "$tmpdepfile"
262 exit $stat
263 fi
264 rm -f "$depfile"
265
266 if test -f "$tmpdepfile"; then # yes, the sourcefile depend on other files
267 echo "$object : \\" > "$depfile"
268 # Clip off the initial element (the dependent). Don't try to be
269 # clever and replace this with sed code, as IRIX sed won't handle
270 # lines with more than a fixed number of characters (4096 in
271 # IRIX 6.2 sed, 8192 in IRIX 6.5). We also remove comment lines;
272 # the IRIX cc adds comments like '#:fec' to the end of the
273 # dependency line.
274 tr ' ' "$nl" < "$tmpdepfile" \
275 | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' \
276 | tr "$nl" ' ' >> "$depfile"
277 echo >> "$depfile"
278 # The second pass generates a dummy entry for each header file.
279 tr ' ' "$nl" < "$tmpdepfile" \
280 | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \
281 >> "$depfile"
282 else
283 make_dummy_depfile
284 fi
285 rm -f "$tmpdepfile"
286 ;;
287
288 xlc)
289 # This case exists only to let depend.m4 do its work. It works by
290 # looking at the text of this script. This case will never be run,
291 # since it is checked for above.
292 exit 1
293 ;;
294
295 aix)
296 # The C for AIX Compiler uses -M and outputs the dependencies
297 # in a .u file. In older versions, this file always lives in the
298 # current directory. Also, the AIX compiler puts '$object:' at the
299 # start of each line; $object doesn't have directory information.
300 # Version 6 uses the directory in both cases.
301 set_dir_from "$object"
302 set_base_from "$object"
303 if test "$libtool" = yes; then
304 tmpdepfile1=$dir$base.u
305 tmpdepfile2=$base.u
306 tmpdepfile3=$dir.libs/$base.u
307 "$@" -Wc,-M
308 else
309 tmpdepfile1=$dir$base.u
310 tmpdepfile2=$dir$base.u
311 tmpdepfile3=$dir$base.u
312 "$@" -M
313 fi
314 stat=$?
315 if test $stat -ne 0; then
316 rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3"
317 exit $stat
318 fi
319
320 for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3"
321 do
322 test -f "$tmpdepfile" && break
323 done
324 aix_post_process_depfile
325 ;;
326
327 tcc)
328 # tcc (Tiny C Compiler) understand '-MD -MF file' since version 0.9.26
329 # FIXME: That version still under development at the moment of writing.
330 # Make that this statement remains true also for stable, released
331 # versions.
332 # It will wrap lines (doesn't matter whether long or short) with a
333 # trailing '\', as in:
334 #
335 # foo.o : \
336 # foo.c \
337 # foo.h \
338 #
339 # It will put a trailing '\' even on the last line, and will use leading
340 # spaces rather than leading tabs (at least since its commit 0394caf7
341 # "Emit spaces for -MD").
342 "$@" -MD -MF "$tmpdepfile"
343 stat=$?
344 if test $stat -ne 0; then
345 rm -f "$tmpdepfile"
346 exit $stat
347 fi
348 rm -f "$depfile"
349 # Each non-empty line is of the form 'foo.o : \' or ' dep.h \'.
350 # We have to change lines of the first kind to '$object: \'.
351 sed -e "s|.*:|$object :|" < "$tmpdepfile" > "$depfile"
352 # And for each line of the second kind, we have to emit a 'dep.h:'
353 # dummy dependency, to avoid the deleted-header problem.
354 sed -n -e 's|^ *\(.*\) *\\$|\1:|p' < "$tmpdepfile" >> "$depfile"
355 rm -f "$tmpdepfile"
356 ;;
357
358 ## The order of this option in the case statement is important, since the
359 ## shell code in configure will try each of these formats in the order
360 ## listed in this file. A plain '-MD' option would be understood by many
361 ## compilers, so we must ensure this comes after the gcc and icc options.
362 pgcc)
363 # Portland's C compiler understands '-MD'.
364 # Will always output deps to 'file.d' where file is the root name of the
365 # source file under compilation, even if file resides in a subdirectory.
366 # The object file name does not affect the name of the '.d' file.
367 # pgcc 10.2 will output
368 # foo.o: sub/foo.c sub/foo.h
369 # and will wrap long lines using '\' :
370 # foo.o: sub/foo.c ... \
371 # sub/foo.h ... \
372 # ...
373 set_dir_from "$object"
374 # Use the source, not the object, to determine the base name, since
375 # that's sadly what pgcc will do too.
376 set_base_from "$source"
377 tmpdepfile=$base.d
378
379 # For projects that build the same source file twice into different object
380 # files, the pgcc approach of using the *source* file root name can cause
381 # problems in parallel builds. Use a locking strategy to avoid stomping on
382 # the same $tmpdepfile.
383 lockdir=$base.d-lock
384 trap "
385 echo '$0: caught signal, cleaning up...' >&2
386 rmdir '$lockdir'
387 exit 1
388 " 1 2 13 15
389 numtries=100
390 i=$numtries
391 while test $i -gt 0; do
392 # mkdir is a portable test-and-set.
393 if mkdir "$lockdir" 2>/dev/null; then
394 # This process acquired the lock.
395 "$@" -MD
396 stat=$?
397 # Release the lock.
398 rmdir "$lockdir"
399 break
400 else
401 # If the lock is being held by a different process, wait
402 # until the winning process is done or we timeout.
403 while test -d "$lockdir" && test $i -gt 0; do
404 sleep 1
405 i=`expr $i - 1`
406 done
407 fi
408 i=`expr $i - 1`
409 done
410 trap - 1 2 13 15
411 if test $i -le 0; then
412 echo "$0: failed to acquire lock after $numtries attempts" >&2
413 echo "$0: check lockdir '$lockdir'" >&2
414 exit 1
415 fi
416
417 if test $stat -ne 0; then
418 rm -f "$tmpdepfile"
419 exit $stat
420 fi
421 rm -f "$depfile"
422 # Each line is of the form `foo.o: dependent.h',
423 # or `foo.o: dep1.h dep2.h \', or ` dep3.h dep4.h \'.
424 # Do two passes, one to just change these to
425 # `$object: dependent.h' and one to simply `dependent.h:'.
426 sed "s,^[^:]*:,$object :," < "$tmpdepfile" > "$depfile"
427 # Some versions of the HPUX 10.20 sed can't process this invocation
428 # correctly. Breaking it into two sed invocations is a workaround.
429 sed 's,^[^:]*: \(.*\)$,\1,;s/^\\$//;/^$/d;/:$/d' < "$tmpdepfile" \
430 | sed -e 's/$/ :/' >> "$depfile"
431 rm -f "$tmpdepfile"
432 ;;
433
434 hp2)
435 # The "hp" stanza above does not work with aCC (C++) and HP's ia64
436 # compilers, which have integrated preprocessors. The correct option
437 # to use with these is +Maked; it writes dependencies to a file named
438 # 'foo.d', which lands next to the object file, wherever that
439 # happens to be.
440 # Much of this is similar to the tru64 case; see comments there.
441 set_dir_from "$object"
442 set_base_from "$object"
443 if test "$libtool" = yes; then
444 tmpdepfile1=$dir$base.d
445 tmpdepfile2=$dir.libs/$base.d
446 "$@" -Wc,+Maked
447 else
448 tmpdepfile1=$dir$base.d
449 tmpdepfile2=$dir$base.d
450 "$@" +Maked
451 fi
452 stat=$?
453 if test $stat -ne 0; then
454 rm -f "$tmpdepfile1" "$tmpdepfile2"
455 exit $stat
456 fi
457
458 for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2"
459 do
460 test -f "$tmpdepfile" && break
461 done
462 if test -f "$tmpdepfile"; then
463 sed -e "s,^.*\.[$lower]*:,$object:," "$tmpdepfile" > "$depfile"
464 # Add 'dependent.h:' lines.
465 sed -ne '2,${
466 s/^ *//
467 s/ \\*$//
468 s/$/:/
469 p
470 }' "$tmpdepfile" >> "$depfile"
471 else
472 make_dummy_depfile
473 fi
474 rm -f "$tmpdepfile" "$tmpdepfile2"
475 ;;
476
477 tru64)
478 # The Tru64 compiler uses -MD to generate dependencies as a side
479 # effect. 'cc -MD -o foo.o ...' puts the dependencies into 'foo.o.d'.
480 # At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put
481 # dependencies in 'foo.d' instead, so we check for that too.
482 # Subdirectories are respected.
483 set_dir_from "$object"
484 set_base_from "$object"
485
486 if test "$libtool" = yes; then
487 # Libtool generates 2 separate objects for the 2 libraries. These
488 # two compilations output dependencies in $dir.libs/$base.o.d and
489 # in $dir$base.o.d. We have to check for both files, because
490 # one of the two compilations can be disabled. We should prefer
491 # $dir$base.o.d over $dir.libs/$base.o.d because the latter is
492 # automatically cleaned when .libs/ is deleted, while ignoring
493 # the former would cause a distcleancheck panic.
494 tmpdepfile1=$dir$base.o.d # libtool 1.5
495 tmpdepfile2=$dir.libs/$base.o.d # Likewise.
496 tmpdepfile3=$dir.libs/$base.d # Compaq CCC V6.2-504
497 "$@" -Wc,-MD
498 else
499 tmpdepfile1=$dir$base.d
500 tmpdepfile2=$dir$base.d
501 tmpdepfile3=$dir$base.d
502 "$@" -MD
503 fi
504
505 stat=$?
506 if test $stat -ne 0; then
507 rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3"
508 exit $stat
509 fi
510
511 for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3"
512 do
513 test -f "$tmpdepfile" && break
514 done
515 # Same post-processing that is required for AIX mode.
516 aix_post_process_depfile
517 ;;
518
519 msvc7)
520 if test "$libtool" = yes; then
521 showIncludes=-Wc,-showIncludes
522 else
523 showIncludes=-showIncludes
524 fi
525 "$@" $showIncludes > "$tmpdepfile"
526 stat=$?
527 grep -v '^Note: including file: ' "$tmpdepfile"
528 if test $stat -ne 0; then
529 rm -f "$tmpdepfile"
530 exit $stat
531 fi
532 rm -f "$depfile"
533 echo "$object : \\" > "$depfile"
534 # The first sed program below extracts the file names and escapes
535 # backslashes for cygpath. The second sed program outputs the file
536 # name when reading, but also accumulates all include files in the
537 # hold buffer in order to output them again at the end. This only
538 # works with sed implementations that can handle large buffers.
539 sed < "$tmpdepfile" -n '
540 /^Note: including file: *\(.*\)/ {
541 s//\1/
542 s/\\/\\\\/g
543 p
544 }' | $cygpath_u | sort -u | sed -n '
545 s/ /\\ /g
546 s/\(.*\)/'"$tab"'\1 \\/p
547 s/.\(.*\) \\/\1:/
548 H
549 $ {
550 s/.*/'"$tab"'/
551 G
552 p
553 }' >> "$depfile"
554 echo >> "$depfile" # make sure the fragment doesn't end with a backslash
555 rm -f "$tmpdepfile"
556 ;;
557
558 msvc7msys)
559 # This case exists only to let depend.m4 do its work. It works by
560 # looking at the text of this script. This case will never be run,
561 # since it is checked for above.
562 exit 1
563 ;;
564
565 #nosideeffect)
566 # This comment above is used by automake to tell side-effect
567 # dependency tracking mechanisms from slower ones.
568
569 dashmstdout)
570 # Important note: in order to support this mode, a compiler *must*
571 # always write the preprocessed file to stdout, regardless of -o.
572 "$@" || exit $?
573
574 # Remove the call to Libtool.
575 if test "$libtool" = yes; then
576 while test "X$1" != 'X--mode=compile'; do
577 shift
578 done
579 shift
580 fi
581
582 # Remove '-o $object'.
583 IFS=" "
584 for arg
585 do
586 case $arg in
587 -o)
588 shift
589 ;;
590 $object)
591 shift
592 ;;
593 *)
594 set fnord "$@" "$arg"
595 shift # fnord
596 shift # $arg
597 ;;
598 esac
599 done
600
601 test -z "$dashmflag" && dashmflag=-M
602 # Require at least two characters before searching for ':'
603 # in the target name. This is to cope with DOS-style filenames:
604 # a dependency such as 'c:/foo/bar' could be seen as target 'c' otherwise.
605 "$@" $dashmflag |
606 sed "s|^[$tab ]*[^:$tab ][^:][^:]*:[$tab ]*|$object: |" > "$tmpdepfile"
607 rm -f "$depfile"
608 cat < "$tmpdepfile" > "$depfile"
609 # Some versions of the HPUX 10.20 sed can't process this sed invocation
610 # correctly. Breaking it into two sed invocations is a workaround.
611 tr ' ' "$nl" < "$tmpdepfile" \
612 | sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' \
613 | sed -e 's/$/ :/' >> "$depfile"
614 rm -f "$tmpdepfile"
615 ;;
616
617 dashXmstdout)
618 # This case only exists to satisfy depend.m4. It is never actually
619 # run, as this mode is specially recognized in the preamble.
620 exit 1
621 ;;
622
623 makedepend)
624 "$@" || exit $?
625 # Remove any Libtool call
626 if test "$libtool" = yes; then
627 while test "X$1" != 'X--mode=compile'; do
628 shift
629 done
630 shift
631 fi
632 # X makedepend
633 shift
634 cleared=no eat=no
635 for arg
636 do
637 case $cleared in
638 no)
639 set ""; shift
640 cleared=yes ;;
641 esac
642 if test $eat = yes; then
643 eat=no
644 continue
645 fi
646 case "$arg" in
647 -D*|-I*)
648 set fnord "$@" "$arg"; shift ;;
649 # Strip any option that makedepend may not understand. Remove
650 # the object too, otherwise makedepend will parse it as a source file.
651 -arch)
652 eat=yes ;;
653 -*|$object)
654 ;;
655 *)
656 set fnord "$@" "$arg"; shift ;;
657 esac
658 done
659 obj_suffix=`echo "$object" | sed 's/^.*\././'`
660 touch "$tmpdepfile"
661 ${MAKEDEPEND-makedepend} -o"$obj_suffix" -f"$tmpdepfile" "$@"
662 rm -f "$depfile"
663 # makedepend may prepend the VPATH from the source file name to the object.
664 # No need to regex-escape $object, excess matching of '.' is harmless.
665 sed "s|^.*\($object *:\)|\1|" "$tmpdepfile" > "$depfile"
666 # Some versions of the HPUX 10.20 sed can't process the last invocation
667 # correctly. Breaking it into two sed invocations is a workaround.
668 sed '1,2d' "$tmpdepfile" \
669 | tr ' ' "$nl" \
670 | sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' \
671 | sed -e 's/$/ :/' >> "$depfile"
672 rm -f "$tmpdepfile" "$tmpdepfile".bak
673 ;;
674
675 cpp)
676 # Important note: in order to support this mode, a compiler *must*
677 # always write the preprocessed file to stdout.
678 "$@" || exit $?
679
680 # Remove the call to Libtool.
681 if test "$libtool" = yes; then
682 while test "X$1" != 'X--mode=compile'; do
683 shift
684 done
685 shift
686 fi
687
688 # Remove '-o $object'.
689 IFS=" "
690 for arg
691 do
692 case $arg in
693 -o)
694 shift
695 ;;
696 $object)
697 shift
698 ;;
699 *)
700 set fnord "$@" "$arg"
701 shift # fnord
702 shift # $arg
703 ;;
704 esac
705 done
706
707 "$@" -E \
708 | sed -n -e '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \
709 -e '/^#line [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \
710 | sed '$ s: \\$::' > "$tmpdepfile"
711 rm -f "$depfile"
712 echo "$object : \\" > "$depfile"
713 cat < "$tmpdepfile" >> "$depfile"
714 sed < "$tmpdepfile" '/^$/d;s/^ //;s/ \\$//;s/$/ :/' >> "$depfile"
715 rm -f "$tmpdepfile"
716 ;;
717
718 msvisualcpp)
719 # Important note: in order to support this mode, a compiler *must*
720 # always write the preprocessed file to stdout.
721 "$@" || exit $?
722
723 # Remove the call to Libtool.
724 if test "$libtool" = yes; then
725 while test "X$1" != 'X--mode=compile'; do
726 shift
727 done
728 shift
729 fi
730
731 IFS=" "
732 for arg
733 do
734 case "$arg" in
735 -o)
736 shift
737 ;;
738 $object)
739 shift
740 ;;
741 "-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI")
742 set fnord "$@"
743 shift
744 shift
745 ;;
746 *)
747 set fnord "$@" "$arg"
748 shift
749 shift
750 ;;
751 esac
752 done
753 "$@" -E 2>/dev/null |
754 sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::\1:p' | $cygpath_u | sort -u > "$tmpdepfile"
755 rm -f "$depfile"
756 echo "$object : \\" > "$depfile"
757 sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::'"$tab"'\1 \\:p' >> "$depfile"
758 echo "$tab" >> "$depfile"
759 sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::\1\::p' >> "$depfile"
760 rm -f "$tmpdepfile"
761 ;;
762
763 msvcmsys)
764 # This case exists only to let depend.m4 do its work. It works by
765 # looking at the text of this script. This case will never be run,
766 # since it is checked for above.
767 exit 1
768 ;;
769
770 none)
771 exec "$@"
772 ;;
773
774 *)
775 echo "Unknown depmode $depmode" 1>&2
776 exit 1
777 ;;
778 esac
779
780 exit 0
781
782 # Local Variables:
783 # mode: shell-script
784 # sh-indentation: 2
785 # eval: (add-hook 'write-file-hooks 'time-stamp)
786 # time-stamp-start: "scriptversion="
787 # time-stamp-format: "%:y-%02m-%02d.%02H"
788 # time-stamp-time-zone: "UTC"
789 # time-stamp-end: "; # UTC"
790 # End:
+0
-50
include/alg_sig.h less more
0 /* * Copyright (c) 2013, Kevin Greenan (kmgreen2@gmail.com)
1 * All rights reserved.
2 *
3 * Redistribution and use in source and binary forms, with or without
4 * modification, are permitted provided that the following conditions are met:
5 *
6 * Redistributions of source code must retain the above copyright notice, this
7 * list of conditions and the following disclaimer.
8 *
9 * Redistributions in binary form must reproduce the above copyright notice, this
10 * list of conditions and the following disclaimer in the documentation and/or
11 * other materials provided with the distribution. THIS SOFTWARE IS PROVIDED BY
12 * THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED
13 * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
14 * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
15 * EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
16 * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
17 * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
18 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
19 * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
20 * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
21 * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
22 */
23
24 #ifndef _ALG_SIG_H
25 #define _ALG_SIG_H
26
27 #include<galois.h>
28
29 typedef struct alg_sig_s
30 {
31 int gf_w;
32 int sig_len;
33 int *tbl1_l;
34 int *tbl1_r;
35 int *tbl2_l;
36 int *tbl2_r;
37 int *tbl3_l;
38 int *tbl3_r;
39 } alg_sig_t;
40
41 alg_sig_t *init_alg_sig(int sig_len, int gf_w);
42 void destroy_alg_sig(alg_sig_t* alg_sig_handle);
43
44 int compute_alg_sig(alg_sig_t* alg_sig_handle, char *buf, int len, char *sig);
45 int crc32_build_fast_table();
46 int crc32(int crc, const void *buf, int size);
47
48 #endif
49
+0
-107
include/config.h.in less more
0 /* include/config.h.in. Generated from configure.ac by autoheader. */
1
2 /* Support Altivec instructions */
3 #undef HAVE_ALTIVEC
4
5 /* Support AVX (Advanced Vector Extensions) instructions */
6 #undef HAVE_AVX
7
8 /* Define to 1 if you have the <cauchy.h> header file. */
9 #undef HAVE_CAUCHY_H
10
11 /* Define to 1 if you have the <dlfcn.h> header file. */
12 #undef HAVE_DLFCN_H
13
14 /* Define to 1 if you have the <galois.h> header file. */
15 #undef HAVE_GALOIS_H
16
17 /* Define to 1 if you have the <gf_complete.h> header file. */
18 #undef HAVE_GF_COMPLETE_H
19
20 /* Define to 1 if you have the <inttypes.h> header file. */
21 #undef HAVE_INTTYPES_H
22
23 /* Define to 1 if you have the <jerasure.h> header file. */
24 #undef HAVE_JERASURE_H
25
26 /* Define to 1 if you have the <liberation.h> header file. */
27 #undef HAVE_LIBERATION_H
28
29 /* Define to 1 if you have the <memory.h> header file. */
30 #undef HAVE_MEMORY_H
31
32 /* Support mmx instructions */
33 #undef HAVE_MMX
34
35 /* Define to 1 if you have the <reed_sol.h> header file. */
36 #undef HAVE_REED_SOL_H
37
38 /* Support SSE (Streaming SIMD Extensions) instructions */
39 #undef HAVE_SSE
40
41 /* Support SSE2 (Streaming SIMD Extensions 2) instructions */
42 #undef HAVE_SSE2
43
44 /* Support SSE3 (Streaming SIMD Extensions 3) instructions */
45 #undef HAVE_SSE3
46
47 /* Support SSSE4.1 (Streaming SIMD Extensions 4.1) instructions */
48 #undef HAVE_SSE4_1
49
50 /* Support SSSE4.2 (Streaming SIMD Extensions 4.2) instructions */
51 #undef HAVE_SSE4_2
52
53 /* Support SSSE3 (Supplemental Streaming SIMD Extensions 3) instructions */
54 #undef HAVE_SSSE3
55
56 /* Define to 1 if you have the <stdint.h> header file. */
57 #undef HAVE_STDINT_H
58
59 /* Define to 1 if you have the <stdlib.h> header file. */
60 #undef HAVE_STDLIB_H
61
62 /* Define to 1 if you have the <strings.h> header file. */
63 #undef HAVE_STRINGS_H
64
65 /* Define to 1 if you have the <string.h> header file. */
66 #undef HAVE_STRING_H
67
68 /* Define to 1 if you have the <sys/stat.h> header file. */
69 #undef HAVE_SYS_STAT_H
70
71 /* Define to 1 if you have the <sys/types.h> header file. */
72 #undef HAVE_SYS_TYPES_H
73
74 /* Define to 1 if you have the <unistd.h> header file. */
75 #undef HAVE_UNISTD_H
76
77 /* Define to the sub-directory in which libtool stores uninstalled libraries.
78 */
79 #undef LT_OBJDIR
80
81 /* Name of package */
82 #undef PACKAGE
83
84 /* Define to the address where bug reports for this package should be sent. */
85 #undef PACKAGE_BUGREPORT
86
87 /* Define to the full name of this package. */
88 #undef PACKAGE_NAME
89
90 /* Define to the full name and version of this package. */
91 #undef PACKAGE_STRING
92
93 /* Define to the one symbol short name of this package. */
94 #undef PACKAGE_TARNAME
95
96 /* Define to the home page for this package. */
97 #undef PACKAGE_URL
98
99 /* Define to the version of this package. */
100 #undef PACKAGE_VERSION
101
102 /* Define to 1 if you have the ANSI C header files. */
103 #undef STDC_HEADERS
104
105 /* Version number of package */
106 #undef VERSION
+0
-108
include/xor_code.h less more
0 /* * Copyright (c) 2013, Kevin Greenan (kmgreen2@gmail.com)
1 * All rights reserved.
2 *
3 * Redistribution and use in source and binary forms, with or without
4 * modification, are permitted provided that the following conditions are met:
5 *
6 * Redistributions of source code must retain the above copyright notice, this
7 * list of conditions and the following disclaimer.
8 *
9 * Redistributions in binary form must reproduce the above copyright notice, this
10 * list of conditions and the following disclaimer in the documentation and/or
11 * other materials provided with the distribution. THIS SOFTWARE IS PROVIDED BY
12 * THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED
13 * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
14 * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
15 * EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
16 * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
17 * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
18 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
19 * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
20 * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
21 * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
22 */
23
24 #ifndef _XOR_CODE_H
25 #define _XOR_CODE_H
26
27 #define MAX_DATA 32
28 #define MAX_PARITY MAX_DATA
29
30 #define MEM_ALIGN_SIZE 16
31
32 #define DECODED_MISSING_IDX MAX_DATA
33
34 typedef enum { FAIL_PATTERN_GE_HD, // Num failures greater than or equal to HD
35 FAIL_PATTERN_0D_0P,
36 FAIL_PATTERN_1D_0P,
37 FAIL_PATTERN_2D_0P,
38 FAIL_PATTERN_3D_0P,
39 FAIL_PATTERN_1D_1P,
40 FAIL_PATTERN_1D_2P,
41 FAIL_PATTERN_2D_1P,
42 FAIL_PATTERN_0D_1P,
43 FAIL_PATTERN_0D_2P,
44 FAIL_PATTERN_0D_3P } failure_pattern_t;
45
46 #define is_aligned(x) (((unsigned long)x & (MEM_ALIGN_SIZE-1)) == 0)
47 #define num_unaligned_end(size) (size % MEM_ALIGN_SIZE)
48
49 struct xor_code_s;
50
51 typedef struct xor_code_s
52 {
53 int k;
54 int m;
55 int hd;
56 int *parity_bms;
57 int *data_bms;
58 void (*decode)(struct xor_code_s *code_desc, char **data, char **parity, int *missing_idxs, int blocksize, int decode_parity);
59 void (*encode)(struct xor_code_s *code_desc, char **data, char **parity, int blocksize);
60 int (*fragments_needed)(struct xor_code_s *code_desc, int *missing_idxs, int *fragments_needed);
61 } xor_code_t;
62
63 int is_data_in_parity(int data_idx, unsigned int parity_bm);
64
65 int does_parity_have_data(int parity_idx, unsigned int data_bm);
66
67 int parity_bit_lookup(xor_code_t *code_desc, int index);
68
69 int data_bit_lookup(xor_code_t *code_desc, int index);
70
71 int missing_elements_bm(xor_code_t *code_desc, int *missing_elements, int (*bit_lookup_func)(xor_code_t *code_desc, int index));
72
73 void *aligned_malloc( size_t size, int align );
74
75 void aligned_free( void *mem );
76
77 failure_pattern_t get_failure_pattern(xor_code_t *code_desc, int *missing_idxs);
78
79 void *aligned_malloc( size_t size, int align);
80
81 void aligned_free(void *mem);
82
83 void fast_memcpy(char *dst, char *src, int size);
84
85 void xor_bufs_and_store(char *buf1, char *buf2, int blocksize);
86
87 void xor_code_encode(xor_code_t *code_desc, char **data, char **parity, int blocksize);
88
89 void selective_encode(xor_code_t *code_desc, char **data, char **parity, int *missing_parity, int blocksize);
90
91 int * get_missing_parity(xor_code_t *code_desc, int *missing_idxs);
92
93 int * get_missing_data(xor_code_t *code_desc, int *missing_idxs);
94
95 int num_missing_data_in_parity(xor_code_t *code_desc, int parity_idx, int *missing_data);
96
97 int index_of_connected_parity(xor_code_t *code_desc, int data_index, int *missing_parity, int *missing_data);
98
99 void remove_from_missing_list(int element, int *missing_list);
100
101 int* get_symbols_needed(xor_code_t *code_desc, int *missing_list);
102
103 void xor_reconstruct_one(xor_code_t *code_desc, char **data, char **parity, int *missing_idxs, int index_to_reconstruct, int blocksize);
104
105 xor_code_t* init_xor_hd_code(int k, int m, int hd);
106
107 #endif
+0
-134
include/xor_hd_code_defs.h less more
0 /* * Copyright (c) 2013, Kevin Greenan (kmgreen2@gmail.com)
1 * All rights reserved.
2 *
3 * Redistribution and use in source and binary forms, with or without
4 * modification, are permitted provided that the following conditions are met:
5 *
6 * Redistributions of source code must retain the above copyright notice, this
7 * list of conditions and the following disclaimer.
8 *
9 * Redistributions in binary form must reproduce the above copyright notice, this
10 * list of conditions and the following disclaimer in the documentation and/or
11 * other materials provided with the distribution. THIS SOFTWARE IS PROVIDED BY
12 * THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED
13 * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
14 * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
15 * EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
16 * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
17 * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
18 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
19 * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
20 * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
21 * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
22 */
23
24 #ifndef _XOR_HD_CODE_DEFS_H
25 #define _XOR_HD_CODE_DEFS_H
26
27
28
29 // I made these by hand...
30 unsigned int g_12_6_4_hd_code_parity_bms[] = { 1649, 3235, 2375, 718, 1436, 2872 };
31 unsigned int g_12_6_4_hd_code_data_bms[] = { 7, 14, 28, 56, 49, 35, 13, 26, 52, 41, 19, 38 };
32
33 unsigned int g_10_5_3_hd_code_parity_bms[] = { 163, 300, 337, 582, 664 };
34 unsigned int g_10_5_3_hd_code_data_bms[] = { 5, 9, 10, 18, 20, 3, 12, 17, 6, 24 };
35
36
37 // The rest were generated via the "goldilocks" code algorithm
38 unsigned int g_6_6_3_hd_code_parity_bms[] = { 3, 48, 36, 24, 9, 6 };
39 unsigned int g_6_6_3_hd_code_data_bms[] = { 17, 33, 36, 24, 10, 6 };
40 unsigned int g_7_6_3_hd_code_parity_bms[] = { 67, 112, 36, 24, 9, 6 };
41 unsigned int g_7_6_3_hd_code_data_bms[] = { 17, 33, 36, 24, 10, 6, 3 };
42 unsigned int g_8_6_3_hd_code_parity_bms[] = { 67, 112, 164, 152, 9, 6 };
43 unsigned int g_8_6_3_hd_code_data_bms[] = { 17, 33, 36, 24, 10, 6, 3, 12 };
44 unsigned int g_9_6_3_hd_code_parity_bms[] = { 67, 112, 164, 152, 265, 262 };
45 unsigned int g_9_6_3_hd_code_data_bms[] = { 17, 33, 36, 24, 10, 6, 3, 12, 48 };
46 unsigned int g_10_6_3_hd_code_parity_bms[] = { 579, 112, 676, 152, 265, 262 };
47 unsigned int g_10_6_3_hd_code_data_bms[] = { 17, 33, 36, 24, 10, 6, 3, 12, 48, 5 };
48 unsigned int g_11_6_3_hd_code_parity_bms[] = { 579, 1136, 676, 152, 1289, 262 };
49 unsigned int g_11_6_3_hd_code_data_bms[] = { 17, 33, 36, 24, 10, 6, 3, 12, 48, 5, 18 };
50 unsigned int g_12_6_3_hd_code_parity_bms[] = { 579, 1136, 676, 2200, 1289, 2310 };
51 unsigned int g_12_6_3_hd_code_data_bms[] = { 17, 33, 36, 24, 10, 6, 3, 12, 48, 5, 18, 40 };
52 unsigned int g_13_6_3_hd_code_parity_bms[] = { 4675, 1136, 676, 6296, 1289, 2310 };
53 unsigned int g_13_6_3_hd_code_data_bms[] = { 17, 33, 36, 24, 10, 6, 3, 12, 48, 5, 18, 40, 9 };
54 unsigned int g_14_6_3_hd_code_parity_bms[] = { 4675, 9328, 676, 6296, 1289, 10502 };
55 unsigned int g_14_6_3_hd_code_data_bms[] = { 17, 33, 36, 24, 10, 6, 3, 12, 48, 5, 18, 40, 9, 34 };
56 unsigned int g_15_6_3_hd_code_parity_bms[] = { 4675, 9328, 17060, 6296, 17673, 10502 };
57 unsigned int g_15_6_3_hd_code_data_bms[] = { 17, 33, 36, 24, 10, 6, 3, 12, 48, 5, 18, 40, 9, 34, 20 };
58
59 unsigned int g_6_6_4_hd_code_parity_bms[] = { 7, 56, 56, 11, 21, 38 };
60 unsigned int g_6_6_4_hd_code_data_bms[] = { 25, 41, 49, 14, 22, 38 };
61 unsigned int g_7_6_4_hd_code_parity_bms[] = { 71, 120, 120, 11, 21, 38 };
62 unsigned int g_7_6_4_hd_code_data_bms[] = { 25, 41, 49, 14, 22, 38, 7 };
63 unsigned int g_8_6_4_hd_code_parity_bms[] = { 71, 120, 120, 139, 149, 166 };
64 unsigned int g_8_6_4_hd_code_data_bms[] = { 25, 41, 49, 14, 22, 38, 7, 56 };
65 unsigned int g_9_6_4_hd_code_parity_bms[] = { 327, 376, 120, 395, 149, 166 };
66 unsigned int g_9_6_4_hd_code_data_bms[] = { 25, 41, 49, 14, 22, 38, 7, 56, 11 };
67 unsigned int g_10_6_4_hd_code_parity_bms[] = { 327, 376, 632, 395, 661, 678 };
68 unsigned int g_10_6_4_hd_code_data_bms[] = { 25, 41, 49, 14, 22, 38, 7, 56, 11, 52 };
69 unsigned int g_11_6_4_hd_code_parity_bms[] = { 1351, 1400, 632, 395, 1685, 678 };
70 unsigned int g_11_6_4_hd_code_data_bms[] = { 25, 41, 49, 14, 22, 38, 7, 56, 11, 52, 19 };
71 unsigned int g_13_6_4_hd_code_parity_bms[] = { 5447, 5496, 2680, 2443, 1685, 6822 };
72 unsigned int g_13_6_4_hd_code_data_bms[] = { 25, 41, 49, 14, 22, 38, 7, 56, 11, 52, 19, 44, 35 };
73 unsigned int g_14_6_4_hd_code_parity_bms[] = { 5447, 5496, 10872, 10635, 9877, 6822 };
74 unsigned int g_14_6_4_hd_code_data_bms[] = { 25, 41, 49, 14, 22, 38, 7, 56, 11, 52, 19, 44, 35, 28 };
75 unsigned int g_15_6_4_hd_code_parity_bms[] = { 21831, 5496, 27256, 27019, 9877, 6822 };
76 unsigned int g_15_6_4_hd_code_data_bms[] = { 25, 41, 49, 14, 22, 38, 7, 56, 11, 52, 19, 44, 35, 28, 13 };
77 unsigned int g_16_6_4_hd_code_parity_bms[] = { 21831, 38264, 27256, 27019, 42645, 39590 };
78 unsigned int g_16_6_4_hd_code_data_bms[] = { 25, 41, 49, 14, 22, 38, 7, 56, 11, 52, 19, 44, 35, 28, 13, 50 };
79 unsigned int g_17_6_4_hd_code_parity_bms[] = { 87367, 38264, 92792, 27019, 108181, 39590 };
80 unsigned int g_17_6_4_hd_code_data_bms[] = { 25, 41, 49, 14, 22, 38, 7, 56, 11, 52, 19, 44, 35, 28, 13, 50, 21 };
81 unsigned int g_18_6_4_hd_code_parity_bms[] = { 87367, 169336, 92792, 158091, 108181, 170662 };
82 unsigned int g_18_6_4_hd_code_data_bms[] = { 25, 41, 49, 14, 22, 38, 7, 56, 11, 52, 19, 44, 35, 28, 13, 50, 21, 42 };
83 unsigned int g_19_6_4_hd_code_parity_bms[] = { 349511, 169336, 354936, 158091, 108181, 432806 };
84 unsigned int g_19_6_4_hd_code_data_bms[] = { 25, 41, 49, 14, 22, 38, 7, 56, 11, 52, 19, 44, 35, 28, 13, 50, 21, 42, 37 };
85 unsigned int g_20_6_4_hd_code_parity_bms[] = { 349511, 693624, 354936, 682379, 632469, 432806 };
86 unsigned int g_20_6_4_hd_code_data_bms[] = { 25, 41, 49, 14, 22, 38, 7, 56, 11, 52, 19, 44, 35, 28, 13, 50, 21, 42, 37, 26 };
87
88
89 unsigned int g_5_5_3_hd_code_parity_bms[] = { 3, 12, 17, 6, 24 };
90 unsigned int g_5_5_3_hd_code_data_bms[] = { 5, 9, 10, 18, 20 };
91 unsigned int g_6_5_3_hd_code_parity_bms[] = { 35, 44, 17, 6, 24 };
92 unsigned int g_6_5_3_hd_code_data_bms[] = { 5, 9, 10, 18, 20, 3 };
93 unsigned int g_7_5_3_hd_code_parity_bms[] = { 35, 44, 81, 70, 24 };
94 unsigned int g_7_5_3_hd_code_data_bms[] = { 5, 9, 10, 18, 20, 3, 12 };
95 unsigned int g_8_5_3_hd_code_parity_bms[] = { 163, 44, 81, 70, 152 };
96 unsigned int g_8_5_3_hd_code_data_bms[] = { 5, 9, 10, 18, 20, 3, 12, 17 };
97 unsigned int g_9_5_3_hd_code_parity_bms[] = { 163, 300, 337, 70, 152 };
98 unsigned int g_9_5_3_hd_code_data_bms[] = { 5, 9, 10, 18, 20, 3, 12, 17, 6 };
99
100 unsigned int g_5_5_4_hd_code_parity_bms[] = { 7, 25, 14, 19, 28 };
101 unsigned int g_5_5_4_hd_code_data_bms[] = { 11, 13, 21, 22, 26 };
102 unsigned int g_6_5_4_hd_code_parity_bms[] = { 39, 57, 46, 19, 28 };
103 unsigned int g_6_5_4_hd_code_data_bms[] = { 11, 13, 21, 22, 26, 7 };
104 unsigned int g_7_5_4_hd_code_parity_bms[] = { 103, 57, 46, 83, 92 };
105 unsigned int g_7_5_4_hd_code_data_bms[] = { 11, 13, 21, 22, 26, 7, 25 };
106 unsigned int g_8_5_4_hd_code_parity_bms[] = { 103, 185, 174, 211, 92 };
107 unsigned int g_8_5_4_hd_code_data_bms[] = { 11, 13, 21, 22, 26, 7, 25, 14 };
108 unsigned int g_9_5_4_hd_code_parity_bms[] = { 359, 441, 174, 211, 348 };
109 unsigned int g_9_5_4_hd_code_data_bms[] = { 11, 13, 21, 22, 26, 7, 25, 14, 19 };
110 unsigned int g_10_5_4_hd_code_parity_bms[] = { 359, 441, 686, 723, 860 };
111 unsigned int g_10_5_4_hd_code_data_bms[] = { 11, 13, 21, 22, 26, 7, 25, 14, 19, 28 };
112
113 // Indexed by k
114 unsigned int * hd4_m5_parity[11] = { 0, 0, 0, 0, 0, g_5_5_4_hd_code_parity_bms, g_6_5_4_hd_code_parity_bms, g_7_5_4_hd_code_parity_bms, g_8_5_4_hd_code_parity_bms, g_9_5_4_hd_code_parity_bms, g_10_5_4_hd_code_parity_bms };
115 unsigned int * hd4_m5_data[11] = { 0, 0, 0, 0, 0, g_5_5_4_hd_code_data_bms, g_6_5_4_hd_code_data_bms, g_7_5_4_hd_code_data_bms, g_8_5_4_hd_code_data_bms, g_9_5_4_hd_code_data_bms, g_10_5_4_hd_code_data_bms };
116 unsigned int * hd4_m6_parity[21] = { 0, 0, 0, 0, 0, 0, g_6_6_4_hd_code_parity_bms, g_7_6_4_hd_code_parity_bms, g_8_6_4_hd_code_parity_bms, g_9_6_4_hd_code_parity_bms, g_10_6_4_hd_code_parity_bms, g_11_6_4_hd_code_parity_bms, g_12_6_4_hd_code_parity_bms, g_13_6_4_hd_code_parity_bms, g_14_6_4_hd_code_parity_bms, g_15_6_4_hd_code_parity_bms, g_16_6_4_hd_code_parity_bms, g_17_6_4_hd_code_parity_bms, g_18_6_4_hd_code_parity_bms, g_19_6_4_hd_code_parity_bms, g_20_6_4_hd_code_parity_bms };
117
118 unsigned int * hd4_m6_data[21] = { 0, 0, 0, 0, 0, 0, g_6_6_4_hd_code_data_bms, g_7_6_4_hd_code_data_bms, g_8_6_4_hd_code_data_bms, g_9_6_4_hd_code_data_bms, g_10_6_4_hd_code_data_bms, g_11_6_4_hd_code_data_bms, g_12_6_4_hd_code_data_bms, g_13_6_4_hd_code_data_bms, g_14_6_4_hd_code_data_bms, g_15_6_4_hd_code_data_bms, g_16_6_4_hd_code_data_bms, g_17_6_4_hd_code_data_bms, g_18_6_4_hd_code_data_bms, g_19_6_4_hd_code_data_bms, g_20_6_4_hd_code_data_bms };
119
120 unsigned int * hd3_m5_parity[11] = { 0, 0, 0, 0, 0, g_5_5_3_hd_code_parity_bms, g_6_5_3_hd_code_parity_bms, g_7_5_3_hd_code_parity_bms, g_8_5_3_hd_code_parity_bms, g_9_5_3_hd_code_parity_bms, g_10_5_3_hd_code_parity_bms };
121 unsigned int * hd3_m5_data[11] = { 0, 0, 0, 0, 0, g_5_5_3_hd_code_data_bms, g_6_5_3_hd_code_data_bms, g_7_5_3_hd_code_data_bms, g_8_5_3_hd_code_data_bms, g_9_5_3_hd_code_data_bms, g_10_5_3_hd_code_data_bms };
122 unsigned int * hd3_m6_parity[16] = { 0, 0, 0, 0, 0, 0, g_6_6_3_hd_code_parity_bms, g_7_6_3_hd_code_parity_bms, g_8_6_3_hd_code_parity_bms, g_9_6_3_hd_code_parity_bms, g_10_6_3_hd_code_parity_bms, g_11_6_3_hd_code_parity_bms, g_12_6_3_hd_code_parity_bms, g_13_6_3_hd_code_parity_bms, g_14_6_3_hd_code_parity_bms, g_15_6_3_hd_code_parity_bms };
123 unsigned int * hd3_m6_data[16] = { 0, 0, 0, 0, 0, 0, g_6_6_3_hd_code_data_bms, g_7_6_3_hd_code_data_bms, g_8_6_3_hd_code_data_bms, g_9_6_3_hd_code_data_bms, g_10_6_3_hd_code_data_bms, g_11_6_3_hd_code_data_bms, g_12_6_3_hd_code_data_bms, g_13_6_3_hd_code_data_bms, g_14_6_3_hd_code_data_bms, g_15_6_3_hd_code_data_bms };
124
125 unsigned int ** parity_bm_hd4 [7] = { 0, 0, 0, 0, 0, hd4_m5_parity, hd4_m6_parity };
126 unsigned int ** data_bm_hd4 [7] = { 0, 0, 0, 0, 0, hd4_m5_data, hd4_m6_data };
127 unsigned int ** parity_bm_hd3 [7] = { 0, 0, 0, 0, 0, hd3_m5_parity, hd3_m6_parity };
128 unsigned int ** data_bm_hd3 [7] = { 0, 0, 0, 0, 0, hd3_m5_data, hd3_m6_data };
129
130 #define PARITY_BM_ARY(k, m, hd) (hd == 3) ? parity_bm_hd3[m][k] : parity_bm_hd4[m][k]
131 #define DATA_BM_ARY(k, m, hd) (hd == 3) ? data_bm_hd3[m][k] : data_bm_hd4[m][k]
132
133 #endif
+0
-527
install-sh less more
0 #!/bin/sh
1 # install - install a program, script, or datafile
2
3 scriptversion=2011-11-20.07; # UTC
4
5 # This originates from X11R5 (mit/util/scripts/install.sh), which was
6 # later released in X11R6 (xc/config/util/install.sh) with the
7 # following copyright and license.
8 #
9 # Copyright (C) 1994 X Consortium
10 #
11 # Permission is hereby granted, free of charge, to any person obtaining a copy
12 # of this software and associated documentation files (the "Software"), to
13 # deal in the Software without restriction, including without limitation the
14 # rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
15 # sell copies of the Software, and to permit persons to whom the Software is
16 # furnished to do so, subject to the following conditions:
17 #
18 # The above copyright notice and this permission notice shall be included in
19 # all copies or substantial portions of the Software.
20 #
21 # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
22 # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
23 # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
24 # X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
25 # AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNEC-
26 # TION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
27 #
28 # Except as contained in this notice, the name of the X Consortium shall not
29 # be used in advertising or otherwise to promote the sale, use or other deal-
30 # ings in this Software without prior written authorization from the X Consor-
31 # tium.
32 #
33 #
34 # FSF changes to this file are in the public domain.
35 #
36 # Calling this script install-sh is preferred over install.sh, to prevent
37 # 'make' implicit rules from creating a file called install from it
38 # when there is no Makefile.
39 #
40 # This script is compatible with the BSD install script, but was written
41 # from scratch.
42
43 nl='
44 '
45 IFS=" "" $nl"
46
47 # set DOITPROG to echo to test this script
48
49 # Don't use :- since 4.3BSD and earlier shells don't like it.
50 doit=${DOITPROG-}
51 if test -z "$doit"; then
52 doit_exec=exec
53 else
54 doit_exec=$doit
55 fi
56
57 # Put in absolute file names if you don't have them in your path;
58 # or use environment vars.
59
60 chgrpprog=${CHGRPPROG-chgrp}
61 chmodprog=${CHMODPROG-chmod}
62 chownprog=${CHOWNPROG-chown}
63 cmpprog=${CMPPROG-cmp}
64 cpprog=${CPPROG-cp}
65 mkdirprog=${MKDIRPROG-mkdir}
66 mvprog=${MVPROG-mv}
67 rmprog=${RMPROG-rm}
68 stripprog=${STRIPPROG-strip}
69
70 posix_glob='?'
71 initialize_posix_glob='
72 test "$posix_glob" != "?" || {
73 if (set -f) 2>/dev/null; then
74 posix_glob=
75 else
76 posix_glob=:
77 fi
78 }
79 '
80
81 posix_mkdir=
82
83 # Desired mode of installed file.
84 mode=0755
85
86 chgrpcmd=
87 chmodcmd=$chmodprog
88 chowncmd=
89 mvcmd=$mvprog
90 rmcmd="$rmprog -f"
91 stripcmd=
92
93 src=
94 dst=
95 dir_arg=
96 dst_arg=
97
98 copy_on_change=false
99 no_target_directory=
100
101 usage="\
102 Usage: $0 [OPTION]... [-T] SRCFILE DSTFILE
103 or: $0 [OPTION]... SRCFILES... DIRECTORY
104 or: $0 [OPTION]... -t DIRECTORY SRCFILES...
105 or: $0 [OPTION]... -d DIRECTORIES...
106
107 In the 1st form, copy SRCFILE to DSTFILE.
108 In the 2nd and 3rd, copy all SRCFILES to DIRECTORY.
109 In the 4th, create DIRECTORIES.
110
111 Options:
112 --help display this help and exit.
113 --version display version info and exit.
114
115 -c (ignored)
116 -C install only if different (preserve the last data modification time)
117 -d create directories instead of installing files.
118 -g GROUP $chgrpprog installed files to GROUP.
119 -m MODE $chmodprog installed files to MODE.
120 -o USER $chownprog installed files to USER.
121 -s $stripprog installed files.
122 -t DIRECTORY install into DIRECTORY.
123 -T report an error if DSTFILE is a directory.
124
125 Environment variables override the default commands:
126 CHGRPPROG CHMODPROG CHOWNPROG CMPPROG CPPROG MKDIRPROG MVPROG
127 RMPROG STRIPPROG
128 "
129
130 while test $# -ne 0; do
131 case $1 in
132 -c) ;;
133
134 -C) copy_on_change=true;;
135
136 -d) dir_arg=true;;
137
138 -g) chgrpcmd="$chgrpprog $2"
139 shift;;
140
141 --help) echo "$usage"; exit $?;;
142
143 -m) mode=$2
144 case $mode in
145 *' '* | *' '* | *'
146 '* | *'*'* | *'?'* | *'['*)
147 echo "$0: invalid mode: $mode" >&2
148 exit 1;;
149 esac
150 shift;;
151
152 -o) chowncmd="$chownprog $2"
153 shift;;
154
155 -s) stripcmd=$stripprog;;
156
157 -t) dst_arg=$2
158 # Protect names problematic for 'test' and other utilities.
159 case $dst_arg in
160 -* | [=\(\)!]) dst_arg=./$dst_arg;;
161 esac
162 shift;;
163
164 -T) no_target_directory=true;;
165
166 --version) echo "$0 $scriptversion"; exit $?;;
167
168 --) shift
169 break;;
170
171 -*) echo "$0: invalid option: $1" >&2
172 exit 1;;
173
174 *) break;;
175 esac
176 shift
177 done
178
179 if test $# -ne 0 && test -z "$dir_arg$dst_arg"; then
180 # When -d is used, all remaining arguments are directories to create.
181 # When -t is used, the destination is already specified.
182 # Otherwise, the last argument is the destination. Remove it from $@.
183 for arg
184 do
185 if test -n "$dst_arg"; then
186 # $@ is not empty: it contains at least $arg.
187 set fnord "$@" "$dst_arg"
188 shift # fnord
189 fi
190 shift # arg
191 dst_arg=$arg
192 # Protect names problematic for 'test' and other utilities.
193 case $dst_arg in
194 -* | [=\(\)!]) dst_arg=./$dst_arg;;
195 esac
196 done
197 fi
198
199 if test $# -eq 0; then
200 if test -z "$dir_arg"; then
201 echo "$0: no input file specified." >&2
202 exit 1
203 fi
204 # It's OK to call 'install-sh -d' without argument.
205 # This can happen when creating conditional directories.
206 exit 0
207 fi
208
209 if test -z "$dir_arg"; then
210 do_exit='(exit $ret); exit $ret'
211 trap "ret=129; $do_exit" 1
212 trap "ret=130; $do_exit" 2
213 trap "ret=141; $do_exit" 13
214 trap "ret=143; $do_exit" 15
215
216 # Set umask so as not to create temps with too-generous modes.
217 # However, 'strip' requires both read and write access to temps.
218 case $mode in
219 # Optimize common cases.
220 *644) cp_umask=133;;
221 *755) cp_umask=22;;
222
223 *[0-7])
224 if test -z "$stripcmd"; then
225 u_plus_rw=
226 else
227 u_plus_rw='% 200'
228 fi
229 cp_umask=`expr '(' 777 - $mode % 1000 ')' $u_plus_rw`;;
230 *)
231 if test -z "$stripcmd"; then
232 u_plus_rw=
233 else
234 u_plus_rw=,u+rw
235 fi
236 cp_umask=$mode$u_plus_rw;;
237 esac
238 fi
239
240 for src
241 do
242 # Protect names problematic for 'test' and other utilities.
243 case $src in
244 -* | [=\(\)!]) src=./$src;;
245 esac
246
247 if test -n "$dir_arg"; then
248 dst=$src
249 dstdir=$dst
250 test -d "$dstdir"
251 dstdir_status=$?
252 else
253
254 # Waiting for this to be detected by the "$cpprog $src $dsttmp" command
255 # might cause directories to be created, which would be especially bad
256 # if $src (and thus $dsttmp) contains '*'.
257 if test ! -f "$src" && test ! -d "$src"; then
258 echo "$0: $src does not exist." >&2
259 exit 1
260 fi
261
262 if test -z "$dst_arg"; then
263 echo "$0: no destination specified." >&2
264 exit 1
265 fi
266 dst=$dst_arg
267
268 # If destination is a directory, append the input filename; won't work
269 # if double slashes aren't ignored.
270 if test -d "$dst"; then
271 if test -n "$no_target_directory"; then
272 echo "$0: $dst_arg: Is a directory" >&2
273 exit 1
274 fi
275 dstdir=$dst
276 dst=$dstdir/`basename "$src"`
277 dstdir_status=0
278 else
279 # Prefer dirname, but fall back on a substitute if dirname fails.
280 dstdir=`
281 (dirname "$dst") 2>/dev/null ||
282 expr X"$dst" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
283 X"$dst" : 'X\(//\)[^/]' \| \
284 X"$dst" : 'X\(//\)$' \| \
285 X"$dst" : 'X\(/\)' \| . 2>/dev/null ||
286 echo X"$dst" |
287 sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
288 s//\1/
289 q
290 }
291 /^X\(\/\/\)[^/].*/{
292 s//\1/
293 q
294 }
295 /^X\(\/\/\)$/{
296 s//\1/
297 q
298 }
299 /^X\(\/\).*/{
300 s//\1/
301 q
302 }
303 s/.*/./; q'
304 `
305
306 test -d "$dstdir"
307 dstdir_status=$?
308 fi
309 fi
310
311 obsolete_mkdir_used=false
312
313 if test $dstdir_status != 0; then
314 case $posix_mkdir in
315 '')
316 # Create intermediate dirs using mode 755 as modified by the umask.
317 # This is like FreeBSD 'install' as of 1997-10-28.
318 umask=`umask`
319 case $stripcmd.$umask in
320 # Optimize common cases.
321 *[2367][2367]) mkdir_umask=$umask;;
322 .*0[02][02] | .[02][02] | .[02]) mkdir_umask=22;;
323
324 *[0-7])
325 mkdir_umask=`expr $umask + 22 \
326 - $umask % 100 % 40 + $umask % 20 \
327 - $umask % 10 % 4 + $umask % 2
328 `;;
329 *) mkdir_umask=$umask,go-w;;
330 esac
331
332 # With -d, create the new directory with the user-specified mode.
333 # Otherwise, rely on $mkdir_umask.
334 if test -n "$dir_arg"; then
335 mkdir_mode=-m$mode
336 else
337 mkdir_mode=
338 fi
339
340 posix_mkdir=false
341 case $umask in
342 *[123567][0-7][0-7])
343 # POSIX mkdir -p sets u+wx bits regardless of umask, which
344 # is incompatible with FreeBSD 'install' when (umask & 300) != 0.
345 ;;
346 *)
347 tmpdir=${TMPDIR-/tmp}/ins$RANDOM-$$
348 trap 'ret=$?; rmdir "$tmpdir/d" "$tmpdir" 2>/dev/null; exit $ret' 0
349
350 if (umask $mkdir_umask &&
351 exec $mkdirprog $mkdir_mode -p -- "$tmpdir/d") >/dev/null 2>&1
352 then
353 if test -z "$dir_arg" || {
354 # Check for POSIX incompatibilities with -m.
355 # HP-UX 11.23 and IRIX 6.5 mkdir -m -p sets group- or
356 # other-writable bit of parent directory when it shouldn't.
357 # FreeBSD 6.1 mkdir -m -p sets mode of existing directory.
358 ls_ld_tmpdir=`ls -ld "$tmpdir"`
359 case $ls_ld_tmpdir in
360 d????-?r-*) different_mode=700;;
361 d????-?--*) different_mode=755;;
362 *) false;;
363 esac &&
364 $mkdirprog -m$different_mode -p -- "$tmpdir" && {
365 ls_ld_tmpdir_1=`ls -ld "$tmpdir"`
366 test "$ls_ld_tmpdir" = "$ls_ld_tmpdir_1"
367 }
368 }
369 then posix_mkdir=:
370 fi
371 rmdir "$tmpdir/d" "$tmpdir"
372 else
373 # Remove any dirs left behind by ancient mkdir implementations.
374 rmdir ./$mkdir_mode ./-p ./-- 2>/dev/null
375 fi
376 trap '' 0;;
377 esac;;
378 esac
379
380 if
381 $posix_mkdir && (
382 umask $mkdir_umask &&
383 $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir"
384 )
385 then :
386 else
387
388 # The umask is ridiculous, or mkdir does not conform to POSIX,
389 # or it failed possibly due to a race condition. Create the
390 # directory the slow way, step by step, checking for races as we go.
391
392 case $dstdir in
393 /*) prefix='/';;
394 [-=\(\)!]*) prefix='./';;
395 *) prefix='';;
396 esac
397
398 eval "$initialize_posix_glob"
399
400 oIFS=$IFS
401 IFS=/
402 $posix_glob set -f
403 set fnord $dstdir
404 shift
405 $posix_glob set +f
406 IFS=$oIFS
407
408 prefixes=
409
410 for d
411 do
412 test X"$d" = X && continue
413
414 prefix=$prefix$d
415 if test -d "$prefix"; then
416 prefixes=
417 else
418 if $posix_mkdir; then
419 (umask=$mkdir_umask &&
420 $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir") && break
421 # Don't fail if two instances are running concurrently.
422 test -d "$prefix" || exit 1
423 else
424 case $prefix in
425 *\'*) qprefix=`echo "$prefix" | sed "s/'/'\\\\\\\\''/g"`;;
426 *) qprefix=$prefix;;
427 esac
428 prefixes="$prefixes '$qprefix'"
429 fi
430 fi
431 prefix=$prefix/
432 done
433
434 if test -n "$prefixes"; then
435 # Don't fail if two instances are running concurrently.
436 (umask $mkdir_umask &&
437 eval "\$doit_exec \$mkdirprog $prefixes") ||
438 test -d "$dstdir" || exit 1
439 obsolete_mkdir_used=true
440 fi
441 fi
442 fi
443
444 if test -n "$dir_arg"; then
445 { test -z "$chowncmd" || $doit $chowncmd "$dst"; } &&
446 { test -z "$chgrpcmd" || $doit $chgrpcmd "$dst"; } &&
447 { test "$obsolete_mkdir_used$chowncmd$chgrpcmd" = false ||
448 test -z "$chmodcmd" || $doit $chmodcmd $mode "$dst"; } || exit 1
449 else
450
451 # Make a couple of temp file names in the proper directory.
452 dsttmp=$dstdir/_inst.$$_
453 rmtmp=$dstdir/_rm.$$_
454
455 # Trap to clean up those temp files at exit.
456 trap 'ret=$?; rm -f "$dsttmp" "$rmtmp" && exit $ret' 0
457
458 # Copy the file name to the temp name.
459 (umask $cp_umask && $doit_exec $cpprog "$src" "$dsttmp") &&
460
461 # and set any options; do chmod last to preserve setuid bits.
462 #
463 # If any of these fail, we abort the whole thing. If we want to
464 # ignore errors from any of these, just make sure not to ignore
465 # errors from the above "$doit $cpprog $src $dsttmp" command.
466 #
467 { test -z "$chowncmd" || $doit $chowncmd "$dsttmp"; } &&
468 { test -z "$chgrpcmd" || $doit $chgrpcmd "$dsttmp"; } &&
469 { test -z "$stripcmd" || $doit $stripcmd "$dsttmp"; } &&
470 { test -z "$chmodcmd" || $doit $chmodcmd $mode "$dsttmp"; } &&
471
472 # If -C, don't bother to copy if it wouldn't change the file.
473 if $copy_on_change &&
474 old=`LC_ALL=C ls -dlL "$dst" 2>/dev/null` &&
475 new=`LC_ALL=C ls -dlL "$dsttmp" 2>/dev/null` &&
476
477 eval "$initialize_posix_glob" &&
478 $posix_glob set -f &&
479 set X $old && old=:$2:$4:$5:$6 &&
480 set X $new && new=:$2:$4:$5:$6 &&
481 $posix_glob set +f &&
482
483 test "$old" = "$new" &&
484 $cmpprog "$dst" "$dsttmp" >/dev/null 2>&1
485 then
486 rm -f "$dsttmp"
487 else
488 # Rename the file to the real destination.
489 $doit $mvcmd -f "$dsttmp" "$dst" 2>/dev/null ||
490
491 # The rename failed, perhaps because mv can't rename something else
492 # to itself, or perhaps because mv is so ancient that it does not
493 # support -f.
494 {
495 # Now remove or move aside any old file at destination location.
496 # We try this two ways since rm can't unlink itself on some
497 # systems and the destination file might be busy for other
498 # reasons. In this case, the final cleanup might fail but the new
499 # file should still install successfully.
500 {
501 test ! -f "$dst" ||
502 $doit $rmcmd -f "$dst" 2>/dev/null ||
503 { $doit $mvcmd -f "$dst" "$rmtmp" 2>/dev/null &&
504 { $doit $rmcmd -f "$rmtmp" 2>/dev/null; :; }
505 } ||
506 { echo "$0: cannot unlink or rename $dst" >&2
507 (exit 1); exit 1
508 }
509 } &&
510
511 # Now rename the file to the real destination.
512 $doit $mvcmd "$dsttmp" "$dst"
513 }
514 fi || exit 1
515
516 trap '' 0
517 fi
518 done
519
520 # Local variables:
521 # eval: (add-hook 'write-file-hooks 'time-stamp)
522 # time-stamp-start: "scriptversion="
523 # time-stamp-format: "%:y-%02m-%02d.%02H"
524 # time-stamp-time-zone: "UTC"
525 # time-stamp-end: "; # UTC"
526 # End:
+0
-9655
ltmain.sh less more
0
1 # libtool (GNU libtool) 2.4.2
2 # Written by Gordon Matzigkeit <gord@gnu.ai.mit.edu>, 1996
3
4 # Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, 2006,
5 # 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
6 # This is free software; see the source for copying conditions. There is NO
7 # warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
8
9 # GNU Libtool is free software; you can redistribute it and/or modify
10 # it under the terms of the GNU General Public License as published by
11 # the Free Software Foundation; either version 2 of the License, or
12 # (at your option) any later version.
13 #
14 # As a special exception to the GNU General Public License,
15 # if you distribute this file as part of a program or library that
16 # is built using GNU Libtool, you may include this file under the
17 # same distribution terms that you use for the rest of that program.
18 #
19 # GNU Libtool is distributed in the hope that it will be useful, but
20 # WITHOUT ANY WARRANTY; without even the implied warranty of
21 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
22 # General Public License for more details.
23 #
24 # You should have received a copy of the GNU General Public License
25 # along with GNU Libtool; see the file COPYING. If not, a copy
26 # can be downloaded from http://www.gnu.org/licenses/gpl.html,
27 # or obtained by writing to the Free Software Foundation, Inc.,
28 # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
29
30 # Usage: $progname [OPTION]... [MODE-ARG]...
31 #
32 # Provide generalized library-building support services.
33 #
34 # --config show all configuration variables
35 # --debug enable verbose shell tracing
36 # -n, --dry-run display commands without modifying any files
37 # --features display basic configuration information and exit
38 # --mode=MODE use operation mode MODE
39 # --preserve-dup-deps don't remove duplicate dependency libraries
40 # --quiet, --silent don't print informational messages
41 # --no-quiet, --no-silent
42 # print informational messages (default)
43 # --no-warn don't display warning messages
44 # --tag=TAG use configuration variables from tag TAG
45 # -v, --verbose print more informational messages than default
46 # --no-verbose don't print the extra informational messages
47 # --version print version information
48 # -h, --help, --help-all print short, long, or detailed help message
49 #
50 # MODE must be one of the following:
51 #
52 # clean remove files from the build directory
53 # compile compile a source file into a libtool object
54 # execute automatically set library path, then run a program
55 # finish complete the installation of libtool libraries
56 # install install libraries or executables
57 # link create a library or an executable
58 # uninstall remove libraries from an installed directory
59 #
60 # MODE-ARGS vary depending on the MODE. When passed as first option,
61 # `--mode=MODE' may be abbreviated as `MODE' or a unique abbreviation of that.
62 # Try `$progname --help --mode=MODE' for a more detailed description of MODE.
63 #
64 # When reporting a bug, please describe a test case to reproduce it and
65 # include the following information:
66 #
67 # host-triplet: $host
68 # shell: $SHELL
69 # compiler: $LTCC
70 # compiler flags: $LTCFLAGS
71 # linker: $LD (gnu? $with_gnu_ld)
72 # $progname: (GNU libtool) 2.4.2
73 # automake: $automake_version
74 # autoconf: $autoconf_version
75 #
76 # Report bugs to <bug-libtool@gnu.org>.
77 # GNU libtool home page: <http://www.gnu.org/software/libtool/>.
78 # General help using GNU software: <http://www.gnu.org/gethelp/>.
79
80 PROGRAM=libtool
81 PACKAGE=libtool
82 VERSION=2.4.2
83 TIMESTAMP=""
84 package_revision=1.3337
85
86 # Be Bourne compatible
87 if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
88 emulate sh
89 NULLCMD=:
90 # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which
91 # is contrary to our usage. Disable this feature.
92 alias -g '${1+"$@"}'='"$@"'
93 setopt NO_GLOB_SUBST
94 else
95 case `(set -o) 2>/dev/null` in *posix*) set -o posix;; esac
96 fi
97 BIN_SH=xpg4; export BIN_SH # for Tru64
98 DUALCASE=1; export DUALCASE # for MKS sh
99
100 # A function that is used when there is no print builtin or printf.
101 func_fallback_echo ()
102 {
103 eval 'cat <<_LTECHO_EOF
104 $1
105 _LTECHO_EOF'
106 }
107
108 # NLS nuisances: We save the old values to restore during execute mode.
109 lt_user_locale=
110 lt_safe_locale=
111 for lt_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES
112 do
113 eval "if test \"\${$lt_var+set}\" = set; then
114 save_$lt_var=\$$lt_var
115 $lt_var=C
116 export $lt_var
117 lt_user_locale=\"$lt_var=\\\$save_\$lt_var; \$lt_user_locale\"
118 lt_safe_locale=\"$lt_var=C; \$lt_safe_locale\"
119 fi"
120 done
121 LC_ALL=C
122 LANGUAGE=C
123 export LANGUAGE LC_ALL
124
125 $lt_unset CDPATH
126
127
128 # Work around backward compatibility issue on IRIX 6.5. On IRIX 6.4+, sh
129 # is ksh but when the shell is invoked as "sh" and the current value of
130 # the _XPG environment variable is not equal to 1 (one), the special
131 # positional parameter $0, within a function call, is the name of the
132 # function.
133 progpath="$0"
134
135
136
137 : ${CP="cp -f"}
138 test "${ECHO+set}" = set || ECHO=${as_echo-'printf %s\n'}
139 : ${MAKE="make"}
140 : ${MKDIR="mkdir"}
141 : ${MV="mv -f"}
142 : ${RM="rm -f"}
143 : ${SHELL="${CONFIG_SHELL-/bin/sh}"}
144 : ${Xsed="$SED -e 1s/^X//"}
145
146 # Global variables:
147 EXIT_SUCCESS=0
148 EXIT_FAILURE=1
149 EXIT_MISMATCH=63 # $? = 63 is used to indicate version mismatch to missing.
150 EXIT_SKIP=77 # $? = 77 is used to indicate a skipped test to automake.
151
152 exit_status=$EXIT_SUCCESS
153
154 # Make sure IFS has a sensible default
155 lt_nl='
156 '
157 IFS=" $lt_nl"
158
159 dirname="s,/[^/]*$,,"
160 basename="s,^.*/,,"
161
162 # func_dirname file append nondir_replacement
163 # Compute the dirname of FILE. If nonempty, add APPEND to the result,
164 # otherwise set result to NONDIR_REPLACEMENT.
165 func_dirname ()
166 {
167 func_dirname_result=`$ECHO "${1}" | $SED "$dirname"`
168 if test "X$func_dirname_result" = "X${1}"; then
169 func_dirname_result="${3}"
170 else
171 func_dirname_result="$func_dirname_result${2}"
172 fi
173 } # func_dirname may be replaced by extended shell implementation
174
175
176 # func_basename file
177 func_basename ()
178 {
179 func_basename_result=`$ECHO "${1}" | $SED "$basename"`
180 } # func_basename may be replaced by extended shell implementation
181
182
183 # func_dirname_and_basename file append nondir_replacement
184 # perform func_basename and func_dirname in a single function
185 # call:
186 # dirname: Compute the dirname of FILE. If nonempty,
187 # add APPEND to the result, otherwise set result
188 # to NONDIR_REPLACEMENT.
189 # value returned in "$func_dirname_result"
190 # basename: Compute filename of FILE.
191 # value retuned in "$func_basename_result"
192 # Implementation must be kept synchronized with func_dirname
193 # and func_basename. For efficiency, we do not delegate to
194 # those functions but instead duplicate the functionality here.
195 func_dirname_and_basename ()
196 {
197 # Extract subdirectory from the argument.
198 func_dirname_result=`$ECHO "${1}" | $SED -e "$dirname"`
199 if test "X$func_dirname_result" = "X${1}"; then
200 func_dirname_result="${3}"
201 else
202 func_dirname_result="$func_dirname_result${2}"
203 fi
204 func_basename_result=`$ECHO "${1}" | $SED -e "$basename"`
205 } # func_dirname_and_basename may be replaced by extended shell implementation
206
207
208 # func_stripname prefix suffix name
209 # strip PREFIX and SUFFIX off of NAME.
210 # PREFIX and SUFFIX must not contain globbing or regex special
211 # characters, hashes, percent signs, but SUFFIX may contain a leading
212 # dot (in which case that matches only a dot).
213 # func_strip_suffix prefix name
214 func_stripname ()
215 {
216 case ${2} in
217 .*) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%\\\\${2}\$%%"`;;
218 *) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%${2}\$%%"`;;
219 esac
220 } # func_stripname may be replaced by extended shell implementation
221
222
223 # These SED scripts presuppose an absolute path with a trailing slash.
224 pathcar='s,^/\([^/]*\).*$,\1,'
225 pathcdr='s,^/[^/]*,,'
226 removedotparts=':dotsl
227 s@/\./@/@g
228 t dotsl
229 s,/\.$,/,'
230 collapseslashes='s@/\{1,\}@/@g'
231 finalslash='s,/*$,/,'
232
233 # func_normal_abspath PATH
234 # Remove doubled-up and trailing slashes, "." path components,
235 # and cancel out any ".." path components in PATH after making
236 # it an absolute path.
237 # value returned in "$func_normal_abspath_result"
238 func_normal_abspath ()
239 {
240 # Start from root dir and reassemble the path.
241 func_normal_abspath_result=
242 func_normal_abspath_tpath=$1
243 func_normal_abspath_altnamespace=
244 case $func_normal_abspath_tpath in
245 "")
246 # Empty path, that just means $cwd.
247 func_stripname '' '/' "`pwd`"
248 func_normal_abspath_result=$func_stripname_result
249 return
250 ;;
251 # The next three entries are used to spot a run of precisely
252 # two leading slashes without using negated character classes;
253 # we take advantage of case's first-match behaviour.
254 ///*)
255 # Unusual form of absolute path, do nothing.
256 ;;
257 //*)
258 # Not necessarily an ordinary path; POSIX reserves leading '//'
259 # and for example Cygwin uses it to access remote file shares
260 # over CIFS/SMB, so we conserve a leading double slash if found.
261 func_normal_abspath_altnamespace=/
262 ;;
263 /*)
264 # Absolute path, do nothing.
265 ;;
266 *)
267 # Relative path, prepend $cwd.
268 func_normal_abspath_tpath=`pwd`/$func_normal_abspath_tpath
269 ;;
270 esac
271 # Cancel out all the simple stuff to save iterations. We also want
272 # the path to end with a slash for ease of parsing, so make sure
273 # there is one (and only one) here.
274 func_normal_abspath_tpath=`$ECHO "$func_normal_abspath_tpath" | $SED \
275 -e "$removedotparts" -e "$collapseslashes" -e "$finalslash"`
276 while :; do
277 # Processed it all yet?
278 if test "$func_normal_abspath_tpath" = / ; then
279 # If we ascended to the root using ".." the result may be empty now.
280 if test -z "$func_normal_abspath_result" ; then
281 func_normal_abspath_result=/
282 fi
283 break
284 fi
285 func_normal_abspath_tcomponent=`$ECHO "$func_normal_abspath_tpath" | $SED \
286 -e "$pathcar"`
287 func_normal_abspath_tpath=`$ECHO "$func_normal_abspath_tpath" | $SED \
288 -e "$pathcdr"`
289 # Figure out what to do with it
290 case $func_normal_abspath_tcomponent in
291 "")
292 # Trailing empty path component, ignore it.
293 ;;
294 ..)
295 # Parent dir; strip last assembled component from result.
296 func_dirname "$func_normal_abspath_result"
297 func_normal_abspath_result=$func_dirname_result
298 ;;
299 *)
300 # Actual path component, append it.
301 func_normal_abspath_result=$func_normal_abspath_result/$func_normal_abspath_tcomponent
302 ;;
303 esac
304 done
305 # Restore leading double-slash if one was found on entry.
306 func_normal_abspath_result=$func_normal_abspath_altnamespace$func_normal_abspath_result
307 }
308
309 # func_relative_path SRCDIR DSTDIR
310 # generates a relative path from SRCDIR to DSTDIR, with a trailing
311 # slash if non-empty, suitable for immediately appending a filename
312 # without needing to append a separator.
313 # value returned in "$func_relative_path_result"
314 func_relative_path ()
315 {
316 func_relative_path_result=
317 func_normal_abspath "$1"
318 func_relative_path_tlibdir=$func_normal_abspath_result
319 func_normal_abspath "$2"
320 func_relative_path_tbindir=$func_normal_abspath_result
321
322 # Ascend the tree starting from libdir
323 while :; do
324 # check if we have found a prefix of bindir
325 case $func_relative_path_tbindir in
326 $func_relative_path_tlibdir)
327 # found an exact match
328 func_relative_path_tcancelled=
329 break
330 ;;
331 $func_relative_path_tlibdir*)
332 # found a matching prefix
333 func_stripname "$func_relative_path_tlibdir" '' "$func_relative_path_tbindir"
334 func_relative_path_tcancelled=$func_stripname_result
335 if test -z "$func_relative_path_result"; then
336 func_relative_path_result=.
337 fi
338 break
339 ;;
340 *)
341 func_dirname $func_relative_path_tlibdir
342 func_relative_path_tlibdir=${func_dirname_result}
343 if test "x$func_relative_path_tlibdir" = x ; then
344 # Have to descend all the way to the root!
345 func_relative_path_result=../$func_relative_path_result
346 func_relative_path_tcancelled=$func_relative_path_tbindir
347 break
348 fi
349 func_relative_path_result=../$func_relative_path_result
350 ;;
351 esac
352 done
353
354 # Now calculate path; take care to avoid doubling-up slashes.
355 func_stripname '' '/' "$func_relative_path_result"
356 func_relative_path_result=$func_stripname_result
357 func_stripname '/' '/' "$func_relative_path_tcancelled"
358 if test "x$func_stripname_result" != x ; then
359 func_relative_path_result=${func_relative_path_result}/${func_stripname_result}
360 fi
361
362 # Normalisation. If bindir is libdir, return empty string,
363 # else relative path ending with a slash; either way, target
364 # file name can be directly appended.
365 if test ! -z "$func_relative_path_result"; then
366 func_stripname './' '' "$func_relative_path_result/"
367 func_relative_path_result=$func_stripname_result
368 fi
369 }
370
371 # The name of this program:
372 func_dirname_and_basename "$progpath"
373 progname=$func_basename_result
374
375 # Make sure we have an absolute path for reexecution:
376 case $progpath in
377 [\\/]*|[A-Za-z]:\\*) ;;
378 *[\\/]*)
379 progdir=$func_dirname_result
380 progdir=`cd "$progdir" && pwd`
381 progpath="$progdir/$progname"
382 ;;
383 *)
384 save_IFS="$IFS"
385 IFS=${PATH_SEPARATOR-:}
386 for progdir in $PATH; do
387 IFS="$save_IFS"
388 test -x "$progdir/$progname" && break
389 done
390 IFS="$save_IFS"
391 test -n "$progdir" || progdir=`pwd`
392 progpath="$progdir/$progname"
393 ;;
394 esac
395
396 # Sed substitution that helps us do robust quoting. It backslashifies
397 # metacharacters that are still active within double-quoted strings.
398 Xsed="${SED}"' -e 1s/^X//'
399 sed_quote_subst='s/\([`"$\\]\)/\\\1/g'
400
401 # Same as above, but do not quote variable references.
402 double_quote_subst='s/\(["`\\]\)/\\\1/g'
403
404 # Sed substitution that turns a string into a regex matching for the
405 # string literally.
406 sed_make_literal_regex='s,[].[^$\\*\/],\\&,g'
407
408 # Sed substitution that converts a w32 file name or path
409 # which contains forward slashes, into one that contains
410 # (escaped) backslashes. A very naive implementation.
411 lt_sed_naive_backslashify='s|\\\\*|\\|g;s|/|\\|g;s|\\|\\\\|g'
412
413 # Re-`\' parameter expansions in output of double_quote_subst that were
414 # `\'-ed in input to the same. If an odd number of `\' preceded a '$'
415 # in input to double_quote_subst, that '$' was protected from expansion.
416 # Since each input `\' is now two `\'s, look for any number of runs of
417 # four `\'s followed by two `\'s and then a '$'. `\' that '$'.
418 bs='\\'
419 bs2='\\\\'
420 bs4='\\\\\\\\'
421 dollar='\$'
422 sed_double_backslash="\
423 s/$bs4/&\\
424 /g
425 s/^$bs2$dollar/$bs&/
426 s/\\([^$bs]\\)$bs2$dollar/\\1$bs2$bs$dollar/g
427 s/\n//g"
428
429 # Standard options:
430 opt_dry_run=false
431 opt_help=false
432 opt_quiet=false
433 opt_verbose=false
434 opt_warning=:
435
436 # func_echo arg...
437 # Echo program name prefixed message, along with the current mode
438 # name if it has been set yet.
439 func_echo ()
440 {
441 $ECHO "$progname: ${opt_mode+$opt_mode: }$*"
442 }
443
444 # func_verbose arg...
445 # Echo program name prefixed message in verbose mode only.
446 func_verbose ()
447 {
448 $opt_verbose && func_echo ${1+"$@"}
449
450 # A bug in bash halts the script if the last line of a function
451 # fails when set -e is in force, so we need another command to
452 # work around that:
453 :
454 }
455
456 # func_echo_all arg...
457 # Invoke $ECHO with all args, space-separated.
458 func_echo_all ()
459 {
460 $ECHO "$*"
461 }
462
463 # func_error arg...
464 # Echo program name prefixed message to standard error.
465 func_error ()
466 {
467 $ECHO "$progname: ${opt_mode+$opt_mode: }"${1+"$@"} 1>&2
468 }
469
470 # func_warning arg...
471 # Echo program name prefixed warning message to standard error.
472 func_warning ()
473 {
474 $opt_warning && $ECHO "$progname: ${opt_mode+$opt_mode: }warning: "${1+"$@"} 1>&2
475
476 # bash bug again:
477 :
478 }
479
480 # func_fatal_error arg...
481 # Echo program name prefixed message to standard error, and exit.
482 func_fatal_error ()
483 {
484 func_error ${1+"$@"}
485 exit $EXIT_FAILURE
486 }
487
488 # func_fatal_help arg...
489 # Echo program name prefixed message to standard error, followed by
490 # a help hint, and exit.
491 func_fatal_help ()
492 {
493 func_error ${1+"$@"}
494 func_fatal_error "$help"
495 }
496 help="Try \`$progname --help' for more information." ## default
497
498
499 # func_grep expression filename
500 # Check whether EXPRESSION matches any line of FILENAME, without output.
501 func_grep ()
502 {
503 $GREP "$1" "$2" >/dev/null 2>&1
504 }
505
506
507 # func_mkdir_p directory-path
508 # Make sure the entire path to DIRECTORY-PATH is available.
509 func_mkdir_p ()
510 {
511 my_directory_path="$1"
512 my_dir_list=
513
514 if test -n "$my_directory_path" && test "$opt_dry_run" != ":"; then
515
516 # Protect directory names starting with `-'
517 case $my_directory_path in
518 -*) my_directory_path="./$my_directory_path" ;;
519 esac
520
521 # While some portion of DIR does not yet exist...
522 while test ! -d "$my_directory_path"; do
523 # ...make a list in topmost first order. Use a colon delimited
524 # list incase some portion of path contains whitespace.
525 my_dir_list="$my_directory_path:$my_dir_list"
526
527 # If the last portion added has no slash in it, the list is done
528 case $my_directory_path in */*) ;; *) break ;; esac
529
530 # ...otherwise throw away the child directory and loop
531 my_directory_path=`$ECHO "$my_directory_path" | $SED -e "$dirname"`
532 done
533 my_dir_list=`$ECHO "$my_dir_list" | $SED 's,:*$,,'`
534
535 save_mkdir_p_IFS="$IFS"; IFS=':'
536 for my_dir in $my_dir_list; do
537 IFS="$save_mkdir_p_IFS"
538 # mkdir can fail with a `File exist' error if two processes
539 # try to create one of the directories concurrently. Don't
540 # stop in that case!
541 $MKDIR "$my_dir" 2>/dev/null || :
542 done
543 IFS="$save_mkdir_p_IFS"
544
545 # Bail out if we (or some other process) failed to create a directory.
546 test -d "$my_directory_path" || \
547 func_fatal_error "Failed to create \`$1'"
548 fi
549 }
550
551
552 # func_mktempdir [string]
553 # Make a temporary directory that won't clash with other running
554 # libtool processes, and avoids race conditions if possible. If
555 # given, STRING is the basename for that directory.
556 func_mktempdir ()
557 {
558 my_template="${TMPDIR-/tmp}/${1-$progname}"
559
560 if test "$opt_dry_run" = ":"; then
561 # Return a directory name, but don't create it in dry-run mode
562 my_tmpdir="${my_template}-$$"
563 else
564
565 # If mktemp works, use that first and foremost
566 my_tmpdir=`mktemp -d "${my_template}-XXXXXXXX" 2>/dev/null`
567
568 if test ! -d "$my_tmpdir"; then
569 # Failing that, at least try and use $RANDOM to avoid a race
570 my_tmpdir="${my_template}-${RANDOM-0}$$"
571
572 save_mktempdir_umask=`umask`
573 umask 0077
574 $MKDIR "$my_tmpdir"
575 umask $save_mktempdir_umask
576 fi
577
578 # If we're not in dry-run mode, bomb out on failure
579 test -d "$my_tmpdir" || \
580 func_fatal_error "cannot create temporary directory \`$my_tmpdir'"
581 fi
582
583 $ECHO "$my_tmpdir"
584 }
585
586
587 # func_quote_for_eval arg
588 # Aesthetically quote ARG to be evaled later.
589 # This function returns two values: FUNC_QUOTE_FOR_EVAL_RESULT
590 # is double-quoted, suitable for a subsequent eval, whereas
591 # FUNC_QUOTE_FOR_EVAL_UNQUOTED_RESULT has merely all characters
592 # which are still active within double quotes backslashified.
593 func_quote_for_eval ()
594 {
595 case $1 in
596 *[\\\`\"\$]*)
597 func_quote_for_eval_unquoted_result=`$ECHO "$1" | $SED "$sed_quote_subst"` ;;
598 *)
599 func_quote_for_eval_unquoted_result="$1" ;;
600 esac
601
602 case $func_quote_for_eval_unquoted_result in
603 # Double-quote args containing shell metacharacters to delay
604 # word splitting, command substitution and and variable
605 # expansion for a subsequent eval.
606 # Many Bourne shells cannot handle close brackets correctly
607 # in scan sets, so we specify it separately.
608 *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"")
609 func_quote_for_eval_result="\"$func_quote_for_eval_unquoted_result\""
610 ;;
611 *)
612 func_quote_for_eval_result="$func_quote_for_eval_unquoted_result"
613 esac
614 }
615
616
617 # func_quote_for_expand arg
618 # Aesthetically quote ARG to be evaled later; same as above,
619 # but do not quote variable references.
620 func_quote_for_expand ()
621 {
622 case $1 in
623 *[\\\`\"]*)
624 my_arg=`$ECHO "$1" | $SED \
625 -e "$double_quote_subst" -e "$sed_double_backslash"` ;;
626 *)
627 my_arg="$1" ;;
628 esac
629
630 case $my_arg in
631 # Double-quote args containing shell metacharacters to delay
632 # word splitting and command substitution for a subsequent eval.
633 # Many Bourne shells cannot handle close brackets correctly
634 # in scan sets, so we specify it separately.
635 *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"")
636 my_arg="\"$my_arg\""
637 ;;
638 esac
639
640 func_quote_for_expand_result="$my_arg"
641 }
642
643
644 # func_show_eval cmd [fail_exp]
645 # Unless opt_silent is true, then output CMD. Then, if opt_dryrun is
646 # not true, evaluate CMD. If the evaluation of CMD fails, and FAIL_EXP
647 # is given, then evaluate it.
648 func_show_eval ()
649 {
650 my_cmd="$1"
651 my_fail_exp="${2-:}"
652
653 ${opt_silent-false} || {
654 func_quote_for_expand "$my_cmd"
655 eval "func_echo $func_quote_for_expand_result"
656 }
657
658 if ${opt_dry_run-false}; then :; else
659 eval "$my_cmd"
660 my_status=$?
661 if test "$my_status" -eq 0; then :; else
662 eval "(exit $my_status); $my_fail_exp"
663 fi
664 fi
665 }
666
667
668 # func_show_eval_locale cmd [fail_exp]
669 # Unless opt_silent is true, then output CMD. Then, if opt_dryrun is
670 # not true, evaluate CMD. If the evaluation of CMD fails, and FAIL_EXP
671 # is given, then evaluate it. Use the saved locale for evaluation.
672 func_show_eval_locale ()
673 {
674 my_cmd="$1"
675 my_fail_exp="${2-:}"
676
677 ${opt_silent-false} || {
678 func_quote_for_expand "$my_cmd"
679 eval "func_echo $func_quote_for_expand_result"
680 }
681
682 if ${opt_dry_run-false}; then :; else
683 eval "$lt_user_locale
684 $my_cmd"
685 my_status=$?
686 eval "$lt_safe_locale"
687 if test "$my_status" -eq 0; then :; else
688 eval "(exit $my_status); $my_fail_exp"
689 fi
690 fi
691 }
692
693 # func_tr_sh
694 # Turn $1 into a string suitable for a shell variable name.
695 # Result is stored in $func_tr_sh_result. All characters
696 # not in the set a-zA-Z0-9_ are replaced with '_'. Further,
697 # if $1 begins with a digit, a '_' is prepended as well.
698 func_tr_sh ()
699 {
700 case $1 in
701 [0-9]* | *[!a-zA-Z0-9_]*)
702 func_tr_sh_result=`$ECHO "$1" | $SED 's/^\([0-9]\)/_\1/; s/[^a-zA-Z0-9_]/_/g'`
703 ;;
704 * )
705 func_tr_sh_result=$1
706 ;;
707 esac
708 }
709
710
711 # func_version
712 # Echo version message to standard output and exit.
713 func_version ()
714 {
715 $opt_debug
716
717 $SED -n '/(C)/!b go
718 :more
719 /\./!{
720 N
721 s/\n# / /
722 b more
723 }
724 :go
725 /^# '$PROGRAM' (GNU /,/# warranty; / {
726 s/^# //
727 s/^# *$//
728 s/\((C)\)[ 0-9,-]*\( [1-9][0-9]*\)/\1\2/
729 p
730 }' < "$progpath"
731 exit $?
732 }
733
734 # func_usage
735 # Echo short help message to standard output and exit.
736 func_usage ()
737 {
738 $opt_debug
739
740 $SED -n '/^# Usage:/,/^# *.*--help/ {
741 s/^# //
742 s/^# *$//
743 s/\$progname/'$progname'/
744 p
745 }' < "$progpath"
746 echo
747 $ECHO "run \`$progname --help | more' for full usage"
748 exit $?
749 }
750
751 # func_help [NOEXIT]
752 # Echo long help message to standard output and exit,
753 # unless 'noexit' is passed as argument.
754 func_help ()
755 {
756 $opt_debug
757
758 $SED -n '/^# Usage:/,/# Report bugs to/ {
759 :print
760 s/^# //
761 s/^# *$//
762 s*\$progname*'$progname'*
763 s*\$host*'"$host"'*
764 s*\$SHELL*'"$SHELL"'*
765 s*\$LTCC*'"$LTCC"'*
766 s*\$LTCFLAGS*'"$LTCFLAGS"'*
767 s*\$LD*'"$LD"'*
768 s/\$with_gnu_ld/'"$with_gnu_ld"'/
769 s/\$automake_version/'"`(${AUTOMAKE-automake} --version) 2>/dev/null |$SED 1q`"'/
770 s/\$autoconf_version/'"`(${AUTOCONF-autoconf} --version) 2>/dev/null |$SED 1q`"'/
771 p
772 d
773 }
774 /^# .* home page:/b print
775 /^# General help using/b print
776 ' < "$progpath"
777 ret=$?
778 if test -z "$1"; then
779 exit $ret
780 fi
781 }
782
783 # func_missing_arg argname
784 # Echo program name prefixed message to standard error and set global
785 # exit_cmd.
786 func_missing_arg ()
787 {
788 $opt_debug
789
790 func_error "missing argument for $1."
791 exit_cmd=exit
792 }
793
794
795 # func_split_short_opt shortopt
796 # Set func_split_short_opt_name and func_split_short_opt_arg shell
797 # variables after splitting SHORTOPT after the 2nd character.
798 func_split_short_opt ()
799 {
800 my_sed_short_opt='1s/^\(..\).*$/\1/;q'
801 my_sed_short_rest='1s/^..\(.*\)$/\1/;q'
802
803 func_split_short_opt_name=`$ECHO "$1" | $SED "$my_sed_short_opt"`
804 func_split_short_opt_arg=`$ECHO "$1" | $SED "$my_sed_short_rest"`
805 } # func_split_short_opt may be replaced by extended shell implementation
806
807
808 # func_split_long_opt longopt
809 # Set func_split_long_opt_name and func_split_long_opt_arg shell
810 # variables after splitting LONGOPT at the `=' sign.
811 func_split_long_opt ()
812 {
813 my_sed_long_opt='1s/^\(--[^=]*\)=.*/\1/;q'
814 my_sed_long_arg='1s/^--[^=]*=//'
815
816 func_split_long_opt_name=`$ECHO "$1" | $SED "$my_sed_long_opt"`
817 func_split_long_opt_arg=`$ECHO "$1" | $SED "$my_sed_long_arg"`
818 } # func_split_long_opt may be replaced by extended shell implementation
819
820 exit_cmd=:
821
822
823
824
825
826 magic="%%%MAGIC variable%%%"
827 magic_exe="%%%MAGIC EXE variable%%%"
828
829 # Global variables.
830 nonopt=
831 preserve_args=
832 lo2o="s/\\.lo\$/.${objext}/"
833 o2lo="s/\\.${objext}\$/.lo/"
834 extracted_archives=
835 extracted_serial=0
836
837 # If this variable is set in any of the actions, the command in it
838 # will be execed at the end. This prevents here-documents from being
839 # left over by shells.
840 exec_cmd=
841
842 # func_append var value
843 # Append VALUE to the end of shell variable VAR.
844 func_append ()
845 {
846 eval "${1}=\$${1}\${2}"
847 } # func_append may be replaced by extended shell implementation
848
849 # func_append_quoted var value
850 # Quote VALUE and append to the end of shell variable VAR, separated
851 # by a space.
852 func_append_quoted ()
853 {
854 func_quote_for_eval "${2}"
855 eval "${1}=\$${1}\\ \$func_quote_for_eval_result"
856 } # func_append_quoted may be replaced by extended shell implementation
857
858
859 # func_arith arithmetic-term...
860 func_arith ()
861 {
862 func_arith_result=`expr "${@}"`
863 } # func_arith may be replaced by extended shell implementation
864
865
866 # func_len string
867 # STRING may not start with a hyphen.
868 func_len ()
869 {
870 func_len_result=`expr "${1}" : ".*" 2>/dev/null || echo $max_cmd_len`
871 } # func_len may be replaced by extended shell implementation
872
873
874 # func_lo2o object
875 func_lo2o ()
876 {
877 func_lo2o_result=`$ECHO "${1}" | $SED "$lo2o"`
878 } # func_lo2o may be replaced by extended shell implementation
879
880
881 # func_xform libobj-or-source
882 func_xform ()
883 {
884 func_xform_result=`$ECHO "${1}" | $SED 's/\.[^.]*$/.lo/'`
885 } # func_xform may be replaced by extended shell implementation
886
887
888 # func_fatal_configuration arg...
889 # Echo program name prefixed message to standard error, followed by
890 # a configuration failure hint, and exit.
891 func_fatal_configuration ()
892 {
893 func_error ${1+"$@"}
894 func_error "See the $PACKAGE documentation for more information."
895 func_fatal_error "Fatal configuration error."
896 }
897
898
899 # func_config
900 # Display the configuration for all the tags in this script.
901 func_config ()
902 {
903 re_begincf='^# ### BEGIN LIBTOOL'
904 re_endcf='^# ### END LIBTOOL'
905
906 # Default configuration.
907 $SED "1,/$re_begincf CONFIG/d;/$re_endcf CONFIG/,\$d" < "$progpath"
908
909 # Now print the configurations for the tags.
910 for tagname in $taglist; do
911 $SED -n "/$re_begincf TAG CONFIG: $tagname\$/,/$re_endcf TAG CONFIG: $tagname\$/p" < "$progpath"
912 done
913
914 exit $?
915 }
916
917 # func_features
918 # Display the features supported by this script.
919 func_features ()
920 {
921 echo "host: $host"
922 if test "$build_libtool_libs" = yes; then
923 echo "enable shared libraries"
924 else
925 echo "disable shared libraries"
926 fi
927 if test "$build_old_libs" = yes; then
928 echo "enable static libraries"
929 else
930 echo "disable static libraries"
931 fi
932
933 exit $?
934 }
935
936 # func_enable_tag tagname
937 # Verify that TAGNAME is valid, and either flag an error and exit, or
938 # enable the TAGNAME tag. We also add TAGNAME to the global $taglist
939 # variable here.
940 func_enable_tag ()
941 {
942 # Global variable:
943 tagname="$1"
944
945 re_begincf="^# ### BEGIN LIBTOOL TAG CONFIG: $tagname\$"
946 re_endcf="^# ### END LIBTOOL TAG CONFIG: $tagname\$"
947 sed_extractcf="/$re_begincf/,/$re_endcf/p"
948
949 # Validate tagname.
950 case $tagname in
951 *[!-_A-Za-z0-9,/]*)
952 func_fatal_error "invalid tag name: $tagname"
953 ;;
954 esac
955
956 # Don't test for the "default" C tag, as we know it's
957 # there but not specially marked.
958 case $tagname in
959 CC) ;;
960 *)
961 if $GREP "$re_begincf" "$progpath" >/dev/null 2>&1; then
962 taglist="$taglist $tagname"
963
964 # Evaluate the configuration. Be careful to quote the path
965 # and the sed script, to avoid splitting on whitespace, but
966 # also don't use non-portable quotes within backquotes within
967 # quotes we have to do it in 2 steps:
968 extractedcf=`$SED -n -e "$sed_extractcf" < "$progpath"`
969 eval "$extractedcf"
970 else
971 func_error "ignoring unknown tag $tagname"
972 fi
973 ;;
974 esac
975 }
976
977 # func_check_version_match
978 # Ensure that we are using m4 macros, and libtool script from the same
979 # release of libtool.
980 func_check_version_match ()
981 {
982 if test "$package_revision" != "$macro_revision"; then
983 if test "$VERSION" != "$macro_version"; then
984 if test -z "$macro_version"; then
985 cat >&2 <<_LT_EOF
986 $progname: Version mismatch error. This is $PACKAGE $VERSION, but the
987 $progname: definition of this LT_INIT comes from an older release.
988 $progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION
989 $progname: and run autoconf again.
990 _LT_EOF
991 else
992 cat >&2 <<_LT_EOF
993 $progname: Version mismatch error. This is $PACKAGE $VERSION, but the
994 $progname: definition of this LT_INIT comes from $PACKAGE $macro_version.
995 $progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION
996 $progname: and run autoconf again.
997 _LT_EOF
998 fi
999 else
1000 cat >&2 <<_LT_EOF
1001 $progname: Version mismatch error. This is $PACKAGE $VERSION, revision $package_revision,
1002 $progname: but the definition of this LT_INIT comes from revision $macro_revision.
1003 $progname: You should recreate aclocal.m4 with macros from revision $package_revision
1004 $progname: of $PACKAGE $VERSION and run autoconf again.
1005 _LT_EOF
1006 fi
1007
1008 exit $EXIT_MISMATCH
1009 fi
1010 }
1011
1012
1013 # Shorthand for --mode=foo, only valid as the first argument
1014 case $1 in
1015 clean|clea|cle|cl)
1016 shift; set dummy --mode clean ${1+"$@"}; shift
1017 ;;
1018 compile|compil|compi|comp|com|co|c)
1019 shift; set dummy --mode compile ${1+"$@"}; shift
1020 ;;
1021 execute|execut|execu|exec|exe|ex|e)
1022 shift; set dummy --mode execute ${1+"$@"}; shift
1023 ;;
1024 finish|finis|fini|fin|fi|f)
1025 shift; set dummy --mode finish ${1+"$@"}; shift
1026 ;;
1027 install|instal|insta|inst|ins|in|i)
1028 shift; set dummy --mode install ${1+"$@"}; shift
1029 ;;
1030 link|lin|li|l)
1031 shift; set dummy --mode link ${1+"$@"}; shift
1032 ;;
1033 uninstall|uninstal|uninsta|uninst|unins|unin|uni|un|u)
1034 shift; set dummy --mode uninstall ${1+"$@"}; shift
1035 ;;
1036 esac
1037
1038
1039
1040 # Option defaults:
1041 opt_debug=:
1042 opt_dry_run=false
1043 opt_config=false
1044 opt_preserve_dup_deps=false
1045 opt_features=false
1046 opt_finish=false
1047 opt_help=false
1048 opt_help_all=false
1049 opt_silent=:
1050 opt_warning=:
1051 opt_verbose=:
1052 opt_silent=false
1053 opt_verbose=false
1054
1055
1056 # Parse options once, thoroughly. This comes as soon as possible in the
1057 # script to make things like `--version' happen as quickly as we can.
1058 {
1059 # this just eases exit handling
1060 while test $# -gt 0; do
1061 opt="$1"
1062 shift
1063 case $opt in
1064 --debug|-x) opt_debug='set -x'
1065 func_echo "enabling shell trace mode"
1066 $opt_debug
1067 ;;
1068 --dry-run|--dryrun|-n)
1069 opt_dry_run=:
1070 ;;
1071 --config)
1072 opt_config=:
1073 func_config
1074 ;;
1075 --dlopen|-dlopen)
1076 optarg="$1"
1077 opt_dlopen="${opt_dlopen+$opt_dlopen
1078 }$optarg"
1079 shift
1080 ;;
1081 --preserve-dup-deps)
1082 opt_preserve_dup_deps=:
1083 ;;
1084 --features)
1085 opt_features=:
1086 func_features
1087 ;;
1088 --finish)
1089 opt_finish=:
1090 set dummy --mode finish ${1+"$@"}; shift
1091 ;;
1092 --help)
1093 opt_help=:
1094 ;;
1095 --help-all)
1096 opt_help_all=:
1097 opt_help=': help-all'
1098 ;;
1099 --mode)
1100 test $# = 0 && func_missing_arg $opt && break
1101 optarg="$1"
1102 opt_mode="$optarg"
1103 case $optarg in
1104 # Valid mode arguments:
1105 clean|compile|execute|finish|install|link|relink|uninstall) ;;
1106
1107 # Catch anything else as an error
1108 *) func_error "invalid argument for $opt"
1109 exit_cmd=exit
1110 break
1111 ;;
1112 esac
1113 shift
1114 ;;
1115 --no-silent|--no-quiet)
1116 opt_silent=false
1117 func_append preserve_args " $opt"
1118 ;;
1119 --no-warning|--no-warn)
1120 opt_warning=false
1121 func_append preserve_args " $opt"
1122 ;;
1123 --no-verbose)
1124 opt_verbose=false
1125 func_append preserve_args " $opt"
1126 ;;
1127 --silent|--quiet)
1128 opt_silent=:
1129 func_append preserve_args " $opt"
1130 opt_verbose=false
1131 ;;
1132 --verbose|-v)
1133 opt_verbose=:
1134 func_append preserve_args " $opt"
1135 opt_silent=false
1136 ;;
1137 --tag)
1138 test $# = 0 && func_missing_arg $opt && break
1139 optarg="$1"
1140 opt_tag="$optarg"
1141 func_append preserve_args " $opt $optarg"
1142 func_enable_tag "$optarg"
1143 shift
1144 ;;
1145
1146 -\?|-h) func_usage ;;
1147 --help) func_help ;;
1148 --version) func_version ;;
1149
1150 # Separate optargs to long options:
1151 --*=*)
1152 func_split_long_opt "$opt"
1153 set dummy "$func_split_long_opt_name" "$func_split_long_opt_arg" ${1+"$@"}
1154 shift
1155 ;;
1156
1157 # Separate non-argument short options:
1158 -\?*|-h*|-n*|-v*)
1159 func_split_short_opt "$opt"
1160 set dummy "$func_split_short_opt_name" "-$func_split_short_opt_arg" ${1+"$@"}
1161 shift
1162 ;;
1163
1164 --) break ;;
1165 -*) func_fatal_help "unrecognized option \`$opt'" ;;
1166 *) set dummy "$opt" ${1+"$@"}; shift; break ;;
1167 esac
1168 done
1169
1170 # Validate options:
1171
1172 # save first non-option argument
1173 if test "$#" -gt 0; then
1174 nonopt="$opt"
1175 shift
1176 fi
1177
1178 # preserve --debug
1179 test "$opt_debug" = : || func_append preserve_args " --debug"
1180
1181 case $host in
1182 *cygwin* | *mingw* | *pw32* | *cegcc*)
1183 # don't eliminate duplications in $postdeps and $predeps
1184 opt_duplicate_compiler_generated_deps=:
1185 ;;
1186 *)
1187 opt_duplicate_compiler_generated_deps=$opt_preserve_dup_deps
1188 ;;
1189 esac
1190
1191 $opt_help || {
1192 # Sanity checks first:
1193 func_check_version_match
1194
1195 if test "$build_libtool_libs" != yes && test "$build_old_libs" != yes; then
1196 func_fatal_configuration "not configured to build any kind of library"
1197 fi
1198
1199 # Darwin sucks
1200 eval std_shrext=\"$shrext_cmds\"
1201
1202 # Only execute mode is allowed to have -dlopen flags.
1203 if test -n "$opt_dlopen" && test "$opt_mode" != execute; then
1204 func_error "unrecognized option \`-dlopen'"
1205 $ECHO "$help" 1>&2
1206 exit $EXIT_FAILURE
1207 fi
1208
1209 # Change the help message to a mode-specific one.
1210 generic_help="$help"
1211 help="Try \`$progname --help --mode=$opt_mode' for more information."
1212 }
1213
1214
1215 # Bail if the options were screwed
1216 $exit_cmd $EXIT_FAILURE
1217 }
1218
1219
1220
1221
1222 ## ----------- ##
1223 ## Main. ##
1224 ## ----------- ##
1225
1226 # func_lalib_p file
1227 # True iff FILE is a libtool `.la' library or `.lo' object file.
1228 # This function is only a basic sanity check; it will hardly flush out
1229 # determined imposters.
1230 func_lalib_p ()
1231 {
1232 test -f "$1" &&
1233 $SED -e 4q "$1" 2>/dev/null \
1234 | $GREP "^# Generated by .*$PACKAGE" > /dev/null 2>&1
1235 }
1236
1237 # func_lalib_unsafe_p file
1238 # True iff FILE is a libtool `.la' library or `.lo' object file.
1239 # This function implements the same check as func_lalib_p without
1240 # resorting to external programs. To this end, it redirects stdin and
1241 # closes it afterwards, without saving the original file descriptor.
1242 # As a safety measure, use it only where a negative result would be
1243 # fatal anyway. Works if `file' does not exist.
1244 func_lalib_unsafe_p ()
1245 {
1246 lalib_p=no
1247 if test -f "$1" && test -r "$1" && exec 5<&0 <"$1"; then
1248 for lalib_p_l in 1 2 3 4
1249 do
1250 read lalib_p_line
1251 case "$lalib_p_line" in
1252 \#\ Generated\ by\ *$PACKAGE* ) lalib_p=yes; break;;
1253 esac
1254 done
1255 exec 0<&5 5<&-
1256 fi
1257 test "$lalib_p" = yes
1258 }
1259
1260 # func_ltwrapper_script_p file
1261 # True iff FILE is a libtool wrapper script
1262 # This function is only a basic sanity check; it will hardly flush out
1263 # determined imposters.
1264 func_ltwrapper_script_p ()
1265 {
1266 func_lalib_p "$1"
1267 }
1268
1269 # func_ltwrapper_executable_p file
1270 # True iff FILE is a libtool wrapper executable
1271 # This function is only a basic sanity check; it will hardly flush out
1272 # determined imposters.
1273 func_ltwrapper_executable_p ()
1274 {
1275 func_ltwrapper_exec_suffix=
1276 case $1 in
1277 *.exe) ;;
1278 *) func_ltwrapper_exec_suffix=.exe ;;
1279 esac
1280 $GREP "$magic_exe" "$1$func_ltwrapper_exec_suffix" >/dev/null 2>&1
1281 }
1282
1283 # func_ltwrapper_scriptname file
1284 # Assumes file is an ltwrapper_executable
1285 # uses $file to determine the appropriate filename for a
1286 # temporary ltwrapper_script.
1287 func_ltwrapper_scriptname ()
1288 {
1289 func_dirname_and_basename "$1" "" "."
1290 func_stripname '' '.exe' "$func_basename_result"
1291 func_ltwrapper_scriptname_result="$func_dirname_result/$objdir/${func_stripname_result}_ltshwrapper"
1292 }
1293
1294 # func_ltwrapper_p file
1295 # True iff FILE is a libtool wrapper script or wrapper executable
1296 # This function is only a basic sanity check; it will hardly flush out
1297 # determined imposters.
1298 func_ltwrapper_p ()
1299 {
1300 func_ltwrapper_script_p "$1" || func_ltwrapper_executable_p "$1"
1301 }
1302
1303
1304 # func_execute_cmds commands fail_cmd
1305 # Execute tilde-delimited COMMANDS.
1306 # If FAIL_CMD is given, eval that upon failure.
1307 # FAIL_CMD may read-access the current command in variable CMD!
1308 func_execute_cmds ()
1309 {
1310 $opt_debug
1311 save_ifs=$IFS; IFS='~'
1312 for cmd in $1; do
1313 IFS=$save_ifs
1314 eval cmd=\"$cmd\"
1315 func_show_eval "$cmd" "${2-:}"
1316 done
1317 IFS=$save_ifs
1318 }
1319
1320
1321 # func_source file
1322 # Source FILE, adding directory component if necessary.
1323 # Note that it is not necessary on cygwin/mingw to append a dot to
1324 # FILE even if both FILE and FILE.exe exist: automatic-append-.exe
1325 # behavior happens only for exec(3), not for open(2)! Also, sourcing
1326 # `FILE.' does not work on cygwin managed mounts.
1327 func_source ()
1328 {
1329 $opt_debug
1330 case $1 in
1331 */* | *\\*) . "$1" ;;
1332 *) . "./$1" ;;
1333 esac
1334 }
1335
1336
1337 # func_resolve_sysroot PATH
1338 # Replace a leading = in PATH with a sysroot. Store the result into
1339 # func_resolve_sysroot_result
1340 func_resolve_sysroot ()
1341 {
1342 func_resolve_sysroot_result=$1
1343 case $func_resolve_sysroot_result in
1344 =*)
1345 func_stripname '=' '' "$func_resolve_sysroot_result"
1346 func_resolve_sysroot_result=$lt_sysroot$func_stripname_result
1347 ;;
1348 esac
1349 }
1350
1351 # func_replace_sysroot PATH
1352 # If PATH begins with the sysroot, replace it with = and
1353 # store the result into func_replace_sysroot_result.
1354 func_replace_sysroot ()
1355 {
1356 case "$lt_sysroot:$1" in
1357 ?*:"$lt_sysroot"*)
1358 func_stripname "$lt_sysroot" '' "$1"
1359 func_replace_sysroot_result="=$func_stripname_result"
1360 ;;
1361 *)
1362 # Including no sysroot.
1363 func_replace_sysroot_result=$1
1364 ;;
1365 esac
1366 }
1367
1368 # func_infer_tag arg
1369 # Infer tagged configuration to use if any are available and
1370 # if one wasn't chosen via the "--tag" command line option.
1371 # Only attempt this if the compiler in the base compile
1372 # command doesn't match the default compiler.
1373 # arg is usually of the form 'gcc ...'
1374 func_infer_tag ()
1375 {
1376 $opt_debug
1377 if test -n "$available_tags" && test -z "$tagname"; then
1378 CC_quoted=
1379 for arg in $CC; do
1380 func_append_quoted CC_quoted "$arg"
1381 done
1382 CC_expanded=`func_echo_all $CC`
1383 CC_quoted_expanded=`func_echo_all $CC_quoted`
1384 case $@ in
1385 # Blanks in the command may have been stripped by the calling shell,
1386 # but not from the CC environment variable when configure was run.
1387 " $CC "* | "$CC "* | " $CC_expanded "* | "$CC_expanded "* | \
1388 " $CC_quoted"* | "$CC_quoted "* | " $CC_quoted_expanded "* | "$CC_quoted_expanded "*) ;;
1389 # Blanks at the start of $base_compile will cause this to fail
1390 # if we don't check for them as well.
1391 *)
1392 for z in $available_tags; do
1393 if $GREP "^# ### BEGIN LIBTOOL TAG CONFIG: $z$" < "$progpath" > /dev/null; then
1394 # Evaluate the configuration.
1395 eval "`${SED} -n -e '/^# ### BEGIN LIBTOOL TAG CONFIG: '$z'$/,/^# ### END LIBTOOL TAG CONFIG: '$z'$/p' < $progpath`"
1396 CC_quoted=
1397 for arg in $CC; do
1398 # Double-quote args containing other shell metacharacters.
1399 func_append_quoted CC_quoted "$arg"
1400 done
1401 CC_expanded=`func_echo_all $CC`
1402 CC_quoted_expanded=`func_echo_all $CC_quoted`
1403 case "$@ " in
1404 " $CC "* | "$CC "* | " $CC_expanded "* | "$CC_expanded "* | \
1405 " $CC_quoted"* | "$CC_quoted "* | " $CC_quoted_expanded "* | "$CC_quoted_expanded "*)
1406 # The compiler in the base compile command matches
1407 # the one in the tagged configuration.
1408 # Assume this is the tagged configuration we want.
1409 tagname=$z
1410 break
1411 ;;
1412 esac
1413 fi
1414 done
1415 # If $tagname still isn't set, then no tagged configuration
1416 # was found and let the user know that the "--tag" command
1417 # line option must be used.
1418 if test -z "$tagname"; then
1419 func_echo "unable to infer tagged configuration"
1420 func_fatal_error "specify a tag with \`--tag'"
1421 # else
1422 # func_verbose "using $tagname tagged configuration"
1423 fi
1424 ;;
1425 esac
1426 fi
1427 }
1428
1429
1430
1431 # func_write_libtool_object output_name pic_name nonpic_name
1432 # Create a libtool object file (analogous to a ".la" file),
1433 # but don't create it if we're doing a dry run.
1434 func_write_libtool_object ()
1435 {
1436 write_libobj=${1}
1437 if test "$build_libtool_libs" = yes; then
1438 write_lobj=\'${2}\'
1439 else
1440 write_lobj=none
1441 fi
1442
1443 if test "$build_old_libs" = yes; then
1444 write_oldobj=\'${3}\'
1445 else
1446 write_oldobj=none
1447 fi
1448
1449 $opt_dry_run || {
1450 cat >${write_libobj}T <<EOF
1451 # $write_libobj - a libtool object file
1452 # Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION
1453 #
1454 # Please DO NOT delete this file!
1455 # It is necessary for linking the library.
1456
1457 # Name of the PIC object.
1458 pic_object=$write_lobj
1459
1460 # Name of the non-PIC object
1461 non_pic_object=$write_oldobj
1462
1463 EOF
1464 $MV "${write_libobj}T" "${write_libobj}"
1465 }
1466 }
1467
1468
1469 ##################################################
1470 # FILE NAME AND PATH CONVERSION HELPER FUNCTIONS #
1471 ##################################################
1472
1473 # func_convert_core_file_wine_to_w32 ARG
1474 # Helper function used by file name conversion functions when $build is *nix,
1475 # and $host is mingw, cygwin, or some other w32 environment. Relies on a
1476 # correctly configured wine environment available, with the winepath program
1477 # in $build's $PATH.
1478 #
1479 # ARG is the $build file name to be converted to w32 format.
1480 # Result is available in $func_convert_core_file_wine_to_w32_result, and will
1481 # be empty on error (or when ARG is empty)
1482 func_convert_core_file_wine_to_w32 ()
1483 {
1484 $opt_debug
1485 func_convert_core_file_wine_to_w32_result="$1"
1486 if test -n "$1"; then
1487 # Unfortunately, winepath does not exit with a non-zero error code, so we
1488 # are forced to check the contents of stdout. On the other hand, if the
1489 # command is not found, the shell will set an exit code of 127 and print
1490 # *an error message* to stdout. So we must check for both error code of
1491 # zero AND non-empty stdout, which explains the odd construction:
1492 func_convert_core_file_wine_to_w32_tmp=`winepath -w "$1" 2>/dev/null`
1493 if test "$?" -eq 0 && test -n "${func_convert_core_file_wine_to_w32_tmp}"; then
1494 func_convert_core_file_wine_to_w32_result=`$ECHO "$func_convert_core_file_wine_to_w32_tmp" |
1495 $SED -e "$lt_sed_naive_backslashify"`
1496 else
1497 func_convert_core_file_wine_to_w32_result=
1498 fi
1499 fi
1500 }
1501 # end: func_convert_core_file_wine_to_w32
1502
1503
1504 # func_convert_core_path_wine_to_w32 ARG
1505 # Helper function used by path conversion functions when $build is *nix, and
1506 # $host is mingw, cygwin, or some other w32 environment. Relies on a correctly
1507 # configured wine environment available, with the winepath program in $build's
1508 # $PATH. Assumes ARG has no leading or trailing path separator characters.
1509 #
1510 # ARG is path to be converted from $build format to win32.
1511 # Result is available in $func_convert_core_path_wine_to_w32_result.
1512 # Unconvertible file (directory) names in ARG are skipped; if no directory names
1513 # are convertible, then the result may be empty.
1514 func_convert_core_path_wine_to_w32 ()
1515 {
1516 $opt_debug
1517 # unfortunately, winepath doesn't convert paths, only file names
1518 func_convert_core_path_wine_to_w32_result=""
1519 if test -n "$1"; then
1520 oldIFS=$IFS
1521 IFS=:
1522 for func_convert_core_path_wine_to_w32_f in $1; do
1523 IFS=$oldIFS
1524 func_convert_core_file_wine_to_w32 "$func_convert_core_path_wine_to_w32_f"
1525 if test -n "$func_convert_core_file_wine_to_w32_result" ; then
1526 if test -z "$func_convert_core_path_wine_to_w32_result"; then
1527 func_convert_core_path_wine_to_w32_result="$func_convert_core_file_wine_to_w32_result"
1528 else
1529 func_append func_convert_core_path_wine_to_w32_result ";$func_convert_core_file_wine_to_w32_result"
1530 fi
1531 fi
1532 done
1533 IFS=$oldIFS
1534 fi
1535 }
1536 # end: func_convert_core_path_wine_to_w32
1537
1538
1539 # func_cygpath ARGS...
1540 # Wrapper around calling the cygpath program via LT_CYGPATH. This is used when
1541 # when (1) $build is *nix and Cygwin is hosted via a wine environment; or (2)
1542 # $build is MSYS and $host is Cygwin, or (3) $build is Cygwin. In case (1) or
1543 # (2), returns the Cygwin file name or path in func_cygpath_result (input
1544 # file name or path is assumed to be in w32 format, as previously converted
1545 # from $build's *nix or MSYS format). In case (3), returns the w32 file name
1546 # or path in func_cygpath_result (input file name or path is assumed to be in
1547 # Cygwin format). Returns an empty string on error.
1548 #
1549 # ARGS are passed to cygpath, with the last one being the file name or path to
1550 # be converted.
1551 #
1552 # Specify the absolute *nix (or w32) name to cygpath in the LT_CYGPATH
1553 # environment variable; do not put it in $PATH.
1554 func_cygpath ()
1555 {
1556 $opt_debug
1557 if test -n "$LT_CYGPATH" && test -f "$LT_CYGPATH"; then
1558 func_cygpath_result=`$LT_CYGPATH "$@" 2>/dev/null`
1559 if test "$?" -ne 0; then
1560 # on failure, ensure result is empty
1561 func_cygpath_result=
1562 fi
1563 else
1564 func_cygpath_result=
1565 func_error "LT_CYGPATH is empty or specifies non-existent file: \`$LT_CYGPATH'"
1566 fi
1567 }
1568 #end: func_cygpath
1569
1570
1571 # func_convert_core_msys_to_w32 ARG
1572 # Convert file name or path ARG from MSYS format to w32 format. Return
1573 # result in func_convert_core_msys_to_w32_result.
1574 func_convert_core_msys_to_w32 ()
1575 {
1576 $opt_debug
1577 # awkward: cmd appends spaces to result
1578 func_convert_core_msys_to_w32_result=`( cmd //c echo "$1" ) 2>/dev/null |
1579 $SED -e 's/[ ]*$//' -e "$lt_sed_naive_backslashify"`
1580 }
1581 #end: func_convert_core_msys_to_w32
1582
1583
1584 # func_convert_file_check ARG1 ARG2
1585 # Verify that ARG1 (a file name in $build format) was converted to $host
1586 # format in ARG2. Otherwise, emit an error message, but continue (resetting
1587 # func_to_host_file_result to ARG1).
1588 func_convert_file_check ()
1589 {
1590 $opt_debug
1591 if test -z "$2" && test -n "$1" ; then
1592 func_error "Could not determine host file name corresponding to"
1593 func_error " \`$1'"
1594 func_error "Continuing, but uninstalled executables may not work."
1595 # Fallback:
1596 func_to_host_file_result="$1"
1597 fi
1598 }
1599 # end func_convert_file_check
1600
1601
1602 # func_convert_path_check FROM_PATHSEP TO_PATHSEP FROM_PATH TO_PATH
1603 # Verify that FROM_PATH (a path in $build format) was converted to $host
1604 # format in TO_PATH. Otherwise, emit an error message, but continue, resetting
1605 # func_to_host_file_result to a simplistic fallback value (see below).
1606 func_convert_path_check ()
1607 {
1608 $opt_debug
1609 if test -z "$4" && test -n "$3"; then
1610 func_error "Could not determine the host path corresponding to"
1611 func_error " \`$3'"
1612 func_error "Continuing, but uninstalled executables may not work."
1613 # Fallback. This is a deliberately simplistic "conversion" and
1614 # should not be "improved". See libtool.info.
1615 if test "x$1" != "x$2"; then
1616 lt_replace_pathsep_chars="s|$1|$2|g"
1617 func_to_host_path_result=`echo "$3" |
1618 $SED -e "$lt_replace_pathsep_chars"`
1619 else
1620 func_to_host_path_result="$3"
1621 fi
1622 fi
1623 }
1624 # end func_convert_path_check
1625
1626
1627 # func_convert_path_front_back_pathsep FRONTPAT BACKPAT REPL ORIG
1628 # Modifies func_to_host_path_result by prepending REPL if ORIG matches FRONTPAT
1629 # and appending REPL if ORIG matches BACKPAT.
1630 func_convert_path_front_back_pathsep ()
1631 {
1632 $opt_debug
1633 case $4 in
1634 $1 ) func_to_host_path_result="$3$func_to_host_path_result"
1635 ;;
1636 esac
1637 case $4 in
1638 $2 ) func_append func_to_host_path_result "$3"
1639 ;;
1640 esac
1641 }
1642 # end func_convert_path_front_back_pathsep
1643
1644
1645 ##################################################
1646 # $build to $host FILE NAME CONVERSION FUNCTIONS #
1647 ##################################################
1648 # invoked via `$to_host_file_cmd ARG'
1649 #
1650 # In each case, ARG is the path to be converted from $build to $host format.
1651 # Result will be available in $func_to_host_file_result.
1652
1653
1654 # func_to_host_file ARG
1655 # Converts the file name ARG from $build format to $host format. Return result
1656 # in func_to_host_file_result.
1657 func_to_host_file ()
1658 {
1659 $opt_debug
1660 $to_host_file_cmd "$1"
1661 }
1662 # end func_to_host_file
1663
1664
1665 # func_to_tool_file ARG LAZY
1666 # converts the file name ARG from $build format to toolchain format. Return
1667 # result in func_to_tool_file_result. If the conversion in use is listed
1668 # in (the comma separated) LAZY, no conversion takes place.
1669 func_to_tool_file ()
1670 {
1671 $opt_debug
1672 case ,$2, in
1673 *,"$to_tool_file_cmd",*)
1674 func_to_tool_file_result=$1
1675 ;;
1676 *)
1677 $to_tool_file_cmd "$1"
1678 func_to_tool_file_result=$func_to_host_file_result
1679 ;;
1680 esac
1681 }
1682 # end func_to_tool_file
1683
1684
1685 # func_convert_file_noop ARG
1686 # Copy ARG to func_to_host_file_result.
1687 func_convert_file_noop ()
1688 {
1689 func_to_host_file_result="$1"
1690 }
1691 # end func_convert_file_noop
1692
1693
1694 # func_convert_file_msys_to_w32 ARG
1695 # Convert file name ARG from (mingw) MSYS to (mingw) w32 format; automatic
1696 # conversion to w32 is not available inside the cwrapper. Returns result in
1697 # func_to_host_file_result.
1698 func_convert_file_msys_to_w32 ()
1699 {
1700 $opt_debug
1701 func_to_host_file_result="$1"
1702 if test -n "$1"; then
1703 func_convert_core_msys_to_w32 "$1"
1704 func_to_host_file_result="$func_convert_core_msys_to_w32_result"
1705 fi
1706 func_convert_file_check "$1" "$func_to_host_file_result"
1707 }
1708 # end func_convert_file_msys_to_w32
1709
1710
1711 # func_convert_file_cygwin_to_w32 ARG
1712 # Convert file name ARG from Cygwin to w32 format. Returns result in
1713 # func_to_host_file_result.
1714 func_convert_file_cygwin_to_w32 ()
1715 {
1716 $opt_debug
1717 func_to_host_file_result="$1"
1718 if test -n "$1"; then
1719 # because $build is cygwin, we call "the" cygpath in $PATH; no need to use
1720 # LT_CYGPATH in this case.
1721 func_to_host_file_result=`cygpath -m "$1"`
1722 fi
1723 func_convert_file_check "$1" "$func_to_host_file_result"
1724 }
1725 # end func_convert_file_cygwin_to_w32
1726
1727
1728 # func_convert_file_nix_to_w32 ARG
1729 # Convert file name ARG from *nix to w32 format. Requires a wine environment
1730 # and a working winepath. Returns result in func_to_host_file_result.
1731 func_convert_file_nix_to_w32 ()
1732 {
1733 $opt_debug
1734 func_to_host_file_result="$1"
1735 if test -n "$1"; then
1736 func_convert_core_file_wine_to_w32 "$1"
1737 func_to_host_file_result="$func_convert_core_file_wine_to_w32_result"
1738 fi
1739 func_convert_file_check "$1" "$func_to_host_file_result"
1740 }
1741 # end func_convert_file_nix_to_w32
1742
1743
1744 # func_convert_file_msys_to_cygwin ARG
1745 # Convert file name ARG from MSYS to Cygwin format. Requires LT_CYGPATH set.
1746 # Returns result in func_to_host_file_result.
1747 func_convert_file_msys_to_cygwin ()
1748 {
1749 $opt_debug
1750 func_to_host_file_result="$1"
1751 if test -n "$1"; then
1752 func_convert_core_msys_to_w32 "$1"
1753 func_cygpath -u "$func_convert_core_msys_to_w32_result"
1754 func_to_host_file_result="$func_cygpath_result"
1755 fi
1756 func_convert_file_check "$1" "$func_to_host_file_result"
1757 }
1758 # end func_convert_file_msys_to_cygwin
1759
1760
1761 # func_convert_file_nix_to_cygwin ARG
1762 # Convert file name ARG from *nix to Cygwin format. Requires Cygwin installed
1763 # in a wine environment, working winepath, and LT_CYGPATH set. Returns result
1764 # in func_to_host_file_result.
1765 func_convert_file_nix_to_cygwin ()
1766 {
1767 $opt_debug
1768 func_to_host_file_result="$1"
1769 if test -n "$1"; then
1770 # convert from *nix to w32, then use cygpath to convert from w32 to cygwin.
1771 func_convert_core_file_wine_to_w32 "$1"
1772 func_cygpath -u "$func_convert_core_file_wine_to_w32_result"
1773 func_to_host_file_result="$func_cygpath_result"
1774 fi
1775 func_convert_file_check "$1" "$func_to_host_file_result"
1776 }
1777 # end func_convert_file_nix_to_cygwin
1778
1779
1780 #############################################
1781 # $build to $host PATH CONVERSION FUNCTIONS #
1782 #############################################
1783 # invoked via `$to_host_path_cmd ARG'
1784 #
1785 # In each case, ARG is the path to be converted from $build to $host format.
1786 # The result will be available in $func_to_host_path_result.
1787 #
1788 # Path separators are also converted from $build format to $host format. If
1789 # ARG begins or ends with a path separator character, it is preserved (but
1790 # converted to $host format) on output.
1791 #
1792 # All path conversion functions are named using the following convention:
1793 # file name conversion function : func_convert_file_X_to_Y ()
1794 # path conversion function : func_convert_path_X_to_Y ()
1795 # where, for any given $build/$host combination the 'X_to_Y' value is the
1796 # same. If conversion functions are added for new $build/$host combinations,
1797 # the two new functions must follow this pattern, or func_init_to_host_path_cmd
1798 # will break.
1799
1800
1801 # func_init_to_host_path_cmd
1802 # Ensures that function "pointer" variable $to_host_path_cmd is set to the
1803 # appropriate value, based on the value of $to_host_file_cmd.
1804 to_host_path_cmd=
1805 func_init_to_host_path_cmd ()
1806 {
1807 $opt_debug
1808 if test -z "$to_host_path_cmd"; then
1809 func_stripname 'func_convert_file_' '' "$to_host_file_cmd"
1810 to_host_path_cmd="func_convert_path_${func_stripname_result}"
1811 fi
1812 }
1813
1814
1815 # func_to_host_path ARG
1816 # Converts the path ARG from $build format to $host format. Return result
1817 # in func_to_host_path_result.
1818 func_to_host_path ()
1819 {
1820 $opt_debug
1821 func_init_to_host_path_cmd
1822 $to_host_path_cmd "$1"
1823 }
1824 # end func_to_host_path
1825
1826
1827 # func_convert_path_noop ARG
1828 # Copy ARG to func_to_host_path_result.
1829 func_convert_path_noop ()
1830 {
1831 func_to_host_path_result="$1"
1832 }
1833 # end func_convert_path_noop
1834
1835
1836 # func_convert_path_msys_to_w32 ARG
1837 # Convert path ARG from (mingw) MSYS to (mingw) w32 format; automatic
1838 # conversion to w32 is not available inside the cwrapper. Returns result in
1839 # func_to_host_path_result.
1840 func_convert_path_msys_to_w32 ()
1841 {
1842 $opt_debug
1843 func_to_host_path_result="$1"
1844 if test -n "$1"; then
1845 # Remove leading and trailing path separator characters from ARG. MSYS
1846 # behavior is inconsistent here; cygpath turns them into '.;' and ';.';
1847 # and winepath ignores them completely.
1848 func_stripname : : "$1"
1849 func_to_host_path_tmp1=$func_stripname_result
1850 func_convert_core_msys_to_w32 "$func_to_host_path_tmp1"
1851 func_to_host_path_result="$func_convert_core_msys_to_w32_result"
1852 func_convert_path_check : ";" \
1853 "$func_to_host_path_tmp1" "$func_to_host_path_result"
1854 func_convert_path_front_back_pathsep ":*" "*:" ";" "$1"
1855 fi
1856 }
1857 # end func_convert_path_msys_to_w32
1858
1859
1860 # func_convert_path_cygwin_to_w32 ARG
1861 # Convert path ARG from Cygwin to w32 format. Returns result in
1862 # func_to_host_file_result.
1863 func_convert_path_cygwin_to_w32 ()
1864 {
1865 $opt_debug
1866 func_to_host_path_result="$1"
1867 if test -n "$1"; then
1868 # See func_convert_path_msys_to_w32:
1869 func_stripname : : "$1"
1870 func_to_host_path_tmp1=$func_stripname_result
1871 func_to_host_path_result=`cygpath -m -p "$func_to_host_path_tmp1"`
1872 func_convert_path_check : ";" \
1873 "$func_to_host_path_tmp1" "$func_to_host_path_result"
1874 func_convert_path_front_back_pathsep ":*" "*:" ";" "$1"
1875 fi
1876 }
1877 # end func_convert_path_cygwin_to_w32
1878
1879
1880 # func_convert_path_nix_to_w32 ARG
1881 # Convert path ARG from *nix to w32 format. Requires a wine environment and
1882 # a working winepath. Returns result in func_to_host_file_result.
1883 func_convert_path_nix_to_w32 ()
1884 {
1885 $opt_debug
1886 func_to_host_path_result="$1"
1887 if test -n "$1"; then
1888 # See func_convert_path_msys_to_w32:
1889 func_stripname : : "$1"
1890 func_to_host_path_tmp1=$func_stripname_result
1891 func_convert_core_path_wine_to_w32 "$func_to_host_path_tmp1"
1892 func_to_host_path_result="$func_convert_core_path_wine_to_w32_result"
1893 func_convert_path_check : ";" \
1894 "$func_to_host_path_tmp1" "$func_to_host_path_result"
1895 func_convert_path_front_back_pathsep ":*" "*:" ";" "$1"
1896 fi
1897 }
1898 # end func_convert_path_nix_to_w32
1899
1900
1901 # func_convert_path_msys_to_cygwin ARG
1902 # Convert path ARG from MSYS to Cygwin format. Requires LT_CYGPATH set.
1903 # Returns result in func_to_host_file_result.
1904 func_convert_path_msys_to_cygwin ()
1905 {
1906 $opt_debug
1907 func_to_host_path_result="$1"
1908 if test -n "$1"; then
1909 # See func_convert_path_msys_to_w32:
1910 func_stripname : : "$1"
1911 func_to_host_path_tmp1=$func_stripname_result
1912 func_convert_core_msys_to_w32 "$func_to_host_path_tmp1"
1913 func_cygpath -u -p "$func_convert_core_msys_to_w32_result"
1914 func_to_host_path_result="$func_cygpath_result"
1915 func_convert_path_check : : \
1916 "$func_to_host_path_tmp1" "$func_to_host_path_result"
1917 func_convert_path_front_back_pathsep ":*" "*:" : "$1"
1918 fi
1919 }
1920 # end func_convert_path_msys_to_cygwin
1921
1922
1923 # func_convert_path_nix_to_cygwin ARG
1924 # Convert path ARG from *nix to Cygwin format. Requires Cygwin installed in a
1925 # a wine environment, working winepath, and LT_CYGPATH set. Returns result in
1926 # func_to_host_file_result.
1927 func_convert_path_nix_to_cygwin ()
1928 {
1929 $opt_debug
1930 func_to_host_path_result="$1"
1931 if test -n "$1"; then
1932 # Remove leading and trailing path separator characters from
1933 # ARG. msys behavior is inconsistent here, cygpath turns them
1934 # into '.;' and ';.', and winepath ignores them completely.
1935 func_stripname : : "$1"
1936 func_to_host_path_tmp1=$func_stripname_result
1937 func_convert_core_path_wine_to_w32 "$func_to_host_path_tmp1"
1938 func_cygpath -u -p "$func_convert_core_path_wine_to_w32_result"
1939 func_to_host_path_result="$func_cygpath_result"
1940 func_convert_path_check : : \
1941 "$func_to_host_path_tmp1" "$func_to_host_path_result"
1942 func_convert_path_front_back_pathsep ":*" "*:" : "$1"
1943 fi
1944 }
1945 # end func_convert_path_nix_to_cygwin
1946
1947
1948 # func_mode_compile arg...
1949 func_mode_compile ()
1950 {
1951 $opt_debug
1952 # Get the compilation command and the source file.
1953 base_compile=
1954 srcfile="$nonopt" # always keep a non-empty value in "srcfile"
1955 suppress_opt=yes
1956 suppress_output=
1957 arg_mode=normal
1958 libobj=
1959 later=
1960 pie_flag=
1961
1962 for arg
1963 do
1964 case $arg_mode in
1965 arg )
1966 # do not "continue". Instead, add this to base_compile
1967 lastarg="$arg"
1968 arg_mode=normal
1969 ;;
1970
1971 target )
1972 libobj="$arg"
1973 arg_mode=normal
1974 continue
1975 ;;
1976
1977 normal )
1978 # Accept any command-line options.
1979 case $arg in
1980 -o)
1981 test -n "$libobj" && \
1982 func_fatal_error "you cannot specify \`-o' more than once"
1983 arg_mode=target
1984 continue
1985 ;;
1986
1987 -pie | -fpie | -fPIE)
1988 func_append pie_flag " $arg"
1989 continue
1990 ;;
1991
1992 -shared | -static | -prefer-pic | -prefer-non-pic)
1993 func_append later " $arg"
1994 continue
1995 ;;
1996
1997 -no-suppress)
1998 suppress_opt=no
1999 continue
2000 ;;
2001
2002 -Xcompiler)
2003 arg_mode=arg # the next one goes into the "base_compile" arg list
2004 continue # The current "srcfile" will either be retained or
2005 ;; # replaced later. I would guess that would be a bug.
2006
2007 -Wc,*)
2008 func_stripname '-Wc,' '' "$arg"
2009 args=$func_stripname_result
2010 lastarg=
2011 save_ifs="$IFS"; IFS=','
2012 for arg in $args; do
2013 IFS="$save_ifs"
2014 func_append_quoted lastarg "$arg"
2015 done
2016 IFS="$save_ifs"
2017 func_stripname ' ' '' "$lastarg"
2018 lastarg=$func_stripname_result
2019
2020 # Add the arguments to base_compile.
2021 func_append base_compile " $lastarg"
2022 continue
2023 ;;
2024
2025 *)
2026 # Accept the current argument as the source file.
2027 # The previous "srcfile" becomes the current argument.
2028 #
2029 lastarg="$srcfile"
2030 srcfile="$arg"
2031 ;;
2032 esac # case $arg
2033 ;;
2034 esac # case $arg_mode
2035
2036 # Aesthetically quote the previous argument.
2037 func_append_quoted base_compile "$lastarg"
2038 done # for arg
2039
2040 case $arg_mode in
2041 arg)
2042 func_fatal_error "you must specify an argument for -Xcompile"
2043 ;;
2044 target)
2045 func_fatal_error "you must specify a target with \`-o'"
2046 ;;
2047 *)
2048 # Get the name of the library object.
2049 test -z "$libobj" && {
2050 func_basename "$srcfile"
2051 libobj="$func_basename_result"
2052 }
2053 ;;
2054 esac
2055
2056 # Recognize several different file suffixes.
2057 # If the user specifies -o file.o, it is replaced with file.lo
2058 case $libobj in
2059 *.[cCFSifmso] | \
2060 *.ada | *.adb | *.ads | *.asm | \
2061 *.c++ | *.cc | *.ii | *.class | *.cpp | *.cxx | \
2062 *.[fF][09]? | *.for | *.java | *.go | *.obj | *.sx | *.cu | *.cup)
2063 func_xform "$libobj"
2064 libobj=$func_xform_result
2065 ;;
2066 esac
2067
2068 case $libobj in
2069 *.lo) func_lo2o "$libobj"; obj=$func_lo2o_result ;;
2070 *)
2071 func_fatal_error "cannot determine name of library object from \`$libobj'"
2072 ;;
2073 esac
2074
2075 func_infer_tag $base_compile
2076
2077 for arg in $later; do
2078 case $arg in
2079 -shared)
2080 test "$build_libtool_libs" != yes && \
2081 func_fatal_configuration "can not build a shared library"
2082 build_old_libs=no
2083 continue
2084 ;;
2085
2086 -static)
2087 build_libtool_libs=no
2088 build_old_libs=yes
2089 continue
2090 ;;
2091
2092 -prefer-pic)
2093 pic_mode=yes
2094 continue
2095 ;;
2096
2097 -prefer-non-pic)
2098 pic_mode=no
2099 continue
2100 ;;
2101 esac
2102 done
2103
2104 func_quote_for_eval "$libobj"
2105 test "X$libobj" != "X$func_quote_for_eval_result" \
2106 && $ECHO "X$libobj" | $GREP '[]~#^*{};<>?"'"'"' &()|`$[]' \
2107 && func_warning "libobj name \`$libobj' may not contain shell special characters."
2108 func_dirname_and_basename "$obj" "/" ""
2109 objname="$func_basename_result"
2110 xdir="$func_dirname_result"
2111 lobj=${xdir}$objdir/$objname
2112
2113 test -z "$base_compile" && \
2114 func_fatal_help "you must specify a compilation command"
2115
2116 # Delete any leftover library objects.
2117 if test "$build_old_libs" = yes; then
2118 removelist="$obj $lobj $libobj ${libobj}T"
2119 else
2120 removelist="$lobj $libobj ${libobj}T"
2121 fi
2122
2123 # On Cygwin there's no "real" PIC flag so we must build both object types
2124 case $host_os in
2125 cygwin* | mingw* | pw32* | os2* | cegcc*)
2126 pic_mode=default
2127 ;;
2128 esac
2129 if test "$pic_mode" = no && test "$deplibs_check_method" != pass_all; then
2130 # non-PIC code in shared libraries is not supported
2131 pic_mode=default
2132 fi
2133
2134 # Calculate the filename of the output object if compiler does
2135 # not support -o with -c
2136 if test "$compiler_c_o" = no; then
2137 output_obj=`$ECHO "$srcfile" | $SED 's%^.*/%%; s%\.[^.]*$%%'`.${objext}
2138 lockfile="$output_obj.lock"
2139 else
2140 output_obj=
2141 need_locks=no
2142 lockfile=
2143 fi
2144
2145 # Lock this critical section if it is needed
2146 # We use this script file to make the link, it avoids creating a new file
2147 if test "$need_locks" = yes; then
2148 until $opt_dry_run || ln "$progpath" "$lockfile" 2>/dev/null; do
2149 func_echo "Waiting for $lockfile to be removed"
2150 sleep 2
2151 done
2152 elif test "$need_locks" = warn; then
2153 if test -f "$lockfile"; then
2154 $ECHO "\
2155 *** ERROR, $lockfile exists and contains:
2156 `cat $lockfile 2>/dev/null`
2157
2158 This indicates that another process is trying to use the same
2159 temporary object file, and libtool could not work around it because
2160 your compiler does not support \`-c' and \`-o' together. If you
2161 repeat this compilation, it may succeed, by chance, but you had better
2162 avoid parallel builds (make -j) in this platform, or get a better
2163 compiler."
2164
2165 $opt_dry_run || $RM $removelist
2166 exit $EXIT_FAILURE
2167 fi
2168 func_append removelist " $output_obj"
2169 $ECHO "$srcfile" > "$lockfile"
2170 fi
2171
2172 $opt_dry_run || $RM $removelist
2173 func_append removelist " $lockfile"
2174 trap '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE' 1 2 15
2175
2176 func_to_tool_file "$srcfile" func_convert_file_msys_to_w32
2177 srcfile=$func_to_tool_file_result
2178 func_quote_for_eval "$srcfile"
2179 qsrcfile=$func_quote_for_eval_result
2180
2181 # Only build a PIC object if we are building libtool libraries.
2182 if test "$build_libtool_libs" = yes; then
2183 # Without this assignment, base_compile gets emptied.
2184 fbsd_hideous_sh_bug=$base_compile
2185
2186 if test "$pic_mode" != no; then
2187 command="$base_compile $qsrcfile $pic_flag"
2188 else
2189 # Don't build PIC code
2190 command="$base_compile $qsrcfile"
2191 fi
2192
2193 func_mkdir_p "$xdir$objdir"
2194
2195 if test -z "$output_obj"; then
2196 # Place PIC objects in $objdir
2197 func_append command " -o $lobj"
2198 fi
2199
2200 func_show_eval_locale "$command" \
2201 'test -n "$output_obj" && $RM $removelist; exit $EXIT_FAILURE'
2202
2203 if test "$need_locks" = warn &&
2204 test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then
2205 $ECHO "\
2206 *** ERROR, $lockfile contains:
2207 `cat $lockfile 2>/dev/null`
2208
2209 but it should contain:
2210 $srcfile
2211
2212 This indicates that another process is trying to use the same
2213 temporary object file, and libtool could not work around it because
2214 your compiler does not support \`-c' and \`-o' together. If you
2215 repeat this compilation, it may succeed, by chance, but you had better
2216 avoid parallel builds (make -j) in this platform, or get a better
2217 compiler."
2218
2219 $opt_dry_run || $RM $removelist
2220 exit $EXIT_FAILURE
2221 fi
2222
2223 # Just move the object if needed, then go on to compile the next one
2224 if test -n "$output_obj" && test "X$output_obj" != "X$lobj"; then
2225 func_show_eval '$MV "$output_obj" "$lobj"' \
2226 'error=$?; $opt_dry_run || $RM $removelist; exit $error'
2227 fi
2228
2229 # Allow error messages only from the first compilation.
2230 if test "$suppress_opt" = yes; then
2231 suppress_output=' >/dev/null 2>&1'
2232 fi
2233 fi
2234
2235 # Only build a position-dependent object if we build old libraries.
2236 if test "$build_old_libs" = yes; then
2237 if test "$pic_mode" != yes; then
2238 # Don't build PIC code
2239 command="$base_compile $qsrcfile$pie_flag"
2240 else
2241 command="$base_compile $qsrcfile $pic_flag"
2242 fi
2243 if test "$compiler_c_o" = yes; then
2244 func_append command " -o $obj"
2245 fi
2246
2247 # Suppress compiler output if we already did a PIC compilation.
2248 func_append command "$suppress_output"
2249 func_show_eval_locale "$command" \
2250 '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE'
2251
2252 if test "$need_locks" = warn &&
2253 test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then
2254 $ECHO "\
2255 *** ERROR, $lockfile contains:
2256 `cat $lockfile 2>/dev/null`
2257
2258 but it should contain:
2259 $srcfile
2260
2261 This indicates that another process is trying to use the same
2262 temporary object file, and libtool could not work around it because
2263 your compiler does not support \`-c' and \`-o' together. If you
2264 repeat this compilation, it may succeed, by chance, but you had better
2265 avoid parallel builds (make -j) in this platform, or get a better
2266 compiler."
2267
2268 $opt_dry_run || $RM $removelist
2269 exit $EXIT_FAILURE
2270 fi
2271
2272 # Just move the object if needed
2273 if test -n "$output_obj" && test "X$output_obj" != "X$obj"; then
2274 func_show_eval '$MV "$output_obj" "$obj"' \
2275 'error=$?; $opt_dry_run || $RM $removelist; exit $error'
2276 fi
2277 fi
2278
2279 $opt_dry_run || {
2280 func_write_libtool_object "$libobj" "$objdir/$objname" "$objname"
2281
2282 # Unlock the critical section if it was locked
2283 if test "$need_locks" != no; then
2284 removelist=$lockfile
2285 $RM "$lockfile"
2286 fi
2287 }
2288
2289 exit $EXIT_SUCCESS
2290 }
2291
2292 $opt_help || {
2293 test "$opt_mode" = compile && func_mode_compile ${1+"$@"}
2294 }
2295
2296 func_mode_help ()
2297 {
2298 # We need to display help for each of the modes.
2299 case $opt_mode in
2300 "")
2301 # Generic help is extracted from the usage comments
2302 # at the start of this file.
2303 func_help
2304 ;;
2305
2306 clean)
2307 $ECHO \
2308 "Usage: $progname [OPTION]... --mode=clean RM [RM-OPTION]... FILE...
2309
2310 Remove files from the build directory.
2311
2312 RM is the name of the program to use to delete files associated with each FILE
2313 (typically \`/bin/rm'). RM-OPTIONS are options (such as \`-f') to be passed
2314 to RM.
2315
2316 If FILE is a libtool library, object or program, all the files associated
2317 with it are deleted. Otherwise, only FILE itself is deleted using RM."
2318 ;;
2319
2320 compile)
2321 $ECHO \
2322 "Usage: $progname [OPTION]... --mode=compile COMPILE-COMMAND... SOURCEFILE
2323
2324 Compile a source file into a libtool library object.
2325
2326 This mode accepts the following additional options:
2327
2328 -o OUTPUT-FILE set the output file name to OUTPUT-FILE
2329 -no-suppress do not suppress compiler output for multiple passes
2330 -prefer-pic try to build PIC objects only
2331 -prefer-non-pic try to build non-PIC objects only
2332 -shared do not build a \`.o' file suitable for static linking
2333 -static only build a \`.o' file suitable for static linking
2334 -Wc,FLAG pass FLAG directly to the compiler
2335
2336 COMPILE-COMMAND is a command to be used in creating a \`standard' object file
2337 from the given SOURCEFILE.
2338
2339 The output file name is determined by removing the directory component from
2340 SOURCEFILE, then substituting the C source code suffix \`.c' with the
2341 library object suffix, \`.lo'."
2342 ;;
2343
2344 execute)
2345 $ECHO \
2346 "Usage: $progname [OPTION]... --mode=execute COMMAND [ARGS]...
2347
2348 Automatically set library path, then run a program.
2349
2350 This mode accepts the following additional options:
2351
2352 -dlopen FILE add the directory containing FILE to the library path
2353
2354 This mode sets the library path environment variable according to \`-dlopen'
2355 flags.
2356
2357 If any of the ARGS are libtool executable wrappers, then they are translated
2358 into their corresponding uninstalled binary, and any of their required library
2359 directories are added to the library path.
2360
2361 Then, COMMAND is executed, with ARGS as arguments."
2362 ;;
2363
2364 finish)
2365 $ECHO \
2366 "Usage: $progname [OPTION]... --mode=finish [LIBDIR]...
2367
2368 Complete the installation of libtool libraries.
2369
2370 Each LIBDIR is a directory that contains libtool libraries.
2371
2372 The commands that this mode executes may require superuser privileges. Use
2373 the \`--dry-run' option if you just want to see what would be executed."
2374 ;;
2375
2376 install)
2377 $ECHO \
2378 "Usage: $progname [OPTION]... --mode=install INSTALL-COMMAND...
2379
2380 Install executables or libraries.
2381
2382 INSTALL-COMMAND is the installation command. The first component should be
2383 either the \`install' or \`cp' program.
2384
2385 The following components of INSTALL-COMMAND are treated specially:
2386
2387 -inst-prefix-dir PREFIX-DIR Use PREFIX-DIR as a staging area for installation
2388
2389 The rest of the components are interpreted as arguments to that command (only
2390 BSD-compatible install options are recognized)."
2391 ;;
2392
2393 link)
2394 $ECHO \
2395 "Usage: $progname [OPTION]... --mode=link LINK-COMMAND...
2396
2397 Link object files or libraries together to form another library, or to
2398 create an executable program.
2399
2400 LINK-COMMAND is a command using the C compiler that you would use to create
2401 a program from several object files.
2402
2403 The following components of LINK-COMMAND are treated specially:
2404
2405 -all-static do not do any dynamic linking at all
2406 -avoid-version do not add a version suffix if possible
2407 -bindir BINDIR specify path to binaries directory (for systems where
2408 libraries must be found in the PATH setting at runtime)
2409 -dlopen FILE \`-dlpreopen' FILE if it cannot be dlopened at runtime
2410 -dlpreopen FILE link in FILE and add its symbols to lt_preloaded_symbols
2411 -export-dynamic allow symbols from OUTPUT-FILE to be resolved with dlsym(3)
2412 -export-symbols SYMFILE
2413 try to export only the symbols listed in SYMFILE
2414 -export-symbols-regex REGEX
2415 try to export only the symbols matching REGEX
2416 -LLIBDIR search LIBDIR for required installed libraries
2417 -lNAME OUTPUT-FILE requires the installed library libNAME
2418 -module build a library that can dlopened
2419 -no-fast-install disable the fast-install mode
2420 -no-install link a not-installable executable
2421 -no-undefined declare that a library does not refer to external symbols
2422 -o OUTPUT-FILE create OUTPUT-FILE from the specified objects
2423 -objectlist FILE Use a list of object files found in FILE to specify objects
2424 -precious-files-regex REGEX
2425 don't remove output files matching REGEX
2426 -release RELEASE specify package release information
2427 -rpath LIBDIR the created library will eventually be installed in LIBDIR
2428 -R[ ]LIBDIR add LIBDIR to the runtime path of programs and libraries
2429 -shared only do dynamic linking of libtool libraries
2430 -shrext SUFFIX override the standard shared library file extension
2431 -static do not do any dynamic linking of uninstalled libtool libraries
2432 -static-libtool-libs
2433 do not do any dynamic linking of libtool libraries
2434 -version-info CURRENT[:REVISION[:AGE]]
2435 specify library version info [each variable defaults to 0]
2436 -weak LIBNAME declare that the target provides the LIBNAME interface
2437 -Wc,FLAG
2438 -Xcompiler FLAG pass linker-specific FLAG directly to the compiler
2439 -Wl,FLAG
2440 -Xlinker FLAG pass linker-specific FLAG directly to the linker
2441 -XCClinker FLAG pass link-specific FLAG to the compiler driver (CC)
2442
2443 All other options (arguments beginning with \`-') are ignored.
2444
2445 Every other argument is treated as a filename. Files ending in \`.la' are
2446 treated as uninstalled libtool libraries, other files are standard or library
2447 object files.
2448
2449 If the OUTPUT-FILE ends in \`.la', then a libtool library is created,
2450 only library objects (\`.lo' files) may be specified, and \`-rpath' is
2451 required, except when creating a convenience library.
2452
2453 If OUTPUT-FILE ends in \`.a' or \`.lib', then a standard library is created
2454 using \`ar' and \`ranlib', or on Windows using \`lib'.
2455
2456 If OUTPUT-FILE ends in \`.lo' or \`.${objext}', then a reloadable object file
2457 is created, otherwise an executable program is created."
2458 ;;
2459
2460 uninstall)
2461 $ECHO \
2462 "Usage: $progname [OPTION]... --mode=uninstall RM [RM-OPTION]... FILE...
2463
2464 Remove libraries from an installation directory.
2465
2466 RM is the name of the program to use to delete files associated with each FILE
2467 (typically \`/bin/rm'). RM-OPTIONS are options (such as \`-f') to be passed
2468 to RM.
2469
2470 If FILE is a libtool library, all the files associated with it are deleted.
2471 Otherwise, only FILE itself is deleted using RM."
2472 ;;
2473
2474 *)
2475 func_fatal_help "invalid operation mode \`$opt_mode'"
2476 ;;
2477 esac
2478
2479 echo
2480 $ECHO "Try \`$progname --help' for more information about other modes."
2481 }
2482
2483 # Now that we've collected a possible --mode arg, show help if necessary
2484 if $opt_help; then
2485 if test "$opt_help" = :; then
2486 func_mode_help
2487 else
2488 {
2489 func_help noexit
2490 for opt_mode in compile link execute install finish uninstall clean; do
2491 func_mode_help
2492 done
2493 } | sed -n '1p; 2,$s/^Usage:/ or: /p'
2494 {
2495 func_help noexit
2496 for opt_mode in compile link execute install finish uninstall clean; do
2497 echo
2498 func_mode_help
2499 done
2500 } |
2501 sed '1d
2502 /^When reporting/,/^Report/{
2503 H
2504 d
2505 }
2506 $x
2507 /information about other modes/d
2508 /more detailed .*MODE/d
2509 s/^Usage:.*--mode=\([^ ]*\) .*/Description of \1 mode:/'
2510 fi
2511 exit $?
2512 fi
2513
2514
2515 # func_mode_execute arg...
2516 func_mode_execute ()
2517 {
2518 $opt_debug
2519 # The first argument is the command name.
2520 cmd="$nonopt"
2521 test -z "$cmd" && \
2522 func_fatal_help "you must specify a COMMAND"
2523
2524 # Handle -dlopen flags immediately.
2525 for file in $opt_dlopen; do
2526 test -f "$file" \
2527 || func_fatal_help "\`$file' is not a file"
2528
2529 dir=
2530 case $file in
2531 *.la)
2532 func_resolve_sysroot "$file"
2533 file=$func_resolve_sysroot_result
2534
2535 # Check to see that this really is a libtool archive.
2536 func_lalib_unsafe_p "$file" \
2537 || func_fatal_help "\`$lib' is not a valid libtool archive"
2538
2539 # Read the libtool library.
2540 dlname=
2541 library_names=
2542 func_source "$file"
2543
2544 # Skip this library if it cannot be dlopened.
2545 if test -z "$dlname"; then
2546 # Warn if it was a shared library.
2547 test -n "$library_names" && \
2548 func_warning "\`$file' was not linked with \`-export-dynamic'"
2549 continue
2550 fi
2551
2552 func_dirname "$file" "" "."
2553 dir="$func_dirname_result"
2554
2555 if test -f "$dir/$objdir/$dlname"; then
2556 func_append dir "/$objdir"
2557 else
2558 if test ! -f "$dir/$dlname"; then
2559 func_fatal_error "cannot find \`$dlname' in \`$dir' or \`$dir/$objdir'"
2560 fi
2561 fi
2562 ;;
2563
2564 *.lo)
2565 # Just add the directory containing the .lo file.
2566 func_dirname "$file" "" "."
2567 dir="$func_dirname_result"
2568 ;;
2569
2570 *)
2571 func_warning "\`-dlopen' is ignored for non-libtool libraries and objects"
2572 continue
2573 ;;
2574 esac
2575
2576 # Get the absolute pathname.
2577 absdir=`cd "$dir" && pwd`
2578 test -n "$absdir" && dir="$absdir"
2579
2580 # Now add the directory to shlibpath_var.
2581 if eval "test -z \"\$$shlibpath_var\""; then
2582 eval "$shlibpath_var=\"\$dir\""
2583 else
2584 eval "$shlibpath_var=\"\$dir:\$$shlibpath_var\""
2585 fi
2586 done
2587
2588 # This variable tells wrapper scripts just to set shlibpath_var
2589 # rather than running their programs.
2590 libtool_execute_magic="$magic"
2591
2592 # Check if any of the arguments is a wrapper script.
2593 args=
2594 for file
2595 do
2596 case $file in
2597 -* | *.la | *.lo ) ;;
2598 *)
2599 # Do a test to see if this is really a libtool program.
2600 if func_ltwrapper_script_p "$file"; then
2601 func_source "$file"
2602 # Transform arg to wrapped name.
2603 file="$progdir/$program"
2604 elif func_ltwrapper_executable_p "$file"; then
2605 func_ltwrapper_scriptname "$file"
2606 func_source "$func_ltwrapper_scriptname_result"
2607 # Transform arg to wrapped name.
2608 file="$progdir/$program"
2609 fi
2610 ;;
2611 esac
2612 # Quote arguments (to preserve shell metacharacters).
2613 func_append_quoted args "$file"
2614 done
2615
2616 if test "X$opt_dry_run" = Xfalse; then
2617 if test -n "$shlibpath_var"; then
2618 # Export the shlibpath_var.
2619 eval "export $shlibpath_var"
2620 fi
2621
2622 # Restore saved environment variables
2623 for lt_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES
2624 do
2625 eval "if test \"\${save_$lt_var+set}\" = set; then
2626 $lt_var=\$save_$lt_var; export $lt_var
2627 else
2628 $lt_unset $lt_var
2629 fi"
2630 done
2631
2632 # Now prepare to actually exec the command.
2633 exec_cmd="\$cmd$args"
2634 else
2635 # Display what would be done.
2636 if test -n "$shlibpath_var"; then
2637 eval "\$ECHO \"\$shlibpath_var=\$$shlibpath_var\""
2638 echo "export $shlibpath_var"
2639 fi
2640 $ECHO "$cmd$args"
2641 exit $EXIT_SUCCESS
2642 fi
2643 }
2644
2645 test "$opt_mode" = execute && func_mode_execute ${1+"$@"}
2646
2647
2648 # func_mode_finish arg...
2649 func_mode_finish ()
2650 {
2651 $opt_debug
2652 libs=
2653 libdirs=
2654 admincmds=
2655
2656 for opt in "$nonopt" ${1+"$@"}
2657 do
2658 if test -d "$opt"; then
2659 func_append libdirs " $opt"
2660
2661 elif test -f "$opt"; then
2662 if func_lalib_unsafe_p "$opt"; then
2663 func_append libs " $opt"
2664 else
2665 func_warning "\`$opt' is not a valid libtool archive"
2666 fi
2667
2668 else
2669 func_fatal_error "invalid argument \`$opt'"
2670 fi
2671 done
2672
2673 if test -n "$libs"; then
2674 if test -n "$lt_sysroot"; then
2675 sysroot_regex=`$ECHO "$lt_sysroot" | $SED "$sed_make_literal_regex"`
2676 sysroot_cmd="s/\([ ']\)$sysroot_regex/\1/g;"
2677 else
2678 sysroot_cmd=
2679 fi
2680
2681 # Remove sysroot references
2682 if $opt_dry_run; then
2683 for lib in $libs; do
2684 echo "removing references to $lt_sysroot and \`=' prefixes from $lib"
2685 done
2686 else
2687 tmpdir=`func_mktempdir`
2688 for lib in $libs; do
2689 sed -e "${sysroot_cmd} s/\([ ']-[LR]\)=/\1/g; s/\([ ']\)=/\1/g" $lib \
2690 > $tmpdir/tmp-la
2691 mv -f $tmpdir/tmp-la $lib
2692 done
2693 ${RM}r "$tmpdir"
2694 fi
2695 fi
2696
2697 if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then
2698 for libdir in $libdirs; do
2699 if test -n "$finish_cmds"; then
2700 # Do each command in the finish commands.
2701 func_execute_cmds "$finish_cmds" 'admincmds="$admincmds
2702 '"$cmd"'"'
2703 fi
2704 if test -n "$finish_eval"; then
2705 # Do the single finish_eval.
2706 eval cmds=\"$finish_eval\"
2707 $opt_dry_run || eval "$cmds" || func_append admincmds "
2708 $cmds"
2709 fi
2710 done
2711 fi
2712
2713 # Exit here if they wanted silent mode.
2714 $opt_silent && exit $EXIT_SUCCESS
2715
2716 if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then
2717 echo "----------------------------------------------------------------------"
2718 echo "Libraries have been installed in:"
2719 for libdir in $libdirs; do
2720 $ECHO " $libdir"
2721 done
2722 echo
2723 echo "If you ever happen to want to link against installed libraries"
2724 echo "in a given directory, LIBDIR, you must either use libtool, and"
2725 echo "specify the full pathname of the library, or use the \`-LLIBDIR'"
2726 echo "flag during linking and do at least one of the following:"
2727 if test -n "$shlibpath_var"; then
2728 echo " - add LIBDIR to the \`$shlibpath_var' environment variable"
2729 echo " during execution"
2730 fi
2731 if test -n "$runpath_var"; then
2732 echo " - add LIBDIR to the \`$runpath_var' environment variable"
2733 echo " during linking"
2734 fi
2735 if test -n "$hardcode_libdir_flag_spec"; then
2736 libdir=LIBDIR
2737 eval flag=\"$hardcode_libdir_flag_spec\"
2738
2739 $ECHO " - use the \`$flag' linker flag"
2740 fi
2741 if test -n "$admincmds"; then
2742 $ECHO " - have your system administrator run these commands:$admincmds"
2743 fi
2744 if test -f /etc/ld.so.conf; then
2745 echo " - have your system administrator add LIBDIR to \`/etc/ld.so.conf'"
2746 fi
2747 echo
2748
2749 echo "See any operating system documentation about shared libraries for"
2750 case $host in
2751 solaris2.[6789]|solaris2.1[0-9])
2752 echo "more information, such as the ld(1), crle(1) and ld.so(8) manual"
2753 echo "pages."
2754 ;;
2755 *)
2756 echo "more information, such as the ld(1) and ld.so(8) manual pages."
2757 ;;
2758 esac
2759 echo "----------------------------------------------------------------------"
2760 fi
2761 exit $EXIT_SUCCESS
2762 }
2763
2764 test "$opt_mode" = finish && func_mode_finish ${1+"$@"}
2765
2766
2767 # func_mode_install arg...
2768 func_mode_install ()
2769 {
2770 $opt_debug
2771 # There may be an optional sh(1) argument at the beginning of
2772 # install_prog (especially on Windows NT).
2773 if test "$nonopt" = "$SHELL" || test "$nonopt" = /bin/sh ||
2774 # Allow the use of GNU shtool's install command.
2775 case $nonopt in *shtool*) :;; *) false;; esac; then
2776 # Aesthetically quote it.
2777 func_quote_for_eval "$nonopt"
2778 install_prog="$func_quote_for_eval_result "
2779 arg=$1
2780 shift
2781 else
2782 install_prog=
2783 arg=$nonopt
2784 fi
2785
2786 # The real first argument should be the name of the installation program.
2787 # Aesthetically quote it.
2788 func_quote_for_eval "$arg"
2789 func_append install_prog "$func_quote_for_eval_result"
2790 install_shared_prog=$install_prog
2791 case " $install_prog " in
2792 *[\\\ /]cp\ *) install_cp=: ;;
2793 *) install_cp=false ;;
2794 esac
2795
2796 # We need to accept at least all the BSD install flags.
2797 dest=
2798 files=
2799 opts=
2800 prev=
2801 install_type=
2802 isdir=no
2803 stripme=
2804 no_mode=:
2805 for arg
2806 do
2807 arg2=
2808 if test -n "$dest"; then
2809 func_append files " $dest"
2810 dest=$arg
2811 continue
2812 fi
2813
2814 case $arg in
2815 -d) isdir=yes ;;
2816 -f)
2817 if $install_cp; then :; else
2818 prev=$arg
2819 fi
2820 ;;
2821 -g | -m | -o)
2822 prev=$arg
2823 ;;
2824 -s)
2825 stripme=" -s"
2826 continue
2827 ;;
2828 -*)
2829 ;;
2830 *)
2831 # If the previous option needed an argument, then skip it.
2832 if test -n "$prev"; then
2833 if test "x$prev" = x-m && test -n "$install_override_mode"; then
2834 arg2=$install_override_mode
2835 no_mode=false
2836 fi
2837 prev=
2838 else
2839 dest=$arg
2840 continue
2841 fi
2842 ;;
2843 esac
2844
2845 # Aesthetically quote the argument.
2846 func_quote_for_eval "$arg"
2847 func_append install_prog " $func_quote_for_eval_result"
2848 if test -n "$arg2"; then
2849 func_quote_for_eval "$arg2"
2850 fi
2851 func_append install_shared_prog " $func_quote_for_eval_result"
2852 done
2853
2854 test -z "$install_prog" && \
2855 func_fatal_help "you must specify an install program"
2856
2857 test -n "$prev" && \
2858 func_fatal_help "the \`$prev' option requires an argument"
2859
2860 if test -n "$install_override_mode" && $no_mode; then
2861 if $install_cp; then :; else
2862 func_quote_for_eval "$install_override_mode"
2863 func_append install_shared_prog " -m $func_quote_for_eval_result"
2864 fi
2865 fi
2866
2867 if test -z "$files"; then
2868 if test -z "$dest"; then
2869 func_fatal_help "no file or destination specified"
2870 else
2871 func_fatal_help "you must specify a destination"
2872 fi
2873 fi
2874
2875 # Strip any trailing slash from the destination.
2876 func_stripname '' '/' "$dest"
2877 dest=$func_stripname_result
2878
2879 # Check to see that the destination is a directory.
2880 test -d "$dest" && isdir=yes
2881 if test "$isdir" = yes; then
2882 destdir="$dest"
2883 destname=
2884 else
2885 func_dirname_and_basename "$dest" "" "."
2886 destdir="$func_dirname_result"
2887 destname="$func_basename_result"
2888
2889 # Not a directory, so check to see that there is only one file specified.
2890 set dummy $files; shift
2891 test "$#" -gt 1 && \
2892 func_fatal_help "\`$dest' is not a directory"
2893 fi
2894 case $destdir in
2895 [\\/]* | [A-Za-z]:[\\/]*) ;;
2896 *)
2897 for file in $files; do
2898 case $file in
2899 *.lo) ;;
2900 *)
2901 func_fatal_help "\`$destdir' must be an absolute directory name"
2902 ;;
2903 esac
2904 done
2905 ;;
2906 esac
2907
2908 # This variable tells wrapper scripts just to set variables rather
2909 # than running their programs.
2910 libtool_install_magic="$magic"
2911
2912 staticlibs=
2913 future_libdirs=
2914 current_libdirs=
2915 for file in $files; do
2916
2917 # Do each installation.
2918 case $file in
2919 *.$libext)
2920 # Do the static libraries later.
2921 func_append staticlibs " $file"
2922 ;;
2923
2924 *.la)
2925 func_resolve_sysroot "$file"
2926 file=$func_resolve_sysroot_result
2927
2928 # Check to see that this really is a libtool archive.
2929 func_lalib_unsafe_p "$file" \
2930 || func_fatal_help "\`$file' is not a valid libtool archive"
2931
2932 library_names=
2933 old_library=
2934 relink_command=
2935 func_source "$file"
2936
2937 # Add the libdir to current_libdirs if it is the destination.
2938 if test "X$destdir" = "X$libdir"; then
2939 case "$current_libdirs " in
2940 *" $libdir "*) ;;
2941 *) func_append current_libdirs " $libdir" ;;
2942 esac
2943 else
2944 # Note the libdir as a future libdir.
2945 case "$future_libdirs " in
2946 *" $libdir "*) ;;
2947 *) func_append future_libdirs " $libdir" ;;
2948 esac
2949 fi
2950
2951 func_dirname "$file" "/" ""
2952 dir="$func_dirname_result"
2953 func_append dir "$objdir"
2954
2955 if test -n "$relink_command"; then
2956 # Determine the prefix the user has applied to our future dir.
2957 inst_prefix_dir=`$ECHO "$destdir" | $SED -e "s%$libdir\$%%"`
2958
2959 # Don't allow the user to place us outside of our expected
2960 # location b/c this prevents finding dependent libraries that
2961 # are installed to the same prefix.
2962 # At present, this check doesn't affect windows .dll's that
2963 # are installed into $libdir/../bin (currently, that works fine)
2964 # but it's something to keep an eye on.
2965 test "$inst_prefix_dir" = "$destdir" && \
2966 func_fatal_error "error: cannot install \`$file' to a directory not ending in $libdir"
2967
2968 if test -n "$inst_prefix_dir"; then
2969 # Stick the inst_prefix_dir data into the link command.
2970 relink_command=`$ECHO "$relink_command" | $SED "s%@inst_prefix_dir@%-inst-prefix-dir $inst_prefix_dir%"`
2971 else
2972 relink_command=`$ECHO "$relink_command" | $SED "s%@inst_prefix_dir@%%"`
2973 fi
2974
2975 func_warning "relinking \`$file'"
2976 func_show_eval "$relink_command" \
2977 'func_fatal_error "error: relink \`$file'\'' with the above command before installing it"'
2978 fi
2979
2980 # See the names of the shared library.
2981 set dummy $library_names; shift
2982 if test -n "$1"; then
2983 realname="$1"
2984 shift
2985
2986 srcname="$realname"
2987 test -n "$relink_command" && srcname="$realname"T
2988
2989 # Install the shared library and build the symlinks.
2990 func_show_eval "$install_shared_prog $dir/$srcname $destdir/$realname" \
2991 'exit $?'
2992 tstripme="$stripme"
2993 case $host_os in
2994 cygwin* | mingw* | pw32* | cegcc*)
2995 case $realname in
2996 *.dll.a)
2997 tstripme=""
2998 ;;
2999 esac
3000 ;;
3001 esac
3002 if test -n "$tstripme" && test -n "$striplib"; then
3003 func_show_eval "$striplib $destdir/$realname" 'exit $?'
3004 fi
3005
3006 if test "$#" -gt 0; then
3007 # Delete the old symlinks, and create new ones.
3008 # Try `ln -sf' first, because the `ln' binary might depend on
3009 # the symlink we replace! Solaris /bin/ln does not understand -f,
3010 # so we also need to try rm && ln -s.
3011 for linkname
3012 do
3013 test "$linkname" != "$realname" \
3014 && func_show_eval "(cd $destdir && { $LN_S -f $realname $linkname || { $RM $linkname && $LN_S $realname $linkname; }; })"
3015 done
3016 fi
3017
3018 # Do each command in the postinstall commands.
3019 lib="$destdir/$realname"
3020 func_execute_cmds "$postinstall_cmds" 'exit $?'
3021 fi
3022
3023 # Install the pseudo-library for information purposes.
3024 func_basename "$file"
3025 name="$func_basename_result"
3026 instname="$dir/$name"i
3027 func_show_eval "$install_prog $instname $destdir/$name" 'exit $?'
3028
3029 # Maybe install the static library, too.
3030 test -n "$old_library" && func_append staticlibs " $dir/$old_library"
3031 ;;
3032
3033 *.lo)
3034 # Install (i.e. copy) a libtool object.
3035
3036 # Figure out destination file name, if it wasn't already specified.
3037 if test -n "$destname"; then
3038 destfile="$destdir/$destname"
3039 else
3040 func_basename "$file"
3041 destfile="$func_basename_result"
3042 destfile="$destdir/$destfile"
3043 fi
3044
3045 # Deduce the name of the destination old-style object file.
3046 case $destfile in
3047 *.lo)
3048 func_lo2o "$destfile"
3049 staticdest=$func_lo2o_result
3050 ;;
3051 *.$objext)
3052 staticdest="$destfile"
3053 destfile=
3054 ;;
3055 *)
3056 func_fatal_help "cannot copy a libtool object to \`$destfile'"
3057 ;;
3058 esac
3059
3060 # Install the libtool object if requested.
3061 test -n "$destfile" && \
3062 func_show_eval "$install_prog $file $destfile" 'exit $?'
3063
3064 # Install the old object if enabled.
3065 if test "$build_old_libs" = yes; then
3066 # Deduce the name of the old-style object file.
3067 func_lo2o "$file"
3068 staticobj=$func_lo2o_result
3069 func_show_eval "$install_prog \$staticobj \$staticdest" 'exit $?'
3070 fi
3071 exit $EXIT_SUCCESS
3072 ;;
3073
3074 *)
3075 # Figure out destination file name, if it wasn't already specified.
3076 if test -n "$destname"; then
3077 destfile="$destdir/$destname"
3078 else
3079 func_basename "$file"
3080 destfile="$func_basename_result"
3081 destfile="$destdir/$destfile"
3082 fi
3083
3084 # If the file is missing, and there is a .exe on the end, strip it
3085 # because it is most likely a libtool script we actually want to
3086 # install
3087 stripped_ext=""
3088 case $file in
3089 *.exe)
3090 if test ! -f "$file"; then
3091 func_stripname '' '.exe' "$file"
3092 file=$func_stripname_result
3093 stripped_ext=".exe"
3094 fi
3095 ;;
3096 esac
3097
3098 # Do a test to see if this is really a libtool program.
3099 case $host in
3100 *cygwin* | *mingw*)
3101 if func_ltwrapper_executable_p "$file"; then
3102 func_ltwrapper_scriptname "$file"
3103 wrapper=$func_ltwrapper_scriptname_result
3104 else
3105 func_stripname '' '.exe' "$file"
3106 wrapper=$func_stripname_result
3107 fi
3108 ;;
3109 *)
3110 wrapper=$file
3111 ;;
3112 esac
3113 if func_ltwrapper_script_p "$wrapper"; then
3114 notinst_deplibs=
3115 relink_command=
3116
3117 func_source "$wrapper"
3118
3119 # Check the variables that should have been set.
3120 test -z "$generated_by_libtool_version" && \
3121 func_fatal_error "invalid libtool wrapper script \`$wrapper'"
3122
3123 finalize=yes
3124 for lib in $notinst_deplibs; do
3125 # Check to see that each library is installed.
3126 libdir=
3127 if test -f "$lib"; then
3128 func_source "$lib"
3129 fi
3130 libfile="$libdir/"`$ECHO "$lib" | $SED 's%^.*/%%g'` ### testsuite: skip nested quoting test
3131 if test -n "$libdir" && test ! -f "$libfile"; then
3132 func_warning "\`$lib' has not been installed in \`$libdir'"
3133 finalize=no
3134 fi
3135 done
3136
3137 relink_command=
3138 func_source "$wrapper"
3139
3140 outputname=
3141 if test "$fast_install" = no && test -n "$relink_command"; then
3142 $opt_dry_run || {
3143 if test "$finalize" = yes; then
3144 tmpdir=`func_mktempdir`
3145 func_basename "$file$stripped_ext"
3146 file="$func_basename_result"
3147 outputname="$tmpdir/$file"
3148 # Replace the output file specification.
3149 relink_command=`$ECHO "$relink_command" | $SED 's%@OUTPUT@%'"$outputname"'%g'`
3150
3151 $opt_silent || {
3152 func_quote_for_expand "$relink_command"
3153 eval "func_echo $func_quote_for_expand_result"
3154 }
3155 if eval "$relink_command"; then :
3156 else
3157 func_error "error: relink \`$file' with the above command before installing it"
3158 $opt_dry_run || ${RM}r "$tmpdir"
3159 continue
3160 fi
3161 file="$outputname"
3162 else
3163 func_warning "cannot relink \`$file'"
3164 fi
3165 }
3166 else
3167 # Install the binary that we compiled earlier.
3168 file=`$ECHO "$file$stripped_ext" | $SED "s%\([^/]*\)$%$objdir/\1%"`
3169 fi
3170 fi
3171
3172 # remove .exe since cygwin /usr/bin/install will append another
3173 # one anyway
3174 case $install_prog,$host in
3175 */usr/bin/install*,*cygwin*)
3176 case $file:$destfile in
3177 *.exe:*.exe)
3178 # this is ok
3179 ;;
3180 *.exe:*)
3181 destfile=$destfile.exe
3182 ;;
3183 *:*.exe)
3184 func_stripname '' '.exe' "$destfile"
3185 destfile=$func_stripname_result
3186 ;;
3187 esac
3188 ;;
3189 esac
3190 func_show_eval "$install_prog\$stripme \$file \$destfile" 'exit $?'
3191 $opt_dry_run || if test -n "$outputname"; then
3192 ${RM}r "$tmpdir"
3193 fi
3194 ;;
3195 esac
3196 done
3197
3198 for file in $staticlibs; do
3199 func_basename "$file"
3200 name="$func_basename_result"
3201
3202 # Set up the ranlib parameters.
3203 oldlib="$destdir/$name"
3204 func_to_tool_file "$oldlib" func_convert_file_msys_to_w32
3205 tool_oldlib=$func_to_tool_file_result
3206
3207 func_show_eval "$install_prog \$file \$oldlib" 'exit $?'
3208
3209 if test -n "$stripme" && test -n "$old_striplib"; then
3210 func_show_eval "$old_striplib $tool_oldlib" 'exit $?'
3211 fi
3212
3213 # Do each command in the postinstall commands.
3214 func_execute_cmds "$old_postinstall_cmds" 'exit $?'
3215 done
3216
3217 test -n "$future_libdirs" && \
3218 func_warning "remember to run \`$progname --finish$future_libdirs'"
3219
3220 if test -n "$current_libdirs"; then
3221 # Maybe just do a dry run.
3222 $opt_dry_run && current_libdirs=" -n$current_libdirs"
3223 exec_cmd='$SHELL $progpath $preserve_args --finish$current_libdirs'
3224 else
3225 exit $EXIT_SUCCESS
3226 fi
3227 }
3228
3229 test "$opt_mode" = install && func_mode_install ${1+"$@"}
3230
3231
3232 # func_generate_dlsyms outputname originator pic_p
3233 # Extract symbols from dlprefiles and create ${outputname}S.o with
3234 # a dlpreopen symbol table.
3235 func_generate_dlsyms ()
3236 {
3237 $opt_debug
3238 my_outputname="$1"
3239 my_originator="$2"
3240 my_pic_p="${3-no}"
3241 my_prefix=`$ECHO "$my_originator" | sed 's%[^a-zA-Z0-9]%_%g'`
3242 my_dlsyms=
3243
3244 if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then
3245 if test -n "$NM" && test -n "$global_symbol_pipe"; then
3246 my_dlsyms="${my_outputname}S.c"
3247 else
3248 func_error "not configured to extract global symbols from dlpreopened files"
3249 fi
3250 fi
3251
3252 if test -n "$my_dlsyms"; then
3253 case $my_dlsyms in
3254 "") ;;
3255 *.c)
3256 # Discover the nlist of each of the dlfiles.
3257 nlist="$output_objdir/${my_outputname}.nm"
3258
3259 func_show_eval "$RM $nlist ${nlist}S ${nlist}T"
3260
3261 # Parse the name list into a source file.
3262 func_verbose "creating $output_objdir/$my_dlsyms"
3263
3264 $opt_dry_run || $ECHO > "$output_objdir/$my_dlsyms" "\
3265 /* $my_dlsyms - symbol resolution table for \`$my_outputname' dlsym emulation. */
3266 /* Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION */
3267
3268 #ifdef __cplusplus
3269 extern \"C\" {
3270 #endif
3271
3272 #if defined(__GNUC__) && (((__GNUC__ == 4) && (__GNUC_MINOR__ >= 4)) || (__GNUC__ > 4))
3273 #pragma GCC diagnostic ignored \"-Wstrict-prototypes\"
3274 #endif
3275
3276 /* Keep this code in sync between libtool.m4, ltmain, lt_system.h, and tests. */
3277 #if defined(_WIN32) || defined(__CYGWIN__) || defined(_WIN32_WCE)
3278 /* DATA imports from DLLs on WIN32 con't be const, because runtime
3279 relocations are performed -- see ld's documentation on pseudo-relocs. */
3280 # define LT_DLSYM_CONST
3281 #elif defined(__osf__)
3282 /* This system does not cope well with relocations in const data. */
3283 # define LT_DLSYM_CONST
3284 #else
3285 # define LT_DLSYM_CONST const
3286 #endif
3287
3288 /* External symbol declarations for the compiler. */\
3289 "
3290
3291 if test "$dlself" = yes; then
3292 func_verbose "generating symbol list for \`$output'"
3293
3294 $opt_dry_run || echo ': @PROGRAM@ ' > "$nlist"
3295
3296 # Add our own program objects to the symbol list.
3297 progfiles=`$ECHO "$objs$old_deplibs" | $SP2NL | $SED "$lo2o" | $NL2SP`
3298 for progfile in $progfiles; do
3299 func_to_tool_file "$progfile" func_convert_file_msys_to_w32
3300 func_verbose "extracting global C symbols from \`$func_to_tool_file_result'"
3301 $opt_dry_run || eval "$NM $func_to_tool_file_result | $global_symbol_pipe >> '$nlist'"
3302 done
3303
3304 if test -n "$exclude_expsyms"; then
3305 $opt_dry_run || {
3306 eval '$EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T'
3307 eval '$MV "$nlist"T "$nlist"'
3308 }
3309 fi
3310
3311 if test -n "$export_symbols_regex"; then
3312 $opt_dry_run || {
3313 eval '$EGREP -e "$export_symbols_regex" "$nlist" > "$nlist"T'
3314 eval '$MV "$nlist"T "$nlist"'
3315 }
3316 fi
3317
3318 # Prepare the list of exported symbols
3319 if test -z "$export_symbols"; then
3320 export_symbols="$output_objdir/$outputname.exp"
3321 $opt_dry_run || {
3322 $RM $export_symbols
3323 eval "${SED} -n -e '/^: @PROGRAM@ $/d' -e 's/^.* \(.*\)$/\1/p' "'< "$nlist" > "$export_symbols"'
3324 case $host in
3325 *cygwin* | *mingw* | *cegcc* )
3326 eval "echo EXPORTS "'> "$output_objdir/$outputname.def"'
3327 eval 'cat "$export_symbols" >> "$output_objdir/$outputname.def"'
3328 ;;
3329 esac
3330 }
3331 else
3332 $opt_dry_run || {
3333 eval "${SED} -e 's/\([].[*^$]\)/\\\\\1/g' -e 's/^/ /' -e 's/$/$/'"' < "$export_symbols" > "$output_objdir/$outputname.exp"'
3334 eval '$GREP -f "$output_objdir/$outputname.exp" < "$nlist" > "$nlist"T'
3335 eval '$MV "$nlist"T "$nlist"'
3336 case $host in
3337 *cygwin* | *mingw* | *cegcc* )
3338 eval "echo EXPORTS "'> "$output_objdir/$outputname.def"'
3339 eval 'cat "$nlist" >> "$output_objdir/$outputname.def"'
3340 ;;
3341 esac
3342 }
3343 fi
3344 fi
3345
3346 for dlprefile in $dlprefiles; do
3347 func_verbose "extracting global C symbols from \`$dlprefile'"
3348 func_basename "$dlprefile"
3349 name="$func_basename_result"
3350 case $host in
3351 *cygwin* | *mingw* | *cegcc* )
3352 # if an import library, we need to obtain dlname
3353 if func_win32_import_lib_p "$dlprefile"; then
3354 func_tr_sh "$dlprefile"
3355 eval "curr_lafile=\$libfile_$func_tr_sh_result"
3356 dlprefile_dlbasename=""
3357 if test -n "$curr_lafile" && func_lalib_p "$curr_lafile"; then
3358 # Use subshell, to avoid clobbering current variable values
3359 dlprefile_dlname=`source "$curr_lafile" && echo "$dlname"`
3360 if test -n "$dlprefile_dlname" ; then
3361 func_basename "$dlprefile_dlname"
3362 dlprefile_dlbasename="$func_basename_result"
3363 else
3364 # no lafile. user explicitly requested -dlpreopen <import library>.
3365 $sharedlib_from_linklib_cmd "$dlprefile"
3366 dlprefile_dlbasename=$sharedlib_from_linklib_result
3367 fi
3368 fi
3369 $opt_dry_run || {
3370 if test -n "$dlprefile_dlbasename" ; then
3371 eval '$ECHO ": $dlprefile_dlbasename" >> "$nlist"'
3372 else
3373 func_warning "Could not compute DLL name from $name"
3374 eval '$ECHO ": $name " >> "$nlist"'
3375 fi
3376 func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32
3377 eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe |
3378 $SED -e '/I __imp/d' -e 's/I __nm_/D /;s/_nm__//' >> '$nlist'"
3379 }
3380 else # not an import lib
3381 $opt_dry_run || {
3382 eval '$ECHO ": $name " >> "$nlist"'
3383 func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32
3384 eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe >> '$nlist'"
3385 }
3386 fi
3387 ;;
3388 *)
3389 $opt_dry_run || {
3390 eval '$ECHO ": $name " >> "$nlist"'
3391 func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32
3392 eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe >> '$nlist'"
3393 }
3394 ;;
3395 esac
3396 done
3397
3398 $opt_dry_run || {
3399 # Make sure we have at least an empty file.
3400 test -f "$nlist" || : > "$nlist"
3401
3402 if test -n "$exclude_expsyms"; then
3403 $EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T
3404 $MV "$nlist"T "$nlist"
3405 fi
3406
3407 # Try sorting and uniquifying the output.
3408 if $GREP -v "^: " < "$nlist" |
3409 if sort -k 3 </dev/null >/dev/null 2>&1; then
3410 sort -k 3
3411 else
3412 sort +2
3413 fi |
3414 uniq > "$nlist"S; then
3415 :
3416 else
3417 $GREP -v "^: " < "$nlist" > "$nlist"S
3418 fi
3419
3420 if test -f "$nlist"S; then
3421 eval "$global_symbol_to_cdecl"' < "$nlist"S >> "$output_objdir/$my_dlsyms"'
3422 else
3423 echo '/* NONE */' >> "$output_objdir/$my_dlsyms"
3424 fi
3425
3426 echo >> "$output_objdir/$my_dlsyms" "\
3427
3428 /* The mapping between symbol names and symbols. */
3429 typedef struct {
3430 const char *name;
3431 void *address;
3432 } lt_dlsymlist;
3433 extern LT_DLSYM_CONST lt_dlsymlist
3434 lt_${my_prefix}_LTX_preloaded_symbols[];
3435 LT_DLSYM_CONST lt_dlsymlist
3436 lt_${my_prefix}_LTX_preloaded_symbols[] =
3437 {\
3438 { \"$my_originator\", (void *) 0 },"
3439
3440 case $need_lib_prefix in
3441 no)
3442 eval "$global_symbol_to_c_name_address" < "$nlist" >> "$output_objdir/$my_dlsyms"
3443 ;;
3444 *)
3445 eval "$global_symbol_to_c_name_address_lib_prefix" < "$nlist" >> "$output_objdir/$my_dlsyms"
3446 ;;
3447 esac
3448 echo >> "$output_objdir/$my_dlsyms" "\
3449 {0, (void *) 0}
3450 };
3451
3452 /* This works around a problem in FreeBSD linker */
3453 #ifdef FREEBSD_WORKAROUND
3454 static const void *lt_preloaded_setup() {
3455 return lt_${my_prefix}_LTX_preloaded_symbols;
3456 }
3457 #endif
3458
3459 #ifdef __cplusplus
3460 }
3461 #endif\
3462 "
3463 } # !$opt_dry_run
3464
3465 pic_flag_for_symtable=
3466 case "$compile_command " in
3467 *" -static "*) ;;
3468 *)
3469 case $host in
3470 # compiling the symbol table file with pic_flag works around
3471 # a FreeBSD bug that causes programs to crash when -lm is
3472 # linked before any other PIC object. But we must not use
3473 # pic_flag when linking with -static. The problem exists in
3474 # FreeBSD 2.2.6 and is fixed in FreeBSD 3.1.
3475 *-*-freebsd2.*|*-*-freebsd3.0*|*-*-freebsdelf3.0*)
3476 pic_flag_for_symtable=" $pic_flag -DFREEBSD_WORKAROUND" ;;
3477 *-*-hpux*)
3478 pic_flag_for_symtable=" $pic_flag" ;;
3479 *)
3480 if test "X$my_pic_p" != Xno; then
3481 pic_flag_for_symtable=" $pic_flag"
3482 fi
3483 ;;
3484 esac
3485 ;;
3486 esac
3487 symtab_cflags=
3488 for arg in $LTCFLAGS; do
3489 case $arg in
3490 -pie | -fpie | -fPIE) ;;
3491 *) func_append symtab_cflags " $arg" ;;
3492 esac
3493 done
3494
3495 # Now compile the dynamic symbol file.
3496 func_show_eval '(cd $output_objdir && $LTCC$symtab_cflags -c$no_builtin_flag$pic_flag_for_symtable "$my_dlsyms")' 'exit $?'
3497
3498 # Clean up the generated files.
3499 func_show_eval '$RM "$output_objdir/$my_dlsyms" "$nlist" "${nlist}S" "${nlist}T"'
3500
3501 # Transform the symbol file into the correct name.
3502 symfileobj="$output_objdir/${my_outputname}S.$objext"
3503 case $host in
3504 *cygwin* | *mingw* | *cegcc* )
3505 if test -f "$output_objdir/$my_outputname.def"; then
3506 compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"`
3507 finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"`
3508 else
3509 compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$symfileobj%"`
3510 finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$symfileobj%"`
3511 fi
3512 ;;
3513 *)
3514 compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$symfileobj%"`
3515 finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$symfileobj%"`
3516 ;;
3517 esac
3518 ;;
3519 *)
3520 func_fatal_error "unknown suffix for \`$my_dlsyms'"
3521 ;;
3522 esac
3523 else
3524 # We keep going just in case the user didn't refer to
3525 # lt_preloaded_symbols. The linker will fail if global_symbol_pipe
3526 # really was required.
3527
3528 # Nullify the symbol file.
3529 compile_command=`$ECHO "$compile_command" | $SED "s% @SYMFILE@%%"`
3530 finalize_command=`$ECHO "$finalize_command" | $SED "s% @SYMFILE@%%"`
3531 fi
3532 }
3533
3534 # func_win32_libid arg
3535 # return the library type of file 'arg'
3536 #
3537 # Need a lot of goo to handle *both* DLLs and import libs
3538 # Has to be a shell function in order to 'eat' the argument
3539 # that is supplied when $file_magic_command is called.
3540 # Despite the name, also deal with 64 bit binaries.
3541 func_win32_libid ()
3542 {
3543 $opt_debug
3544 win32_libid_type="unknown"
3545 win32_fileres=`file -L $1 2>/dev/null`
3546 case $win32_fileres in
3547 *ar\ archive\ import\ library*) # definitely import
3548 win32_libid_type="x86 archive import"
3549 ;;
3550 *ar\ archive*) # could be an import, or static
3551 # Keep the egrep pattern in sync with the one in _LT_CHECK_MAGIC_METHOD.
3552 if eval $OBJDUMP -f $1 | $SED -e '10q' 2>/dev/null |
3553 $EGREP 'file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64)' >/dev/null; then
3554 func_to_tool_file "$1" func_convert_file_msys_to_w32
3555 win32_nmres=`eval $NM -f posix -A \"$func_to_tool_file_result\" |
3556 $SED -n -e '
3557 1,100{
3558 / I /{
3559 s,.*,import,
3560 p
3561 q
3562 }
3563 }'`
3564 case $win32_nmres in
3565 import*) win32_libid_type="x86 archive import";;
3566 *) win32_libid_type="x86 archive static";;
3567 esac
3568 fi
3569 ;;
3570 *DLL*)
3571 win32_libid_type="x86 DLL"
3572 ;;
3573 *executable*) # but shell scripts are "executable" too...
3574 case $win32_fileres in
3575 *MS\ Windows\ PE\ Intel*)
3576 win32_libid_type="x86 DLL"
3577 ;;
3578 esac
3579 ;;
3580 esac
3581 $ECHO "$win32_libid_type"
3582 }
3583
3584 # func_cygming_dll_for_implib ARG
3585 #
3586 # Platform-specific function to extract the
3587 # name of the DLL associated with the specified
3588 # import library ARG.
3589 # Invoked by eval'ing the libtool variable
3590 # $sharedlib_from_linklib_cmd
3591 # Result is available in the variable
3592 # $sharedlib_from_linklib_result
3593 func_cygming_dll_for_implib ()
3594 {
3595 $opt_debug
3596 sharedlib_from_linklib_result=`$DLLTOOL --identify-strict --identify "$1"`
3597 }
3598
3599 # func_cygming_dll_for_implib_fallback_core SECTION_NAME LIBNAMEs
3600 #
3601 # The is the core of a fallback implementation of a
3602 # platform-specific function to extract the name of the
3603 # DLL associated with the specified import library LIBNAME.
3604 #
3605 # SECTION_NAME is either .idata$6 or .idata$7, depending
3606 # on the platform and compiler that created the implib.
3607 #
3608 # Echos the name of the DLL associated with the
3609 # specified import library.
3610 func_cygming_dll_for_implib_fallback_core ()
3611 {
3612 $opt_debug
3613 match_literal=`$ECHO "$1" | $SED "$sed_make_literal_regex"`
3614 $OBJDUMP -s --section "$1" "$2" 2>/dev/null |
3615 $SED '/^Contents of section '"$match_literal"':/{
3616 # Place marker at beginning of archive member dllname section
3617 s/.*/====MARK====/
3618 p
3619 d
3620 }
3621 # These lines can sometimes be longer than 43 characters, but
3622 # are always uninteresting
3623 /:[ ]*file format pe[i]\{,1\}-/d
3624 /^In archive [^:]*:/d
3625 # Ensure marker is printed
3626 /^====MARK====/p
3627 # Remove all lines with less than 43 characters
3628 /^.\{43\}/!d
3629 # From remaining lines, remove first 43 characters
3630 s/^.\{43\}//' |
3631 $SED -n '
3632 # Join marker and all lines until next marker into a single line
3633 /^====MARK====/ b para
3634 H
3635 $ b para
3636 b
3637 :para
3638 x
3639 s/\n//g
3640 # Remove the marker
3641 s/^====MARK====//
3642 # Remove trailing dots and whitespace
3643 s/[\. \t]*$//
3644 # Print
3645 /./p' |
3646 # we now have a list, one entry per line, of the stringified
3647 # contents of the appropriate section of all members of the
3648 # archive which possess that section. Heuristic: eliminate
3649 # all those which have a first or second character that is
3650 # a '.' (that is, objdump's representation of an unprintable
3651 # character.) This should work for all archives with less than
3652 # 0x302f exports -- but will fail for DLLs whose name actually
3653 # begins with a literal '.' or a single character followed by
3654 # a '.'.
3655 #
3656 # Of those that remain, print the first one.
3657 $SED -e '/^\./d;/^.\./d;q'
3658 }
3659
3660 # func_cygming_gnu_implib_p ARG
3661 # This predicate returns with zero status (TRUE) if
3662 # ARG is a GNU/binutils-style import library. Returns
3663 # with nonzero status (FALSE) otherwise.
3664 func_cygming_gnu_implib_p ()
3665 {
3666 $opt_debug
3667 func_to_tool_file "$1" func_convert_file_msys_to_w32
3668 func_cygming_gnu_implib_tmp=`$NM "$func_to_tool_file_result" | eval "$global_symbol_pipe" | $EGREP ' (_head_[A-Za-z0-9_]+_[ad]l*|[A-Za-z0-9_]+_[ad]l*_iname)$'`
3669 test -n "$func_cygming_gnu_implib_tmp"
3670 }
3671
3672 # func_cygming_ms_implib_p ARG
3673 # This predicate returns with zero status (TRUE) if
3674 # ARG is an MS-style import library. Returns
3675 # with nonzero status (FALSE) otherwise.
3676 func_cygming_ms_implib_p ()
3677 {
3678 $opt_debug
3679 func_to_tool_file "$1" func_convert_file_msys_to_w32
3680 func_cygming_ms_implib_tmp=`$NM "$func_to_tool_file_result" | eval "$global_symbol_pipe" | $GREP '_NULL_IMPORT_DESCRIPTOR'`
3681 test -n "$func_cygming_ms_implib_tmp"
3682 }
3683
3684 # func_cygming_dll_for_implib_fallback ARG
3685 # Platform-specific function to extract the
3686 # name of the DLL associated with the specified
3687 # import library ARG.
3688 #
3689 # This fallback implementation is for use when $DLLTOOL
3690 # does not support the --identify-strict option.
3691 # Invoked by eval'ing the libtool variable
3692 # $sharedlib_from_linklib_cmd
3693 # Result is available in the variable
3694 # $sharedlib_from_linklib_result
3695 func_cygming_dll_for_implib_fallback ()
3696 {
3697 $opt_debug
3698 if func_cygming_gnu_implib_p "$1" ; then
3699 # binutils import library
3700 sharedlib_from_linklib_result=`func_cygming_dll_for_implib_fallback_core '.idata$7' "$1"`
3701 elif func_cygming_ms_implib_p "$1" ; then
3702 # ms-generated import library
3703 sharedlib_from_linklib_result=`func_cygming_dll_for_implib_fallback_core '.idata$6' "$1"`
3704 else
3705 # unknown
3706 sharedlib_from_linklib_result=""
3707 fi
3708 }
3709
3710
3711 # func_extract_an_archive dir oldlib
3712 func_extract_an_archive ()
3713 {
3714 $opt_debug
3715 f_ex_an_ar_dir="$1"; shift
3716 f_ex_an_ar_oldlib="$1"
3717 if test "$lock_old_archive_extraction" = yes; then
3718 lockfile=$f_ex_an_ar_oldlib.lock
3719 until $opt_dry_run || ln "$progpath" "$lockfile" 2>/dev/null; do
3720 func_echo "Waiting for $lockfile to be removed"
3721 sleep 2
3722 done
3723 fi
3724 func_show_eval "(cd \$f_ex_an_ar_dir && $AR x \"\$f_ex_an_ar_oldlib\")" \
3725 'stat=$?; rm -f "$lockfile"; exit $stat'
3726 if test "$lock_old_archive_extraction" = yes; then
3727 $opt_dry_run || rm -f "$lockfile"
3728 fi
3729 if ($AR t "$f_ex_an_ar_oldlib" | sort | sort -uc >/dev/null 2>&1); then
3730 :
3731 else
3732 func_fatal_error "object name conflicts in archive: $f_ex_an_ar_dir/$f_ex_an_ar_oldlib"
3733 fi
3734 }
3735
3736
3737 # func_extract_archives gentop oldlib ...
3738 func_extract_archives ()
3739 {
3740 $opt_debug
3741 my_gentop="$1"; shift
3742 my_oldlibs=${1+"$@"}
3743 my_oldobjs=""
3744 my_xlib=""
3745 my_xabs=""
3746 my_xdir=""
3747
3748 for my_xlib in $my_oldlibs; do
3749 # Extract the objects.
3750 case $my_xlib in
3751 [\\/]* | [A-Za-z]:[\\/]*) my_xabs="$my_xlib" ;;
3752 *) my_xabs=`pwd`"/$my_xlib" ;;
3753 esac
3754 func_basename "$my_xlib"
3755 my_xlib="$func_basename_result"
3756 my_xlib_u=$my_xlib
3757 while :; do
3758 case " $extracted_archives " in
3759 *" $my_xlib_u "*)
3760 func_arith $extracted_serial + 1
3761 extracted_serial=$func_arith_result
3762 my_xlib_u=lt$extracted_serial-$my_xlib ;;
3763 *) break ;;
3764 esac
3765 done
3766 extracted_archives="$extracted_archives $my_xlib_u"
3767 my_xdir="$my_gentop/$my_xlib_u"
3768
3769 func_mkdir_p "$my_xdir"
3770
3771 case $host in
3772 *-darwin*)
3773 func_verbose "Extracting $my_xabs"
3774 # Do not bother doing anything if just a dry run
3775 $opt_dry_run || {
3776 darwin_orig_dir=`pwd`
3777 cd $my_xdir || exit $?
3778 darwin_archive=$my_xabs
3779 darwin_curdir=`pwd`
3780 darwin_base_archive=`basename "$darwin_archive"`
3781 darwin_arches=`$LIPO -info "$darwin_archive" 2>/dev/null | $GREP Architectures 2>/dev/null || true`
3782 if test -n "$darwin_arches"; then
3783 darwin_arches=`$ECHO "$darwin_arches" | $SED -e 's/.*are://'`
3784 darwin_arch=
3785 func_verbose "$darwin_base_archive has multiple architectures $darwin_arches"
3786 for darwin_arch in $darwin_arches ; do
3787 func_mkdir_p "unfat-$$/${darwin_base_archive}-${darwin_arch}"
3788 $LIPO -thin $darwin_arch -output "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}" "${darwin_archive}"
3789 cd "unfat-$$/${darwin_base_archive}-${darwin_arch}"
3790 func_extract_an_archive "`pwd`" "${darwin_base_archive}"
3791 cd "$darwin_curdir"
3792 $RM "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}"
3793 done # $darwin_arches
3794 ## Okay now we've a bunch of thin objects, gotta fatten them up :)
3795 darwin_filelist=`find unfat-$$ -type f -name \*.o -print -o -name \*.lo -print | $SED -e "$basename" | sort -u`
3796 darwin_file=
3797 darwin_files=
3798 for darwin_file in $darwin_filelist; do
3799 darwin_files=`find unfat-$$ -name $darwin_file -print | sort | $NL2SP`
3800 $LIPO -create -output "$darwin_file" $darwin_files
3801 done # $darwin_filelist
3802 $RM -rf unfat-$$
3803 cd "$darwin_orig_dir"
3804 else
3805 cd $darwin_orig_dir
3806 func_extract_an_archive "$my_xdir" "$my_xabs"
3807 fi # $darwin_arches
3808 } # !$opt_dry_run
3809 ;;
3810 *)
3811 func_extract_an_archive "$my_xdir" "$my_xabs"
3812 ;;
3813 esac
3814 my_oldobjs="$my_oldobjs "`find $my_xdir -name \*.$objext -print -o -name \*.lo -print | sort | $NL2SP`
3815 done
3816
3817 func_extract_archives_result="$my_oldobjs"
3818 }
3819
3820
3821 # func_emit_wrapper [arg=no]
3822 #
3823 # Emit a libtool wrapper script on stdout.
3824 # Don't directly open a file because we may want to
3825 # incorporate the script contents within a cygwin/mingw
3826 # wrapper executable. Must ONLY be called from within
3827 # func_mode_link because it depends on a number of variables
3828 # set therein.
3829 #
3830 # ARG is the value that the WRAPPER_SCRIPT_BELONGS_IN_OBJDIR
3831 # variable will take. If 'yes', then the emitted script
3832 # will assume that the directory in which it is stored is
3833 # the $objdir directory. This is a cygwin/mingw-specific
3834 # behavior.
3835 func_emit_wrapper ()
3836 {
3837 func_emit_wrapper_arg1=${1-no}
3838
3839 $ECHO "\
3840 #! $SHELL
3841
3842 # $output - temporary wrapper script for $objdir/$outputname
3843 # Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION
3844 #
3845 # The $output program cannot be directly executed until all the libtool
3846 # libraries that it depends on are installed.
3847 #
3848 # This wrapper script should never be moved out of the build directory.
3849 # If it is, it will not operate correctly.
3850
3851 # Sed substitution that helps us do robust quoting. It backslashifies
3852 # metacharacters that are still active within double-quoted strings.
3853 sed_quote_subst='$sed_quote_subst'
3854
3855 # Be Bourne compatible
3856 if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then
3857 emulate sh
3858 NULLCMD=:
3859 # Zsh 3.x and 4.x performs word splitting on \${1+\"\$@\"}, which
3860 # is contrary to our usage. Disable this feature.
3861 alias -g '\${1+\"\$@\"}'='\"\$@\"'
3862 setopt NO_GLOB_SUBST
3863 else
3864 case \`(set -o) 2>/dev/null\` in *posix*) set -o posix;; esac
3865 fi
3866 BIN_SH=xpg4; export BIN_SH # for Tru64
3867 DUALCASE=1; export DUALCASE # for MKS sh
3868
3869 # The HP-UX ksh and POSIX shell print the target directory to stdout
3870 # if CDPATH is set.
3871 (unset CDPATH) >/dev/null 2>&1 && unset CDPATH
3872
3873 relink_command=\"$relink_command\"
3874
3875 # This environment variable determines our operation mode.
3876 if test \"\$libtool_install_magic\" = \"$magic\"; then
3877 # install mode needs the following variables:
3878 generated_by_libtool_version='$macro_version'
3879 notinst_deplibs='$notinst_deplibs'
3880 else
3881 # When we are sourced in execute mode, \$file and \$ECHO are already set.
3882 if test \"\$libtool_execute_magic\" != \"$magic\"; then
3883 file=\"\$0\""
3884
3885 qECHO=`$ECHO "$ECHO" | $SED "$sed_quote_subst"`
3886 $ECHO "\
3887
3888 # A function that is used when there is no print builtin or printf.
3889 func_fallback_echo ()
3890 {
3891 eval 'cat <<_LTECHO_EOF
3892 \$1
3893 _LTECHO_EOF'
3894 }
3895 ECHO=\"$qECHO\"
3896 fi
3897
3898 # Very basic option parsing. These options are (a) specific to
3899 # the libtool wrapper, (b) are identical between the wrapper
3900 # /script/ and the wrapper /executable/ which is used only on
3901 # windows platforms, and (c) all begin with the string "--lt-"
3902 # (application programs are unlikely to have options which match
3903 # this pattern).
3904 #
3905 # There are only two supported options: --lt-debug and
3906 # --lt-dump-script. There is, deliberately, no --lt-help.
3907 #
3908 # The first argument to this parsing function should be the
3909 # script's $0 value, followed by "$@".
3910 lt_option_debug=
3911 func_parse_lt_options ()
3912 {
3913 lt_script_arg0=\$0
3914 shift
3915 for lt_opt
3916 do
3917 case \"\$lt_opt\" in
3918 --lt-debug) lt_option_debug=1 ;;
3919 --lt-dump-script)
3920 lt_dump_D=\`\$ECHO \"X\$lt_script_arg0\" | $SED -e 's/^X//' -e 's%/[^/]*$%%'\`
3921 test \"X\$lt_dump_D\" = \"X\$lt_script_arg0\" && lt_dump_D=.
3922 lt_dump_F=\`\$ECHO \"X\$lt_script_arg0\" | $SED -e 's/^X//' -e 's%^.*/%%'\`
3923 cat \"\$lt_dump_D/\$lt_dump_F\"
3924 exit 0
3925 ;;
3926 --lt-*)
3927 \$ECHO \"Unrecognized --lt- option: '\$lt_opt'\" 1>&2
3928 exit 1
3929 ;;
3930 esac
3931 done
3932
3933 # Print the debug banner immediately:
3934 if test -n \"\$lt_option_debug\"; then
3935 echo \"${outputname}:${output}:\${LINENO}: libtool wrapper (GNU $PACKAGE$TIMESTAMP) $VERSION\" 1>&2
3936 fi
3937 }
3938
3939 # Used when --lt-debug. Prints its arguments to stdout
3940 # (redirection is the responsibility of the caller)
3941 func_lt_dump_args ()
3942 {
3943 lt_dump_args_N=1;
3944 for lt_arg
3945 do
3946 \$ECHO \"${outputname}:${output}:\${LINENO}: newargv[\$lt_dump_args_N]: \$lt_arg\"
3947 lt_dump_args_N=\`expr \$lt_dump_args_N + 1\`
3948 done
3949 }
3950
3951 # Core function for launching the target application
3952 func_exec_program_core ()
3953 {
3954 "
3955 case $host in
3956 # Backslashes separate directories on plain windows
3957 *-*-mingw | *-*-os2* | *-cegcc*)
3958 $ECHO "\
3959 if test -n \"\$lt_option_debug\"; then
3960 \$ECHO \"${outputname}:${output}:\${LINENO}: newargv[0]: \$progdir\\\\\$program\" 1>&2
3961 func_lt_dump_args \${1+\"\$@\"} 1>&2
3962 fi
3963 exec \"\$progdir\\\\\$program\" \${1+\"\$@\"}
3964 "
3965 ;;
3966
3967 *)
3968 $ECHO "\
3969 if test -n \"\$lt_option_debug\"; then
3970 \$ECHO \"${outputname}:${output}:\${LINENO}: newargv[0]: \$progdir/\$program\" 1>&2
3971 func_lt_dump_args \${1+\"\$@\"} 1>&2
3972 fi
3973 exec \"\$progdir/\$program\" \${1+\"\$@\"}
3974 "
3975 ;;
3976 esac
3977 $ECHO "\
3978 \$ECHO \"\$0: cannot exec \$program \$*\" 1>&2
3979 exit 1
3980 }
3981
3982 # A function to encapsulate launching the target application
3983 # Strips options in the --lt-* namespace from \$@ and
3984 # launches target application with the remaining arguments.
3985 func_exec_program ()
3986 {
3987 case \" \$* \" in
3988 *\\ --lt-*)
3989 for lt_wr_arg
3990 do
3991 case \$lt_wr_arg in
3992 --lt-*) ;;
3993 *) set x \"\$@\" \"\$lt_wr_arg\"; shift;;
3994 esac
3995 shift
3996 done ;;
3997 esac
3998 func_exec_program_core \${1+\"\$@\"}
3999 }
4000
4001 # Parse options
4002 func_parse_lt_options \"\$0\" \${1+\"\$@\"}
4003
4004 # Find the directory that this script lives in.
4005 thisdir=\`\$ECHO \"\$file\" | $SED 's%/[^/]*$%%'\`
4006 test \"x\$thisdir\" = \"x\$file\" && thisdir=.
4007
4008 # Follow symbolic links until we get to the real thisdir.
4009 file=\`ls -ld \"\$file\" | $SED -n 's/.*-> //p'\`
4010 while test -n \"\$file\"; do
4011 destdir=\`\$ECHO \"\$file\" | $SED 's%/[^/]*\$%%'\`
4012
4013 # If there was a directory component, then change thisdir.
4014 if test \"x\$destdir\" != \"x\$file\"; then
4015 case \"\$destdir\" in
4016 [\\\\/]* | [A-Za-z]:[\\\\/]*) thisdir=\"\$destdir\" ;;
4017 *) thisdir=\"\$thisdir/\$destdir\" ;;
4018 esac
4019 fi
4020
4021 file=\`\$ECHO \"\$file\" | $SED 's%^.*/%%'\`
4022 file=\`ls -ld \"\$thisdir/\$file\" | $SED -n 's/.*-> //p'\`
4023 done
4024
4025 # Usually 'no', except on cygwin/mingw when embedded into
4026 # the cwrapper.
4027 WRAPPER_SCRIPT_BELONGS_IN_OBJDIR=$func_emit_wrapper_arg1
4028 if test \"\$WRAPPER_SCRIPT_BELONGS_IN_OBJDIR\" = \"yes\"; then
4029 # special case for '.'
4030 if test \"\$thisdir\" = \".\"; then
4031 thisdir=\`pwd\`
4032 fi
4033 # remove .libs from thisdir
4034 case \"\$thisdir\" in
4035 *[\\\\/]$objdir ) thisdir=\`\$ECHO \"\$thisdir\" | $SED 's%[\\\\/][^\\\\/]*$%%'\` ;;
4036 $objdir ) thisdir=. ;;
4037 esac
4038 fi
4039
4040 # Try to get the absolute directory name.
4041 absdir=\`cd \"\$thisdir\" && pwd\`
4042 test -n \"\$absdir\" && thisdir=\"\$absdir\"
4043 "
4044
4045 if test "$fast_install" = yes; then
4046 $ECHO "\
4047 program=lt-'$outputname'$exeext
4048 progdir=\"\$thisdir/$objdir\"
4049
4050 if test ! -f \"\$progdir/\$program\" ||
4051 { file=\`ls -1dt \"\$progdir/\$program\" \"\$progdir/../\$program\" 2>/dev/null | ${SED} 1q\`; \\
4052 test \"X\$file\" != \"X\$progdir/\$program\"; }; then
4053
4054 file=\"\$\$-\$program\"
4055
4056 if test ! -d \"\$progdir\"; then
4057 $MKDIR \"\$progdir\"
4058 else
4059 $RM \"\$progdir/\$file\"
4060 fi"
4061
4062 $ECHO "\
4063
4064 # relink executable if necessary
4065 if test -n \"\$relink_command\"; then
4066 if relink_command_output=\`eval \$relink_command 2>&1\`; then :
4067 else
4068 $ECHO \"\$relink_command_output\" >&2
4069 $RM \"\$progdir/\$file\"
4070 exit 1
4071 fi
4072 fi
4073
4074 $MV \"\$progdir/\$file\" \"\$progdir/\$program\" 2>/dev/null ||
4075 { $RM \"\$progdir/\$program\";
4076 $MV \"\$progdir/\$file\" \"\$progdir/\$program\"; }
4077 $RM \"\$progdir/\$file\"
4078 fi"
4079 else
4080 $ECHO "\
4081 program='$outputname'
4082 progdir=\"\$thisdir/$objdir\"
4083 "
4084 fi
4085
4086 $ECHO "\
4087
4088 if test -f \"\$progdir/\$program\"; then"
4089
4090 # fixup the dll searchpath if we need to.
4091 #
4092 # Fix the DLL searchpath if we need to. Do this before prepending
4093 # to shlibpath, because on Windows, both are PATH and uninstalled
4094 # libraries must come first.
4095 if test -n "$dllsearchpath"; then
4096 $ECHO "\
4097 # Add the dll search path components to the executable PATH
4098 PATH=$dllsearchpath:\$PATH
4099 "
4100 fi
4101
4102 # Export our shlibpath_var if we have one.
4103 if test "$shlibpath_overrides_runpath" = yes && test -n "$shlibpath_var" && test -n "$temp_rpath"; then
4104 $ECHO "\
4105 # Add our own library path to $shlibpath_var
4106 $shlibpath_var=\"$temp_rpath\$$shlibpath_var\"
4107
4108 # Some systems cannot cope with colon-terminated $shlibpath_var
4109 # The second colon is a workaround for a bug in BeOS R4 sed
4110 $shlibpath_var=\`\$ECHO \"\$$shlibpath_var\" | $SED 's/::*\$//'\`
4111
4112 export $shlibpath_var
4113 "
4114 fi
4115
4116 $ECHO "\
4117 if test \"\$libtool_execute_magic\" != \"$magic\"; then
4118 # Run the actual program with our arguments.
4119 func_exec_program \${1+\"\$@\"}
4120 fi
4121 else
4122 # The program doesn't exist.
4123 \$ECHO \"\$0: error: \\\`\$progdir/\$program' does not exist\" 1>&2
4124 \$ECHO \"This script is just a wrapper for \$program.\" 1>&2
4125 \$ECHO \"See the $PACKAGE documentation for more information.\" 1>&2
4126 exit 1
4127 fi
4128 fi\
4129 "
4130 }
4131
4132
4133 # func_emit_cwrapperexe_src
4134 # emit the source code for a wrapper executable on stdout
4135 # Must ONLY be called from within func_mode_link because
4136 # it depends on a number of variable set therein.
4137 func_emit_cwrapperexe_src ()
4138 {
4139 cat <<EOF
4140
4141 /* $cwrappersource - temporary wrapper executable for $objdir/$outputname
4142 Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION
4143
4144 The $output program cannot be directly executed until all the libtool
4145 libraries that it depends on are installed.
4146
4147 This wrapper executable should never be moved out of the build directory.
4148 If it is, it will not operate correctly.
4149 */
4150 EOF
4151 cat <<"EOF"
4152 #ifdef _MSC_VER
4153 # define _CRT_SECURE_NO_DEPRECATE 1
4154 #endif
4155 #include <stdio.h>
4156 #include <stdlib.h>
4157 #ifdef _MSC_VER
4158 # include <direct.h>
4159 # include <process.h>
4160 # include <io.h>
4161 #else
4162 # include <unistd.h>
4163 # include <stdint.h>
4164 # ifdef __CYGWIN__
4165 # include <io.h>
4166 # endif
4167 #endif
4168 #include <malloc.h>
4169 #include <stdarg.h>
4170 #include <assert.h>
4171 #include <string.h>
4172 #include <ctype.h>
4173 #include <errno.h>
4174 #include <fcntl.h>
4175 #include <sys/stat.h>
4176
4177 /* declarations of non-ANSI functions */
4178 #if defined(__MINGW32__)
4179 # ifdef __STRICT_ANSI__
4180 int _putenv (const char *);
4181 # endif
4182 #elif defined(__CYGWIN__)
4183 # ifdef __STRICT_ANSI__
4184 char *realpath (const char *, char *);
4185 int putenv (char *);
4186 int setenv (const char *, const char *, int);
4187 # endif
4188 /* #elif defined (other platforms) ... */
4189 #endif
4190
4191 /* portability defines, excluding path handling macros */
4192 #if defined(_MSC_VER)
4193 # define setmode _setmode
4194 # define stat _stat
4195 # define chmod _chmod
4196 # define getcwd _getcwd
4197 # define putenv _putenv
4198 # define S_IXUSR _S_IEXEC
4199 # ifndef _INTPTR_T_DEFINED
4200 # define _INTPTR_T_DEFINED
4201 # define intptr_t int
4202 # endif
4203 #elif defined(__MINGW32__)
4204 # define setmode _setmode
4205 # define stat _stat
4206 # define chmod _chmod
4207 # define getcwd _getcwd
4208 # define putenv _putenv
4209 #elif defined(__CYGWIN__)
4210 # define HAVE_SETENV
4211 # define FOPEN_WB "wb"
4212 /* #elif defined (other platforms) ... */
4213 #endif
4214
4215 #if defined(PATH_MAX)
4216 # define LT_PATHMAX PATH_MAX
4217 #elif defined(MAXPATHLEN)
4218 # define LT_PATHMAX MAXPATHLEN
4219 #else
4220 # define LT_PATHMAX 1024
4221 #endif
4222
4223 #ifndef S_IXOTH
4224 # define S_IXOTH 0
4225 #endif
4226 #ifndef S_IXGRP
4227 # define S_IXGRP 0
4228 #endif
4229
4230 /* path handling portability macros */
4231 #ifndef DIR_SEPARATOR
4232 # define DIR_SEPARATOR '/'
4233 # define PATH_SEPARATOR ':'
4234 #endif
4235
4236 #if defined (_WIN32) || defined (__MSDOS__) || defined (__DJGPP__) || \
4237 defined (__OS2__)
4238 # define HAVE_DOS_BASED_FILE_SYSTEM
4239 # define FOPEN_WB "wb"
4240 # ifndef DIR_SEPARATOR_2
4241 # define DIR_SEPARATOR_2 '\\'
4242 # endif
4243 # ifndef PATH_SEPARATOR_2
4244 # define PATH_SEPARATOR_2 ';'
4245 # endif
4246 #endif
4247
4248 #ifndef DIR_SEPARATOR_2
4249 # define IS_DIR_SEPARATOR(ch) ((ch) == DIR_SEPARATOR)
4250 #else /* DIR_SEPARATOR_2 */
4251 # define IS_DIR_SEPARATOR(ch) \
4252 (((ch) == DIR_SEPARATOR) || ((ch) == DIR_SEPARATOR_2))
4253 #endif /* DIR_SEPARATOR_2 */
4254
4255 #ifndef PATH_SEPARATOR_2
4256 # define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR)
4257 #else /* PATH_SEPARATOR_2 */
4258 # define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR_2)
4259 #endif /* PATH_SEPARATOR_2 */
4260
4261 #ifndef FOPEN_WB
4262 # define FOPEN_WB "w"
4263 #endif
4264 #ifndef _O_BINARY
4265 # define _O_BINARY 0
4266 #endif
4267
4268 #define XMALLOC(type, num) ((type *) xmalloc ((num) * sizeof(type)))
4269 #define XFREE(stale) do { \
4270 if (stale) { free ((void *) stale); stale = 0; } \
4271 } while (0)
4272
4273 #if defined(LT_DEBUGWRAPPER)
4274 static int lt_debug = 1;
4275 #else
4276 static int lt_debug = 0;
4277 #endif
4278
4279 const char *program_name = "libtool-wrapper"; /* in case xstrdup fails */
4280
4281 void *xmalloc (size_t num);
4282 char *xstrdup (const char *string);
4283 const char *base_name (const char *name);
4284 char *find_executable (const char *wrapper);
4285 char *chase_symlinks (const char *pathspec);
4286 int make_executable (const char *path);
4287 int check_executable (const char *path);
4288 char *strendzap (char *str, const char *pat);
4289 void lt_debugprintf (const char *file, int line, const char *fmt, ...);
4290 void lt_fatal (const char *file, int line, const char *message, ...);
4291 static const char *nonnull (const char *s);
4292 static const char *nonempty (const char *s);
4293 void lt_setenv (const char *name, const char *value);
4294 char *lt_extend_str (const char *orig_value, const char *add, int to_end);
4295 void lt_update_exe_path (const char *name, const char *value);
4296 void lt_update_lib_path (const char *name, const char *value);
4297 char **prepare_spawn (char **argv);
4298 void lt_dump_script (FILE *f);
4299 EOF
4300
4301 cat <<EOF
4302 volatile const char * MAGIC_EXE = "$magic_exe";
4303 const char * LIB_PATH_VARNAME = "$shlibpath_var";
4304 EOF
4305
4306 if test "$shlibpath_overrides_runpath" = yes && test -n "$shlibpath_var" && test -n "$temp_rpath"; then
4307 func_to_host_path "$temp_rpath"
4308 cat <<EOF
4309 const char * LIB_PATH_VALUE = "$func_to_host_path_result";
4310 EOF
4311 else
4312 cat <<"EOF"
4313 const char * LIB_PATH_VALUE = "";
4314 EOF
4315 fi
4316
4317 if test -n "$dllsearchpath"; then
4318 func_to_host_path "$dllsearchpath:"
4319 cat <<EOF
4320 const char * EXE_PATH_VARNAME = "PATH";
4321 const char * EXE_PATH_VALUE = "$func_to_host_path_result";
4322 EOF
4323 else
4324 cat <<"EOF"
4325 const char * EXE_PATH_VARNAME = "";
4326 const char * EXE_PATH_VALUE = "";
4327 EOF
4328 fi
4329
4330 if test "$fast_install" = yes; then
4331 cat <<EOF
4332 const char * TARGET_PROGRAM_NAME = "lt-$outputname"; /* hopefully, no .exe */
4333 EOF
4334 else
4335 cat <<EOF
4336 const char * TARGET_PROGRAM_NAME = "$outputname"; /* hopefully, no .exe */
4337 EOF
4338 fi
4339
4340
4341 cat <<"EOF"
4342
4343 #define LTWRAPPER_OPTION_PREFIX "--lt-"
4344
4345 static const char *ltwrapper_option_prefix = LTWRAPPER_OPTION_PREFIX;
4346 static const char *dumpscript_opt = LTWRAPPER_OPTION_PREFIX "dump-script";
4347 static const char *debug_opt = LTWRAPPER_OPTION_PREFIX "debug";
4348
4349 int
4350 main (int argc, char *argv[])
4351 {
4352 char **newargz;
4353 int newargc;
4354 char *tmp_pathspec;
4355 char *actual_cwrapper_path;
4356 char *actual_cwrapper_name;
4357 char *target_name;
4358 char *lt_argv_zero;
4359 intptr_t rval = 127;
4360
4361 int i;
4362
4363 program_name = (char *) xstrdup (base_name (argv[0]));
4364 newargz = XMALLOC (char *, argc + 1);
4365
4366 /* very simple arg parsing; don't want to rely on getopt
4367 * also, copy all non cwrapper options to newargz, except
4368 * argz[0], which is handled differently
4369 */
4370 newargc=0;
4371 for (i = 1; i < argc; i++)
4372 {
4373 if (strcmp (argv[i], dumpscript_opt) == 0)
4374 {
4375 EOF
4376 case "$host" in
4377 *mingw* | *cygwin* )
4378 # make stdout use "unix" line endings
4379 echo " setmode(1,_O_BINARY);"
4380 ;;
4381 esac
4382
4383 cat <<"EOF"
4384 lt_dump_script (stdout);
4385 return 0;
4386 }
4387 if (strcmp (argv[i], debug_opt) == 0)
4388 {
4389 lt_debug = 1;
4390 continue;
4391 }
4392 if (strcmp (argv[i], ltwrapper_option_prefix) == 0)
4393 {
4394 /* however, if there is an option in the LTWRAPPER_OPTION_PREFIX
4395 namespace, but it is not one of the ones we know about and
4396 have already dealt with, above (inluding dump-script), then
4397 report an error. Otherwise, targets might begin to believe
4398 they are allowed to use options in the LTWRAPPER_OPTION_PREFIX
4399 namespace. The first time any user complains about this, we'll
4400 need to make LTWRAPPER_OPTION_PREFIX a configure-time option
4401 or a configure.ac-settable value.
4402 */
4403 lt_fatal (__FILE__, __LINE__,
4404 "unrecognized %s option: '%s'",
4405 ltwrapper_option_prefix, argv[i]);
4406 }
4407 /* otherwise ... */
4408 newargz[++newargc] = xstrdup (argv[i]);
4409 }
4410 newargz[++newargc] = NULL;
4411
4412 EOF
4413 cat <<EOF
4414 /* The GNU banner must be the first non-error debug message */
4415 lt_debugprintf (__FILE__, __LINE__, "libtool wrapper (GNU $PACKAGE$TIMESTAMP) $VERSION\n");
4416 EOF
4417 cat <<"EOF"
4418 lt_debugprintf (__FILE__, __LINE__, "(main) argv[0]: %s\n", argv[0]);
4419 lt_debugprintf (__FILE__, __LINE__, "(main) program_name: %s\n", program_name);
4420
4421 tmp_pathspec = find_executable (argv[0]);
4422 if (tmp_pathspec == NULL)
4423 lt_fatal (__FILE__, __LINE__, "couldn't find %s", argv[0]);
4424 lt_debugprintf (__FILE__, __LINE__,
4425 "(main) found exe (before symlink chase) at: %s\n",
4426 tmp_pathspec);
4427
4428 actual_cwrapper_path = chase_symlinks (tmp_pathspec);
4429 lt_debugprintf (__FILE__, __LINE__,
4430 "(main) found exe (after symlink chase) at: %s\n",
4431 actual_cwrapper_path);
4432 XFREE (tmp_pathspec);
4433
4434 actual_cwrapper_name = xstrdup (base_name (actual_cwrapper_path));
4435 strendzap (actual_cwrapper_path, actual_cwrapper_name);
4436
4437 /* wrapper name transforms */
4438 strendzap (actual_cwrapper_name, ".exe");
4439 tmp_pathspec = lt_extend_str (actual_cwrapper_name, ".exe", 1);
4440 XFREE (actual_cwrapper_name);
4441 actual_cwrapper_name = tmp_pathspec;
4442 tmp_pathspec = 0;
4443
4444 /* target_name transforms -- use actual target program name; might have lt- prefix */
4445 target_name = xstrdup (base_name (TARGET_PROGRAM_NAME));
4446 strendzap (target_name, ".exe");
4447 tmp_pathspec = lt_extend_str (target_name, ".exe", 1);
4448 XFREE (target_name);
4449 target_name = tmp_pathspec;
4450 tmp_pathspec = 0;
4451
4452 lt_debugprintf (__FILE__, __LINE__,
4453 "(main) libtool target name: %s\n",
4454 target_name);
4455 EOF
4456
4457 cat <<EOF
4458 newargz[0] =
4459 XMALLOC (char, (strlen (actual_cwrapper_path) +
4460 strlen ("$objdir") + 1 + strlen (actual_cwrapper_name) + 1));
4461 strcpy (newargz[0], actual_cwrapper_path);
4462 strcat (newargz[0], "$objdir");
4463 strcat (newargz[0], "/");
4464 EOF
4465
4466 cat <<"EOF"
4467 /* stop here, and copy so we don't have to do this twice */
4468 tmp_pathspec = xstrdup (newargz[0]);
4469
4470 /* do NOT want the lt- prefix here, so use actual_cwrapper_name */
4471 strcat (newargz[0], actual_cwrapper_name);
4472
4473 /* DO want the lt- prefix here if it exists, so use target_name */
4474 lt_argv_zero = lt_extend_str (tmp_pathspec, target_name, 1);
4475 XFREE (tmp_pathspec);
4476 tmp_pathspec = NULL;
4477 EOF
4478
4479 case $host_os in
4480 mingw*)
4481 cat <<"EOF"
4482 {
4483 char* p;
4484 while ((p = strchr (newargz[0], '\\')) != NULL)
4485 {
4486 *p = '/';
4487 }
4488 while ((p = strchr (lt_argv_zero, '\\')) != NULL)
4489 {
4490 *p = '/';
4491 }
4492 }
4493 EOF
4494 ;;
4495 esac
4496
4497 cat <<"EOF"
4498 XFREE (target_name);
4499 XFREE (actual_cwrapper_path);
4500 XFREE (actual_cwrapper_name);
4501
4502 lt_setenv ("BIN_SH", "xpg4"); /* for Tru64 */
4503 lt_setenv ("DUALCASE", "1"); /* for MSK sh */
4504 /* Update the DLL searchpath. EXE_PATH_VALUE ($dllsearchpath) must
4505 be prepended before (that is, appear after) LIB_PATH_VALUE ($temp_rpath)
4506 because on Windows, both *_VARNAMEs are PATH but uninstalled
4507 libraries must come first. */
4508 lt_update_exe_path (EXE_PATH_VARNAME, EXE_PATH_VALUE);
4509 lt_update_lib_path (LIB_PATH_VARNAME, LIB_PATH_VALUE);
4510
4511 lt_debugprintf (__FILE__, __LINE__, "(main) lt_argv_zero: %s\n",
4512 nonnull (lt_argv_zero));
4513 for (i = 0; i < newargc; i++)
4514 {
4515 lt_debugprintf (__FILE__, __LINE__, "(main) newargz[%d]: %s\n",
4516 i, nonnull (newargz[i]));
4517 }
4518
4519 EOF
4520
4521 case $host_os in
4522 mingw*)
4523 cat <<"EOF"
4524 /* execv doesn't actually work on mingw as expected on unix */
4525 newargz = prepare_spawn (newargz);
4526 rval = _spawnv (_P_WAIT, lt_argv_zero, (const char * const *) newargz);
4527 if (rval == -1)
4528 {
4529 /* failed to start process */
4530 lt_debugprintf (__FILE__, __LINE__,
4531 "(main) failed to launch target \"%s\": %s\n",
4532 lt_argv_zero, nonnull (strerror (errno)));
4533 return 127;
4534 }
4535 return rval;
4536 EOF
4537 ;;
4538 *)
4539 cat <<"EOF"
4540 execv (lt_argv_zero, newargz);
4541 return rval; /* =127, but avoids unused variable warning */
4542 EOF
4543 ;;
4544 esac
4545
4546 cat <<"EOF"
4547 }
4548
4549 void *
4550 xmalloc (size_t num)
4551 {
4552 void *p = (void *) malloc (num);
4553 if (!p)
4554 lt_fatal (__FILE__, __LINE__, "memory exhausted");
4555
4556 return p;
4557 }
4558
4559 char *
4560 xstrdup (const char *string)
4561 {
4562 return string ? strcpy ((char *) xmalloc (strlen (string) + 1),
4563 string) : NULL;
4564 }
4565
4566 const char *
4567 base_name (const char *name)
4568 {
4569 const char *base;
4570
4571 #if defined (HAVE_DOS_BASED_FILE_SYSTEM)
4572 /* Skip over the disk name in MSDOS pathnames. */
4573 if (isalpha ((unsigned char) name[0]) && name[1] == ':')
4574 name += 2;
4575 #endif
4576
4577 for (base = name; *name; name++)
4578 if (IS_DIR_SEPARATOR (*name))
4579 base = name + 1;
4580 return base;
4581 }
4582
4583 int
4584 check_executable (const char *path)
4585 {
4586 struct stat st;
4587
4588 lt_debugprintf (__FILE__, __LINE__, "(check_executable): %s\n",
4589 nonempty (path));
4590 if ((!path) || (!*path))
4591 return 0;
4592
4593 if ((stat (path, &st) >= 0)
4594 && (st.st_mode & (S_IXUSR | S_IXGRP | S_IXOTH)))
4595 return 1;
4596 else
4597 return 0;
4598 }
4599
4600 int
4601 make_executable (const char *path)
4602 {
4603 int rval = 0;
4604 struct stat st;
4605
4606 lt_debugprintf (__FILE__, __LINE__, "(make_executable): %s\n",
4607 nonempty (path));
4608 if ((!path) || (!*path))
4609 return 0;
4610
4611 if (stat (path, &st) >= 0)
4612 {
4613 rval = chmod (path, st.st_mode | S_IXOTH | S_IXGRP | S_IXUSR);
4614 }
4615 return rval;
4616 }
4617
4618 /* Searches for the full path of the wrapper. Returns
4619 newly allocated full path name if found, NULL otherwise
4620 Does not chase symlinks, even on platforms that support them.
4621 */
4622 char *
4623 find_executable (const char *wrapper)
4624 {
4625 int has_slash = 0;
4626 const char *p;
4627 const char *p_next;
4628 /* static buffer for getcwd */
4629 char tmp[LT_PATHMAX + 1];
4630 int tmp_len;
4631 char *concat_name;
4632
4633 lt_debugprintf (__FILE__, __LINE__, "(find_executable): %s\n",
4634 nonempty (wrapper));
4635
4636 if ((wrapper == NULL) || (*wrapper == '\0'))
4637 return NULL;
4638
4639 /* Absolute path? */
4640 #if defined (HAVE_DOS_BASED_FILE_SYSTEM)
4641 if (isalpha ((unsigned char) wrapper[0]) && wrapper[1] == ':')
4642 {
4643 concat_name = xstrdup (wrapper);
4644 if (check_executable (concat_name))
4645 return concat_name;
4646 XFREE (concat_name);
4647 }
4648 else
4649 {
4650 #endif
4651 if (IS_DIR_SEPARATOR (wrapper[0]))
4652 {
4653 concat_name = xstrdup (wrapper);
4654 if (check_executable (concat_name))
4655 return concat_name;
4656 XFREE (concat_name);
4657 }
4658 #if defined (HAVE_DOS_BASED_FILE_SYSTEM)
4659 }
4660 #endif
4661
4662 for (p = wrapper; *p; p++)
4663 if (*p == '/')
4664 {
4665 has_slash = 1;
4666 break;
4667 }
4668 if (!has_slash)
4669 {
4670 /* no slashes; search PATH */
4671 const char *path = getenv ("PATH");
4672 if (path != NULL)
4673 {
4674 for (p = path; *p; p = p_next)
4675 {
4676 const char *q;
4677 size_t p_len;
4678 for (q = p; *q; q++)
4679 if (IS_PATH_SEPARATOR (*q))
4680 break;
4681 p_len = q - p;
4682 p_next = (*q == '\0' ? q : q + 1);
4683 if (p_len == 0)
4684 {
4685 /* empty path: current directory */
4686 if (getcwd (tmp, LT_PATHMAX) == NULL)
4687 lt_fatal (__FILE__, __LINE__, "getcwd failed: %s",
4688 nonnull (strerror (errno)));
4689 tmp_len = strlen (tmp);
4690 concat_name =
4691 XMALLOC (char, tmp_len + 1 + strlen (wrapper) + 1);
4692 memcpy (concat_name, tmp, tmp_len);
4693 concat_name[tmp_len] = '/';
4694 strcpy (concat_name + tmp_len + 1, wrapper);
4695 }
4696 else
4697 {
4698 concat_name =
4699 XMALLOC (char, p_len + 1 + strlen (wrapper) + 1);
4700 memcpy (concat_name, p, p_len);
4701 concat_name[p_len] = '/';
4702 strcpy (concat_name + p_len + 1, wrapper);
4703 }
4704 if (check_executable (concat_name))
4705 return concat_name;
4706 XFREE (concat_name);
4707 }
4708 }
4709 /* not found in PATH; assume curdir */
4710 }
4711 /* Relative path | not found in path: prepend cwd */
4712 if (getcwd (tmp, LT_PATHMAX) == NULL)
4713 lt_fatal (__FILE__, __LINE__, "getcwd failed: %s",
4714 nonnull (strerror (errno)));
4715 tmp_len = strlen (tmp);
4716 concat_name = XMALLOC (char, tmp_len + 1 + strlen (wrapper) + 1);
4717 memcpy (concat_name, tmp, tmp_len);
4718 concat_name[tmp_len] = '/';
4719 strcpy (concat_name + tmp_len + 1, wrapper);
4720
4721 if (check_executable (concat_name))
4722 return concat_name;
4723 XFREE (concat_name);
4724 return NULL;
4725 }
4726
4727 char *
4728 chase_symlinks (const char *pathspec)
4729 {
4730 #ifndef S_ISLNK
4731 return xstrdup (pathspec);
4732 #else
4733 char buf[LT_PATHMAX];
4734 struct stat s;
4735 char *tmp_pathspec = xstrdup (pathspec);
4736 char *p;
4737 int has_symlinks = 0;
4738 while (strlen (tmp_pathspec) && !has_symlinks)
4739 {
4740 lt_debugprintf (__FILE__, __LINE__,
4741 "checking path component for symlinks: %s\n",
4742 tmp_pathspec);
4743 if (lstat (tmp_pathspec, &s) == 0)
4744 {
4745 if (S_ISLNK (s.st_mode) != 0)
4746 {
4747 has_symlinks = 1;
4748 break;
4749 }
4750
4751 /* search backwards for last DIR_SEPARATOR */
4752 p = tmp_pathspec + strlen (tmp_pathspec) - 1;
4753 while ((p > tmp_pathspec) && (!IS_DIR_SEPARATOR (*p)))
4754 p--;
4755 if ((p == tmp_pathspec) && (!IS_DIR_SEPARATOR (*p)))
4756 {
4757 /* no more DIR_SEPARATORS left */
4758 break;
4759 }
4760 *p = '\0';
4761 }
4762 else
4763 {
4764 lt_fatal (__FILE__, __LINE__,
4765 "error accessing file \"%s\": %s",
4766 tmp_pathspec, nonnull (strerror (errno)));
4767 }
4768 }
4769 XFREE (tmp_pathspec);
4770
4771 if (!has_symlinks)
4772 {
4773 return xstrdup (pathspec);
4774 }
4775
4776 tmp_pathspec = realpath (pathspec, buf);
4777 if (tmp_pathspec == 0)
4778 {
4779 lt_fatal (__FILE__, __LINE__,
4780 "could not follow symlinks for %s", pathspec);
4781 }
4782 return xstrdup (tmp_pathspec);
4783 #endif
4784 }
4785
4786 char *
4787 strendzap (char *str, const char *pat)
4788 {
4789 size_t len, patlen;
4790
4791 assert (str != NULL);
4792 assert (pat != NULL);
4793
4794 len = strlen (str);
4795 patlen = strlen (pat);
4796
4797 if (patlen <= len)
4798 {
4799 str += len - patlen;
4800 if (strcmp (str, pat) == 0)
4801 *str = '\0';
4802 }
4803 return str;
4804 }
4805
4806 void
4807 lt_debugprintf (const char *file, int line, const char *fmt, ...)
4808 {
4809 va_list args;
4810 if (lt_debug)
4811 {
4812 (void) fprintf (stderr, "%s:%s:%d: ", program_name, file, line);
4813 va_start (args, fmt);
4814 (void) vfprintf (stderr, fmt, args);
4815 va_end (args);
4816 }
4817 }
4818
4819 static void
4820 lt_error_core (int exit_status, const char *file,
4821 int line, const char *mode,
4822 const char *message, va_list ap)
4823 {
4824 fprintf (stderr, "%s:%s:%d: %s: ", program_name, file, line, mode);
4825 vfprintf (stderr, message, ap);
4826 fprintf (stderr, ".\n");
4827
4828 if (exit_status >= 0)
4829 exit (exit_status);
4830 }
4831
4832 void
4833 lt_fatal (const char *file, int line, const char *message, ...)
4834 {
4835 va_list ap;
4836 va_start (ap, message);
4837 lt_error_core (EXIT_FAILURE, file, line, "FATAL", message, ap);
4838 va_end (ap);
4839 }
4840
4841 static const char *
4842 nonnull (const char *s)
4843 {
4844 return s ? s : "(null)";
4845 }
4846
4847 static const char *
4848 nonempty (const char *s)
4849 {
4850 return (s && !*s) ? "(empty)" : nonnull (s);
4851 }
4852
4853 void
4854 lt_setenv (const char *name, const char *value)
4855 {
4856 lt_debugprintf (__FILE__, __LINE__,
4857 "(lt_setenv) setting '%s' to '%s'\n",
4858 nonnull (name), nonnull (value));
4859 {
4860 #ifdef HAVE_SETENV
4861 /* always make a copy, for consistency with !HAVE_SETENV */
4862 char *str = xstrdup (value);
4863 setenv (name, str, 1);
4864 #else
4865 int len = strlen (name) + 1 + strlen (value) + 1;
4866 char *str = XMALLOC (char, len);
4867 sprintf (str, "%s=%s", name, value);
4868 if (putenv (str) != EXIT_SUCCESS)
4869 {
4870 XFREE (str);
4871 }
4872 #endif
4873 }
4874 }
4875
4876 char *
4877 lt_extend_str (const char *orig_value, const char *add, int to_end)
4878 {
4879 char *new_value;
4880 if (orig_value && *orig_value)
4881 {
4882 int orig_value_len = strlen (orig_value);
4883 int add_len = strlen (add);
4884 new_value = XMALLOC (char, add_len + orig_value_len + 1);
4885 if (to_end)
4886 {
4887 strcpy (new_value, orig_value);
4888 strcpy (new_value + orig_value_len, add);
4889 }
4890 else
4891 {
4892 strcpy (new_value, add);
4893 strcpy (new_value + add_len, orig_value);
4894 }
4895 }
4896 else
4897 {
4898 new_value = xstrdup (add);
4899 }
4900 return new_value;
4901 }
4902
4903 void
4904 lt_update_exe_path (const char *name, const char *value)
4905 {
4906 lt_debugprintf (__FILE__, __LINE__,
4907 "(lt_update_exe_path) modifying '%s' by prepending '%s'\n",
4908 nonnull (name), nonnull (value));
4909
4910 if (name && *name && value && *value)
4911 {
4912 char *new_value = lt_extend_str (getenv (name), value, 0);
4913 /* some systems can't cope with a ':'-terminated path #' */
4914 int len = strlen (new_value);
4915 while (((len = strlen (new_value)) > 0) && IS_PATH_SEPARATOR (new_value[len-1]))
4916 {
4917 new_value[len-1] = '\0';
4918 }
4919 lt_setenv (name, new_value);
4920 XFREE (new_value);
4921 }
4922 }
4923
4924 void
4925 lt_update_lib_path (const char *name, const char *value)
4926 {
4927 lt_debugprintf (__FILE__, __LINE__,
4928 "(lt_update_lib_path) modifying '%s' by prepending '%s'\n",
4929 nonnull (name), nonnull (value));
4930
4931 if (name && *name && value && *value)
4932 {
4933 char *new_value = lt_extend_str (getenv (name), value, 0);
4934 lt_setenv (name, new_value);
4935 XFREE (new_value);
4936 }
4937 }
4938
4939 EOF
4940 case $host_os in
4941 mingw*)
4942 cat <<"EOF"
4943
4944 /* Prepares an argument vector before calling spawn().
4945 Note that spawn() does not by itself call the command interpreter
4946 (getenv ("COMSPEC") != NULL ? getenv ("COMSPEC") :
4947 ({ OSVERSIONINFO v; v.dwOSVersionInfoSize = sizeof(OSVERSIONINFO);
4948 GetVersionEx(&v);
4949 v.dwPlatformId == VER_PLATFORM_WIN32_NT;
4950 }) ? "cmd.exe" : "command.com").
4951 Instead it simply concatenates the arguments, separated by ' ', and calls
4952 CreateProcess(). We must quote the arguments since Win32 CreateProcess()
4953 interprets characters like ' ', '\t', '\\', '"' (but not '<' and '>') in a
4954 special way:
4955 - Space and tab are interpreted as delimiters. They are not treated as
4956 delimiters if they are surrounded by double quotes: "...".
4957 - Unescaped double quotes are removed from the input. Their only effect is
4958 that within double quotes, space and tab are treated like normal
4959 characters.
4960 - Backslashes not followed by double quotes are not special.
4961 - But 2*n+1 backslashes followed by a double quote become
4962 n backslashes followed by a double quote (n >= 0):
4963 \" -> "
4964 \\\" -> \"
4965 \\\\\" -> \\"
4966 */
4967 #define SHELL_SPECIAL_CHARS "\"\\ \001\002\003\004\005\006\007\010\011\012\013\014\015\016\017\020\021\022\023\024\025\026\027\030\031\032\033\034\035\036\037"
4968 #define SHELL_SPACE_CHARS " \001\002\003\004\005\006\007\010\011\012\013\014\015\016\017\020\021\022\023\024\025\026\027\030\031\032\033\034\035\036\037"
4969 char **
4970 prepare_spawn (char **argv)
4971 {
4972 size_t argc;
4973 char **new_argv;
4974 size_t i;
4975
4976 /* Count number of arguments. */
4977 for (argc = 0; argv[argc] != NULL; argc++)
4978 ;
4979
4980 /* Allocate new argument vector. */
4981 new_argv = XMALLOC (char *, argc + 1);
4982
4983 /* Put quoted arguments into the new argument vector. */
4984 for (i = 0; i < argc; i++)
4985 {
4986 const char *string = argv[i];
4987
4988 if (string[0] == '\0')
4989 new_argv[i] = xstrdup ("\"\"");
4990 else if (strpbrk (string, SHELL_SPECIAL_CHARS) != NULL)
4991 {
4992 int quote_around = (strpbrk (string, SHELL_SPACE_CHARS) != NULL);
4993 size_t length;
4994 unsigned int backslashes;
4995 const char *s;
4996 char *quoted_string;
4997 char *p;
4998
4999 length = 0;
5000 backslashes = 0;
5001 if (quote_around)
5002 length++;
5003 for (s = string; *s != '\0'; s++)
5004 {
5005 char c = *s;
5006 if (c == '"')
5007 length += backslashes + 1;
5008 length++;
5009 if (c == '\\')
5010 backslashes++;
5011 else
5012 backslashes = 0;
5013 }
5014 if (quote_around)
5015 length += backslashes + 1;
5016
5017 quoted_string = XMALLOC (char, length + 1);
5018
5019 p = quoted_string;
5020 backslashes = 0;
5021 if (quote_around)
5022 *p++ = '"';
5023 for (s = string; *s != '\0'; s++)
5024 {
5025 char c = *s;
5026 if (c == '"')
5027 {
5028 unsigned int j;
5029 for (j = backslashes + 1; j > 0; j--)
5030 *p++ = '\\';
5031 }
5032 *p++ = c;
5033 if (c == '\\')
5034 backslashes++;
5035 else
5036 backslashes = 0;
5037 }
5038 if (quote_around)
5039 {
5040 unsigned int j;
5041 for (j = backslashes; j > 0; j--)
5042 *p++ = '\\';
5043 *p++ = '"';
5044 }
5045 *p = '\0';
5046
5047 new_argv[i] = quoted_string;
5048 }
5049 else
5050 new_argv[i] = (char *) string;
5051 }
5052 new_argv[argc] = NULL;
5053
5054 return new_argv;
5055 }
5056 EOF
5057 ;;
5058 esac
5059
5060 cat <<"EOF"
5061 void lt_dump_script (FILE* f)
5062 {
5063 EOF
5064 func_emit_wrapper yes |
5065 $SED -n -e '
5066 s/^\(.\{79\}\)\(..*\)/\1\
5067 \2/
5068 h
5069 s/\([\\"]\)/\\\1/g
5070 s/$/\\n/
5071 s/\([^\n]*\).*/ fputs ("\1", f);/p
5072 g
5073 D'
5074 cat <<"EOF"
5075 }
5076 EOF
5077 }
5078 # end: func_emit_cwrapperexe_src
5079
5080 # func_win32_import_lib_p ARG
5081 # True if ARG is an import lib, as indicated by $file_magic_cmd
5082 func_win32_import_lib_p ()
5083 {
5084 $opt_debug
5085 case `eval $file_magic_cmd \"\$1\" 2>/dev/null | $SED -e 10q` in
5086 *import*) : ;;
5087 *) false ;;
5088 esac
5089 }
5090
5091 # func_mode_link arg...
5092 func_mode_link ()
5093 {
5094 $opt_debug
5095 case $host in
5096 *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*)
5097 # It is impossible to link a dll without this setting, and
5098 # we shouldn't force the makefile maintainer to figure out
5099 # which system we are compiling for in order to pass an extra
5100 # flag for every libtool invocation.
5101 # allow_undefined=no
5102
5103 # FIXME: Unfortunately, there are problems with the above when trying
5104 # to make a dll which has undefined symbols, in which case not
5105 # even a static library is built. For now, we need to specify
5106 # -no-undefined on the libtool link line when we can be certain
5107 # that all symbols are satisfied, otherwise we get a static library.
5108 allow_undefined=yes
5109 ;;
5110 *)
5111 allow_undefined=yes
5112 ;;
5113 esac
5114 libtool_args=$nonopt
5115 base_compile="$nonopt $@"
5116 compile_command=$nonopt
5117 finalize_command=$nonopt
5118
5119 compile_rpath=
5120 finalize_rpath=
5121 compile_shlibpath=
5122 finalize_shlibpath=
5123 convenience=
5124 old_convenience=
5125 deplibs=
5126 old_deplibs=
5127 compiler_flags=
5128 linker_flags=
5129 dllsearchpath=
5130 lib_search_path=`pwd`
5131 inst_prefix_dir=
5132 new_inherited_linker_flags=
5133
5134 avoid_version=no
5135 bindir=
5136 dlfiles=
5137 dlprefiles=
5138 dlself=no
5139 export_dynamic=no
5140 export_symbols=
5141 export_symbols_regex=
5142 generated=
5143 libobjs=
5144 ltlibs=
5145 module=no
5146 no_install=no
5147 objs=
5148 non_pic_objects=
5149 precious_files_regex=
5150 prefer_static_libs=no
5151 preload=no
5152 prev=
5153 prevarg=
5154 release=
5155 rpath=
5156 xrpath=
5157 perm_rpath=
5158 temp_rpath=
5159 thread_safe=no
5160 vinfo=
5161 vinfo_number=no
5162 weak_libs=
5163 single_module="${wl}-single_module"
5164 func_infer_tag $base_compile
5165
5166 # We need to know -static, to get the right output filenames.
5167 for arg
5168 do
5169 case $arg in
5170 -shared)
5171 test "$build_libtool_libs" != yes && \
5172 func_fatal_configuration "can not build a shared library"
5173 build_old_libs=no
5174 break
5175 ;;
5176 -all-static | -static | -static-libtool-libs)
5177 case $arg in
5178 -all-static)
5179 if test "$build_libtool_libs" = yes && test -z "$link_static_flag"; then
5180 func_warning "complete static linking is impossible in this configuration"
5181 fi
5182 if test -n "$link_static_flag"; then
5183 dlopen_self=$dlopen_self_static
5184 fi
5185 prefer_static_libs=yes
5186 ;;
5187 -static)
5188 if test -z "$pic_flag" && test -n "$link_static_flag"; then
5189 dlopen_self=$dlopen_self_static
5190 fi
5191 prefer_static_libs=built
5192 ;;
5193 -static-libtool-libs)
5194 if test -z "$pic_flag" && test -n "$link_static_flag"; then
5195 dlopen_self=$dlopen_self_static
5196 fi
5197 prefer_static_libs=yes
5198 ;;
5199 esac
5200 build_libtool_libs=no
5201 build_old_libs=yes
5202 break
5203 ;;
5204 esac
5205 done
5206
5207 # See if our shared archives depend on static archives.
5208 test -n "$old_archive_from_new_cmds" && build_old_libs=yes
5209
5210 # Go through the arguments, transforming them on the way.
5211 while test "$#" -gt 0; do
5212 arg="$1"
5213 shift
5214 func_quote_for_eval "$arg"
5215 qarg=$func_quote_for_eval_unquoted_result
5216 func_append libtool_args " $func_quote_for_eval_result"
5217
5218 # If the previous option needs an argument, assign it.
5219 if test -n "$prev"; then
5220 case $prev in
5221 output)
5222 func_append compile_command " @OUTPUT@"
5223 func_append finalize_command " @OUTPUT@"
5224 ;;
5225 esac
5226
5227 case $prev in
5228 bindir)
5229 bindir="$arg"
5230 prev=
5231 continue
5232 ;;
5233 dlfiles|dlprefiles)
5234 if test "$preload" = no; then
5235 # Add the symbol object into the linking commands.
5236 func_append compile_command " @SYMFILE@"
5237 func_append finalize_command " @SYMFILE@"
5238 preload=yes
5239 fi
5240 case $arg in
5241 *.la | *.lo) ;; # We handle these cases below.
5242 force)
5243 if test "$dlself" = no; then
5244 dlself=needless
5245 export_dynamic=yes
5246 fi
5247 prev=
5248 continue
5249 ;;
5250 self)
5251 if test "$prev" = dlprefiles; then
5252 dlself=yes
5253 elif test "$prev" = dlfiles && test "$dlopen_self" != yes; then
5254 dlself=yes
5255 else
5256 dlself=needless
5257 export_dynamic=yes
5258 fi
5259 prev=
5260 continue
5261 ;;
5262 *)
5263 if test "$prev" = dlfiles; then
5264 func_append dlfiles " $arg"
5265 else
5266 func_append dlprefiles " $arg"
5267 fi
5268 prev=
5269 continue
5270 ;;
5271 esac
5272 ;;
5273 expsyms)
5274 export_symbols="$arg"
5275 test -f "$arg" \
5276 || func_fatal_error "symbol file \`$arg' does not exist"
5277 prev=
5278 continue
5279 ;;
5280 expsyms_regex)
5281 export_symbols_regex="$arg"
5282 prev=
5283 continue
5284 ;;
5285 framework)
5286 case $host in
5287 *-*-darwin*)
5288 case "$deplibs " in
5289 *" $qarg.ltframework "*) ;;
5290 *) func_append deplibs " $qarg.ltframework" # this is fixed later
5291 ;;
5292 esac
5293 ;;
5294 esac
5295 prev=
5296 continue
5297 ;;
5298 inst_prefix)
5299 inst_prefix_dir="$arg"
5300 prev=
5301 continue
5302 ;;
5303 objectlist)
5304 if test -f "$arg"; then
5305 save_arg=$arg
5306 moreargs=
5307 for fil in `cat "$save_arg"`
5308 do
5309 # func_append moreargs " $fil"
5310 arg=$fil
5311 # A libtool-controlled object.
5312
5313 # Check to see that this really is a libtool object.
5314 if func_lalib_unsafe_p "$arg"; then
5315 pic_object=
5316 non_pic_object=
5317
5318 # Read the .lo file
5319 func_source "$arg"
5320
5321 if test -z "$pic_object" ||
5322 test -z "$non_pic_object" ||
5323 test "$pic_object" = none &&
5324 test "$non_pic_object" = none; then
5325 func_fatal_error "cannot find name of object for \`$arg'"
5326 fi
5327
5328 # Extract subdirectory from the argument.
5329 func_dirname "$arg" "/" ""
5330 xdir="$func_dirname_result"
5331
5332 if test "$pic_object" != none; then
5333 # Prepend the subdirectory the object is found in.
5334 pic_object="$xdir$pic_object"
5335
5336 if test "$prev" = dlfiles; then
5337 if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then
5338 func_append dlfiles " $pic_object"
5339 prev=
5340 continue
5341 else
5342 # If libtool objects are unsupported, then we need to preload.
5343 prev=dlprefiles
5344 fi
5345 fi
5346
5347 # CHECK ME: I think I busted this. -Ossama
5348 if test "$prev" = dlprefiles; then
5349 # Preload the old-style object.
5350 func_append dlprefiles " $pic_object"
5351 prev=
5352 fi
5353
5354 # A PIC object.
5355 func_append libobjs " $pic_object"
5356 arg="$pic_object"
5357 fi
5358
5359 # Non-PIC object.
5360 if test "$non_pic_object" != none; then
5361 # Prepend the subdirectory the object is found in.
5362 non_pic_object="$xdir$non_pic_object"
5363
5364 # A standard non-PIC object
5365 func_append non_pic_objects " $non_pic_object"
5366 if test -z "$pic_object" || test "$pic_object" = none ; then
5367 arg="$non_pic_object"
5368 fi
5369 else
5370 # If the PIC object exists, use it instead.
5371 # $xdir was prepended to $pic_object above.
5372 non_pic_object="$pic_object"
5373 func_append non_pic_objects " $non_pic_object"
5374 fi
5375 else
5376 # Only an error if not doing a dry-run.
5377 if $opt_dry_run; then
5378 # Extract subdirectory from the argument.
5379 func_dirname "$arg" "/" ""
5380 xdir="$func_dirname_result"
5381
5382 func_lo2o "$arg"
5383 pic_object=$xdir$objdir/$func_lo2o_result
5384 non_pic_object=$xdir$func_lo2o_result
5385 func_append libobjs " $pic_object"
5386 func_append non_pic_objects " $non_pic_object"
5387 else
5388 func_fatal_error "\`$arg' is not a valid libtool object"
5389 fi
5390 fi
5391 done
5392 else
5393 func_fatal_error "link input file \`$arg' does not exist"
5394 fi
5395 arg=$save_arg
5396 prev=
5397 continue
5398 ;;
5399 precious_regex)
5400 precious_files_regex="$arg"
5401 prev=
5402 continue
5403 ;;
5404 release)
5405 release="-$arg"
5406 prev=
5407 continue
5408 ;;
5409 rpath | xrpath)
5410 # We need an absolute path.
5411 case $arg in
5412 [\\/]* | [A-Za-z]:[\\/]*) ;;
5413 *)
5414 func_fatal_error "only absolute run-paths are allowed"
5415 ;;
5416 esac
5417 if test "$prev" = rpath; then
5418 case "$rpath " in
5419 *" $arg "*) ;;
5420 *) func_append rpath " $arg" ;;
5421 esac
5422 else
5423 case "$xrpath " in
5424 *" $arg "*) ;;
5425 *) func_append xrpath " $arg" ;;
5426 esac
5427 fi
5428 prev=
5429 continue
5430 ;;
5431 shrext)
5432 shrext_cmds="$arg"
5433 prev=
5434 continue
5435 ;;
5436 weak)
5437 func_append weak_libs " $arg"
5438 prev=
5439 continue
5440 ;;
5441 xcclinker)
5442 func_append linker_flags " $qarg"
5443 func_append compiler_flags " $qarg"
5444 prev=
5445 func_append compile_command " $qarg"
5446 func_append finalize_command " $qarg"
5447 continue
5448 ;;
5449 xcompiler)
5450 func_append compiler_flags " $qarg"
5451 prev=
5452 func_append compile_command " $qarg"
5453 func_append finalize_command " $qarg"
5454 continue
5455 ;;
5456 xlinker)
5457 func_append linker_flags " $qarg"
5458 func_append compiler_flags " $wl$qarg"
5459 prev=
5460 func_append compile_command " $wl$qarg"
5461 func_append finalize_command " $wl$qarg"
5462 continue
5463 ;;
5464 *)
5465 eval "$prev=\"\$arg\""
5466 prev=
5467 continue
5468 ;;
5469 esac
5470 fi # test -n "$prev"
5471
5472 prevarg="$arg"
5473
5474 case $arg in
5475 -all-static)
5476 if test -n "$link_static_flag"; then
5477 # See comment for -static flag below, for more details.
5478 func_append compile_command " $link_static_flag"
5479 func_append finalize_command " $link_static_flag"
5480 fi
5481 continue
5482 ;;
5483
5484 -allow-undefined)
5485 # FIXME: remove this flag sometime in the future.
5486 func_fatal_error "\`-allow-undefined' must not be used because it is the default"
5487 ;;
5488
5489 -avoid-version)
5490 avoid_version=yes
5491 continue
5492 ;;
5493
5494 -bindir)
5495 prev=bindir
5496 continue
5497 ;;
5498
5499 -dlopen)
5500 prev=dlfiles
5501 continue
5502 ;;
5503
5504 -dlpreopen)
5505 prev=dlprefiles
5506 continue
5507 ;;
5508
5509 -export-dynamic)
5510 export_dynamic=yes
5511 continue
5512 ;;
5513
5514 -export-symbols | -export-symbols-regex)
5515 if test -n "$export_symbols" || test -n "$export_symbols_regex"; then
5516 func_fatal_error "more than one -exported-symbols argument is not allowed"
5517 fi
5518 if test "X$arg" = "X-export-symbols"; then
5519 prev=expsyms
5520 else
5521 prev=expsyms_regex
5522 fi
5523 continue
5524 ;;
5525
5526 -framework)
5527 prev=framework
5528 continue
5529 ;;
5530
5531 -inst-prefix-dir)
5532 prev=inst_prefix
5533 continue
5534 ;;
5535
5536 # The native IRIX linker understands -LANG:*, -LIST:* and -LNO:*
5537 # so, if we see these flags be careful not to treat them like -L
5538 -L[A-Z][A-Z]*:*)
5539 case $with_gcc/$host in
5540 no/*-*-irix* | /*-*-irix*)
5541 func_append compile_command " $arg"
5542 func_append finalize_command " $arg"
5543 ;;
5544 esac
5545 continue
5546 ;;
5547
5548 -L*)
5549 func_stripname "-L" '' "$arg"
5550 if test -z "$func_stripname_result"; then
5551 if test "$#" -gt 0; then
5552 func_fatal_error "require no space between \`-L' and \`$1'"
5553 else
5554 func_fatal_error "need path for \`-L' option"
5555 fi
5556 fi
5557 func_resolve_sysroot "$func_stripname_result"
5558 dir=$func_resolve_sysroot_result
5559 # We need an absolute path.
5560 case $dir in
5561 [\\/]* | [A-Za-z]:[\\/]*) ;;
5562 *)
5563 absdir=`cd "$dir" && pwd`
5564 test -z "$absdir" && \
5565 func_fatal_error "cannot determine absolute directory name of \`$dir'"
5566 dir="$absdir"
5567 ;;
5568 esac
5569 case "$deplibs " in
5570 *" -L$dir "* | *" $arg "*)
5571 # Will only happen for absolute or sysroot arguments
5572 ;;
5573 *)
5574 # Preserve sysroot, but never include relative directories
5575 case $dir in
5576 [\\/]* | [A-Za-z]:[\\/]* | =*) func_append deplibs " $arg" ;;
5577 *) func_append deplibs " -L$dir" ;;
5578 esac
5579 func_append lib_search_path " $dir"
5580 ;;
5581 esac
5582 case $host in
5583 *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*)
5584 testbindir=`$ECHO "$dir" | $SED 's*/lib$*/bin*'`
5585 case :$dllsearchpath: in
5586 *":$dir:"*) ;;
5587 ::) dllsearchpath=$dir;;
5588 *) func_append dllsearchpath ":$dir";;
5589 esac
5590 case :$dllsearchpath: in
5591 *":$testbindir:"*) ;;
5592 ::) dllsearchpath=$testbindir;;
5593 *) func_append dllsearchpath ":$testbindir";;
5594 esac
5595 ;;
5596 esac
5597 continue
5598 ;;
5599
5600 -l*)
5601 if test "X$arg" = "X-lc" || test "X$arg" = "X-lm"; then
5602 case $host in
5603 *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-beos* | *-cegcc* | *-*-haiku*)
5604 # These systems don't actually have a C or math library (as such)
5605 continue
5606 ;;
5607 *-*-os2*)
5608 # These systems don't actually have a C library (as such)
5609 test "X$arg" = "X-lc" && continue
5610 ;;
5611 *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*)
5612 # Do not include libc due to us having libc/libc_r.
5613 test "X$arg" = "X-lc" && continue
5614 ;;
5615 *-*-rhapsody* | *-*-darwin1.[012])
5616 # Rhapsody C and math libraries are in the System framework
5617 func_append deplibs " System.ltframework"
5618 continue
5619 ;;
5620 *-*-sco3.2v5* | *-*-sco5v6*)
5621 # Causes problems with __ctype
5622 test "X$arg" = "X-lc" && continue
5623 ;;
5624 *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*)
5625 # Compiler inserts libc in the correct place for threads to work
5626 test "X$arg" = "X-lc" && continue
5627 ;;
5628 esac
5629 elif test "X$arg" = "X-lc_r"; then
5630 case $host in
5631 *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*)
5632 # Do not include libc_r directly, use -pthread flag.
5633 continue
5634 ;;
5635 esac
5636 fi
5637 func_append deplibs " $arg"
5638 continue
5639 ;;
5640
5641 -module)
5642 module=yes
5643 continue
5644 ;;
5645
5646 # Tru64 UNIX uses -model [arg] to determine the layout of C++
5647 # classes, name mangling, and exception handling.
5648 # Darwin uses the -arch flag to determine output architecture.
5649 -model|-arch|-isysroot|--sysroot)
5650 func_append compiler_flags " $arg"
5651 func_append compile_command " $arg"
5652 func_append finalize_command " $arg"
5653 prev=xcompiler
5654 continue
5655 ;;
5656
5657 -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe \
5658 |-threads|-fopenmp|-openmp|-mp|-xopenmp|-omp|-qsmp=*)
5659 func_append compiler_flags " $arg"
5660 func_append compile_command " $arg"
5661 func_append finalize_command " $arg"
5662 case "$new_inherited_linker_flags " in
5663 *" $arg "*) ;;
5664 * ) func_append new_inherited_linker_flags " $arg" ;;
5665 esac
5666 continue
5667 ;;
5668
5669 -multi_module)
5670 single_module="${wl}-multi_module"
5671 continue
5672 ;;
5673
5674 -no-fast-install)
5675 fast_install=no
5676 continue
5677 ;;
5678
5679 -no-install)
5680 case $host in
5681 *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-darwin* | *-cegcc*)
5682 # The PATH hackery in wrapper scripts is required on Windows
5683 # and Darwin in order for the loader to find any dlls it needs.
5684 func_warning "\`-no-install' is ignored for $host"
5685 func_warning "assuming \`-no-fast-install' instead"
5686 fast_install=no
5687 ;;
5688 *) no_install=yes ;;
5689 esac
5690 continue
5691 ;;
5692
5693 -no-undefined)
5694 allow_undefined=no
5695 continue
5696 ;;
5697
5698 -objectlist)
5699 prev=objectlist
5700 continue
5701 ;;
5702
5703 -o) prev=output ;;
5704
5705 -precious-files-regex)
5706 prev=precious_regex
5707 continue
5708 ;;
5709
5710 -release)
5711 prev=release
5712 continue
5713 ;;
5714
5715 -rpath)
5716 prev=rpath
5717 continue
5718 ;;
5719
5720 -R)
5721 prev=xrpath
5722 continue
5723 ;;
5724
5725 -R*)
5726 func_stripname '-R' '' "$arg"
5727 dir=$func_stripname_result
5728 # We need an absolute path.
5729 case $dir in
5730 [\\/]* | [A-Za-z]:[\\/]*) ;;
5731 =*)
5732 func_stripname '=' '' "$dir"
5733 dir=$lt_sysroot$func_stripname_result
5734 ;;
5735 *)
5736 func_fatal_error "only absolute run-paths are allowed"
5737 ;;
5738 esac
5739 case "$xrpath " in
5740 *" $dir "*) ;;
5741 *) func_append xrpath " $dir" ;;
5742 esac
5743 continue
5744 ;;
5745
5746 -shared)
5747 # The effects of -shared are defined in a previous loop.
5748 continue
5749 ;;
5750
5751 -shrext)
5752 prev=shrext
5753 continue
5754 ;;
5755
5756 -static | -static-libtool-libs)
5757 # The effects of -static are defined in a previous loop.
5758 # We used to do the same as -all-static on platforms that
5759 # didn't have a PIC flag, but the assumption that the effects
5760 # would be equivalent was wrong. It would break on at least
5761 # Digital Unix and AIX.
5762 continue
5763 ;;
5764
5765 -thread-safe)
5766 thread_safe=yes
5767 continue
5768 ;;
5769
5770 -version-info)
5771 prev=vinfo
5772 continue
5773 ;;
5774
5775 -version-number)
5776 prev=vinfo
5777 vinfo_number=yes
5778 continue
5779 ;;
5780
5781 -weak)
5782 prev=weak
5783 continue
5784 ;;
5785
5786 -Wc,*)
5787 func_stripname '-Wc,' '' "$arg"
5788 args=$func_stripname_result
5789 arg=
5790 save_ifs="$IFS"; IFS=','
5791 for flag in $args; do
5792 IFS="$save_ifs"
5793 func_quote_for_eval "$flag"
5794 func_append arg " $func_quote_for_eval_result"
5795 func_append compiler_flags " $func_quote_for_eval_result"
5796 done
5797 IFS="$save_ifs"
5798 func_stripname ' ' '' "$arg"
5799 arg=$func_stripname_result
5800 ;;
5801
5802 -Wl,*)
5803 func_stripname '-Wl,' '' "$arg"
5804 args=$func_stripname_result
5805 arg=
5806 save_ifs="$IFS"; IFS=','
5807 for flag in $args; do
5808 IFS="$save_ifs"
5809 func_quote_for_eval "$flag"
5810 func_append arg " $wl$func_quote_for_eval_result"
5811 func_append compiler_flags " $wl$func_quote_for_eval_result"
5812 func_append linker_flags " $func_quote_for_eval_result"
5813 done
5814 IFS="$save_ifs"
5815 func_stripname ' ' '' "$arg"
5816 arg=$func_stripname_result
5817 ;;
5818
5819 -Xcompiler)
5820 prev=xcompiler
5821 continue
5822 ;;
5823
5824 -Xlinker)
5825 prev=xlinker
5826 continue
5827 ;;
5828
5829 -XCClinker)
5830 prev=xcclinker
5831 continue
5832 ;;
5833
5834 # -msg_* for osf cc
5835 -msg_*)
5836 func_quote_for_eval "$arg"
5837 arg="$func_quote_for_eval_result"
5838 ;;
5839
5840 # Flags to be passed through unchanged, with rationale:
5841 # -64, -mips[0-9] enable 64-bit mode for the SGI compiler
5842 # -r[0-9][0-9]* specify processor for the SGI compiler
5843 # -xarch=*, -xtarget=* enable 64-bit mode for the Sun compiler
5844 # +DA*, +DD* enable 64-bit mode for the HP compiler
5845 # -q* compiler args for the IBM compiler
5846 # -m*, -t[45]*, -txscale* architecture-specific flags for GCC
5847 # -F/path path to uninstalled frameworks, gcc on darwin
5848 # -p, -pg, --coverage, -fprofile-* profiling flags for GCC
5849 # @file GCC response files
5850 # -tp=* Portland pgcc target processor selection
5851 # --sysroot=* for sysroot support
5852 # -O*, -flto*, -fwhopr*, -fuse-linker-plugin GCC link-time optimization
5853 -64|-mips[0-9]|-r[0-9][0-9]*|-xarch=*|-xtarget=*|+DA*|+DD*|-q*|-m*| \
5854 -t[45]*|-txscale*|-p|-pg|--coverage|-fprofile-*|-F*|@*|-tp=*|--sysroot=*| \
5855 -O*|-flto*|-fwhopr*|-fuse-linker-plugin)
5856 func_quote_for_eval "$arg"
5857 arg="$func_quote_for_eval_result"
5858 func_append compile_command " $arg"
5859 func_append finalize_command " $arg"
5860 func_append compiler_flags " $arg"
5861 continue
5862 ;;
5863
5864 # Some other compiler flag.
5865 -* | +*)
5866 func_quote_for_eval "$arg"
5867 arg="$func_quote_for_eval_result"
5868 ;;
5869
5870 *.$objext)
5871 # A standard object.
5872 func_append objs " $arg"
5873 ;;
5874
5875 *.lo)
5876 # A libtool-controlled object.
5877
5878 # Check to see that this really is a libtool object.
5879 if func_lalib_unsafe_p "$arg"; then
5880 pic_object=
5881 non_pic_object=
5882
5883 # Read the .lo file
5884 func_source "$arg"
5885
5886 if test -z "$pic_object" ||
5887 test -z "$non_pic_object" ||
5888 test "$pic_object" = none &&
5889 test "$non_pic_object" = none; then
5890 func_fatal_error "cannot find name of object for \`$arg'"
5891 fi
5892
5893 # Extract subdirectory from the argument.
5894 func_dirname "$arg" "/" ""
5895 xdir="$func_dirname_result"
5896
5897 if test "$pic_object" != none; then
5898 # Prepend the subdirectory the object is found in.
5899 pic_object="$xdir$pic_object"
5900
5901 if test "$prev" = dlfiles; then
5902 if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then
5903 func_append dlfiles " $pic_object"
5904 prev=
5905 continue
5906 else
5907 # If libtool objects are unsupported, then we need to preload.
5908 prev=dlprefiles
5909 fi
5910 fi
5911
5912 # CHECK ME: I think I busted this. -Ossama
5913 if test "$prev" = dlprefiles; then
5914 # Preload the old-style object.
5915 func_append dlprefiles " $pic_object"
5916 prev=
5917 fi
5918
5919 # A PIC object.
5920 func_append libobjs " $pic_object"
5921 arg="$pic_object"
5922 fi
5923
5924 # Non-PIC object.
5925 if test "$non_pic_object" != none; then
5926 # Prepend the subdirectory the object is found in.
5927 non_pic_object="$xdir$non_pic_object"
5928
5929 # A standard non-PIC object
5930 func_append non_pic_objects " $non_pic_object"
5931 if test -z "$pic_object" || test "$pic_object" = none ; then
5932 arg="$non_pic_object"
5933 fi
5934 else
5935 # If the PIC object exists, use it instead.
5936 # $xdir was prepended to $pic_object above.
5937 non_pic_object="$pic_object"
5938 func_append non_pic_objects " $non_pic_object"
5939 fi
5940 else
5941 # Only an error if not doing a dry-run.
5942 if $opt_dry_run; then
5943 # Extract subdirectory from the argument.
5944 func_dirname "$arg" "/" ""
5945 xdir="$func_dirname_result"
5946
5947 func_lo2o "$arg"
5948 pic_object=$xdir$objdir/$func_lo2o_result
5949 non_pic_object=$xdir$func_lo2o_result
5950 func_append libobjs " $pic_object"
5951 func_append non_pic_objects " $non_pic_object"
5952 else
5953 func_fatal_error "\`$arg' is not a valid libtool object"
5954 fi
5955 fi
5956 ;;
5957
5958 *.$libext)
5959 # An archive.
5960 func_append deplibs " $arg"
5961 func_append old_deplibs " $arg"
5962 continue
5963 ;;
5964
5965 *.la)
5966 # A libtool-controlled library.
5967
5968 func_resolve_sysroot "$arg"
5969 if test "$prev" = dlfiles; then
5970 # This library was specified with -dlopen.
5971 func_append dlfiles " $func_resolve_sysroot_result"
5972 prev=
5973 elif test "$prev" = dlprefiles; then
5974 # The library was specified with -dlpreopen.
5975 func_append dlprefiles " $func_resolve_sysroot_result"
5976 prev=
5977 else
5978 func_append deplibs " $func_resolve_sysroot_result"
5979 fi
5980 continue
5981 ;;
5982
5983 # Some other compiler argument.
5984 *)
5985 # Unknown arguments in both finalize_command and compile_command need
5986 # to be aesthetically quoted because they are evaled later.
5987 func_quote_for_eval "$arg"
5988 arg="$func_quote_for_eval_result"
5989 ;;
5990 esac # arg
5991
5992 # Now actually substitute the argument into the commands.
5993 if test -n "$arg"; then
5994 func_append compile_command " $arg"
5995 func_append finalize_command " $arg"
5996 fi
5997 done # argument parsing loop
5998
5999 test -n "$prev" && \
6000 func_fatal_help "the \`$prevarg' option requires an argument"
6001
6002 if test "$export_dynamic" = yes && test -n "$export_dynamic_flag_spec"; then
6003 eval arg=\"$export_dynamic_flag_spec\"
6004 func_append compile_command " $arg"
6005 func_append finalize_command " $arg"
6006 fi
6007
6008 oldlibs=
6009 # calculate the name of the file, without its directory
6010 func_basename "$output"
6011 outputname="$func_basename_result"
6012 libobjs_save="$libobjs"
6013
6014 if test -n "$shlibpath_var"; then
6015 # get the directories listed in $shlibpath_var
6016 eval shlib_search_path=\`\$ECHO \"\${$shlibpath_var}\" \| \$SED \'s/:/ /g\'\`
6017 else
6018 shlib_search_path=
6019 fi
6020 eval sys_lib_search_path=\"$sys_lib_search_path_spec\"
6021 eval sys_lib_dlsearch_path=\"$sys_lib_dlsearch_path_spec\"
6022
6023 func_dirname "$output" "/" ""
6024 output_objdir="$func_dirname_result$objdir"
6025 func_to_tool_file "$output_objdir/"
6026 tool_output_objdir=$func_to_tool_file_result
6027 # Create the object directory.
6028 func_mkdir_p "$output_objdir"
6029
6030 # Determine the type of output
6031 case $output in
6032 "")
6033 func_fatal_help "you must specify an output file"
6034 ;;
6035 *.$libext) linkmode=oldlib ;;
6036 *.lo | *.$objext) linkmode=obj ;;
6037 *.la) linkmode=lib ;;
6038 *) linkmode=prog ;; # Anything else should be a program.
6039 esac
6040
6041 specialdeplibs=
6042
6043 libs=
6044 # Find all interdependent deplibs by searching for libraries
6045 # that are linked more than once (e.g. -la -lb -la)
6046 for deplib in $deplibs; do
6047 if $opt_preserve_dup_deps ; then
6048 case "$libs " in
6049 *" $deplib "*) func_append specialdeplibs " $deplib" ;;
6050 esac
6051 fi
6052 func_append libs " $deplib"
6053 done
6054
6055 if test "$linkmode" = lib; then
6056 libs="$predeps $libs $compiler_lib_search_path $postdeps"
6057
6058 # Compute libraries that are listed more than once in $predeps
6059 # $postdeps and mark them as special (i.e., whose duplicates are
6060 # not to be eliminated).
6061 pre_post_deps=
6062 if $opt_duplicate_compiler_generated_deps; then
6063 for pre_post_dep in $predeps $postdeps; do
6064 case "$pre_post_deps " in
6065 *" $pre_post_dep "*) func_append specialdeplibs " $pre_post_deps" ;;
6066 esac
6067 func_append pre_post_deps " $pre_post_dep"
6068 done
6069 fi
6070 pre_post_deps=
6071 fi
6072
6073 deplibs=
6074 newdependency_libs=
6075 newlib_search_path=
6076 need_relink=no # whether we're linking any uninstalled libtool libraries
6077 notinst_deplibs= # not-installed libtool libraries
6078 notinst_path= # paths that contain not-installed libtool libraries
6079
6080 case $linkmode in
6081 lib)
6082 passes="conv dlpreopen link"
6083 for file in $dlfiles $dlprefiles; do
6084 case $file in
6085 *.la) ;;
6086 *)
6087 func_fatal_help "libraries can \`-dlopen' only libtool libraries: $file"
6088 ;;
6089 esac
6090 done
6091 ;;
6092 prog)
6093 compile_deplibs=
6094 finalize_deplibs=
6095 alldeplibs=no
6096 newdlfiles=
6097 newdlprefiles=
6098 passes="conv scan dlopen dlpreopen link"
6099 ;;
6100 *) passes="conv"
6101 ;;
6102 esac
6103
6104 for pass in $passes; do
6105 # The preopen pass in lib mode reverses $deplibs; put it back here
6106 # so that -L comes before libs that need it for instance...
6107 if test "$linkmode,$pass" = "lib,link"; then
6108 ## FIXME: Find the place where the list is rebuilt in the wrong
6109 ## order, and fix it there properly
6110 tmp_deplibs=
6111 for deplib in $deplibs; do
6112 tmp_deplibs="$deplib $tmp_deplibs"
6113 done
6114 deplibs="$tmp_deplibs"
6115 fi
6116
6117 if test "$linkmode,$pass" = "lib,link" ||
6118 test "$linkmode,$pass" = "prog,scan"; then
6119 libs="$deplibs"
6120 deplibs=
6121 fi
6122 if test "$linkmode" = prog; then
6123 case $pass in
6124 dlopen) libs="$dlfiles" ;;
6125 dlpreopen) libs="$dlprefiles" ;;
6126 link) libs="$deplibs %DEPLIBS% $dependency_libs" ;;
6127 esac
6128 fi
6129 if test "$linkmode,$pass" = "lib,dlpreopen"; then
6130 # Collect and forward deplibs of preopened libtool libs
6131 for lib in $dlprefiles; do
6132 # Ignore non-libtool-libs
6133 dependency_libs=
6134 func_resolve_sysroot "$lib"
6135 case $lib in
6136 *.la) func_source "$func_resolve_sysroot_result" ;;
6137 esac
6138
6139 # Collect preopened libtool deplibs, except any this library
6140 # has declared as weak libs
6141 for deplib in $dependency_libs; do
6142 func_basename "$deplib"
6143 deplib_base=$func_basename_result
6144 case " $weak_libs " in
6145 *" $deplib_base "*) ;;
6146 *) func_append deplibs " $deplib" ;;
6147 esac
6148 done
6149 done
6150 libs="$dlprefiles"
6151 fi
6152 if test "$pass" = dlopen; then
6153 # Collect dlpreopened libraries
6154 save_deplibs="$deplibs"
6155 deplibs=
6156 fi
6157
6158 for deplib in $libs; do
6159 lib=
6160 found=no
6161 case $deplib in
6162 -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe \
6163 |-threads|-fopenmp|-openmp|-mp|-xopenmp|-omp|-qsmp=*)
6164 if test "$linkmode,$pass" = "prog,link"; then
6165 compile_deplibs="$deplib $compile_deplibs"
6166 finalize_deplibs="$deplib $finalize_deplibs"
6167 else
6168 func_append compiler_flags " $deplib"
6169 if test "$linkmode" = lib ; then
6170 case "$new_inherited_linker_flags " in
6171 *" $deplib "*) ;;
6172 * ) func_append new_inherited_linker_flags " $deplib" ;;
6173 esac
6174 fi
6175 fi
6176 continue
6177 ;;
6178 -l*)
6179 if test "$linkmode" != lib && test "$linkmode" != prog; then
6180 func_warning "\`-l' is ignored for archives/objects"
6181 continue
6182 fi
6183 func_stripname '-l' '' "$deplib"
6184 name=$func_stripname_result
6185 if test "$linkmode" = lib; then
6186 searchdirs="$newlib_search_path $lib_search_path $compiler_lib_search_dirs $sys_lib_search_path $shlib_search_path"
6187 else
6188 searchdirs="$newlib_search_path $lib_search_path $sys_lib_search_path $shlib_search_path"
6189 fi
6190 for searchdir in $searchdirs; do
6191 for search_ext in .la $std_shrext .so .a; do
6192 # Search the libtool library
6193 lib="$searchdir/lib${name}${search_ext}"
6194 if test -f "$lib"; then
6195 if test "$search_ext" = ".la"; then
6196 found=yes
6197 else
6198 found=no
6199 fi
6200 break 2
6201 fi
6202 done
6203 done
6204 if test "$found" != yes; then
6205 # deplib doesn't seem to be a libtool library
6206 if test "$linkmode,$pass" = "prog,link"; then
6207 compile_deplibs="$deplib $compile_deplibs"
6208 finalize_deplibs="$deplib $finalize_deplibs"
6209 else
6210 deplibs="$deplib $deplibs"
6211 test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs"
6212 fi
6213 continue
6214 else # deplib is a libtool library
6215 # If $allow_libtool_libs_with_static_runtimes && $deplib is a stdlib,
6216 # We need to do some special things here, and not later.
6217 if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
6218 case " $predeps $postdeps " in
6219 *" $deplib "*)
6220 if func_lalib_p "$lib"; then
6221 library_names=
6222 old_library=
6223 func_source "$lib"
6224 for l in $old_library $library_names; do
6225 ll="$l"
6226 done
6227 if test "X$ll" = "X$old_library" ; then # only static version available
6228 found=no
6229 func_dirname "$lib" "" "."
6230 ladir="$func_dirname_result"
6231 lib=$ladir/$old_library
6232 if test "$linkmode,$pass" = "prog,link"; then
6233 compile_deplibs="$deplib $compile_deplibs"
6234 finalize_deplibs="$deplib $finalize_deplibs"
6235 else
6236 deplibs="$deplib $deplibs"
6237 test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs"
6238 fi
6239 continue
6240 fi
6241 fi
6242 ;;
6243 *) ;;
6244 esac
6245 fi
6246 fi
6247 ;; # -l
6248 *.ltframework)
6249 if test "$linkmode,$pass" = "prog,link"; then
6250 compile_deplibs="$deplib $compile_deplibs"
6251 finalize_deplibs="$deplib $finalize_deplibs"
6252 else
6253 deplibs="$deplib $deplibs"
6254 if test "$linkmode" = lib ; then
6255 case "$new_inherited_linker_flags " in
6256 *" $deplib "*) ;;
6257 * ) func_append new_inherited_linker_flags " $deplib" ;;
6258 esac
6259 fi
6260 fi
6261 continue
6262 ;;
6263 -L*)
6264 case $linkmode in
6265 lib)
6266 deplibs="$deplib $deplibs"
6267 test "$pass" = conv && continue
6268 newdependency_libs="$deplib $newdependency_libs"
6269 func_stripname '-L' '' "$deplib"
6270 func_resolve_sysroot "$func_stripname_result"
6271 func_append newlib_search_path " $func_resolve_sysroot_result"
6272 ;;
6273 prog)
6274 if test "$pass" = conv; then
6275 deplibs="$deplib $deplibs"
6276 continue
6277 fi
6278 if test "$pass" = scan; then
6279 deplibs="$deplib $deplibs"
6280 else
6281 compile_deplibs="$deplib $compile_deplibs"
6282 finalize_deplibs="$deplib $finalize_deplibs"
6283 fi
6284 func_stripname '-L' '' "$deplib"
6285 func_resolve_sysroot "$func_stripname_result"
6286 func_append newlib_search_path " $func_resolve_sysroot_result"
6287 ;;
6288 *)
6289 func_warning "\`-L' is ignored for archives/objects"
6290 ;;
6291 esac # linkmode
6292 continue
6293 ;; # -L
6294 -R*)
6295 if test "$pass" = link; then
6296 func_stripname '-R' '' "$deplib"
6297 func_resolve_sysroot "$func_stripname_result"
6298 dir=$func_resolve_sysroot_result
6299 # Make sure the xrpath contains only unique directories.
6300 case "$xrpath " in
6301 *" $dir "*) ;;
6302 *) func_append xrpath " $dir" ;;
6303 esac
6304 fi
6305 deplibs="$deplib $deplibs"
6306 continue
6307 ;;
6308 *.la)
6309 func_resolve_sysroot "$deplib"
6310 lib=$func_resolve_sysroot_result
6311 ;;
6312 *.$libext)
6313 if test "$pass" = conv; then
6314 deplibs="$deplib $deplibs"
6315 continue
6316 fi
6317 case $linkmode in
6318 lib)
6319 # Linking convenience modules into shared libraries is allowed,
6320 # but linking other static libraries is non-portable.
6321 case " $dlpreconveniencelibs " in
6322 *" $deplib "*) ;;
6323 *)
6324 valid_a_lib=no
6325 case $deplibs_check_method in
6326 match_pattern*)
6327 set dummy $deplibs_check_method; shift
6328 match_pattern_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"`
6329 if eval "\$ECHO \"$deplib\"" 2>/dev/null | $SED 10q \
6330 | $EGREP "$match_pattern_regex" > /dev/null; then
6331 valid_a_lib=yes
6332 fi
6333 ;;
6334 pass_all)
6335 valid_a_lib=yes
6336 ;;
6337 esac
6338 if test "$valid_a_lib" != yes; then
6339 echo
6340 $ECHO "*** Warning: Trying to link with static lib archive $deplib."
6341 echo "*** I have the capability to make that library automatically link in when"
6342 echo "*** you link to this library. But I can only do this if you have a"
6343 echo "*** shared version of the library, which you do not appear to have"
6344 echo "*** because the file extensions .$libext of this argument makes me believe"
6345 echo "*** that it is just a static archive that I should not use here."
6346 else
6347 echo
6348 $ECHO "*** Warning: Linking the shared library $output against the"
6349 $ECHO "*** static library $deplib is not portable!"
6350 deplibs="$deplib $deplibs"
6351 fi
6352 ;;
6353 esac
6354 continue
6355 ;;
6356 prog)
6357 if test "$pass" != link; then
6358 deplibs="$deplib $deplibs"
6359 else
6360 compile_deplibs="$deplib $compile_deplibs"
6361 finalize_deplibs="$deplib $finalize_deplibs"
6362 fi
6363 continue
6364 ;;
6365 esac # linkmode
6366 ;; # *.$libext
6367 *.lo | *.$objext)
6368 if test "$pass" = conv; then
6369 deplibs="$deplib $deplibs"
6370 elif test "$linkmode" = prog; then
6371 if test "$pass" = dlpreopen || test "$dlopen_support" != yes || test "$build_libtool_libs" = no; then
6372 # If there is no dlopen support or we're linking statically,
6373 # we need to preload.
6374 func_append newdlprefiles " $deplib"
6375 compile_deplibs="$deplib $compile_deplibs"
6376 finalize_deplibs="$deplib $finalize_deplibs"
6377 else
6378 func_append newdlfiles " $deplib"
6379 fi
6380 fi
6381 continue
6382 ;;
6383 %DEPLIBS%)
6384 alldeplibs=yes
6385 continue
6386 ;;
6387 esac # case $deplib
6388
6389 if test "$found" = yes || test -f "$lib"; then :
6390 else
6391 func_fatal_error "cannot find the library \`$lib' or unhandled argument \`$deplib'"
6392 fi
6393
6394 # Check to see that this really is a libtool archive.
6395 func_lalib_unsafe_p "$lib" \
6396 || func_fatal_error "\`$lib' is not a valid libtool archive"
6397
6398 func_dirname "$lib" "" "."
6399 ladir="$func_dirname_result"
6400
6401 dlname=
6402 dlopen=
6403 dlpreopen=
6404 libdir=
6405 library_names=
6406 old_library=
6407 inherited_linker_flags=
6408 # If the library was installed with an old release of libtool,
6409 # it will not redefine variables installed, or shouldnotlink
6410 installed=yes
6411 shouldnotlink=no
6412 avoidtemprpath=
6413
6414
6415 # Read the .la file
6416 func_source "$lib"
6417
6418 # Convert "-framework foo" to "foo.ltframework"
6419 if test -n "$inherited_linker_flags"; then
6420 tmp_inherited_linker_flags=`$ECHO "$inherited_linker_flags" | $SED 's/-framework \([^ $]*\)/\1.ltframework/g'`
6421 for tmp_inherited_linker_flag in $tmp_inherited_linker_flags; do
6422 case " $new_inherited_linker_flags " in
6423 *" $tmp_inherited_linker_flag "*) ;;
6424 *) func_append new_inherited_linker_flags " $tmp_inherited_linker_flag";;
6425 esac
6426 done
6427 fi
6428 dependency_libs=`$ECHO " $dependency_libs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'`
6429 if test "$linkmode,$pass" = "lib,link" ||
6430 test "$linkmode,$pass" = "prog,scan" ||
6431 { test "$linkmode" != prog && test "$linkmode" != lib; }; then
6432 test -n "$dlopen" && func_append dlfiles " $dlopen"
6433 test -n "$dlpreopen" && func_append dlprefiles " $dlpreopen"
6434 fi
6435
6436 if test "$pass" = conv; then
6437 # Only check for convenience libraries
6438 deplibs="$lib $deplibs"
6439 if test -z "$libdir"; then
6440 if test -z "$old_library"; then
6441 func_fatal_error "cannot find name of link library for \`$lib'"
6442 fi
6443 # It is a libtool convenience library, so add in its objects.
6444 func_append convenience " $ladir/$objdir/$old_library"
6445 func_append old_convenience " $ladir/$objdir/$old_library"
6446 elif test "$linkmode" != prog && test "$linkmode" != lib; then
6447 func_fatal_error "\`$lib' is not a convenience library"
6448 fi
6449 tmp_libs=
6450 for deplib in $dependency_libs; do
6451 deplibs="$deplib $deplibs"
6452 if $opt_preserve_dup_deps ; then
6453 case "$tmp_libs " in
6454 *" $deplib "*) func_append specialdeplibs " $deplib" ;;
6455 esac
6456 fi
6457 func_append tmp_libs " $deplib"
6458 done
6459 continue
6460 fi # $pass = conv
6461
6462
6463 # Get the name of the library we link against.
6464 linklib=
6465 if test -n "$old_library" &&
6466 { test "$prefer_static_libs" = yes ||
6467 test "$prefer_static_libs,$installed" = "built,no"; }; then
6468 linklib=$old_library
6469 else
6470 for l in $old_library $library_names; do
6471 linklib="$l"
6472 done
6473 fi
6474 if test -z "$linklib"; then
6475 func_fatal_error "cannot find name of link library for \`$lib'"
6476 fi
6477
6478 # This library was specified with -dlopen.
6479 if test "$pass" = dlopen; then
6480 if test -z "$libdir"; then
6481 func_fatal_error "cannot -dlopen a convenience library: \`$lib'"
6482 fi
6483 if test -z "$dlname" ||
6484 test "$dlopen_support" != yes ||
6485 test "$build_libtool_libs" = no; then
6486 # If there is no dlname, no dlopen support or we're linking
6487 # statically, we need to preload. We also need to preload any
6488 # dependent libraries so libltdl's deplib preloader doesn't
6489 # bomb out in the load deplibs phase.
6490 func_append dlprefiles " $lib $dependency_libs"
6491 else
6492 func_append newdlfiles " $lib"
6493 fi
6494 continue
6495 fi # $pass = dlopen
6496
6497 # We need an absolute path.
6498 case $ladir in
6499 [\\/]* | [A-Za-z]:[\\/]*) abs_ladir="$ladir" ;;
6500 *)
6501 abs_ladir=`cd "$ladir" && pwd`
6502 if test -z "$abs_ladir"; then
6503 func_warning "cannot determine absolute directory name of \`$ladir'"
6504 func_warning "passing it literally to the linker, although it might fail"
6505 abs_ladir="$ladir"
6506 fi
6507 ;;
6508 esac
6509 func_basename "$lib"
6510 laname="$func_basename_result"
6511
6512 # Find the relevant object directory and library name.
6513 if test "X$installed" = Xyes; then
6514 if test ! -f "$lt_sysroot$libdir/$linklib" && test -f "$abs_ladir/$linklib"; then
6515 func_warning "library \`$lib' was moved."
6516 dir="$ladir"
6517 absdir="$abs_ladir"
6518 libdir="$abs_ladir"
6519 else
6520 dir="$lt_sysroot$libdir"
6521 absdir="$lt_sysroot$libdir"
6522 fi
6523 test "X$hardcode_automatic" = Xyes && avoidtemprpath=yes
6524 else
6525 if test ! -f "$ladir/$objdir/$linklib" && test -f "$abs_ladir/$linklib"; then
6526 dir="$ladir"
6527 absdir="$abs_ladir"
6528 # Remove this search path later
6529 func_append notinst_path " $abs_ladir"
6530 else
6531 dir="$ladir/$objdir"
6532 absdir="$abs_ladir/$objdir"
6533 # Remove this search path later
6534 func_append notinst_path " $abs_ladir"
6535 fi
6536 fi # $installed = yes
6537 func_stripname 'lib' '.la' "$laname"
6538 name=$func_stripname_result
6539
6540 # This library was specified with -dlpreopen.
6541 if test "$pass" = dlpreopen; then
6542 if test -z "$libdir" && test "$linkmode" = prog; then
6543 func_fatal_error "only libraries may -dlpreopen a convenience library: \`$lib'"
6544 fi
6545 case "$host" in
6546 # special handling for platforms with PE-DLLs.
6547 *cygwin* | *mingw* | *cegcc* )
6548 # Linker will automatically link against shared library if both
6549 # static and shared are present. Therefore, ensure we extract
6550 # symbols from the import library if a shared library is present
6551 # (otherwise, the dlopen module name will be incorrect). We do
6552 # this by putting the import library name into $newdlprefiles.
6553 # We recover the dlopen module name by 'saving' the la file
6554 # name in a special purpose variable, and (later) extracting the
6555 # dlname from the la file.
6556 if test -n "$dlname"; then
6557 func_tr_sh "$dir/$linklib"
6558 eval "libfile_$func_tr_sh_result=\$abs_ladir/\$laname"
6559 func_append newdlprefiles " $dir/$linklib"
6560 else
6561 func_append newdlprefiles " $dir/$old_library"
6562 # Keep a list of preopened convenience libraries to check
6563 # that they are being used correctly in the link pass.
6564 test -z "$libdir" && \
6565 func_append dlpreconveniencelibs " $dir/$old_library"
6566 fi
6567 ;;
6568 * )
6569 # Prefer using a static library (so that no silly _DYNAMIC symbols
6570 # are required to link).
6571 if test -n "$old_library"; then
6572 func_append newdlprefiles " $dir/$old_library"
6573 # Keep a list of preopened convenience libraries to check
6574 # that they are being used correctly in the link pass.
6575 test -z "$libdir" && \
6576 func_append dlpreconveniencelibs " $dir/$old_library"
6577 # Otherwise, use the dlname, so that lt_dlopen finds it.
6578 elif test -n "$dlname"; then
6579 func_append newdlprefiles " $dir/$dlname"
6580 else
6581 func_append newdlprefiles " $dir/$linklib"
6582 fi
6583 ;;
6584 esac
6585 fi # $pass = dlpreopen
6586
6587 if test -z "$libdir"; then
6588 # Link the convenience library
6589 if test "$linkmode" = lib; then
6590 deplibs="$dir/$old_library $deplibs"
6591 elif test "$linkmode,$pass" = "prog,link"; then
6592 compile_deplibs="$dir/$old_library $compile_deplibs"
6593 finalize_deplibs="$dir/$old_library $finalize_deplibs"
6594 else
6595 deplibs="$lib $deplibs" # used for prog,scan pass
6596 fi
6597 continue
6598 fi
6599
6600
6601 if test "$linkmode" = prog && test "$pass" != link; then
6602 func_append newlib_search_path " $ladir"
6603 deplibs="$lib $deplibs"
6604
6605 linkalldeplibs=no
6606 if test "$link_all_deplibs" != no || test -z "$library_names" ||
6607 test "$build_libtool_libs" = no; then
6608 linkalldeplibs=yes
6609 fi
6610
6611 tmp_libs=
6612 for deplib in $dependency_libs; do
6613 case $deplib in
6614 -L*) func_stripname '-L' '' "$deplib"
6615 func_resolve_sysroot "$func_stripname_result"
6616 func_append newlib_search_path " $func_resolve_sysroot_result"
6617 ;;
6618 esac
6619 # Need to link against all dependency_libs?
6620 if test "$linkalldeplibs" = yes; then
6621 deplibs="$deplib $deplibs"
6622 else
6623 # Need to hardcode shared library paths
6624 # or/and link against static libraries
6625 newdependency_libs="$deplib $newdependency_libs"
6626 fi
6627 if $opt_preserve_dup_deps ; then
6628 case "$tmp_libs " in
6629 *" $deplib "*) func_append specialdeplibs " $deplib" ;;
6630 esac
6631 fi
6632 func_append tmp_libs " $deplib"
6633 done # for deplib
6634 continue
6635 fi # $linkmode = prog...
6636
6637 if test "$linkmode,$pass" = "prog,link"; then
6638 if test -n "$library_names" &&
6639 { { test "$prefer_static_libs" = no ||
6640 test "$prefer_static_libs,$installed" = "built,yes"; } ||
6641 test -z "$old_library"; }; then
6642 # We need to hardcode the library path
6643 if test -n "$shlibpath_var" && test -z "$avoidtemprpath" ; then
6644 # Make sure the rpath contains only unique directories.
6645 case "$temp_rpath:" in
6646 *"$absdir:"*) ;;
6647 *) func_append temp_rpath "$absdir:" ;;
6648 esac
6649 fi
6650
6651 # Hardcode the library path.
6652 # Skip directories that are in the system default run-time
6653 # search path.
6654 case " $sys_lib_dlsearch_path " in
6655 *" $absdir "*) ;;
6656 *)
6657 case "$compile_rpath " in
6658 *" $absdir "*) ;;
6659 *) func_append compile_rpath " $absdir" ;;
6660 esac
6661 ;;
6662 esac
6663 case " $sys_lib_dlsearch_path " in
6664 *" $libdir "*) ;;
6665 *)
6666 case "$finalize_rpath " in
6667 *" $libdir "*) ;;
6668 *) func_append finalize_rpath " $libdir" ;;
6669 esac
6670 ;;
6671 esac
6672 fi # $linkmode,$pass = prog,link...
6673
6674 if test "$alldeplibs" = yes &&
6675 { test "$deplibs_check_method" = pass_all ||
6676 { test "$build_libtool_libs" = yes &&
6677 test -n "$library_names"; }; }; then
6678 # We only need to search for static libraries
6679 continue
6680 fi
6681 fi
6682
6683 link_static=no # Whether the deplib will be linked statically
6684 use_static_libs=$prefer_static_libs
6685 if test "$use_static_libs" = built && test "$installed" = yes; then
6686 use_static_libs=no
6687 fi
6688 if test -n "$library_names" &&
6689 { test "$use_static_libs" = no || test -z "$old_library"; }; then
6690 case $host in
6691 *cygwin* | *mingw* | *cegcc*)
6692 # No point in relinking DLLs because paths are not encoded
6693 func_append notinst_deplibs " $lib"
6694 need_relink=no
6695 ;;
6696 *)
6697 if test "$installed" = no; then
6698 func_append notinst_deplibs " $lib"
6699 need_relink=yes
6700 fi
6701 ;;
6702 esac
6703 # This is a shared library
6704
6705 # Warn about portability, can't link against -module's on some
6706 # systems (darwin). Don't bleat about dlopened modules though!
6707 dlopenmodule=""
6708 for dlpremoduletest in $dlprefiles; do
6709 if test "X$dlpremoduletest" = "X$lib"; then
6710 dlopenmodule="$dlpremoduletest"
6711 break
6712 fi
6713 done
6714 if test -z "$dlopenmodule" && test "$shouldnotlink" = yes && test "$pass" = link; then
6715 echo
6716 if test "$linkmode" = prog; then
6717 $ECHO "*** Warning: Linking the executable $output against the loadable module"
6718 else
6719 $ECHO "*** Warning: Linking the shared library $output against the loadable module"
6720 fi
6721 $ECHO "*** $linklib is not portable!"
6722 fi
6723 if test "$linkmode" = lib &&
6724 test "$hardcode_into_libs" = yes; then
6725 # Hardcode the library path.
6726 # Skip directories that are in the system default run-time
6727 # search path.
6728 case " $sys_lib_dlsearch_path " in
6729 *" $absdir "*) ;;
6730 *)
6731 case "$compile_rpath " in
6732 *" $absdir "*) ;;
6733 *) func_append compile_rpath " $absdir" ;;
6734 esac
6735 ;;
6736 esac
6737 case " $sys_lib_dlsearch_path " in
6738 *" $libdir "*) ;;
6739 *)
6740 case "$finalize_rpath " in
6741 *" $libdir "*) ;;
6742 *) func_append finalize_rpath " $libdir" ;;
6743 esac
6744 ;;
6745 esac
6746 fi
6747
6748 if test -n "$old_archive_from_expsyms_cmds"; then
6749 # figure out the soname
6750 set dummy $library_names
6751 shift
6752 realname="$1"
6753 shift
6754 libname=`eval "\\$ECHO \"$libname_spec\""`
6755 # use dlname if we got it. it's perfectly good, no?
6756 if test -n "$dlname"; then
6757 soname="$dlname"
6758 elif test -n "$soname_spec"; then
6759 # bleh windows
6760 case $host in
6761 *cygwin* | mingw* | *cegcc*)
6762 func_arith $current - $age
6763 major=$func_arith_result
6764 versuffix="-$major"
6765 ;;
6766 esac
6767 eval soname=\"$soname_spec\"
6768 else
6769 soname="$realname"
6770 fi
6771
6772 # Make a new name for the extract_expsyms_cmds to use
6773 soroot="$soname"
6774 func_basename "$soroot"
6775 soname="$func_basename_result"
6776 func_stripname 'lib' '.dll' "$soname"
6777 newlib=libimp-$func_stripname_result.a
6778
6779 # If the library has no export list, then create one now
6780 if test -f "$output_objdir/$soname-def"; then :
6781 else
6782 func_verbose "extracting exported symbol list from \`$soname'"
6783 func_execute_cmds "$extract_expsyms_cmds" 'exit $?'
6784 fi
6785
6786 # Create $newlib
6787 if test -f "$output_objdir/$newlib"; then :; else
6788 func_verbose "generating import library for \`$soname'"
6789 func_execute_cmds "$old_archive_from_expsyms_cmds" 'exit $?'
6790 fi
6791 # make sure the library variables are pointing to the new library
6792 dir=$output_objdir
6793 linklib=$newlib
6794 fi # test -n "$old_archive_from_expsyms_cmds"
6795
6796 if test "$linkmode" = prog || test "$opt_mode" != relink; then
6797 add_shlibpath=
6798 add_dir=
6799 add=
6800 lib_linked=yes
6801 case $hardcode_action in
6802 immediate | unsupported)
6803 if test "$hardcode_direct" = no; then
6804 add="$dir/$linklib"
6805 case $host in
6806 *-*-sco3.2v5.0.[024]*) add_dir="-L$dir" ;;
6807 *-*-sysv4*uw2*) add_dir="-L$dir" ;;
6808 *-*-sysv5OpenUNIX* | *-*-sysv5UnixWare7.[01].[10]* | \
6809 *-*-unixware7*) add_dir="-L$dir" ;;
6810 *-*-darwin* )
6811 # if the lib is a (non-dlopened) module then we can not
6812 # link against it, someone is ignoring the earlier warnings
6813 if /usr/bin/file -L $add 2> /dev/null |
6814 $GREP ": [^:]* bundle" >/dev/null ; then
6815 if test "X$dlopenmodule" != "X$lib"; then
6816 $ECHO "*** Warning: lib $linklib is a module, not a shared library"
6817 if test -z "$old_library" ; then
6818 echo
6819 echo "*** And there doesn't seem to be a static archive available"
6820 echo "*** The link will probably fail, sorry"
6821 else
6822 add="$dir/$old_library"
6823 fi
6824 elif test -n "$old_library"; then
6825 add="$dir/$old_library"
6826 fi
6827 fi
6828 esac
6829 elif test "$hardcode_minus_L" = no; then
6830 case $host in
6831 *-*-sunos*) add_shlibpath="$dir" ;;
6832 esac
6833 add_dir="-L$dir"
6834 add="-l$name"
6835 elif test "$hardcode_shlibpath_var" = no; then
6836 add_shlibpath="$dir"
6837 add="-l$name"
6838 else
6839 lib_linked=no
6840 fi
6841 ;;
6842 relink)
6843 if test "$hardcode_direct" = yes &&
6844 test "$hardcode_direct_absolute" = no; then
6845 add="$dir/$linklib"
6846 elif test "$hardcode_minus_L" = yes; then
6847 add_dir="-L$absdir"
6848 # Try looking first in the location we're being installed to.
6849 if test -n "$inst_prefix_dir"; then
6850 case $libdir in
6851 [\\/]*)
6852 func_append add_dir " -L$inst_prefix_dir$libdir"
6853 ;;
6854 esac
6855 fi
6856 add="-l$name"
6857 elif test "$hardcode_shlibpath_var" = yes; then
6858 add_shlibpath="$dir"
6859 add="-l$name"
6860 else
6861 lib_linked=no
6862 fi
6863 ;;
6864 *) lib_linked=no ;;
6865 esac
6866
6867 if test "$lib_linked" != yes; then
6868 func_fatal_configuration "unsupported hardcode properties"
6869 fi
6870
6871 if test -n "$add_shlibpath"; then
6872 case :$compile_shlibpath: in
6873 *":$add_shlibpath:"*) ;;
6874 *) func_append compile_shlibpath "$add_shlibpath:" ;;
6875 esac
6876 fi
6877 if test "$linkmode" = prog; then
6878 test -n "$add_dir" && compile_deplibs="$add_dir $compile_deplibs"
6879 test -n "$add" && compile_deplibs="$add $compile_deplibs"
6880 else
6881 test -n "$add_dir" && deplibs="$add_dir $deplibs"
6882 test -n "$add" && deplibs="$add $deplibs"
6883 if test "$hardcode_direct" != yes &&
6884 test "$hardcode_minus_L" != yes &&
6885 test "$hardcode_shlibpath_var" = yes; then
6886 case :$finalize_shlibpath: in
6887 *":$libdir:"*) ;;
6888 *) func_append finalize_shlibpath "$libdir:" ;;
6889 esac
6890 fi
6891 fi
6892 fi
6893
6894 if test "$linkmode" = prog || test "$opt_mode" = relink; then
6895 add_shlibpath=
6896 add_dir=
6897 add=
6898 # Finalize command for both is simple: just hardcode it.
6899 if test "$hardcode_direct" = yes &&
6900 test "$hardcode_direct_absolute" = no; then
6901 add="$libdir/$linklib"
6902 elif test "$hardcode_minus_L" = yes; then
6903 add_dir="-L$libdir"
6904 add="-l$name"
6905 elif test "$hardcode_shlibpath_var" = yes; then
6906 case :$finalize_shlibpath: in
6907 *":$libdir:"*) ;;
6908 *) func_append finalize_shlibpath "$libdir:" ;;
6909 esac
6910 add="-l$name"
6911 elif test "$hardcode_automatic" = yes; then
6912 if test -n "$inst_prefix_dir" &&
6913 test -f "$inst_prefix_dir$libdir/$linklib" ; then
6914 add="$inst_prefix_dir$libdir/$linklib"
6915 else
6916 add="$libdir/$linklib"
6917 fi
6918 else
6919 # We cannot seem to hardcode it, guess we'll fake it.
6920 add_dir="-L$libdir"
6921 # Try looking first in the location we're being installed to.
6922 if test -n "$inst_prefix_dir"; then
6923 case $libdir in
6924 [\\/]*)
6925 func_append add_dir " -L$inst_prefix_dir$libdir"
6926 ;;
6927 esac
6928 fi
6929 add="-l$name"
6930 fi
6931
6932 if test "$linkmode" = prog; then
6933 test -n "$add_dir" && finalize_deplibs="$add_dir $finalize_deplibs"
6934 test -n "$add" && finalize_deplibs="$add $finalize_deplibs"
6935 else
6936 test -n "$add_dir" && deplibs="$add_dir $deplibs"
6937 test -n "$add" && deplibs="$add $deplibs"
6938 fi
6939 fi
6940 elif test "$linkmode" = prog; then
6941 # Here we assume that one of hardcode_direct or hardcode_minus_L
6942 # is not unsupported. This is valid on all known static and
6943 # shared platforms.
6944 if test "$hardcode_direct" != unsupported; then
6945 test -n "$old_library" && linklib="$old_library"
6946 compile_deplibs="$dir/$linklib $compile_deplibs"
6947 finalize_deplibs="$dir/$linklib $finalize_deplibs"
6948 else
6949 compile_deplibs="-l$name -L$dir $compile_deplibs"
6950 finalize_deplibs="-l$name -L$dir $finalize_deplibs"
6951 fi
6952 elif test "$build_libtool_libs" = yes; then
6953 # Not a shared library
6954 if test "$deplibs_check_method" != pass_all; then
6955 # We're trying link a shared library against a static one
6956 # but the system doesn't support it.
6957
6958 # Just print a warning and add the library to dependency_libs so
6959 # that the program can be linked against the static library.
6960 echo
6961 $ECHO "*** Warning: This system can not link to static lib archive $lib."
6962 echo "*** I have the capability to make that library automatically link in when"
6963 echo "*** you link to this library. But I can only do this if you have a"
6964 echo "*** shared version of the library, which you do not appear to have."
6965 if test "$module" = yes; then
6966 echo "*** But as you try to build a module library, libtool will still create "
6967 echo "*** a static module, that should work as long as the dlopening application"
6968 echo "*** is linked with the -dlopen flag to resolve symbols at runtime."
6969 if test -z "$global_symbol_pipe"; then
6970 echo
6971 echo "*** However, this would only work if libtool was able to extract symbol"
6972 echo "*** lists from a program, using \`nm' or equivalent, but libtool could"
6973 echo "*** not find such a program. So, this module is probably useless."
6974 echo "*** \`nm' from GNU binutils and a full rebuild may help."
6975 fi
6976 if test "$build_old_libs" = no; then
6977 build_libtool_libs=module
6978 build_old_libs=yes
6979 else
6980 build_libtool_libs=no
6981 fi
6982 fi
6983 else
6984 deplibs="$dir/$old_library $deplibs"
6985 link_static=yes
6986 fi
6987 fi # link shared/static library?
6988
6989 if test "$linkmode" = lib; then
6990 if test -n "$dependency_libs" &&
6991 { test "$hardcode_into_libs" != yes ||
6992 test "$build_old_libs" = yes ||
6993 test "$link_static" = yes; }; then
6994 # Extract -R from dependency_libs
6995 temp_deplibs=
6996 for libdir in $dependency_libs; do
6997 case $libdir in
6998 -R*) func_stripname '-R' '' "$libdir"
6999 temp_xrpath=$func_stripname_result
7000 case " $xrpath " in
7001 *" $temp_xrpath "*) ;;
7002 *) func_append xrpath " $temp_xrpath";;
7003 esac;;
7004 *) func_append temp_deplibs " $libdir";;
7005 esac
7006 done
7007 dependency_libs="$temp_deplibs"
7008 fi
7009
7010 func_append newlib_search_path " $absdir"
7011 # Link against this library
7012 test "$link_static" = no && newdependency_libs="$abs_ladir/$laname $newdependency_libs"
7013 # ... and its dependency_libs
7014 tmp_libs=
7015 for deplib in $dependency_libs; do
7016 newdependency_libs="$deplib $newdependency_libs"
7017 case $deplib in
7018 -L*) func_stripname '-L' '' "$deplib"
7019 func_resolve_sysroot "$func_stripname_result";;
7020 *) func_resolve_sysroot "$deplib" ;;
7021 esac
7022 if $opt_preserve_dup_deps ; then
7023 case "$tmp_libs " in
7024 *" $func_resolve_sysroot_result "*)
7025 func_append specialdeplibs " $func_resolve_sysroot_result" ;;
7026 esac
7027 fi
7028 func_append tmp_libs " $func_resolve_sysroot_result"
7029 done
7030
7031 if test "$link_all_deplibs" != no; then
7032 # Add the search paths of all dependency libraries
7033 for deplib in $dependency_libs; do
7034 path=
7035 case $deplib in
7036 -L*) path="$deplib" ;;
7037 *.la)
7038 func_resolve_sysroot "$deplib"
7039 deplib=$func_resolve_sysroot_result
7040 func_dirname "$deplib" "" "."
7041 dir=$func_dirname_result
7042 # We need an absolute path.
7043 case $dir in
7044 [\\/]* | [A-Za-z]:[\\/]*) absdir="$dir" ;;
7045 *)
7046 absdir=`cd "$dir" && pwd`
7047 if test -z "$absdir"; then
7048 func_warning "cannot determine absolute directory name of \`$dir'"
7049 absdir="$dir"
7050 fi
7051 ;;
7052 esac
7053 if $GREP "^installed=no" $deplib > /dev/null; then
7054 case $host in
7055 *-*-darwin*)
7056 depdepl=
7057 eval deplibrary_names=`${SED} -n -e 's/^library_names=\(.*\)$/\1/p' $deplib`
7058 if test -n "$deplibrary_names" ; then
7059 for tmp in $deplibrary_names ; do
7060 depdepl=$tmp
7061 done
7062 if test -f "$absdir/$objdir/$depdepl" ; then
7063 depdepl="$absdir/$objdir/$depdepl"
7064 darwin_install_name=`${OTOOL} -L $depdepl | awk '{if (NR == 2) {print $1;exit}}'`
7065 if test -z "$darwin_install_name"; then
7066 darwin_install_name=`${OTOOL64} -L $depdepl | awk '{if (NR == 2) {print $1;exit}}'`
7067 fi
7068 func_append compiler_flags " ${wl}-dylib_file ${wl}${darwin_install_name}:${depdepl}"
7069 func_append linker_flags " -dylib_file ${darwin_install_name}:${depdepl}"
7070 path=
7071 fi
7072 fi
7073 ;;
7074 *)
7075 path="-L$absdir/$objdir"
7076 ;;
7077 esac
7078 else
7079 eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib`
7080 test -z "$libdir" && \
7081 func_fatal_error "\`$deplib' is not a valid libtool archive"
7082 test "$absdir" != "$libdir" && \
7083 func_warning "\`$deplib' seems to be moved"
7084
7085 path="-L$absdir"
7086 fi
7087 ;;
7088 esac
7089 case " $deplibs " in
7090 *" $path "*) ;;
7091 *) deplibs="$path $deplibs" ;;
7092 esac
7093 done
7094 fi # link_all_deplibs != no
7095 fi # linkmode = lib
7096 done # for deplib in $libs
7097 if test "$pass" = link; then
7098 if test "$linkmode" = "prog"; then
7099 compile_deplibs="$new_inherited_linker_flags $compile_deplibs"
7100 finalize_deplibs="$new_inherited_linker_flags $finalize_deplibs"
7101 else
7102 compiler_flags="$compiler_flags "`$ECHO " $new_inherited_linker_flags" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'`
7103 fi
7104 fi
7105 dependency_libs="$newdependency_libs"
7106 if test "$pass" = dlpreopen; then
7107 # Link the dlpreopened libraries before other libraries
7108 for deplib in $save_deplibs; do
7109 deplibs="$deplib $deplibs"
7110 done
7111 fi
7112 if test "$pass" != dlopen; then
7113 if test "$pass" != conv; then
7114 # Make sure lib_search_path contains only unique directories.
7115 lib_search_path=
7116 for dir in $newlib_search_path; do
7117 case "$lib_search_path " in
7118 *" $dir "*) ;;
7119 *) func_append lib_search_path " $dir" ;;
7120 esac
7121 done
7122 newlib_search_path=
7123 fi
7124
7125 if test "$linkmode,$pass" != "prog,link"; then
7126 vars="deplibs"
7127 else
7128 vars="compile_deplibs finalize_deplibs"
7129 fi
7130 for var in $vars dependency_libs; do
7131 # Add libraries to $var in reverse order
7132 eval tmp_libs=\"\$$var\"
7133 new_libs=
7134 for deplib in $tmp_libs; do
7135 # FIXME: Pedantically, this is the right thing to do, so
7136 # that some nasty dependency loop isn't accidentally
7137 # broken:
7138 #new_libs="$deplib $new_libs"
7139 # Pragmatically, this seems to cause very few problems in
7140 # practice:
7141 case $deplib in
7142 -L*) new_libs="$deplib $new_libs" ;;
7143 -R*) ;;
7144 *)
7145 # And here is the reason: when a library appears more
7146 # than once as an explicit dependence of a library, or
7147 # is implicitly linked in more than once by the
7148 # compiler, it is considered special, and multiple
7149 # occurrences thereof are not removed. Compare this
7150 # with having the same library being listed as a
7151 # dependency of multiple other libraries: in this case,
7152 # we know (pedantically, we assume) the library does not
7153 # need to be listed more than once, so we keep only the
7154 # last copy. This is not always right, but it is rare
7155 # enough that we require users that really mean to play
7156 # such unportable linking tricks to link the library
7157 # using -Wl,-lname, so that libtool does not consider it
7158 # for duplicate removal.
7159 case " $specialdeplibs " in
7160 *" $deplib "*) new_libs="$deplib $new_libs" ;;
7161 *)
7162 case " $new_libs " in
7163 *" $deplib "*) ;;
7164 *) new_libs="$deplib $new_libs" ;;
7165 esac
7166 ;;
7167 esac
7168 ;;
7169 esac
7170 done
7171 tmp_libs=
7172 for deplib in $new_libs; do
7173 case $deplib in
7174 -L*)
7175 case " $tmp_libs " in
7176 *" $deplib "*) ;;
7177 *) func_append tmp_libs " $deplib" ;;
7178 esac
7179 ;;
7180 *) func_append tmp_libs " $deplib" ;;
7181 esac
7182 done
7183 eval $var=\"$tmp_libs\"
7184 done # for var
7185 fi
7186 # Last step: remove runtime libs from dependency_libs
7187 # (they stay in deplibs)
7188 tmp_libs=
7189 for i in $dependency_libs ; do
7190 case " $predeps $postdeps $compiler_lib_search_path " in
7191 *" $i "*)
7192 i=""
7193 ;;
7194 esac
7195 if test -n "$i" ; then
7196 func_append tmp_libs " $i"
7197 fi
7198 done
7199 dependency_libs=$tmp_libs
7200 done # for pass
7201 if test "$linkmode" = prog; then
7202 dlfiles="$newdlfiles"
7203 fi
7204 if test "$linkmode" = prog || test "$linkmode" = lib; then
7205 dlprefiles="$newdlprefiles"
7206 fi
7207
7208 case $linkmode in
7209 oldlib)
7210 if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then
7211 func_warning "\`-dlopen' is ignored for archives"
7212 fi
7213
7214 case " $deplibs" in
7215 *\ -l* | *\ -L*)
7216 func_warning "\`-l' and \`-L' are ignored for archives" ;;
7217 esac
7218
7219 test -n "$rpath" && \
7220 func_warning "\`-rpath' is ignored for archives"
7221
7222 test -n "$xrpath" && \
7223 func_warning "\`-R' is ignored for archives"
7224
7225 test -n "$vinfo" && \
7226 func_warning "\`-version-info/-version-number' is ignored for archives"
7227
7228 test -n "$release" && \
7229 func_warning "\`-release' is ignored for archives"
7230
7231 test -n "$export_symbols$export_symbols_regex" && \
7232 func_warning "\`-export-symbols' is ignored for archives"
7233
7234 # Now set the variables for building old libraries.
7235 build_libtool_libs=no
7236 oldlibs="$output"
7237 func_append objs "$old_deplibs"
7238 ;;
7239
7240 lib)
7241 # Make sure we only generate libraries of the form `libNAME.la'.
7242 case $outputname in
7243 lib*)
7244 func_stripname 'lib' '.la' "$outputname"
7245 name=$func_stripname_result
7246 eval shared_ext=\"$shrext_cmds\"
7247 eval libname=\"$libname_spec\"
7248 ;;
7249 *)
7250 test "$module" = no && \
7251 func_fatal_help "libtool library \`$output' must begin with \`lib'"
7252
7253 if test "$need_lib_prefix" != no; then
7254 # Add the "lib" prefix for modules if required
7255 func_stripname '' '.la' "$outputname"
7256 name=$func_stripname_result
7257 eval shared_ext=\"$shrext_cmds\"
7258 eval libname=\"$libname_spec\"
7259 else
7260 func_stripname '' '.la' "$outputname"
7261 libname=$func_stripname_result
7262 fi
7263 ;;
7264 esac
7265
7266 if test -n "$objs"; then
7267 if test "$deplibs_check_method" != pass_all; then
7268 func_fatal_error "cannot build libtool library \`$output' from non-libtool objects on this host:$objs"
7269 else
7270 echo
7271 $ECHO "*** Warning: Linking the shared library $output against the non-libtool"
7272 $ECHO "*** objects $objs is not portable!"
7273 func_append libobjs " $objs"
7274 fi
7275 fi
7276
7277 test "$dlself" != no && \
7278 func_warning "\`-dlopen self' is ignored for libtool libraries"
7279
7280 set dummy $rpath
7281 shift
7282 test "$#" -gt 1 && \
7283 func_warning "ignoring multiple \`-rpath's for a libtool library"
7284
7285 install_libdir="$1"
7286
7287 oldlibs=
7288 if test -z "$rpath"; then
7289 if test "$build_libtool_libs" = yes; then
7290 # Building a libtool convenience library.
7291 # Some compilers have problems with a `.al' extension so
7292 # convenience libraries should have the same extension an
7293 # archive normally would.
7294 oldlibs="$output_objdir/$libname.$libext $oldlibs"
7295 build_libtool_libs=convenience
7296 build_old_libs=yes
7297 fi
7298
7299 test -n "$vinfo" && \
7300 func_warning "\`-version-info/-version-number' is ignored for convenience libraries"
7301
7302 test -n "$release" && \
7303 func_warning "\`-release' is ignored for convenience libraries"
7304 else
7305
7306 # Parse the version information argument.
7307 save_ifs="$IFS"; IFS=':'
7308 set dummy $vinfo 0 0 0
7309 shift
7310 IFS="$save_ifs"
7311
7312 test -n "$7" && \
7313 func_fatal_help "too many parameters to \`-version-info'"
7314
7315 # convert absolute version numbers to libtool ages
7316 # this retains compatibility with .la files and attempts
7317 # to make the code below a bit more comprehensible
7318
7319 case $vinfo_number in
7320 yes)
7321 number_major="$1"
7322 number_minor="$2"
7323 number_revision="$3"
7324 #
7325 # There are really only two kinds -- those that
7326 # use the current revision as the major version
7327 # and those that subtract age and use age as
7328 # a minor version. But, then there is irix
7329 # which has an extra 1 added just for fun
7330 #
7331 case $version_type in
7332 # correct linux to gnu/linux during the next big refactor
7333 darwin|linux|osf|windows|none)
7334 func_arith $number_major + $number_minor
7335 current=$func_arith_result
7336 age="$number_minor"
7337 revision="$number_revision"
7338 ;;
7339 freebsd-aout|freebsd-elf|qnx|sunos)
7340 current="$number_major"
7341 revision="$number_minor"
7342 age="0"
7343 ;;
7344 irix|nonstopux)
7345 func_arith $number_major + $number_minor
7346 current=$func_arith_result
7347 age="$number_minor"
7348 revision="$number_minor"
7349 lt_irix_increment=no
7350 ;;
7351 esac
7352 ;;
7353 no)
7354 current="$1"
7355 revision="$2"
7356 age="$3"
7357 ;;
7358 esac
7359
7360 # Check that each of the things are valid numbers.
7361 case $current in
7362 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;;
7363 *)
7364 func_error "CURRENT \`$current' must be a nonnegative integer"
7365 func_fatal_error "\`$vinfo' is not valid version information"
7366 ;;
7367 esac
7368
7369 case $revision in
7370 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;;
7371 *)
7372 func_error "REVISION \`$revision' must be a nonnegative integer"
7373 func_fatal_error "\`$vinfo' is not valid version information"
7374 ;;
7375 esac
7376
7377 case $age in
7378 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;;
7379 *)
7380 func_error "AGE \`$age' must be a nonnegative integer"
7381 func_fatal_error "\`$vinfo' is not valid version information"
7382 ;;
7383 esac
7384
7385 if test "$age" -gt "$current"; then
7386 func_error "AGE \`$age' is greater than the current interface number \`$current'"
7387 func_fatal_error "\`$vinfo' is not valid version information"
7388 fi
7389
7390 # Calculate the version variables.
7391 major=
7392 versuffix=
7393 verstring=
7394 case $version_type in
7395 none) ;;
7396
7397 darwin)
7398 # Like Linux, but with the current version available in
7399 # verstring for coding it into the library header
7400 func_arith $current - $age
7401 major=.$func_arith_result
7402 versuffix="$major.$age.$revision"
7403 # Darwin ld doesn't like 0 for these options...
7404 func_arith $current + 1
7405 minor_current=$func_arith_result
7406 xlcverstring="${wl}-compatibility_version ${wl}$minor_current ${wl}-current_version ${wl}$minor_current.$revision"
7407 verstring="-compatibility_version $minor_current -current_version $minor_current.$revision"
7408 ;;
7409
7410 freebsd-aout)
7411 major=".$current"
7412 versuffix=".$current.$revision";
7413 ;;
7414
7415 freebsd-elf)
7416 major=".$current"
7417 versuffix=".$current"
7418 ;;
7419
7420 irix | nonstopux)
7421 if test "X$lt_irix_increment" = "Xno"; then
7422 func_arith $current - $age
7423 else
7424 func_arith $current - $age + 1
7425 fi
7426 major=$func_arith_result
7427
7428 case $version_type in
7429 nonstopux) verstring_prefix=nonstopux ;;
7430 *) verstring_prefix=sgi ;;
7431 esac
7432 verstring="$verstring_prefix$major.$revision"
7433
7434 # Add in all the interfaces that we are compatible with.
7435 loop=$revision
7436 while test "$loop" -ne 0; do
7437 func_arith $revision - $loop
7438 iface=$func_arith_result
7439 func_arith $loop - 1
7440 loop=$func_arith_result
7441 verstring="$verstring_prefix$major.$iface:$verstring"
7442 done
7443
7444 # Before this point, $major must not contain `.'.
7445 major=.$major
7446 versuffix="$major.$revision"
7447 ;;
7448
7449 linux) # correct to gnu/linux during the next big refactor
7450 func_arith $current - $age
7451 major=.$func_arith_result
7452 versuffix="$major.$age.$revision"
7453 ;;
7454
7455 osf)
7456 func_arith $current - $age
7457 major=.$func_arith_result
7458 versuffix=".$current.$age.$revision"
7459 verstring="$current.$age.$revision"
7460
7461 # Add in all the interfaces that we are compatible with.
7462 loop=$age
7463 while test "$loop" -ne 0; do
7464 func_arith $current - $loop
7465 iface=$func_arith_result
7466 func_arith $loop - 1
7467 loop=$func_arith_result
7468 verstring="$verstring:${iface}.0"
7469 done
7470
7471 # Make executables depend on our current version.
7472 func_append verstring ":${current}.0"
7473 ;;
7474
7475 qnx)
7476 major=".$current"
7477 versuffix=".$current"
7478 ;;
7479
7480 sunos)
7481 major=".$current"
7482 versuffix=".$current.$revision"
7483 ;;
7484
7485 windows)
7486 # Use '-' rather than '.', since we only want one
7487 # extension on DOS 8.3 filesystems.
7488 func_arith $current - $age
7489 major=$func_arith_result
7490 versuffix="-$major"
7491 ;;
7492
7493 *)
7494 func_fatal_configuration "unknown library version type \`$version_type'"
7495 ;;
7496 esac
7497
7498 # Clear the version info if we defaulted, and they specified a release.
7499 if test -z "$vinfo" && test -n "$release"; then
7500 major=
7501 case $version_type in
7502 darwin)
7503 # we can't check for "0.0" in archive_cmds due to quoting
7504 # problems, so we reset it completely
7505 verstring=
7506 ;;
7507 *)
7508 verstring="0.0"
7509 ;;
7510 esac
7511 if test "$need_version" = no; then
7512 versuffix=
7513 else
7514 versuffix=".0.0"
7515 fi
7516 fi
7517
7518 # Remove version info from name if versioning should be avoided
7519 if test "$avoid_version" = yes && test "$need_version" = no; then
7520 major=
7521 versuffix=
7522 verstring=""
7523 fi
7524
7525 # Check to see if the archive will have undefined symbols.
7526 if test "$allow_undefined" = yes; then
7527 if test "$allow_undefined_flag" = unsupported; then
7528 func_warning "undefined symbols not allowed in $host shared libraries"
7529 build_libtool_libs=no
7530 build_old_libs=yes
7531 fi
7532 else
7533 # Don't allow undefined symbols.
7534 allow_undefined_flag="$no_undefined_flag"
7535 fi
7536
7537 fi
7538
7539 func_generate_dlsyms "$libname" "$libname" "yes"
7540 func_append libobjs " $symfileobj"
7541 test "X$libobjs" = "X " && libobjs=
7542
7543 if test "$opt_mode" != relink; then
7544 # Remove our outputs, but don't remove object files since they
7545 # may have been created when compiling PIC objects.
7546 removelist=
7547 tempremovelist=`$ECHO "$output_objdir/*"`
7548 for p in $tempremovelist; do
7549 case $p in
7550 *.$objext | *.gcno)
7551 ;;
7552 $output_objdir/$outputname | $output_objdir/$libname.* | $output_objdir/${libname}${release}.*)
7553 if test "X$precious_files_regex" != "X"; then
7554 if $ECHO "$p" | $EGREP -e "$precious_files_regex" >/dev/null 2>&1
7555 then
7556 continue
7557 fi
7558 fi
7559 func_append removelist " $p"
7560 ;;
7561 *) ;;
7562 esac
7563 done
7564 test -n "$removelist" && \
7565 func_show_eval "${RM}r \$removelist"
7566 fi
7567
7568 # Now set the variables for building old libraries.
7569 if test "$build_old_libs" = yes && test "$build_libtool_libs" != convenience ; then
7570 func_append oldlibs " $output_objdir/$libname.$libext"
7571
7572 # Transform .lo files to .o files.
7573 oldobjs="$objs "`$ECHO "$libobjs" | $SP2NL | $SED "/\.${libext}$/d; $lo2o" | $NL2SP`
7574 fi
7575
7576 # Eliminate all temporary directories.
7577 #for path in $notinst_path; do
7578 # lib_search_path=`$ECHO "$lib_search_path " | $SED "s% $path % %g"`
7579 # deplibs=`$ECHO "$deplibs " | $SED "s% -L$path % %g"`
7580 # dependency_libs=`$ECHO "$dependency_libs " | $SED "s% -L$path % %g"`
7581 #done
7582
7583 if test -n "$xrpath"; then
7584 # If the user specified any rpath flags, then add them.
7585 temp_xrpath=
7586 for libdir in $xrpath; do
7587 func_replace_sysroot "$libdir"
7588 func_append temp_xrpath " -R$func_replace_sysroot_result"
7589 case "$finalize_rpath " in
7590 *" $libdir "*) ;;
7591 *) func_append finalize_rpath " $libdir" ;;
7592 esac
7593 done
7594 if test "$hardcode_into_libs" != yes || test "$build_old_libs" = yes; then
7595 dependency_libs="$temp_xrpath $dependency_libs"
7596 fi
7597 fi
7598
7599 # Make sure dlfiles contains only unique files that won't be dlpreopened
7600 old_dlfiles="$dlfiles"
7601 dlfiles=
7602 for lib in $old_dlfiles; do
7603 case " $dlprefiles $dlfiles " in
7604 *" $lib "*) ;;
7605 *) func_append dlfiles " $lib" ;;
7606 esac
7607 done
7608
7609 # Make sure dlprefiles contains only unique files
7610 old_dlprefiles="$dlprefiles"
7611 dlprefiles=
7612 for lib in $old_dlprefiles; do
7613 case "$dlprefiles " in
7614 *" $lib "*) ;;
7615 *) func_append dlprefiles " $lib" ;;
7616 esac
7617 done
7618
7619 if test "$build_libtool_libs" = yes; then
7620 if test -n "$rpath"; then
7621 case $host in
7622 *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-beos* | *-cegcc* | *-*-haiku*)
7623 # these systems don't actually have a c library (as such)!
7624 ;;
7625 *-*-rhapsody* | *-*-darwin1.[012])
7626 # Rhapsody C library is in the System framework
7627 func_append deplibs " System.ltframework"
7628 ;;
7629 *-*-netbsd*)
7630 # Don't link with libc until the a.out ld.so is fixed.
7631 ;;
7632 *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*)
7633 # Do not include libc due to us having libc/libc_r.
7634 ;;
7635 *-*-sco3.2v5* | *-*-sco5v6*)
7636 # Causes problems with __ctype
7637 ;;
7638 *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*)
7639 # Compiler inserts libc in the correct place for threads to work
7640 ;;
7641 *)
7642 # Add libc to deplibs on all other systems if necessary.
7643 if test "$build_libtool_need_lc" = "yes"; then
7644 func_append deplibs " -lc"
7645 fi
7646 ;;
7647 esac
7648 fi
7649
7650 # Transform deplibs into only deplibs that can be linked in shared.
7651 name_save=$name
7652 libname_save=$libname
7653 release_save=$release
7654 versuffix_save=$versuffix
7655 major_save=$major
7656 # I'm not sure if I'm treating the release correctly. I think
7657 # release should show up in the -l (ie -lgmp5) so we don't want to
7658 # add it in twice. Is that correct?
7659 release=""
7660 versuffix=""
7661 major=""
7662 newdeplibs=
7663 droppeddeps=no
7664 case $deplibs_check_method in
7665 pass_all)
7666 # Don't check for shared/static. Everything works.
7667 # This might be a little naive. We might want to check
7668 # whether the library exists or not. But this is on
7669 # osf3 & osf4 and I'm not really sure... Just
7670 # implementing what was already the behavior.
7671 newdeplibs=$deplibs
7672 ;;
7673 test_compile)
7674 # This code stresses the "libraries are programs" paradigm to its
7675 # limits. Maybe even breaks it. We compile a program, linking it
7676 # against the deplibs as a proxy for the library. Then we can check
7677 # whether they linked in statically or dynamically with ldd.
7678 $opt_dry_run || $RM conftest.c
7679 cat > conftest.c <<EOF
7680 int main() { return 0; }
7681 EOF
7682 $opt_dry_run || $RM conftest
7683 if $LTCC $LTCFLAGS -o conftest conftest.c $deplibs; then
7684 ldd_output=`ldd conftest`
7685 for i in $deplibs; do
7686 case $i in
7687 -l*)
7688 func_stripname -l '' "$i"
7689 name=$func_stripname_result
7690 if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
7691 case " $predeps $postdeps " in
7692 *" $i "*)
7693 func_append newdeplibs " $i"
7694 i=""
7695 ;;
7696 esac
7697 fi
7698 if test -n "$i" ; then
7699 libname=`eval "\\$ECHO \"$libname_spec\""`
7700 deplib_matches=`eval "\\$ECHO \"$library_names_spec\""`
7701 set dummy $deplib_matches; shift
7702 deplib_match=$1
7703 if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0 ; then
7704 func_append newdeplibs " $i"
7705 else
7706 droppeddeps=yes
7707 echo
7708 $ECHO "*** Warning: dynamic linker does not accept needed library $i."
7709 echo "*** I have the capability to make that library automatically link in when"
7710 echo "*** you link to this library. But I can only do this if you have a"
7711 echo "*** shared version of the library, which I believe you do not have"
7712 echo "*** because a test_compile did reveal that the linker did not use it for"
7713 echo "*** its dynamic dependency list that programs get resolved with at runtime."
7714 fi
7715 fi
7716 ;;
7717 *)
7718 func_append newdeplibs " $i"
7719 ;;
7720 esac
7721 done
7722 else
7723 # Error occurred in the first compile. Let's try to salvage
7724 # the situation: Compile a separate program for each library.
7725 for i in $deplibs; do
7726 case $i in
7727 -l*)
7728 func_stripname -l '' "$i"
7729 name=$func_stripname_result
7730 $opt_dry_run || $RM conftest
7731 if $LTCC $LTCFLAGS -o conftest conftest.c $i; then
7732 ldd_output=`ldd conftest`
7733 if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
7734 case " $predeps $postdeps " in
7735 *" $i "*)
7736 func_append newdeplibs " $i"
7737 i=""
7738 ;;
7739 esac
7740 fi
7741 if test -n "$i" ; then
7742 libname=`eval "\\$ECHO \"$libname_spec\""`
7743 deplib_matches=`eval "\\$ECHO \"$library_names_spec\""`
7744 set dummy $deplib_matches; shift
7745 deplib_match=$1
7746 if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0 ; then
7747 func_append newdeplibs " $i"
7748 else
7749 droppeddeps=yes
7750 echo
7751 $ECHO "*** Warning: dynamic linker does not accept needed library $i."
7752 echo "*** I have the capability to make that library automatically link in when"
7753 echo "*** you link to this library. But I can only do this if you have a"
7754 echo "*** shared version of the library, which you do not appear to have"
7755 echo "*** because a test_compile did reveal that the linker did not use this one"
7756 echo "*** as a dynamic dependency that programs can get resolved with at runtime."
7757 fi
7758 fi
7759 else
7760 droppeddeps=yes
7761 echo
7762 $ECHO "*** Warning! Library $i is needed by this library but I was not able to"
7763 echo "*** make it link in! You will probably need to install it or some"
7764 echo "*** library that it depends on before this library will be fully"
7765 echo "*** functional. Installing it before continuing would be even better."
7766 fi
7767 ;;
7768 *)
7769 func_append newdeplibs " $i"
7770 ;;
7771 esac
7772 done
7773 fi
7774 ;;
7775 file_magic*)
7776 set dummy $deplibs_check_method; shift
7777 file_magic_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"`
7778 for a_deplib in $deplibs; do
7779 case $a_deplib in
7780 -l*)
7781 func_stripname -l '' "$a_deplib"
7782 name=$func_stripname_result
7783 if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
7784 case " $predeps $postdeps " in
7785 *" $a_deplib "*)
7786 func_append newdeplibs " $a_deplib"
7787 a_deplib=""
7788 ;;
7789 esac
7790 fi
7791 if test -n "$a_deplib" ; then
7792 libname=`eval "\\$ECHO \"$libname_spec\""`
7793 if test -n "$file_magic_glob"; then
7794 libnameglob=`func_echo_all "$libname" | $SED -e $file_magic_glob`
7795 else
7796 libnameglob=$libname
7797 fi
7798 test "$want_nocaseglob" = yes && nocaseglob=`shopt -p nocaseglob`
7799 for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do
7800 if test "$want_nocaseglob" = yes; then
7801 shopt -s nocaseglob
7802 potential_libs=`ls $i/$libnameglob[.-]* 2>/dev/null`
7803 $nocaseglob
7804 else
7805 potential_libs=`ls $i/$libnameglob[.-]* 2>/dev/null`
7806 fi
7807 for potent_lib in $potential_libs; do
7808 # Follow soft links.
7809 if ls -lLd "$potent_lib" 2>/dev/null |
7810 $GREP " -> " >/dev/null; then
7811 continue
7812 fi
7813 # The statement above tries to avoid entering an
7814 # endless loop below, in case of cyclic links.
7815 # We might still enter an endless loop, since a link
7816 # loop can be closed while we follow links,
7817 # but so what?
7818 potlib="$potent_lib"
7819 while test -h "$potlib" 2>/dev/null; do
7820 potliblink=`ls -ld $potlib | ${SED} 's/.* -> //'`
7821 case $potliblink in
7822 [\\/]* | [A-Za-z]:[\\/]*) potlib="$potliblink";;
7823 *) potlib=`$ECHO "$potlib" | $SED 's,[^/]*$,,'`"$potliblink";;
7824 esac
7825 done
7826 if eval $file_magic_cmd \"\$potlib\" 2>/dev/null |
7827 $SED -e 10q |
7828 $EGREP "$file_magic_regex" > /dev/null; then
7829 func_append newdeplibs " $a_deplib"
7830 a_deplib=""
7831 break 2
7832 fi
7833 done
7834 done
7835 fi
7836 if test -n "$a_deplib" ; then
7837 droppeddeps=yes
7838 echo
7839 $ECHO "*** Warning: linker path does not have real file for library $a_deplib."
7840 echo "*** I have the capability to make that library automatically link in when"
7841 echo "*** you link to this library. But I can only do this if you have a"
7842 echo "*** shared version of the library, which you do not appear to have"
7843 echo "*** because I did check the linker path looking for a file starting"
7844 if test -z "$potlib" ; then
7845 $ECHO "*** with $libname but no candidates were found. (...for file magic test)"
7846 else
7847 $ECHO "*** with $libname and none of the candidates passed a file format test"
7848 $ECHO "*** using a file magic. Last file checked: $potlib"
7849 fi
7850 fi
7851 ;;
7852 *)
7853 # Add a -L argument.
7854 func_append newdeplibs " $a_deplib"
7855 ;;
7856 esac
7857 done # Gone through all deplibs.
7858 ;;
7859 match_pattern*)
7860 set dummy $deplibs_check_method; shift
7861 match_pattern_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"`
7862 for a_deplib in $deplibs; do
7863 case $a_deplib in
7864 -l*)
7865 func_stripname -l '' "$a_deplib"
7866 name=$func_stripname_result
7867 if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
7868 case " $predeps $postdeps " in
7869 *" $a_deplib "*)
7870 func_append newdeplibs " $a_deplib"
7871 a_deplib=""
7872 ;;
7873 esac
7874 fi
7875 if test -n "$a_deplib" ; then
7876 libname=`eval "\\$ECHO \"$libname_spec\""`
7877 for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do
7878 potential_libs=`ls $i/$libname[.-]* 2>/dev/null`
7879 for potent_lib in $potential_libs; do
7880 potlib="$potent_lib" # see symlink-check above in file_magic test
7881 if eval "\$ECHO \"$potent_lib\"" 2>/dev/null | $SED 10q | \
7882 $EGREP "$match_pattern_regex" > /dev/null; then
7883 func_append newdeplibs " $a_deplib"
7884 a_deplib=""
7885 break 2
7886 fi
7887 done
7888 done
7889 fi
7890 if test -n "$a_deplib" ; then
7891 droppeddeps=yes
7892 echo
7893 $ECHO "*** Warning: linker path does not have real file for library $a_deplib."
7894 echo "*** I have the capability to make that library automatically link in when"
7895 echo "*** you link to this library. But I can only do this if you have a"
7896 echo "*** shared version of the library, which you do not appear to have"
7897 echo "*** because I did check the linker path looking for a file starting"
7898 if test -z "$potlib" ; then
7899 $ECHO "*** with $libname but no candidates were found. (...for regex pattern test)"
7900 else
7901 $ECHO "*** with $libname and none of the candidates passed a file format test"
7902 $ECHO "*** using a regex pattern. Last file checked: $potlib"
7903 fi
7904 fi
7905 ;;
7906 *)
7907 # Add a -L argument.
7908 func_append newdeplibs " $a_deplib"
7909 ;;
7910 esac
7911 done # Gone through all deplibs.
7912 ;;
7913 none | unknown | *)
7914 newdeplibs=""
7915 tmp_deplibs=`$ECHO " $deplibs" | $SED 's/ -lc$//; s/ -[LR][^ ]*//g'`
7916 if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
7917 for i in $predeps $postdeps ; do
7918 # can't use Xsed below, because $i might contain '/'
7919 tmp_deplibs=`$ECHO " $tmp_deplibs" | $SED "s,$i,,"`
7920 done
7921 fi
7922 case $tmp_deplibs in
7923 *[!\ \ ]*)
7924 echo
7925 if test "X$deplibs_check_method" = "Xnone"; then
7926 echo "*** Warning: inter-library dependencies are not supported in this platform."
7927 else
7928 echo "*** Warning: inter-library dependencies are not known to be supported."
7929 fi
7930 echo "*** All declared inter-library dependencies are being dropped."
7931 droppeddeps=yes
7932 ;;
7933 esac
7934 ;;
7935 esac
7936 versuffix=$versuffix_save
7937 major=$major_save
7938 release=$release_save
7939 libname=$libname_save
7940 name=$name_save
7941
7942 case $host in
7943 *-*-rhapsody* | *-*-darwin1.[012])
7944 # On Rhapsody replace the C library with the System framework
7945 newdeplibs=`$ECHO " $newdeplibs" | $SED 's/ -lc / System.ltframework /'`
7946 ;;
7947 esac
7948
7949 if test "$droppeddeps" = yes; then
7950 if test "$module" = yes; then
7951 echo
7952 echo "*** Warning: libtool could not satisfy all declared inter-library"
7953 $ECHO "*** dependencies of module $libname. Therefore, libtool will create"
7954 echo "*** a static module, that should work as long as the dlopening"
7955 echo "*** application is linked with the -dlopen flag."
7956 if test -z "$global_symbol_pipe"; then
7957 echo
7958 echo "*** However, this would only work if libtool was able to extract symbol"
7959 echo "*** lists from a program, using \`nm' or equivalent, but libtool could"
7960 echo "*** not find such a program. So, this module is probably useless."
7961 echo "*** \`nm' from GNU binutils and a full rebuild may help."
7962 fi
7963 if test "$build_old_libs" = no; then
7964 oldlibs="$output_objdir/$libname.$libext"
7965 build_libtool_libs=module
7966 build_old_libs=yes
7967 else
7968 build_libtool_libs=no
7969 fi
7970 else
7971 echo "*** The inter-library dependencies that have been dropped here will be"
7972 echo "*** automatically added whenever a program is linked with this library"
7973 echo "*** or is declared to -dlopen it."
7974
7975 if test "$allow_undefined" = no; then
7976 echo
7977 echo "*** Since this library must not contain undefined symbols,"
7978 echo "*** because either the platform does not support them or"
7979 echo "*** it was explicitly requested with -no-undefined,"
7980 echo "*** libtool will only create a static version of it."
7981 if test "$build_old_libs" = no; then
7982 oldlibs="$output_objdir/$libname.$libext"
7983 build_libtool_libs=module
7984 build_old_libs=yes
7985 else
7986 build_libtool_libs=no
7987 fi
7988 fi
7989 fi
7990 fi
7991 # Done checking deplibs!
7992 deplibs=$newdeplibs
7993 fi
7994 # Time to change all our "foo.ltframework" stuff back to "-framework foo"
7995 case $host in
7996 *-*-darwin*)
7997 newdeplibs=`$ECHO " $newdeplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'`
7998 new_inherited_linker_flags=`$ECHO " $new_inherited_linker_flags" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'`
7999 deplibs=`$ECHO " $deplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'`
8000 ;;
8001 esac
8002
8003 # move library search paths that coincide with paths to not yet
8004 # installed libraries to the beginning of the library search list
8005 new_libs=
8006 for path in $notinst_path; do
8007 case " $new_libs " in
8008 *" -L$path/$objdir "*) ;;
8009 *)
8010 case " $deplibs " in
8011 *" -L$path/$objdir "*)
8012 func_append new_libs " -L$path/$objdir" ;;
8013 esac
8014 ;;
8015 esac
8016 done
8017 for deplib in $deplibs; do
8018 case $deplib in
8019 -L*)
8020 case " $new_libs " in
8021 *" $deplib "*) ;;
8022 *) func_append new_libs " $deplib" ;;
8023 esac
8024 ;;
8025 *) func_append new_libs " $deplib" ;;
8026 esac
8027 done
8028 deplibs="$new_libs"
8029
8030 # All the library-specific variables (install_libdir is set above).
8031 library_names=
8032 old_library=
8033 dlname=
8034
8035 # Test again, we may have decided not to build it any more
8036 if test "$build_libtool_libs" = yes; then
8037 # Remove ${wl} instances when linking with ld.
8038 # FIXME: should test the right _cmds variable.
8039 case $archive_cmds in
8040 *\$LD\ *) wl= ;;
8041 esac
8042 if test "$hardcode_into_libs" = yes; then
8043 # Hardcode the library paths
8044 hardcode_libdirs=
8045 dep_rpath=
8046 rpath="$finalize_rpath"
8047 test "$opt_mode" != relink && rpath="$compile_rpath$rpath"
8048 for libdir in $rpath; do
8049 if test -n "$hardcode_libdir_flag_spec"; then
8050 if test -n "$hardcode_libdir_separator"; then
8051 func_replace_sysroot "$libdir"
8052 libdir=$func_replace_sysroot_result
8053 if test -z "$hardcode_libdirs"; then
8054 hardcode_libdirs="$libdir"
8055 else
8056 # Just accumulate the unique libdirs.
8057 case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in
8058 *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*)
8059 ;;
8060 *)
8061 func_append hardcode_libdirs "$hardcode_libdir_separator$libdir"
8062 ;;
8063 esac
8064 fi
8065 else
8066 eval flag=\"$hardcode_libdir_flag_spec\"
8067 func_append dep_rpath " $flag"
8068 fi
8069 elif test -n "$runpath_var"; then
8070 case "$perm_rpath " in
8071 *" $libdir "*) ;;
8072 *) func_append perm_rpath " $libdir" ;;
8073 esac
8074 fi
8075 done
8076 # Substitute the hardcoded libdirs into the rpath.
8077 if test -n "$hardcode_libdir_separator" &&
8078 test -n "$hardcode_libdirs"; then
8079 libdir="$hardcode_libdirs"
8080 eval "dep_rpath=\"$hardcode_libdir_flag_spec\""
8081 fi
8082 if test -n "$runpath_var" && test -n "$perm_rpath"; then
8083 # We should set the runpath_var.
8084 rpath=
8085 for dir in $perm_rpath; do
8086 func_append rpath "$dir:"
8087 done
8088 eval "$runpath_var='$rpath\$$runpath_var'; export $runpath_var"
8089 fi
8090 test -n "$dep_rpath" && deplibs="$dep_rpath $deplibs"
8091 fi
8092
8093 shlibpath="$finalize_shlibpath"
8094 test "$opt_mode" != relink && shlibpath="$compile_shlibpath$shlibpath"
8095 if test -n "$shlibpath"; then
8096 eval "$shlibpath_var='$shlibpath\$$shlibpath_var'; export $shlibpath_var"
8097 fi
8098
8099 # Get the real and link names of the library.
8100 eval shared_ext=\"$shrext_cmds\"
8101 eval library_names=\"$library_names_spec\"
8102 set dummy $library_names
8103 shift
8104 realname="$1"
8105 shift
8106
8107 if test -n "$soname_spec"; then
8108 eval soname=\"$soname_spec\"
8109 else
8110 soname="$realname"
8111 fi
8112 if test -z "$dlname"; then
8113 dlname=$soname
8114 fi
8115
8116 lib="$output_objdir/$realname"
8117 linknames=
8118 for link
8119 do
8120 func_append linknames " $link"
8121 done
8122
8123 # Use standard objects if they are pic
8124 test -z "$pic_flag" && libobjs=`$ECHO "$libobjs" | $SP2NL | $SED "$lo2o" | $NL2SP`
8125 test "X$libobjs" = "X " && libobjs=
8126
8127 delfiles=
8128 if test -n "$export_symbols" && test -n "$include_expsyms"; then
8129 $opt_dry_run || cp "$export_symbols" "$output_objdir/$libname.uexp"
8130 export_symbols="$output_objdir/$libname.uexp"
8131 func_append delfiles " $export_symbols"
8132 fi
8133
8134 orig_export_symbols=
8135 case $host_os in
8136 cygwin* | mingw* | cegcc*)
8137 if test -n "$export_symbols" && test -z "$export_symbols_regex"; then
8138 # exporting using user supplied symfile
8139 if test "x`$SED 1q $export_symbols`" != xEXPORTS; then
8140 # and it's NOT already a .def file. Must figure out
8141 # which of the given symbols are data symbols and tag
8142 # them as such. So, trigger use of export_symbols_cmds.
8143 # export_symbols gets reassigned inside the "prepare
8144 # the list of exported symbols" if statement, so the
8145 # include_expsyms logic still works.
8146 orig_export_symbols="$export_symbols"
8147 export_symbols=
8148 always_export_symbols=yes
8149 fi
8150 fi
8151 ;;
8152 esac
8153
8154 # Prepare the list of exported symbols
8155 if test -z "$export_symbols"; then
8156 if test "$always_export_symbols" = yes || test -n "$export_symbols_regex"; then
8157 func_verbose "generating symbol list for \`$libname.la'"
8158 export_symbols="$output_objdir/$libname.exp"
8159 $opt_dry_run || $RM $export_symbols
8160 cmds=$export_symbols_cmds
8161 save_ifs="$IFS"; IFS='~'
8162 for cmd1 in $cmds; do
8163 IFS="$save_ifs"
8164 # Take the normal branch if the nm_file_list_spec branch
8165 # doesn't work or if tool conversion is not needed.
8166 case $nm_file_list_spec~$to_tool_file_cmd in
8167 *~func_convert_file_noop | *~func_convert_file_msys_to_w32 | ~*)
8168 try_normal_branch=yes
8169 eval cmd=\"$cmd1\"
8170 func_len " $cmd"
8171 len=$func_len_result
8172 ;;
8173 *)
8174 try_normal_branch=no
8175 ;;
8176 esac
8177 if test "$try_normal_branch" = yes \
8178 && { test "$len" -lt "$max_cmd_len" \
8179 || test "$max_cmd_len" -le -1; }
8180 then
8181 func_show_eval "$cmd" 'exit $?'
8182 skipped_export=false
8183 elif test -n "$nm_file_list_spec"; then
8184 func_basename "$output"
8185 output_la=$func_basename_result
8186 save_libobjs=$libobjs
8187 save_output=$output
8188 output=${output_objdir}/${output_la}.nm
8189 func_to_tool_file "$output"
8190 libobjs=$nm_file_list_spec$func_to_tool_file_result
8191 func_append delfiles " $output"
8192 func_verbose "creating $NM input file list: $output"
8193 for obj in $save_libobjs; do
8194 func_to_tool_file "$obj"
8195 $ECHO "$func_to_tool_file_result"
8196 done > "$output"
8197 eval cmd=\"$cmd1\"
8198 func_show_eval "$cmd" 'exit $?'
8199 output=$save_output
8200 libobjs=$save_libobjs
8201 skipped_export=false
8202 else
8203 # The command line is too long to execute in one step.
8204 func_verbose "using reloadable object file for export list..."
8205 skipped_export=:
8206 # Break out early, otherwise skipped_export may be
8207 # set to false by a later but shorter cmd.
8208 break
8209 fi
8210 done
8211 IFS="$save_ifs"
8212 if test -n "$export_symbols_regex" && test "X$skipped_export" != "X:"; then
8213 func_show_eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"'
8214 func_show_eval '$MV "${export_symbols}T" "$export_symbols"'
8215 fi
8216 fi
8217 fi
8218
8219 if test -n "$export_symbols" && test -n "$include_expsyms"; then
8220 tmp_export_symbols="$export_symbols"
8221 test -n "$orig_export_symbols" && tmp_export_symbols="$orig_export_symbols"
8222 $opt_dry_run || eval '$ECHO "$include_expsyms" | $SP2NL >> "$tmp_export_symbols"'
8223 fi
8224
8225 if test "X$skipped_export" != "X:" && test -n "$orig_export_symbols"; then
8226 # The given exports_symbols file has to be filtered, so filter it.
8227 func_verbose "filter symbol list for \`$libname.la' to tag DATA exports"
8228 # FIXME: $output_objdir/$libname.filter potentially contains lots of
8229 # 's' commands which not all seds can handle. GNU sed should be fine
8230 # though. Also, the filter scales superlinearly with the number of
8231 # global variables. join(1) would be nice here, but unfortunately
8232 # isn't a blessed tool.
8233 $opt_dry_run || $SED -e '/[ ,]DATA/!d;s,\(.*\)\([ \,].*\),s|^\1$|\1\2|,' < $export_symbols > $output_objdir/$libname.filter
8234 func_append delfiles " $export_symbols $output_objdir/$libname.filter"
8235 export_symbols=$output_objdir/$libname.def
8236 $opt_dry_run || $SED -f $output_objdir/$libname.filter < $orig_export_symbols > $export_symbols
8237 fi
8238
8239 tmp_deplibs=
8240 for test_deplib in $deplibs; do
8241 case " $convenience " in
8242 *" $test_deplib "*) ;;
8243 *)
8244 func_append tmp_deplibs " $test_deplib"
8245 ;;
8246 esac
8247 done
8248 deplibs="$tmp_deplibs"
8249
8250 if test -n "$convenience"; then
8251 if test -n "$whole_archive_flag_spec" &&
8252 test "$compiler_needs_object" = yes &&
8253 test -z "$libobjs"; then
8254 # extract the archives, so we have objects to list.
8255 # TODO: could optimize this to just extract one archive.
8256 whole_archive_flag_spec=
8257 fi
8258 if test -n "$whole_archive_flag_spec"; then
8259 save_libobjs=$libobjs
8260 eval libobjs=\"\$libobjs $whole_archive_flag_spec\"
8261 test "X$libobjs" = "X " && libobjs=
8262 else
8263 gentop="$output_objdir/${outputname}x"
8264 func_append generated " $gentop"
8265
8266 func_extract_archives $gentop $convenience
8267 func_append libobjs " $func_extract_archives_result"
8268 test "X$libobjs" = "X " && libobjs=
8269 fi
8270 fi
8271
8272 if test "$thread_safe" = yes && test -n "$thread_safe_flag_spec"; then
8273 eval flag=\"$thread_safe_flag_spec\"
8274 func_append linker_flags " $flag"
8275 fi
8276
8277 # Make a backup of the uninstalled library when relinking
8278 if test "$opt_mode" = relink; then
8279 $opt_dry_run || eval '(cd $output_objdir && $RM ${realname}U && $MV $realname ${realname}U)' || exit $?
8280 fi
8281
8282 # Do each of the archive commands.
8283 if test "$module" = yes && test -n "$module_cmds" ; then
8284 if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then
8285 eval test_cmds=\"$module_expsym_cmds\"
8286 cmds=$module_expsym_cmds
8287 else
8288 eval test_cmds=\"$module_cmds\"
8289 cmds=$module_cmds
8290 fi
8291 else
8292 if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then
8293 eval test_cmds=\"$archive_expsym_cmds\"
8294 cmds=$archive_expsym_cmds
8295 else
8296 eval test_cmds=\"$archive_cmds\"
8297 cmds=$archive_cmds
8298 fi
8299 fi
8300
8301 if test "X$skipped_export" != "X:" &&
8302 func_len " $test_cmds" &&
8303 len=$func_len_result &&
8304 test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then
8305 :
8306 else
8307 # The command line is too long to link in one step, link piecewise
8308 # or, if using GNU ld and skipped_export is not :, use a linker
8309 # script.
8310
8311 # Save the value of $output and $libobjs because we want to
8312 # use them later. If we have whole_archive_flag_spec, we
8313 # want to use save_libobjs as it was before
8314 # whole_archive_flag_spec was expanded, because we can't
8315 # assume the linker understands whole_archive_flag_spec.
8316 # This may have to be revisited, in case too many
8317 # convenience libraries get linked in and end up exceeding
8318 # the spec.
8319 if test -z "$convenience" || test -z "$whole_archive_flag_spec"; then
8320 save_libobjs=$libobjs
8321 fi
8322 save_output=$output
8323 func_basename "$output"
8324 output_la=$func_basename_result
8325
8326 # Clear the reloadable object creation command queue and
8327 # initialize k to one.
8328 test_cmds=
8329 concat_cmds=
8330 objlist=
8331 last_robj=
8332 k=1
8333
8334 if test -n "$save_libobjs" && test "X$skipped_export" != "X:" && test "$with_gnu_ld" = yes; then
8335 output=${output_objdir}/${output_la}.lnkscript
8336 func_verbose "creating GNU ld script: $output"
8337 echo 'INPUT (' > $output
8338 for obj in $save_libobjs
8339 do
8340 func_to_tool_file "$obj"
8341 $ECHO "$func_to_tool_file_result" >> $output
8342 done
8343 echo ')' >> $output
8344 func_append delfiles " $output"
8345 func_to_tool_file "$output"
8346 output=$func_to_tool_file_result
8347 elif test -n "$save_libobjs" && test "X$skipped_export" != "X:" && test "X$file_list_spec" != X; then
8348 output=${output_objdir}/${output_la}.lnk
8349 func_verbose "creating linker input file list: $output"
8350 : > $output
8351 set x $save_libobjs
8352 shift
8353 firstobj=
8354 if test "$compiler_needs_object" = yes; then
8355 firstobj="$1 "
8356 shift
8357 fi
8358 for obj
8359 do
8360 func_to_tool_file "$obj"
8361 $ECHO "$func_to_tool_file_result" >> $output
8362 done
8363 func_append delfiles " $output"
8364 func_to_tool_file "$output"
8365 output=$firstobj\"$file_list_spec$func_to_tool_file_result\"
8366 else
8367 if test -n "$save_libobjs"; then
8368 func_verbose "creating reloadable object files..."
8369 output=$output_objdir/$output_la-${k}.$objext
8370 eval test_cmds=\"$reload_cmds\"
8371 func_len " $test_cmds"
8372 len0=$func_len_result
8373 len=$len0
8374
8375 # Loop over the list of objects to be linked.
8376 for obj in $save_libobjs
8377 do
8378 func_len " $obj"
8379 func_arith $len + $func_len_result
8380 len=$func_arith_result
8381 if test "X$objlist" = X ||
8382 test "$len" -lt "$max_cmd_len"; then
8383 func_append objlist " $obj"
8384 else
8385 # The command $test_cmds is almost too long, add a
8386 # command to the queue.
8387 if test "$k" -eq 1 ; then
8388 # The first file doesn't have a previous command to add.
8389 reload_objs=$objlist
8390 eval concat_cmds=\"$reload_cmds\"
8391 else
8392 # All subsequent reloadable object files will link in
8393 # the last one created.
8394 reload_objs="$objlist $last_robj"
8395 eval concat_cmds=\"\$concat_cmds~$reload_cmds~\$RM $last_robj\"
8396 fi
8397 last_robj=$output_objdir/$output_la-${k}.$objext
8398 func_arith $k + 1
8399 k=$func_arith_result
8400 output=$output_objdir/$output_la-${k}.$objext
8401 objlist=" $obj"
8402 func_len " $last_robj"
8403 func_arith $len0 + $func_len_result
8404 len=$func_arith_result
8405 fi
8406 done
8407 # Handle the remaining objects by creating one last
8408 # reloadable object file. All subsequent reloadable object
8409 # files will link in the last one created.
8410 test -z "$concat_cmds" || concat_cmds=$concat_cmds~
8411 reload_objs="$objlist $last_robj"
8412 eval concat_cmds=\"\${concat_cmds}$reload_cmds\"
8413 if test -n "$last_robj"; then
8414 eval concat_cmds=\"\${concat_cmds}~\$RM $last_robj\"
8415 fi
8416 func_append delfiles " $output"
8417
8418 else
8419 output=
8420 fi
8421
8422 if ${skipped_export-false}; then
8423 func_verbose "generating symbol list for \`$libname.la'"
8424 export_symbols="$output_objdir/$libname.exp"
8425 $opt_dry_run || $RM $export_symbols
8426 libobjs=$output
8427 # Append the command to create the export file.
8428 test -z "$concat_cmds" || concat_cmds=$concat_cmds~
8429 eval concat_cmds=\"\$concat_cmds$export_symbols_cmds\"
8430 if test -n "$last_robj"; then
8431 eval concat_cmds=\"\$concat_cmds~\$RM $last_robj\"
8432 fi
8433 fi
8434
8435 test -n "$save_libobjs" &&
8436 func_verbose "creating a temporary reloadable object file: $output"
8437
8438 # Loop through the commands generated above and execute them.
8439 save_ifs="$IFS"; IFS='~'
8440 for cmd in $concat_cmds; do
8441 IFS="$save_ifs"
8442 $opt_silent || {
8443 func_quote_for_expand "$cmd"
8444 eval "func_echo $func_quote_for_expand_result"
8445 }
8446 $opt_dry_run || eval "$cmd" || {
8447 lt_exit=$?
8448
8449 # Restore the uninstalled library and exit
8450 if test "$opt_mode" = relink; then
8451 ( cd "$output_objdir" && \
8452 $RM "${realname}T" && \
8453 $MV "${realname}U" "$realname" )
8454 fi
8455
8456 exit $lt_exit
8457 }
8458 done
8459 IFS="$save_ifs"
8460
8461 if test -n "$export_symbols_regex" && ${skipped_export-false}; then
8462 func_show_eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"'
8463 func_show_eval '$MV "${export_symbols}T" "$export_symbols"'
8464 fi
8465 fi
8466
8467 if ${skipped_export-false}; then
8468 if test -n "$export_symbols" && test -n "$include_expsyms"; then
8469 tmp_export_symbols="$export_symbols"
8470 test -n "$orig_export_symbols" && tmp_export_symbols="$orig_export_symbols"
8471 $opt_dry_run || eval '$ECHO "$include_expsyms" | $SP2NL >> "$tmp_export_symbols"'
8472 fi
8473
8474 if test -n "$orig_export_symbols"; then
8475 # The given exports_symbols file has to be filtered, so filter it.
8476 func_verbose "filter symbol list for \`$libname.la' to tag DATA exports"
8477 # FIXME: $output_objdir/$libname.filter potentially contains lots of
8478 # 's' commands which not all seds can handle. GNU sed should be fine
8479 # though. Also, the filter scales superlinearly with the number of
8480 # global variables. join(1) would be nice here, but unfortunately
8481 # isn't a blessed tool.
8482 $opt_dry_run || $SED -e '/[ ,]DATA/!d;s,\(.*\)\([ \,].*\),s|^\1$|\1\2|,' < $export_symbols > $output_objdir/$libname.filter
8483 func_append delfiles " $export_symbols $output_objdir/$libname.filter"
8484 export_symbols=$output_objdir/$libname.def
8485 $opt_dry_run || $SED -f $output_objdir/$libname.filter < $orig_export_symbols > $export_symbols
8486 fi
8487 fi
8488
8489 libobjs=$output
8490 # Restore the value of output.
8491 output=$save_output
8492
8493 if test -n "$convenience" && test -n "$whole_archive_flag_spec"; then
8494 eval libobjs=\"\$libobjs $whole_archive_flag_spec\"
8495 test "X$libobjs" = "X " && libobjs=
8496 fi
8497 # Expand the library linking commands again to reset the
8498 # value of $libobjs for piecewise linking.
8499
8500 # Do each of the archive commands.
8501 if test "$module" = yes && test -n "$module_cmds" ; then
8502 if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then
8503 cmds=$module_expsym_cmds
8504 else
8505 cmds=$module_cmds
8506 fi
8507 else
8508 if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then
8509 cmds=$archive_expsym_cmds
8510 else
8511 cmds=$archive_cmds
8512 fi
8513 fi
8514 fi
8515
8516 if test -n "$delfiles"; then
8517 # Append the command to remove temporary files to $cmds.
8518 eval cmds=\"\$cmds~\$RM $delfiles\"
8519 fi
8520
8521 # Add any objects from preloaded convenience libraries
8522 if test -n "$dlprefiles"; then
8523 gentop="$output_objdir/${outputname}x"
8524 func_append generated " $gentop"
8525
8526 func_extract_archives $gentop $dlprefiles
8527 func_append libobjs " $func_extract_archives_result"
8528 test "X$libobjs" = "X " && libobjs=
8529 fi
8530
8531 save_ifs="$IFS"; IFS='~'
8532 for cmd in $cmds; do
8533 IFS="$save_ifs"
8534 eval cmd=\"$cmd\"
8535 $opt_silent || {
8536 func_quote_for_expand "$cmd"
8537 eval "func_echo $func_quote_for_expand_result"
8538 }
8539 $opt_dry_run || eval "$cmd" || {
8540 lt_exit=$?
8541
8542 # Restore the uninstalled library and exit
8543 if test "$opt_mode" = relink; then
8544 ( cd "$output_objdir" && \
8545 $RM "${realname}T" && \
8546 $MV "${realname}U" "$realname" )
8547 fi
8548
8549 exit $lt_exit
8550 }
8551 done
8552 IFS="$save_ifs"
8553
8554 # Restore the uninstalled library and exit
8555 if test "$opt_mode" = relink; then
8556 $opt_dry_run || eval '(cd $output_objdir && $RM ${realname}T && $MV $realname ${realname}T && $MV ${realname}U $realname)' || exit $?
8557
8558 if test -n "$convenience"; then
8559 if test -z "$whole_archive_flag_spec"; then
8560 func_show_eval '${RM}r "$gentop"'
8561 fi
8562 fi
8563
8564 exit $EXIT_SUCCESS
8565 fi
8566
8567 # Create links to the real library.
8568 for linkname in $linknames; do
8569 if test "$realname" != "$linkname"; then
8570 func_show_eval '(cd "$output_objdir" && $RM "$linkname" && $LN_S "$realname" "$linkname")' 'exit $?'
8571 fi
8572 done
8573
8574 # If -module or -export-dynamic was specified, set the dlname.
8575 if test "$module" = yes || test "$export_dynamic" = yes; then
8576 # On all known operating systems, these are identical.
8577 dlname="$soname"
8578 fi
8579 fi
8580 ;;
8581
8582 obj)
8583 if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then
8584 func_warning "\`-dlopen' is ignored for objects"
8585 fi
8586
8587 case " $deplibs" in
8588 *\ -l* | *\ -L*)
8589 func_warning "\`-l' and \`-L' are ignored for objects" ;;
8590 esac
8591
8592 test -n "$rpath" && \
8593 func_warning "\`-rpath' is ignored for objects"
8594
8595 test -n "$xrpath" && \
8596 func_warning "\`-R' is ignored for objects"
8597
8598 test -n "$vinfo" && \
8599 func_warning "\`-version-info' is ignored for objects"
8600
8601 test -n "$release" && \
8602 func_warning "\`-release' is ignored for objects"
8603
8604 case $output in
8605 *.lo)
8606 test -n "$objs$old_deplibs" && \
8607 func_fatal_error "cannot build library object \`$output' from non-libtool objects"
8608
8609 libobj=$output
8610 func_lo2o "$libobj"
8611 obj=$func_lo2o_result
8612 ;;
8613 *)
8614 libobj=
8615 obj="$output"
8616 ;;
8617 esac
8618
8619 # Delete the old objects.
8620 $opt_dry_run || $RM $obj $libobj
8621
8622 # Objects from convenience libraries. This assumes
8623 # single-version convenience libraries. Whenever we create
8624 # different ones for PIC/non-PIC, this we'll have to duplicate
8625 # the extraction.
8626 reload_conv_objs=
8627 gentop=
8628 # reload_cmds runs $LD directly, so let us get rid of
8629 # -Wl from whole_archive_flag_spec and hope we can get by with
8630 # turning comma into space..
8631 wl=
8632
8633 if test -n "$convenience"; then
8634 if test -n "$whole_archive_flag_spec"; then
8635 eval tmp_whole_archive_flags=\"$whole_archive_flag_spec\"
8636 reload_conv_objs=$reload_objs\ `$ECHO "$tmp_whole_archive_flags" | $SED 's|,| |g'`
8637 else
8638 gentop="$output_objdir/${obj}x"
8639 func_append generated " $gentop"
8640
8641 func_extract_archives $gentop $convenience
8642 reload_conv_objs="$reload_objs $func_extract_archives_result"
8643 fi
8644 fi
8645
8646 # If we're not building shared, we need to use non_pic_objs
8647 test "$build_libtool_libs" != yes && libobjs="$non_pic_objects"
8648
8649 # Create the old-style object.
8650 reload_objs="$objs$old_deplibs "`$ECHO "$libobjs" | $SP2NL | $SED "/\.${libext}$/d; /\.lib$/d; $lo2o" | $NL2SP`" $reload_conv_objs" ### testsuite: skip nested quoting test
8651
8652 output="$obj"
8653 func_execute_cmds "$reload_cmds" 'exit $?'
8654
8655 # Exit if we aren't doing a library object file.
8656 if test -z "$libobj"; then
8657 if test -n "$gentop"; then
8658 func_show_eval '${RM}r "$gentop"'
8659 fi
8660
8661 exit $EXIT_SUCCESS
8662 fi
8663
8664 if test "$build_libtool_libs" != yes; then
8665 if test -n "$gentop"; then
8666 func_show_eval '${RM}r "$gentop"'
8667 fi
8668
8669 # Create an invalid libtool object if no PIC, so that we don't
8670 # accidentally link it into a program.
8671 # $show "echo timestamp > $libobj"
8672 # $opt_dry_run || eval "echo timestamp > $libobj" || exit $?
8673 exit $EXIT_SUCCESS
8674 fi
8675
8676 if test -n "$pic_flag" || test "$pic_mode" != default; then
8677 # Only do commands if we really have different PIC objects.
8678 reload_objs="$libobjs $reload_conv_objs"
8679 output="$libobj"
8680 func_execute_cmds "$reload_cmds" 'exit $?'
8681 fi
8682
8683 if test -n "$gentop"; then
8684 func_show_eval '${RM}r "$gentop"'
8685 fi
8686
8687 exit $EXIT_SUCCESS
8688 ;;
8689
8690 prog)
8691 case $host in
8692 *cygwin*) func_stripname '' '.exe' "$output"
8693 output=$func_stripname_result.exe;;
8694 esac
8695 test -n "$vinfo" && \
8696 func_warning "\`-version-info' is ignored for programs"
8697
8698 test -n "$release" && \
8699 func_warning "\`-release' is ignored for programs"
8700
8701 test "$preload" = yes \
8702 && test "$dlopen_support" = unknown \
8703 && test "$dlopen_self" = unknown \
8704 && test "$dlopen_self_static" = unknown && \
8705 func_warning "\`LT_INIT([dlopen])' not used. Assuming no dlopen support."
8706
8707 case $host in
8708 *-*-rhapsody* | *-*-darwin1.[012])
8709 # On Rhapsody replace the C library is the System framework
8710 compile_deplibs=`$ECHO " $compile_deplibs" | $SED 's/ -lc / System.ltframework /'`
8711 finalize_deplibs=`$ECHO " $finalize_deplibs" | $SED 's/ -lc / System.ltframework /'`
8712 ;;
8713 esac
8714
8715 case $host in
8716 *-*-darwin*)
8717 # Don't allow lazy linking, it breaks C++ global constructors
8718 # But is supposedly fixed on 10.4 or later (yay!).
8719 if test "$tagname" = CXX ; then
8720 case ${MACOSX_DEPLOYMENT_TARGET-10.0} in
8721 10.[0123])
8722 func_append compile_command " ${wl}-bind_at_load"
8723 func_append finalize_command " ${wl}-bind_at_load"
8724 ;;
8725 esac
8726 fi
8727 # Time to change all our "foo.ltframework" stuff back to "-framework foo"
8728 compile_deplibs=`$ECHO " $compile_deplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'`
8729 finalize_deplibs=`$ECHO " $finalize_deplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'`
8730 ;;
8731 esac
8732
8733
8734 # move library search paths that coincide with paths to not yet
8735 # installed libraries to the beginning of the library search list
8736 new_libs=
8737 for path in $notinst_path; do
8738 case " $new_libs " in
8739 *" -L$path/$objdir "*) ;;
8740 *)
8741 case " $compile_deplibs " in
8742 *" -L$path/$objdir "*)
8743 func_append new_libs " -L$path/$objdir" ;;
8744 esac
8745 ;;
8746 esac
8747 done
8748 for deplib in $compile_deplibs; do
8749 case $deplib in
8750 -L*)
8751 case " $new_libs " in
8752 *" $deplib "*) ;;
8753 *) func_append new_libs " $deplib" ;;
8754 esac
8755 ;;
8756 *) func_append new_libs " $deplib" ;;
8757 esac
8758 done
8759 compile_deplibs="$new_libs"
8760
8761
8762 func_append compile_command " $compile_deplibs"
8763 func_append finalize_command " $finalize_deplibs"
8764
8765 if test -n "$rpath$xrpath"; then
8766 # If the user specified any rpath flags, then add them.
8767 for libdir in $rpath $xrpath; do
8768 # This is the magic to use -rpath.
8769 case "$finalize_rpath " in
8770 *" $libdir "*) ;;
8771 *) func_append finalize_rpath " $libdir" ;;
8772 esac
8773 done
8774 fi
8775
8776 # Now hardcode the library paths
8777 rpath=
8778 hardcode_libdirs=
8779 for libdir in $compile_rpath $finalize_rpath; do
8780 if test -n "$hardcode_libdir_flag_spec"; then
8781 if test -n "$hardcode_libdir_separator"; then
8782 if test -z "$hardcode_libdirs"; then
8783 hardcode_libdirs="$libdir"
8784 else
8785 # Just accumulate the unique libdirs.
8786 case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in
8787 *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*)
8788 ;;
8789 *)
8790 func_append hardcode_libdirs "$hardcode_libdir_separator$libdir"
8791 ;;
8792 esac
8793 fi
8794 else
8795 eval flag=\"$hardcode_libdir_flag_spec\"
8796 func_append rpath " $flag"
8797 fi
8798 elif test -n "$runpath_var"; then
8799 case "$perm_rpath " in
8800 *" $libdir "*) ;;
8801 *) func_append perm_rpath " $libdir" ;;
8802 esac
8803 fi
8804 case $host in
8805 *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*)
8806 testbindir=`${ECHO} "$libdir" | ${SED} -e 's*/lib$*/bin*'`
8807 case :$dllsearchpath: in
8808 *":$libdir:"*) ;;
8809 ::) dllsearchpath=$libdir;;
8810 *) func_append dllsearchpath ":$libdir";;
8811 esac
8812 case :$dllsearchpath: in
8813 *":$testbindir:"*) ;;
8814 ::) dllsearchpath=$testbindir;;
8815 *) func_append dllsearchpath ":$testbindir";;
8816 esac
8817 ;;
8818 esac
8819 done
8820 # Substitute the hardcoded libdirs into the rpath.
8821 if test -n "$hardcode_libdir_separator" &&
8822 test -n "$hardcode_libdirs"; then
8823 libdir="$hardcode_libdirs"
8824 eval rpath=\" $hardcode_libdir_flag_spec\"
8825 fi
8826 compile_rpath="$rpath"
8827
8828 rpath=
8829 hardcode_libdirs=
8830 for libdir in $finalize_rpath; do
8831 if test -n "$hardcode_libdir_flag_spec"; then
8832 if test -n "$hardcode_libdir_separator"; then
8833 if test -z "$hardcode_libdirs"; then
8834 hardcode_libdirs="$libdir"
8835 else
8836 # Just accumulate the unique libdirs.
8837 case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in
8838 *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*)
8839 ;;
8840 *)
8841 func_append hardcode_libdirs "$hardcode_libdir_separator$libdir"
8842 ;;
8843 esac
8844 fi
8845 else
8846 eval flag=\"$hardcode_libdir_flag_spec\"
8847 func_append rpath " $flag"
8848 fi
8849 elif test -n "$runpath_var"; then
8850 case "$finalize_perm_rpath " in
8851 *" $libdir "*) ;;
8852 *) func_append finalize_perm_rpath " $libdir" ;;
8853 esac
8854 fi
8855 done
8856 # Substitute the hardcoded libdirs into the rpath.
8857 if test -n "$hardcode_libdir_separator" &&
8858 test -n "$hardcode_libdirs"; then
8859 libdir="$hardcode_libdirs"
8860 eval rpath=\" $hardcode_libdir_flag_spec\"
8861 fi
8862 finalize_rpath="$rpath"
8863
8864 if test -n "$libobjs" && test "$build_old_libs" = yes; then
8865 # Transform all the library objects into standard objects.
8866 compile_command=`$ECHO "$compile_command" | $SP2NL | $SED "$lo2o" | $NL2SP`
8867 finalize_command=`$ECHO "$finalize_command" | $SP2NL | $SED "$lo2o" | $NL2SP`
8868 fi
8869
8870 func_generate_dlsyms "$outputname" "@PROGRAM@" "no"
8871
8872 # template prelinking step
8873 if test -n "$prelink_cmds"; then
8874 func_execute_cmds "$prelink_cmds" 'exit $?'
8875 fi
8876
8877 wrappers_required=yes
8878 case $host in
8879 *cegcc* | *mingw32ce*)
8880 # Disable wrappers for cegcc and mingw32ce hosts, we are cross compiling anyway.
8881 wrappers_required=no
8882 ;;
8883 *cygwin* | *mingw* )
8884 if test "$build_libtool_libs" != yes; then
8885 wrappers_required=no
8886 fi
8887 ;;
8888 *)
8889 if test "$need_relink" = no || test "$build_libtool_libs" != yes; then
8890 wrappers_required=no
8891 fi
8892 ;;
8893 esac
8894 if test "$wrappers_required" = no; then
8895 # Replace the output file specification.
8896 compile_command=`$ECHO "$compile_command" | $SED 's%@OUTPUT@%'"$output"'%g'`
8897 link_command="$compile_command$compile_rpath"
8898
8899 # We have no uninstalled library dependencies, so finalize right now.
8900 exit_status=0
8901 func_show_eval "$link_command" 'exit_status=$?'
8902
8903 if test -n "$postlink_cmds"; then
8904 func_to_tool_file "$output"
8905 postlink_cmds=`func_echo_all "$postlink_cmds" | $SED -e 's%@OUTPUT@%'"$output"'%g' -e 's%@TOOL_OUTPUT@%'"$func_to_tool_file_result"'%g'`
8906 func_execute_cmds "$postlink_cmds" 'exit $?'
8907 fi
8908
8909 # Delete the generated files.
8910 if test -f "$output_objdir/${outputname}S.${objext}"; then
8911 func_show_eval '$RM "$output_objdir/${outputname}S.${objext}"'
8912 fi
8913
8914 exit $exit_status
8915 fi
8916
8917 if test -n "$compile_shlibpath$finalize_shlibpath"; then
8918 compile_command="$shlibpath_var=\"$compile_shlibpath$finalize_shlibpath\$$shlibpath_var\" $compile_command"
8919 fi
8920 if test -n "$finalize_shlibpath"; then
8921 finalize_command="$shlibpath_var=\"$finalize_shlibpath\$$shlibpath_var\" $finalize_command"
8922 fi
8923
8924 compile_var=
8925 finalize_var=
8926 if test -n "$runpath_var"; then
8927 if test -n "$perm_rpath"; then
8928 # We should set the runpath_var.
8929 rpath=
8930 for dir in $perm_rpath; do
8931 func_append rpath "$dir:"
8932 done
8933 compile_var="$runpath_var=\"$rpath\$$runpath_var\" "
8934 fi
8935 if test -n "$finalize_perm_rpath"; then
8936 # We should set the runpath_var.
8937 rpath=
8938 for dir in $finalize_perm_rpath; do
8939 func_append rpath "$dir:"
8940 done
8941 finalize_var="$runpath_var=\"$rpath\$$runpath_var\" "
8942 fi
8943 fi
8944
8945 if test "$no_install" = yes; then
8946 # We don't need to create a wrapper script.
8947 link_command="$compile_var$compile_command$compile_rpath"
8948 # Replace the output file specification.
8949 link_command=`$ECHO "$link_command" | $SED 's%@OUTPUT@%'"$output"'%g'`
8950 # Delete the old output file.
8951 $opt_dry_run || $RM $output
8952 # Link the executable and exit
8953 func_show_eval "$link_command" 'exit $?'
8954
8955 if test -n "$postlink_cmds"; then
8956 func_to_tool_file "$output"
8957 postlink_cmds=`func_echo_all "$postlink_cmds" | $SED -e 's%@OUTPUT@%'"$output"'%g' -e 's%@TOOL_OUTPUT@%'"$func_to_tool_file_result"'%g'`
8958 func_execute_cmds "$postlink_cmds" 'exit $?'
8959 fi
8960
8961 exit $EXIT_SUCCESS
8962 fi
8963
8964 if test "$hardcode_action" = relink; then
8965 # Fast installation is not supported
8966 link_command="$compile_var$compile_command$compile_rpath"
8967 relink_command="$finalize_var$finalize_command$finalize_rpath"
8968
8969 func_warning "this platform does not like uninstalled shared libraries"
8970 func_warning "\`$output' will be relinked during installation"
8971 else
8972 if test "$fast_install" != no; then
8973 link_command="$finalize_var$compile_command$finalize_rpath"
8974 if test "$fast_install" = yes; then
8975 relink_command=`$ECHO "$compile_var$compile_command$compile_rpath" | $SED 's%@OUTPUT@%\$progdir/\$file%g'`
8976 else
8977 # fast_install is set to needless
8978 relink_command=
8979 fi
8980 else
8981 link_command="$compile_var$compile_command$compile_rpath"
8982 relink_command="$finalize_var$finalize_command$finalize_rpath"
8983 fi
8984 fi
8985
8986 # Replace the output file specification.
8987 link_command=`$ECHO "$link_command" | $SED 's%@OUTPUT@%'"$output_objdir/$outputname"'%g'`
8988
8989 # Delete the old output files.
8990 $opt_dry_run || $RM $output $output_objdir/$outputname $output_objdir/lt-$outputname
8991
8992 func_show_eval "$link_command" 'exit $?'
8993
8994 if test -n "$postlink_cmds"; then
8995 func_to_tool_file "$output_objdir/$outputname"
8996 postlink_cmds=`func_echo_all "$postlink_cmds" | $SED -e 's%@OUTPUT@%'"$output_objdir/$outputname"'%g' -e 's%@TOOL_OUTPUT@%'"$func_to_tool_file_result"'%g'`
8997 func_execute_cmds "$postlink_cmds" 'exit $?'
8998 fi
8999
9000 # Now create the wrapper script.
9001 func_verbose "creating $output"
9002
9003 # Quote the relink command for shipping.
9004 if test -n "$relink_command"; then
9005 # Preserve any variables that may affect compiler behavior
9006 for var in $variables_saved_for_relink; do
9007 if eval test -z \"\${$var+set}\"; then
9008 relink_command="{ test -z \"\${$var+set}\" || $lt_unset $var || { $var=; export $var; }; }; $relink_command"
9009 elif eval var_value=\$$var; test -z "$var_value"; then
9010 relink_command="$var=; export $var; $relink_command"
9011 else
9012 func_quote_for_eval "$var_value"
9013 relink_command="$var=$func_quote_for_eval_result; export $var; $relink_command"
9014 fi
9015 done
9016 relink_command="(cd `pwd`; $relink_command)"
9017 relink_command=`$ECHO "$relink_command" | $SED "$sed_quote_subst"`
9018 fi
9019
9020 # Only actually do things if not in dry run mode.
9021 $opt_dry_run || {
9022 # win32 will think the script is a binary if it has
9023 # a .exe suffix, so we strip it off here.
9024 case $output in
9025 *.exe) func_stripname '' '.exe' "$output"
9026 output=$func_stripname_result ;;
9027 esac
9028 # test for cygwin because mv fails w/o .exe extensions
9029 case $host in
9030 *cygwin*)
9031 exeext=.exe
9032 func_stripname '' '.exe' "$outputname"
9033 outputname=$func_stripname_result ;;
9034 *) exeext= ;;
9035 esac
9036 case $host in
9037 *cygwin* | *mingw* )
9038 func_dirname_and_basename "$output" "" "."
9039 output_name=$func_basename_result
9040 output_path=$func_dirname_result
9041 cwrappersource="$output_path/$objdir/lt-$output_name.c"
9042 cwrapper="$output_path/$output_name.exe"
9043 $RM $cwrappersource $cwrapper
9044 trap "$RM $cwrappersource $cwrapper; exit $EXIT_FAILURE" 1 2 15
9045
9046 func_emit_cwrapperexe_src > $cwrappersource
9047
9048 # The wrapper executable is built using the $host compiler,
9049 # because it contains $host paths and files. If cross-
9050 # compiling, it, like the target executable, must be
9051 # executed on the $host or under an emulation environment.
9052 $opt_dry_run || {
9053 $LTCC $LTCFLAGS -o $cwrapper $cwrappersource
9054 $STRIP $cwrapper
9055 }
9056
9057 # Now, create the wrapper script for func_source use:
9058 func_ltwrapper_scriptname $cwrapper
9059 $RM $func_ltwrapper_scriptname_result
9060 trap "$RM $func_ltwrapper_scriptname_result; exit $EXIT_FAILURE" 1 2 15
9061 $opt_dry_run || {
9062 # note: this script will not be executed, so do not chmod.
9063 if test "x$build" = "x$host" ; then
9064 $cwrapper --lt-dump-script > $func_ltwrapper_scriptname_result
9065 else
9066 func_emit_wrapper no > $func_ltwrapper_scriptname_result
9067 fi
9068 }
9069 ;;
9070 * )
9071 $RM $output
9072 trap "$RM $output; exit $EXIT_FAILURE" 1 2 15
9073
9074 func_emit_wrapper no > $output
9075 chmod +x $output
9076 ;;
9077 esac
9078 }
9079 exit $EXIT_SUCCESS
9080 ;;
9081 esac
9082
9083 # See if we need to build an old-fashioned archive.
9084 for oldlib in $oldlibs; do
9085
9086 if test "$build_libtool_libs" = convenience; then
9087 oldobjs="$libobjs_save $symfileobj"
9088 addlibs="$convenience"
9089 build_libtool_libs=no
9090 else
9091 if test "$build_libtool_libs" = module; then
9092 oldobjs="$libobjs_save"
9093 build_libtool_libs=no
9094 else
9095 oldobjs="$old_deplibs $non_pic_objects"
9096 if test "$preload" = yes && test -f "$symfileobj"; then
9097 func_append oldobjs " $symfileobj"
9098 fi
9099 fi
9100 addlibs="$old_convenience"
9101 fi
9102
9103 if test -n "$addlibs"; then
9104 gentop="$output_objdir/${outputname}x"
9105 func_append generated " $gentop"
9106
9107 func_extract_archives $gentop $addlibs
9108 func_append oldobjs " $func_extract_archives_result"
9109 fi
9110
9111 # Do each command in the archive commands.
9112 if test -n "$old_archive_from_new_cmds" && test "$build_libtool_libs" = yes; then
9113 cmds=$old_archive_from_new_cmds
9114 else
9115
9116 # Add any objects from preloaded convenience libraries
9117 if test -n "$dlprefiles"; then
9118 gentop="$output_objdir/${outputname}x"
9119 func_append generated " $gentop"
9120
9121 func_extract_archives $gentop $dlprefiles
9122 func_append oldobjs " $func_extract_archives_result"
9123 fi
9124
9125 # POSIX demands no paths to be encoded in archives. We have
9126 # to avoid creating archives with duplicate basenames if we
9127 # might have to extract them afterwards, e.g., when creating a
9128 # static archive out of a convenience library, or when linking
9129 # the entirety of a libtool archive into another (currently
9130 # not supported by libtool).
9131 if (for obj in $oldobjs
9132 do
9133 func_basename "$obj"
9134 $ECHO "$func_basename_result"
9135 done | sort | sort -uc >/dev/null 2>&1); then
9136 :
9137 else
9138 echo "copying selected object files to avoid basename conflicts..."
9139 gentop="$output_objdir/${outputname}x"
9140 func_append generated " $gentop"
9141 func_mkdir_p "$gentop"
9142 save_oldobjs=$oldobjs
9143 oldobjs=
9144 counter=1
9145 for obj in $save_oldobjs
9146 do
9147 func_basename "$obj"
9148 objbase="$func_basename_result"
9149 case " $oldobjs " in
9150 " ") oldobjs=$obj ;;
9151 *[\ /]"$objbase "*)
9152 while :; do
9153 # Make sure we don't pick an alternate name that also
9154 # overlaps.
9155 newobj=lt$counter-$objbase
9156 func_arith $counter + 1
9157 counter=$func_arith_result
9158 case " $oldobjs " in
9159 *[\ /]"$newobj "*) ;;
9160 *) if test ! -f "$gentop/$newobj"; then break; fi ;;
9161 esac
9162 done
9163 func_show_eval "ln $obj $gentop/$newobj || cp $obj $gentop/$newobj"
9164 func_append oldobjs " $gentop/$newobj"
9165 ;;
9166 *) func_append oldobjs " $obj" ;;
9167 esac
9168 done
9169 fi
9170 func_to_tool_file "$oldlib" func_convert_file_msys_to_w32
9171 tool_oldlib=$func_to_tool_file_result
9172 eval cmds=\"$old_archive_cmds\"
9173
9174 func_len " $cmds"
9175 len=$func_len_result
9176 if test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then
9177 cmds=$old_archive_cmds
9178 elif test -n "$archiver_list_spec"; then
9179 func_verbose "using command file archive linking..."
9180 for obj in $oldobjs
9181 do
9182 func_to_tool_file "$obj"
9183 $ECHO "$func_to_tool_file_result"
9184 done > $output_objdir/$libname.libcmd
9185 func_to_tool_file "$output_objdir/$libname.libcmd"
9186 oldobjs=" $archiver_list_spec$func_to_tool_file_result"
9187 cmds=$old_archive_cmds
9188 else
9189 # the command line is too long to link in one step, link in parts
9190 func_verbose "using piecewise archive linking..."
9191 save_RANLIB=$RANLIB
9192 RANLIB=:
9193 objlist=
9194 concat_cmds=
9195 save_oldobjs=$oldobjs
9196 oldobjs=
9197 # Is there a better way of finding the last object in the list?
9198 for obj in $save_oldobjs
9199 do
9200 last_oldobj=$obj
9201 done
9202 eval test_cmds=\"$old_archive_cmds\"
9203 func_len " $test_cmds"
9204 len0=$func_len_result
9205 len=$len0
9206 for obj in $save_oldobjs
9207 do
9208 func_len " $obj"
9209 func_arith $len + $func_len_result
9210 len=$func_arith_result
9211 func_append objlist " $obj"
9212 if test "$len" -lt "$max_cmd_len"; then
9213 :
9214 else
9215 # the above command should be used before it gets too long
9216 oldobjs=$objlist
9217 if test "$obj" = "$last_oldobj" ; then
9218 RANLIB=$save_RANLIB
9219 fi
9220 test -z "$concat_cmds" || concat_cmds=$concat_cmds~
9221 eval concat_cmds=\"\${concat_cmds}$old_archive_cmds\"
9222 objlist=
9223 len=$len0
9224 fi
9225 done
9226 RANLIB=$save_RANLIB
9227 oldobjs=$objlist
9228 if test "X$oldobjs" = "X" ; then
9229 eval cmds=\"\$concat_cmds\"
9230 else
9231 eval cmds=\"\$concat_cmds~\$old_archive_cmds\"
9232 fi
9233 fi
9234 fi
9235 func_execute_cmds "$cmds" 'exit $?'
9236 done
9237
9238 test -n "$generated" && \
9239 func_show_eval "${RM}r$generated"
9240
9241 # Now create the libtool archive.
9242 case $output in
9243 *.la)
9244 old_library=
9245 test "$build_old_libs" = yes && old_library="$libname.$libext"
9246 func_verbose "creating $output"
9247
9248 # Preserve any variables that may affect compiler behavior
9249 for var in $variables_saved_for_relink; do
9250 if eval test -z \"\${$var+set}\"; then
9251 relink_command="{ test -z \"\${$var+set}\" || $lt_unset $var || { $var=; export $var; }; }; $relink_command"
9252 elif eval var_value=\$$var; test -z "$var_value"; then
9253 relink_command="$var=; export $var; $relink_command"
9254 else
9255 func_quote_for_eval "$var_value"
9256 relink_command="$var=$func_quote_for_eval_result; export $var; $relink_command"
9257 fi
9258 done
9259 # Quote the link command for shipping.
9260 relink_command="(cd `pwd`; $SHELL $progpath $preserve_args --mode=relink $libtool_args @inst_prefix_dir@)"
9261 relink_command=`$ECHO "$relink_command" | $SED "$sed_quote_subst"`
9262 if test "$hardcode_automatic" = yes ; then
9263 relink_command=
9264 fi
9265
9266 # Only create the output if not a dry run.
9267 $opt_dry_run || {
9268 for installed in no yes; do
9269 if test "$installed" = yes; then
9270 if test -z "$install_libdir"; then
9271 break
9272 fi
9273 output="$output_objdir/$outputname"i
9274 # Replace all uninstalled libtool libraries with the installed ones
9275 newdependency_libs=
9276 for deplib in $dependency_libs; do
9277 case $deplib in
9278 *.la)
9279 func_basename "$deplib"
9280 name="$func_basename_result"
9281 func_resolve_sysroot "$deplib"
9282 eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $func_resolve_sysroot_result`
9283 test -z "$libdir" && \
9284 func_fatal_error "\`$deplib' is not a valid libtool archive"
9285 func_append newdependency_libs " ${lt_sysroot:+=}$libdir/$name"
9286 ;;
9287 -L*)
9288 func_stripname -L '' "$deplib"
9289 func_replace_sysroot "$func_stripname_result"
9290 func_append newdependency_libs " -L$func_replace_sysroot_result"
9291 ;;
9292 -R*)
9293 func_stripname -R '' "$deplib"
9294 func_replace_sysroot "$func_stripname_result"
9295 func_append newdependency_libs " -R$func_replace_sysroot_result"
9296 ;;
9297 *) func_append newdependency_libs " $deplib" ;;
9298 esac
9299 done
9300 dependency_libs="$newdependency_libs"
9301 newdlfiles=
9302
9303 for lib in $dlfiles; do
9304 case $lib in
9305 *.la)
9306 func_basename "$lib"
9307 name="$func_basename_result"
9308 eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib`
9309 test -z "$libdir" && \
9310 func_fatal_error "\`$lib' is not a valid libtool archive"
9311 func_append newdlfiles " ${lt_sysroot:+=}$libdir/$name"
9312 ;;
9313 *) func_append newdlfiles " $lib" ;;
9314 esac
9315 done
9316 dlfiles="$newdlfiles"
9317 newdlprefiles=
9318 for lib in $dlprefiles; do
9319 case $lib in
9320 *.la)
9321 # Only pass preopened files to the pseudo-archive (for
9322 # eventual linking with the app. that links it) if we
9323 # didn't already link the preopened objects directly into
9324 # the library:
9325 func_basename "$lib"
9326 name="$func_basename_result"
9327 eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib`
9328 test -z "$libdir" && \
9329 func_fatal_error "\`$lib' is not a valid libtool archive"
9330 func_append newdlprefiles " ${lt_sysroot:+=}$libdir/$name"
9331 ;;
9332 esac
9333 done
9334 dlprefiles="$newdlprefiles"
9335 else
9336 newdlfiles=
9337 for lib in $dlfiles; do
9338 case $lib in
9339 [\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;;
9340 *) abs=`pwd`"/$lib" ;;
9341 esac
9342 func_append newdlfiles " $abs"
9343 done
9344 dlfiles="$newdlfiles"
9345 newdlprefiles=
9346 for lib in $dlprefiles; do
9347 case $lib in
9348 [\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;;
9349 *) abs=`pwd`"/$lib" ;;
9350 esac
9351 func_append newdlprefiles " $abs"
9352 done
9353 dlprefiles="$newdlprefiles"
9354 fi
9355 $RM $output
9356 # place dlname in correct position for cygwin
9357 # In fact, it would be nice if we could use this code for all target
9358 # systems that can't hard-code library paths into their executables
9359 # and that have no shared library path variable independent of PATH,
9360 # but it turns out we can't easily determine that from inspecting
9361 # libtool variables, so we have to hard-code the OSs to which it
9362 # applies here; at the moment, that means platforms that use the PE
9363 # object format with DLL files. See the long comment at the top of
9364 # tests/bindir.at for full details.
9365 tdlname=$dlname
9366 case $host,$output,$installed,$module,$dlname in
9367 *cygwin*,*lai,yes,no,*.dll | *mingw*,*lai,yes,no,*.dll | *cegcc*,*lai,yes,no,*.dll)
9368 # If a -bindir argument was supplied, place the dll there.
9369 if test "x$bindir" != x ;
9370 then
9371 func_relative_path "$install_libdir" "$bindir"
9372 tdlname=$func_relative_path_result$dlname
9373 else
9374 # Otherwise fall back on heuristic.
9375 tdlname=../bin/$dlname
9376 fi
9377 ;;
9378 esac
9379 $ECHO > $output "\
9380 # $outputname - a libtool library file
9381 # Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION
9382 #
9383 # Please DO NOT delete this file!
9384 # It is necessary for linking the library.
9385
9386 # The name that we can dlopen(3).
9387 dlname='$tdlname'
9388
9389 # Names of this library.
9390 library_names='$library_names'
9391
9392 # The name of the static archive.
9393 old_library='$old_library'
9394
9395 # Linker flags that can not go in dependency_libs.
9396 inherited_linker_flags='$new_inherited_linker_flags'
9397
9398 # Libraries that this one depends upon.
9399 dependency_libs='$dependency_libs'
9400
9401 # Names of additional weak libraries provided by this library
9402 weak_library_names='$weak_libs'
9403
9404 # Version information for $libname.
9405 current=$current
9406 age=$age
9407 revision=$revision
9408
9409 # Is this an already installed library?
9410 installed=$installed
9411
9412 # Should we warn about portability when linking against -modules?
9413 shouldnotlink=$module
9414
9415 # Files to dlopen/dlpreopen
9416 dlopen='$dlfiles'
9417 dlpreopen='$dlprefiles'
9418
9419 # Directory that this library needs to be installed in:
9420 libdir='$install_libdir'"
9421 if test "$installed" = no && test "$need_relink" = yes; then
9422 $ECHO >> $output "\
9423 relink_command=\"$relink_command\""
9424 fi
9425 done
9426 }
9427
9428 # Do a symbolic link so that the libtool archive can be found in
9429 # LD_LIBRARY_PATH before the program is installed.
9430 func_show_eval '( cd "$output_objdir" && $RM "$outputname" && $LN_S "../$outputname" "$outputname" )' 'exit $?'
9431 ;;
9432 esac
9433 exit $EXIT_SUCCESS
9434 }
9435
9436 { test "$opt_mode" = link || test "$opt_mode" = relink; } &&
9437 func_mode_link ${1+"$@"}
9438
9439
9440 # func_mode_uninstall arg...
9441 func_mode_uninstall ()
9442 {
9443 $opt_debug
9444 RM="$nonopt"
9445 files=
9446 rmforce=
9447 exit_status=0
9448
9449 # This variable tells wrapper scripts just to set variables rather
9450 # than running their programs.
9451 libtool_install_magic="$magic"
9452
9453 for arg
9454 do
9455 case $arg in
9456 -f) func_append RM " $arg"; rmforce=yes ;;
9457 -*) func_append RM " $arg" ;;
9458 *) func_append files " $arg" ;;
9459 esac
9460 done
9461
9462 test -z "$RM" && \
9463 func_fatal_help "you must specify an RM program"
9464
9465 rmdirs=
9466
9467 for file in $files; do
9468 func_dirname "$file" "" "."
9469 dir="$func_dirname_result"
9470 if test "X$dir" = X.; then
9471 odir="$objdir"
9472 else
9473 odir="$dir/$objdir"
9474 fi
9475 func_basename "$file"
9476 name="$func_basename_result"
9477 test "$opt_mode" = uninstall && odir="$dir"
9478
9479 # Remember odir for removal later, being careful to avoid duplicates
9480 if test "$opt_mode" = clean; then
9481 case " $rmdirs " in
9482 *" $odir "*) ;;
9483 *) func_append rmdirs " $odir" ;;
9484 esac
9485 fi
9486
9487 # Don't error if the file doesn't exist and rm -f was used.
9488 if { test -L "$file"; } >/dev/null 2>&1 ||
9489 { test -h "$file"; } >/dev/null 2>&1 ||
9490 test -f "$file"; then
9491 :
9492 elif test -d "$file"; then
9493 exit_status=1
9494 continue
9495 elif test "$rmforce" = yes; then
9496 continue
9497 fi
9498
9499 rmfiles="$file"
9500
9501 case $name in
9502 *.la)
9503 # Possibly a libtool archive, so verify it.
9504 if func_lalib_p "$file"; then
9505 func_source $dir/$name
9506
9507 # Delete the libtool libraries and symlinks.
9508 for n in $library_names; do
9509 func_append rmfiles " $odir/$n"
9510 done
9511 test -n "$old_library" && func_append rmfiles " $odir/$old_library"
9512
9513 case "$opt_mode" in
9514 clean)
9515 case " $library_names " in
9516 *" $dlname "*) ;;
9517 *) test -n "$dlname" && func_append rmfiles " $odir/$dlname" ;;
9518 esac
9519 test -n "$libdir" && func_append rmfiles " $odir/$name $odir/${name}i"
9520 ;;
9521 uninstall)
9522 if test -n "$library_names"; then
9523 # Do each command in the postuninstall commands.
9524 func_execute_cmds "$postuninstall_cmds" 'test "$rmforce" = yes || exit_status=1'
9525 fi
9526
9527 if test -n "$old_library"; then
9528 # Do each command in the old_postuninstall commands.
9529 func_execute_cmds "$old_postuninstall_cmds" 'test "$rmforce" = yes || exit_status=1'
9530 fi
9531 # FIXME: should reinstall the best remaining shared library.
9532 ;;
9533 esac
9534 fi
9535 ;;
9536
9537 *.lo)
9538 # Possibly a libtool object, so verify it.
9539 if func_lalib_p "$file"; then
9540
9541 # Read the .lo file
9542 func_source $dir/$name
9543
9544 # Add PIC object to the list of files to remove.
9545 if test -n "$pic_object" &&
9546 test "$pic_object" != none; then
9547 func_append rmfiles " $dir/$pic_object"
9548 fi
9549
9550 # Add non-PIC object to the list of files to remove.
9551 if test -n "$non_pic_object" &&
9552 test "$non_pic_object" != none; then
9553 func_append rmfiles " $dir/$non_pic_object"
9554 fi
9555 fi
9556 ;;
9557
9558 *)
9559 if test "$opt_mode" = clean ; then
9560 noexename=$name
9561 case $file in
9562 *.exe)
9563 func_stripname '' '.exe' "$file"
9564 file=$func_stripname_result
9565 func_stripname '' '.exe' "$name"
9566 noexename=$func_stripname_result
9567 # $file with .exe has already been added to rmfiles,
9568 # add $file without .exe
9569 func_append rmfiles " $file"
9570 ;;
9571 esac
9572 # Do a test to see if this is a libtool program.
9573 if func_ltwrapper_p "$file"; then
9574 if func_ltwrapper_executable_p "$file"; then
9575 func_ltwrapper_scriptname "$file"
9576 relink_command=
9577 func_source $func_ltwrapper_scriptname_result
9578 func_append rmfiles " $func_ltwrapper_scriptname_result"
9579 else
9580 relink_command=
9581 func_source $dir/$noexename
9582 fi
9583
9584 # note $name still contains .exe if it was in $file originally
9585 # as does the version of $file that was added into $rmfiles
9586 func_append rmfiles " $odir/$name $odir/${name}S.${objext}"
9587 if test "$fast_install" = yes && test -n "$relink_command"; then
9588 func_append rmfiles " $odir/lt-$name"
9589 fi
9590 if test "X$noexename" != "X$name" ; then
9591 func_append rmfiles " $odir/lt-${noexename}.c"
9592 fi
9593 fi
9594 fi
9595 ;;
9596 esac
9597 func_show_eval "$RM $rmfiles" 'exit_status=1'
9598 done
9599
9600 # Try to remove the ${objdir}s in the directories where we deleted files
9601 for dir in $rmdirs; do
9602 if test -d "$dir"; then
9603 func_show_eval "rmdir $dir >/dev/null 2>&1"
9604 fi
9605 done
9606
9607 exit $exit_status
9608 }
9609
9610 { test "$opt_mode" = uninstall || test "$opt_mode" = clean; } &&
9611 func_mode_uninstall ${1+"$@"}
9612
9613 test -z "$opt_mode" && {
9614 help="$generic_help"
9615 func_fatal_help "you must specify a MODE"
9616 }
9617
9618 test -z "$exec_cmd" && \
9619 func_fatal_help "invalid operation mode \`$opt_mode'"
9620
9621 if test -n "$exec_cmd"; then
9622 eval exec "$exec_cmd"
9623 exit $EXIT_FAILURE
9624 fi
9625
9626 exit $exit_status
9627
9628
9629 # The TAGs below are defined such that we never get into a situation
9630 # in which we disable both kinds of libraries. Given conflicting
9631 # choices, we go for a static library, that is the most portable,
9632 # since we can't tell whether shared libraries were disabled because
9633 # the user asked for that or because the platform doesn't support
9634 # them. This is particularly important on AIX, because we don't
9635 # support having both static and shared libraries enabled at the same
9636 # time on that platform, so we default to a shared-only configuration.
9637 # If a disable-shared tag is given, we'll fallback to a static-only
9638 # configuration. But we'll never go from static-only to shared-only.
9639
9640 # ### BEGIN LIBTOOL TAG CONFIG: disable-shared
9641 build_libtool_libs=no
9642 build_old_libs=yes
9643 # ### END LIBTOOL TAG CONFIG: disable-shared
9644
9645 # ### BEGIN LIBTOOL TAG CONFIG: disable-static
9646 build_old_libs=`case $build_libtool_libs in yes) echo no;; *) echo yes;; esac`
9647 # ### END LIBTOOL TAG CONFIG: disable-static
9648
9649 # Local Variables:
9650 # mode:shell-script
9651 # sh-indentation:2
9652 # End:
9653 # vi:sw=2
9654
+0
-72
m4/ax_check_compile_flag.m4 less more
0 # ===========================================================================
1 # http://www.gnu.org/software/autoconf-archive/ax_check_compile_flag.html
2 # ===========================================================================
3 #
4 # SYNOPSIS
5 #
6 # AX_CHECK_COMPILE_FLAG(FLAG, [ACTION-SUCCESS], [ACTION-FAILURE], [EXTRA-FLAGS])
7 #
8 # DESCRIPTION
9 #
10 # Check whether the given FLAG works with the current language's compiler
11 # or gives an error. (Warnings, however, are ignored)
12 #
13 # ACTION-SUCCESS/ACTION-FAILURE are shell commands to execute on
14 # success/failure.
15 #
16 # If EXTRA-FLAGS is defined, it is added to the current language's default
17 # flags (e.g. CFLAGS) when the check is done. The check is thus made with
18 # the flags: "CFLAGS EXTRA-FLAGS FLAG". This can for example be used to
19 # force the compiler to issue an error when a bad flag is given.
20 #
21 # NOTE: Implementation based on AX_CFLAGS_GCC_OPTION. Please keep this
22 # macro in sync with AX_CHECK_{PREPROC,LINK}_FLAG.
23 #
24 # LICENSE
25 #
26 # Copyright (c) 2008 Guido U. Draheim <guidod@gmx.de>
27 # Copyright (c) 2011 Maarten Bosmans <mkbosmans@gmail.com>
28 #
29 # This program is free software: you can redistribute it and/or modify it
30 # under the terms of the GNU General Public License as published by the
31 # Free Software Foundation, either version 3 of the License, or (at your
32 # option) any later version.
33 #
34 # This program is distributed in the hope that it will be useful, but
35 # WITHOUT ANY WARRANTY; without even the implied warranty of
36 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General
37 # Public License for more details.
38 #
39 # You should have received a copy of the GNU General Public License along
40 # with this program. If not, see <http://www.gnu.org/licenses/>.
41 #
42 # As a special exception, the respective Autoconf Macro's copyright owner
43 # gives unlimited permission to copy, distribute and modify the configure
44 # scripts that are the output of Autoconf when processing the Macro. You
45 # need not follow the terms of the GNU General Public License when using
46 # or distributing such scripts, even though portions of the text of the
47 # Macro appear in them. The GNU General Public License (GPL) does govern
48 # all other use of the material that constitutes the Autoconf Macro.
49 #
50 # This special exception to the GPL applies to versions of the Autoconf
51 # Macro released by the Autoconf Archive. When you make and distribute a
52 # modified version of the Autoconf Macro, you may extend this special
53 # exception to the GPL to apply to your modified version as well.
54
55 #serial 2
56
57 AC_DEFUN([AX_CHECK_COMPILE_FLAG],
58 [AC_PREREQ(2.59)dnl for _AC_LANG_PREFIX
59 AS_VAR_PUSHDEF([CACHEVAR],[ax_cv_check_[]_AC_LANG_ABBREV[]flags_$4_$1])dnl
60 AC_CACHE_CHECK([whether _AC_LANG compiler accepts $1], CACHEVAR, [
61 ax_check_save_flags=$[]_AC_LANG_PREFIX[]FLAGS
62 _AC_LANG_PREFIX[]FLAGS="$[]_AC_LANG_PREFIX[]FLAGS $4 $1"
63 AC_COMPILE_IFELSE([AC_LANG_PROGRAM()],
64 [AS_VAR_SET(CACHEVAR,[yes])],
65 [AS_VAR_SET(CACHEVAR,[no])])
66 _AC_LANG_PREFIX[]FLAGS=$ax_check_save_flags])
67 AS_IF([test x"AS_VAR_GET(CACHEVAR)" = xyes],
68 [m4_default([$2], :)],
69 [m4_default([$3], :)])
70 AS_VAR_POPDEF([CACHEVAR])dnl
71 ])dnl AX_CHECK_COMPILE_FLAGS
+0
-245
m4/ax_ext.m4 less more
0 #
1 # Updated by KMG to support -DINTEL_SSE for GF-Complete
2 #
3 # ===========================================================================
4 # http://www.gnu.org/software/autoconf-archive/ax_ext.html
5 # ===========================================================================
6 #
7 # SYNOPSIS
8 #
9 # AX_EXT
10 #
11 # DESCRIPTION
12 #
13 # Find supported SIMD extensions by requesting cpuid. When an SIMD
14 # extension is found, the -m"simdextensionname" is added to SIMD_FLAGS if
15 # compiler supports it. For example, if "sse2" is available, then "-msse2"
16 # is added to SIMD_FLAGS.
17 #
18 # This macro calls:
19 #
20 # AC_SUBST(SIMD_FLAGS)
21 #
22 # And defines:
23 #
24 # HAVE_MMX / HAVE_SSE / HAVE_SSE2 / HAVE_SSE3 / HAVE_SSSE3 / HAVE_SSE4.1 / HAVE_SSE4.2 / HAVE_AVX
25 #
26 # LICENSE
27 #
28 # Copyright (c) 2007 Christophe Tournayre <turn3r@users.sourceforge.net>
29 # Copyright (c) 2013 Michael Petch <mpetch@capp-sysware.com>
30 #
31 # Copying and distribution of this file, with or without modification, are
32 # permitted in any medium without royalty provided the copyright notice
33 # and this notice are preserved. This file is offered as-is, without any
34 # warranty.
35
36 #serial 12
37
38 AC_DEFUN([AX_EXT],
39 [
40 AC_REQUIRE([AC_CANONICAL_HOST])
41
42 case $host_cpu in
43 powerpc*)
44 AC_CACHE_CHECK([whether altivec is supported], [ax_cv_have_altivec_ext],
45 [
46 if test `/usr/sbin/sysctl -a 2>/dev/null| grep -c hw.optional.altivec` != 0; then
47 if test `/usr/sbin/sysctl -n hw.optional.altivec` = 1; then
48 ax_cv_have_altivec_ext=yes
49 fi
50 fi
51 ])
52
53 if test "$ax_cv_have_altivec_ext" = yes; then
54 AC_DEFINE(HAVE_ALTIVEC,,[Support Altivec instructions])
55 AX_CHECK_COMPILE_FLAG(-faltivec, SIMD_FLAGS="$SIMD_FLAGS -faltivec", [])
56 fi
57 ;;
58
59
60 i[[3456]]86*|x86_64*|amd64*)
61
62 AC_REQUIRE([AX_GCC_X86_CPUID])
63 AC_REQUIRE([AX_GCC_X86_AVX_XGETBV])
64
65 AX_GCC_X86_CPUID(0x00000001)
66 ecx=`echo $ax_cv_gcc_x86_cpuid_0x00000001 | cut -d ":" -f 3`
67 edx=`echo $ax_cv_gcc_x86_cpuid_0x00000001 | cut -d ":" -f 4`
68
69 AC_CACHE_CHECK([whether mmx is supported], [ax_cv_have_mmx_ext],
70 [
71 ax_cv_have_mmx_ext=no
72 if test "$((0x$edx>>23&0x01))" = 1; then
73 ax_cv_have_mmx_ext=yes
74 fi
75 ])
76
77 AC_CACHE_CHECK([whether sse is supported], [ax_cv_have_sse_ext],
78 [
79 ax_cv_have_sse_ext=no
80 if test "$((0x$edx>>25&0x01))" = 1; then
81 ax_cv_have_sse_ext=yes
82 fi
83 ])
84
85 AC_CACHE_CHECK([whether sse2 is supported], [ax_cv_have_sse2_ext],
86 [
87 ax_cv_have_sse2_ext=no
88 if test "$((0x$edx>>26&0x01))" = 1; then
89 ax_cv_have_sse2_ext=yes
90 fi
91 ])
92
93 AC_CACHE_CHECK([whether sse3 is supported], [ax_cv_have_sse3_ext],
94 [
95 ax_cv_have_sse3_ext=no
96 if test "$((0x$ecx&0x01))" = 1; then
97 ax_cv_have_sse3_ext=yes
98 fi
99 ])
100
101 AC_CACHE_CHECK([whether ssse3 is supported], [ax_cv_have_ssse3_ext],
102 [
103 ax_cv_have_ssse3_ext=no
104 if test "$((0x$ecx>>9&0x01))" = 1; then
105 ax_cv_have_ssse3_ext=yes
106 fi
107 ])
108
109 AC_CACHE_CHECK([whether sse4.1 is supported], [ax_cv_have_sse41_ext],
110 [
111 ax_cv_have_sse41_ext=no
112 if test "$((0x$ecx>>19&0x01))" = 1; then
113 ax_cv_have_sse41_ext=yes
114 fi
115 ])
116
117 AC_CACHE_CHECK([whether sse4.2 is supported], [ax_cv_have_sse42_ext],
118 [
119 ax_cv_have_sse42_ext=no
120 if test "$((0x$ecx>>20&0x01))" = 1; then
121 ax_cv_have_sse42_ext=yes
122 fi
123 ])
124
125 AC_CACHE_CHECK([whether avx is supported by processor], [ax_cv_have_avx_cpu_ext],
126 [
127 ax_cv_have_avx_cpu_ext=no
128 if test "$((0x$ecx>>28&0x01))" = 1; then
129 ax_cv_have_avx_cpu_ext=yes
130 fi
131 ])
132
133 if test x"$ax_cv_have_avx_cpu_ext" = x"yes"; then
134 AX_GCC_X86_AVX_XGETBV(0x00000000)
135
136 xgetbv_eax="0"
137 if test x"$ax_cv_gcc_x86_avx_xgetbv_0x00000000" != x"unknown"; then
138 xgetbv_eax=`echo $ax_cv_gcc_x86_avx_xgetbv_0x00000000 | cut -d ":" -f 1`
139 fi
140
141 AC_CACHE_CHECK([whether avx is supported by operating system], [ax_cv_have_avx_ext],
142 [
143 ax_cv_have_avx_ext=no
144
145 if test "$((0x$ecx>>27&0x01))" = 1; then
146 if test "$((0x$xgetbv_eax&0x6))" = 6; then
147 ax_cv_have_avx_ext=yes
148 fi
149 fi
150 ])
151 if test x"$ax_cv_have_avx_ext" = x"no"; then
152 AC_MSG_WARN([Your processor supports AVX, but your operating system doesn't])
153 fi
154 fi
155
156 if test "$ax_cv_have_mmx_ext" = yes; then
157 AX_CHECK_COMPILE_FLAG(-mmmx, ax_cv_support_mmx_ext=yes, [])
158 if test x"$ax_cv_support_mmx_ext" = x"yes"; then
159 SIMD_FLAGS="$SIMD_FLAGS -mmmx"
160 AC_DEFINE(HAVE_MMX,,[Support mmx instructions])
161 else
162 AC_MSG_WARN([Your processor supports mmx instructions but not your compiler, can you try another compiler?])
163 fi
164 fi
165
166 if test "$ac_cv_sizeof_long" -eq 8; then
167 SIMD_FLAGS="$SIMD_FLAGS -DARCH_64"
168 fi
169
170 if test "$ax_cv_have_sse_ext" = yes; then
171 AX_CHECK_COMPILE_FLAG(-msse, ax_cv_support_sse_ext=yes, [])
172 if test x"$ax_cv_support_sse_ext" = x"yes"; then
173 SIMD_FLAGS="$SIMD_FLAGS -msse -DINTEL_SSE"
174 AC_DEFINE(HAVE_SSE,,[Support SSE (Streaming SIMD Extensions) instructions])
175 else
176 AC_MSG_WARN([Your processor supports sse instructions but not your compiler, can you try another compiler?])
177 fi
178 fi
179
180 if test "$ax_cv_have_sse2_ext" = yes; then
181 AX_CHECK_COMPILE_FLAG(-msse2, ax_cv_support_sse2_ext=yes, [])
182 if test x"$ax_cv_support_sse2_ext" = x"yes"; then
183 SIMD_FLAGS="$SIMD_FLAGS -msse2 -DINTEL_SSE2"
184 AC_DEFINE(HAVE_SSE2,,[Support SSE2 (Streaming SIMD Extensions 2) instructions])
185 else
186 AC_MSG_WARN([Your processor supports sse2 instructions but not your compiler, can you try another compiler?])
187 fi
188 fi
189
190 if test "$ax_cv_have_sse3_ext" = yes; then
191 AX_CHECK_COMPILE_FLAG(-msse3, ax_cv_support_sse3_ext=yes, [])
192 if test x"$ax_cv_support_sse3_ext" = x"yes"; then
193 SIMD_FLAGS="$SIMD_FLAGS -msse3 -DINTEL_SSE3"
194 AC_DEFINE(HAVE_SSE3,,[Support SSE3 (Streaming SIMD Extensions 3) instructions])
195 else
196 AC_MSG_WARN([Your processor supports sse3 instructions but not your compiler, can you try another compiler?])
197 fi
198 fi
199
200 if test "$ax_cv_have_ssse3_ext" = yes; then
201 AX_CHECK_COMPILE_FLAG(-mssse3, ax_cv_support_ssse3_ext=yes, [])
202 if test x"$ax_cv_support_ssse3_ext" = x"yes"; then
203 SIMD_FLAGS="$SIMD_FLAGS -mssse3"
204 AC_DEFINE(HAVE_SSSE3,,[Support SSSE3 (Supplemental Streaming SIMD Extensions 3) instructions])
205 else
206 AC_MSG_WARN([Your processor supports ssse3 instructions but not your compiler, can you try another compiler?])
207 fi
208 fi
209
210 if test "$ax_cv_have_sse41_ext" = yes; then
211 AX_CHECK_COMPILE_FLAG(-msse4.1, ax_cv_support_sse41_ext=yes, [])
212 if test x"$ax_cv_support_sse41_ext" = x"yes"; then
213 SIMD_FLAGS="$SIMD_FLAGS -msse4.1 -DINTEL_SSE4"
214 AC_DEFINE(HAVE_SSE4_1,,[Support SSSE4.1 (Streaming SIMD Extensions 4.1) instructions])
215 else
216 AC_MSG_WARN([Your processor supports sse4.1 instructions but not your compiler, can you try another compiler?])
217 fi
218 fi
219
220 if test "$ax_cv_have_sse42_ext" = yes; then
221 AX_CHECK_COMPILE_FLAG(-msse4.2, ax_cv_support_sse42_ext=yes, [])
222 if test x"$ax_cv_support_sse42_ext" = x"yes"; then
223 SIMD_FLAGS="$SIMD_FLAGS -msse4.2 -DINTEL_SSE4"
224 AC_DEFINE(HAVE_SSE4_2,,[Support SSSE4.2 (Streaming SIMD Extensions 4.2) instructions])
225 else
226 AC_MSG_WARN([Your processor supports sse4.2 instructions but not your compiler, can you try another compiler?])
227 fi
228 fi
229
230 if test "$ax_cv_have_avx_ext" = yes; then
231 AX_CHECK_COMPILE_FLAG(-mavx, ax_cv_support_avx_ext=yes, [])
232 if test x"$ax_cv_support_avx_ext" = x"yes"; then
233 SIMD_FLAGS="$SIMD_FLAGS -mavx"
234 AC_DEFINE(HAVE_AVX,,[Support AVX (Advanced Vector Extensions) instructions])
235 else
236 AC_MSG_WARN([Your processor supports avx instructions but not your compiler, can you try another compiler?])
237 fi
238 fi
239
240 ;;
241 esac
242
243 AC_SUBST(SIMD_FLAGS)
244 ])
+0
-79
m4/ax_gcc_x86_avx_xgetbv.m4 less more
0 # ===========================================================================
1 # http://www.gnu.org/software/autoconf-archive/ax_gcc_x86_avx_xgetbv.html
2 # ===========================================================================
3 #
4 # SYNOPSIS
5 #
6 # AX_GCC_X86_AVX_XGETBV
7 #
8 # DESCRIPTION
9 #
10 # On later x86 processors with AVX SIMD support, with gcc or a compiler
11 # that has a compatible syntax for inline assembly instructions, run a
12 # small program that executes the xgetbv instruction with input OP. This
13 # can be used to detect if the OS supports AVX instruction usage.
14 #
15 # On output, the values of the eax and edx registers are stored as
16 # hexadecimal strings as "eax:edx" in the cache variable
17 # ax_cv_gcc_x86_avx_xgetbv.
18 #
19 # If the xgetbv instruction fails (because you are running a
20 # cross-compiler, or because you are not using gcc, or because you are on
21 # a processor that doesn't have this instruction),
22 # ax_cv_gcc_x86_avx_xgetbv_OP is set to the string "unknown".
23 #
24 # This macro mainly exists to be used in AX_EXT.
25 #
26 # LICENSE
27 #
28 # Copyright (c) 2013 Michael Petch <mpetch@capp-sysware.com>
29 #
30 # This program is free software: you can redistribute it and/or modify it
31 # under the terms of the GNU General Public License as published by the
32 # Free Software Foundation, either version 3 of the License, or (at your
33 # option) any later version.
34 #
35 # This program is distributed in the hope that it will be useful, but
36 # WITHOUT ANY WARRANTY; without even the implied warranty of
37 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General
38 # Public License for more details.
39 #
40 # You should have received a copy of the GNU General Public License along
41 # with this program. If not, see <http://www.gnu.org/licenses/>.
42 #
43 # As a special exception, the respective Autoconf Macro's copyright owner
44 # gives unlimited permission to copy, distribute and modify the configure
45 # scripts that are the output of Autoconf when processing the Macro. You
46 # need not follow the terms of the GNU General Public License when using
47 # or distributing such scripts, even though portions of the text of the
48 # Macro appear in them. The GNU General Public License (GPL) does govern
49 # all other use of the material that constitutes the Autoconf Macro.
50 #
51 # This special exception to the GPL applies to versions of the Autoconf
52 # Macro released by the Autoconf Archive. When you make and distribute a
53 # modified version of the Autoconf Macro, you may extend this special
54 # exception to the GPL to apply to your modified version as well.
55
56 #serial 1
57
58 AC_DEFUN([AX_GCC_X86_AVX_XGETBV],
59 [AC_REQUIRE([AC_PROG_CC])
60 AC_LANG_PUSH([C])
61 AC_CACHE_CHECK(for x86-AVX xgetbv $1 output, ax_cv_gcc_x86_avx_xgetbv_$1,
62 [AC_RUN_IFELSE([AC_LANG_PROGRAM([#include <stdio.h>], [
63 int op = $1, eax, edx;
64 FILE *f;
65 /* Opcodes for xgetbv */
66 __asm__(".byte 0x0f, 0x01, 0xd0"
67 : "=a" (eax), "=d" (edx)
68 : "c" (op));
69 f = fopen("conftest_xgetbv", "w"); if (!f) return 1;
70 fprintf(f, "%x:%x\n", eax, edx);
71 fclose(f);
72 return 0;
73 ])],
74 [ax_cv_gcc_x86_avx_xgetbv_$1=`cat conftest_xgetbv`; rm -f conftest_xgetbv],
75 [ax_cv_gcc_x86_avx_xgetbv_$1=unknown; rm -f conftest_xgetbv],
76 [ax_cv_gcc_x86_avx_xgetbv_$1=unknown])])
77 AC_LANG_POP([C])
78 ])
+0
-79
m4/ax_gcc_x86_cpuid.m4 less more
0 # ===========================================================================
1 # http://www.gnu.org/software/autoconf-archive/ax_gcc_x86_cpuid.html
2 # ===========================================================================
3 #
4 # SYNOPSIS
5 #
6 # AX_GCC_X86_CPUID(OP)
7 #
8 # DESCRIPTION
9 #
10 # On Pentium and later x86 processors, with gcc or a compiler that has a
11 # compatible syntax for inline assembly instructions, run a small program
12 # that executes the cpuid instruction with input OP. This can be used to
13 # detect the CPU type.
14 #
15 # On output, the values of the eax, ebx, ecx, and edx registers are stored
16 # as hexadecimal strings as "eax:ebx:ecx:edx" in the cache variable
17 # ax_cv_gcc_x86_cpuid_OP.
18 #
19 # If the cpuid instruction fails (because you are running a
20 # cross-compiler, or because you are not using gcc, or because you are on
21 # a processor that doesn't have this instruction), ax_cv_gcc_x86_cpuid_OP
22 # is set to the string "unknown".
23 #
24 # This macro mainly exists to be used in AX_GCC_ARCHFLAG.
25 #
26 # LICENSE
27 #
28 # Copyright (c) 2008 Steven G. Johnson <stevenj@alum.mit.edu>
29 # Copyright (c) 2008 Matteo Frigo
30 #
31 # This program is free software: you can redistribute it and/or modify it
32 # under the terms of the GNU General Public License as published by the
33 # Free Software Foundation, either version 3 of the License, or (at your
34 # option) any later version.
35 #
36 # This program is distributed in the hope that it will be useful, but
37 # WITHOUT ANY WARRANTY; without even the implied warranty of
38 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General
39 # Public License for more details.
40 #
41 # You should have received a copy of the GNU General Public License along
42 # with this program. If not, see <http://www.gnu.org/licenses/>.
43 #
44 # As a special exception, the respective Autoconf Macro's copyright owner
45 # gives unlimited permission to copy, distribute and modify the configure
46 # scripts that are the output of Autoconf when processing the Macro. You
47 # need not follow the terms of the GNU General Public License when using
48 # or distributing such scripts, even though portions of the text of the
49 # Macro appear in them. The GNU General Public License (GPL) does govern
50 # all other use of the material that constitutes the Autoconf Macro.
51 #
52 # This special exception to the GPL applies to versions of the Autoconf
53 # Macro released by the Autoconf Archive. When you make and distribute a
54 # modified version of the Autoconf Macro, you may extend this special
55 # exception to the GPL to apply to your modified version as well.
56
57 #serial 7
58
59 AC_DEFUN([AX_GCC_X86_CPUID],
60 [AC_REQUIRE([AC_PROG_CC])
61 AC_LANG_PUSH([C])
62 AC_CACHE_CHECK(for x86 cpuid $1 output, ax_cv_gcc_x86_cpuid_$1,
63 [AC_RUN_IFELSE([AC_LANG_PROGRAM([#include <stdio.h>], [
64 int op = $1, eax, ebx, ecx, edx;
65 FILE *f;
66 __asm__("cpuid"
67 : "=a" (eax), "=b" (ebx), "=c" (ecx), "=d" (edx)
68 : "a" (op));
69 f = fopen("conftest_cpuid", "w"); if (!f) return 1;
70 fprintf(f, "%x:%x:%x:%x\n", eax, ebx, ecx, edx);
71 fclose(f);
72 return 0;
73 ])],
74 [ax_cv_gcc_x86_cpuid_$1=`cat conftest_cpuid`; rm -f conftest_cpuid],
75 [ax_cv_gcc_x86_cpuid_$1=unknown; rm -f conftest_cpuid],
76 [ax_cv_gcc_x86_cpuid_$1=unknown])])
77 AC_LANG_POP([C])
78 ])
+0
-7982
m4/libtool.m4 less more
0 # libtool.m4 - Configure libtool for the host system. -*-Autoconf-*-
1 #
2 # Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005,
3 # 2006, 2007, 2008, 2009, 2010, 2011 Free Software
4 # Foundation, Inc.
5 # Written by Gordon Matzigkeit, 1996
6 #
7 # This file is free software; the Free Software Foundation gives
8 # unlimited permission to copy and/or distribute it, with or without
9 # modifications, as long as this notice is preserved.
10
11 m4_define([_LT_COPYING], [dnl
12 # Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005,
13 # 2006, 2007, 2008, 2009, 2010, 2011 Free Software
14 # Foundation, Inc.
15 # Written by Gordon Matzigkeit, 1996
16 #
17 # This file is part of GNU Libtool.
18 #
19 # GNU Libtool is free software; you can redistribute it and/or
20 # modify it under the terms of the GNU General Public License as
21 # published by the Free Software Foundation; either version 2 of
22 # the License, or (at your option) any later version.
23 #
24 # As a special exception to the GNU General Public License,
25 # if you distribute this file as part of a program or library that
26 # is built using GNU Libtool, you may include this file under the
27 # same distribution terms that you use for the rest of that program.
28 #
29 # GNU Libtool is distributed in the hope that it will be useful,
30 # but WITHOUT ANY WARRANTY; without even the implied warranty of
31 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
32 # GNU General Public License for more details.
33 #
34 # You should have received a copy of the GNU General Public License
35 # along with GNU Libtool; see the file COPYING. If not, a copy
36 # can be downloaded from http://www.gnu.org/licenses/gpl.html, or
37 # obtained by writing to the Free Software Foundation, Inc.,
38 # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
39 ])
40
41 # serial 57 LT_INIT
42
43
44 # LT_PREREQ(VERSION)
45 # ------------------
46 # Complain and exit if this libtool version is less that VERSION.
47 m4_defun([LT_PREREQ],
48 [m4_if(m4_version_compare(m4_defn([LT_PACKAGE_VERSION]), [$1]), -1,
49 [m4_default([$3],
50 [m4_fatal([Libtool version $1 or higher is required],
51 63)])],
52 [$2])])
53
54
55 # _LT_CHECK_BUILDDIR
56 # ------------------
57 # Complain if the absolute build directory name contains unusual characters
58 m4_defun([_LT_CHECK_BUILDDIR],
59 [case `pwd` in
60 *\ * | *\ *)
61 AC_MSG_WARN([Libtool does not cope well with whitespace in `pwd`]) ;;
62 esac
63 ])
64
65
66 # LT_INIT([OPTIONS])
67 # ------------------
68 AC_DEFUN([LT_INIT],
69 [AC_PREREQ([2.58])dnl We use AC_INCLUDES_DEFAULT
70 AC_REQUIRE([AC_CONFIG_AUX_DIR_DEFAULT])dnl
71 AC_BEFORE([$0], [LT_LANG])dnl
72 AC_BEFORE([$0], [LT_OUTPUT])dnl
73 AC_BEFORE([$0], [LTDL_INIT])dnl
74 m4_require([_LT_CHECK_BUILDDIR])dnl
75
76 dnl Autoconf doesn't catch unexpanded LT_ macros by default:
77 m4_pattern_forbid([^_?LT_[A-Z_]+$])dnl
78 m4_pattern_allow([^(_LT_EOF|LT_DLGLOBAL|LT_DLLAZY_OR_NOW|LT_MULTI_MODULE)$])dnl
79 dnl aclocal doesn't pull ltoptions.m4, ltsugar.m4, or ltversion.m4
80 dnl unless we require an AC_DEFUNed macro:
81 AC_REQUIRE([LTOPTIONS_VERSION])dnl
82 AC_REQUIRE([LTSUGAR_VERSION])dnl
83 AC_REQUIRE([LTVERSION_VERSION])dnl
84 AC_REQUIRE([LTOBSOLETE_VERSION])dnl
85 m4_require([_LT_PROG_LTMAIN])dnl
86
87 _LT_SHELL_INIT([SHELL=${CONFIG_SHELL-/bin/sh}])
88
89 dnl Parse OPTIONS
90 _LT_SET_OPTIONS([$0], [$1])
91
92 # This can be used to rebuild libtool when needed
93 LIBTOOL_DEPS="$ltmain"
94
95 # Always use our own libtool.
96 LIBTOOL='$(SHELL) $(top_builddir)/libtool'
97 AC_SUBST(LIBTOOL)dnl
98
99 _LT_SETUP
100
101 # Only expand once:
102 m4_define([LT_INIT])
103 ])# LT_INIT
104
105 # Old names:
106 AU_ALIAS([AC_PROG_LIBTOOL], [LT_INIT])
107 AU_ALIAS([AM_PROG_LIBTOOL], [LT_INIT])
108 dnl aclocal-1.4 backwards compatibility:
109 dnl AC_DEFUN([AC_PROG_LIBTOOL], [])
110 dnl AC_DEFUN([AM_PROG_LIBTOOL], [])
111
112
113 # _LT_CC_BASENAME(CC)
114 # -------------------
115 # Calculate cc_basename. Skip known compiler wrappers and cross-prefix.
116 m4_defun([_LT_CC_BASENAME],
117 [for cc_temp in $1""; do
118 case $cc_temp in
119 compile | *[[\\/]]compile | ccache | *[[\\/]]ccache ) ;;
120 distcc | *[[\\/]]distcc | purify | *[[\\/]]purify ) ;;
121 \-*) ;;
122 *) break;;
123 esac
124 done
125 cc_basename=`$ECHO "$cc_temp" | $SED "s%.*/%%; s%^$host_alias-%%"`
126 ])
127
128
129 # _LT_FILEUTILS_DEFAULTS
130 # ----------------------
131 # It is okay to use these file commands and assume they have been set
132 # sensibly after `m4_require([_LT_FILEUTILS_DEFAULTS])'.
133 m4_defun([_LT_FILEUTILS_DEFAULTS],
134 [: ${CP="cp -f"}
135 : ${MV="mv -f"}
136 : ${RM="rm -f"}
137 ])# _LT_FILEUTILS_DEFAULTS
138
139
140 # _LT_SETUP
141 # ---------
142 m4_defun([_LT_SETUP],
143 [AC_REQUIRE([AC_CANONICAL_HOST])dnl
144 AC_REQUIRE([AC_CANONICAL_BUILD])dnl
145 AC_REQUIRE([_LT_PREPARE_SED_QUOTE_VARS])dnl
146 AC_REQUIRE([_LT_PROG_ECHO_BACKSLASH])dnl
147
148 _LT_DECL([], [PATH_SEPARATOR], [1], [The PATH separator for the build system])dnl
149 dnl
150 _LT_DECL([], [host_alias], [0], [The host system])dnl
151 _LT_DECL([], [host], [0])dnl
152 _LT_DECL([], [host_os], [0])dnl
153 dnl
154 _LT_DECL([], [build_alias], [0], [The build system])dnl
155 _LT_DECL([], [build], [0])dnl
156 _LT_DECL([], [build_os], [0])dnl
157 dnl
158 AC_REQUIRE([AC_PROG_CC])dnl
159 AC_REQUIRE([LT_PATH_LD])dnl
160 AC_REQUIRE([LT_PATH_NM])dnl
161 dnl
162 AC_REQUIRE([AC_PROG_LN_S])dnl
163 test -z "$LN_S" && LN_S="ln -s"
164 _LT_DECL([], [LN_S], [1], [Whether we need soft or hard links])dnl
165 dnl
166 AC_REQUIRE([LT_CMD_MAX_LEN])dnl
167 _LT_DECL([objext], [ac_objext], [0], [Object file suffix (normally "o")])dnl
168 _LT_DECL([], [exeext], [0], [Executable file suffix (normally "")])dnl
169 dnl
170 m4_require([_LT_FILEUTILS_DEFAULTS])dnl
171 m4_require([_LT_CHECK_SHELL_FEATURES])dnl
172 m4_require([_LT_PATH_CONVERSION_FUNCTIONS])dnl
173 m4_require([_LT_CMD_RELOAD])dnl
174 m4_require([_LT_CHECK_MAGIC_METHOD])dnl
175 m4_require([_LT_CHECK_SHAREDLIB_FROM_LINKLIB])dnl
176 m4_require([_LT_CMD_OLD_ARCHIVE])dnl
177 m4_require([_LT_CMD_GLOBAL_SYMBOLS])dnl
178 m4_require([_LT_WITH_SYSROOT])dnl
179
180 _LT_CONFIG_LIBTOOL_INIT([
181 # See if we are running on zsh, and set the options which allow our
182 # commands through without removal of \ escapes INIT.
183 if test -n "\${ZSH_VERSION+set}" ; then
184 setopt NO_GLOB_SUBST
185 fi
186 ])
187 if test -n "${ZSH_VERSION+set}" ; then
188 setopt NO_GLOB_SUBST
189 fi
190
191 _LT_CHECK_OBJDIR
192
193 m4_require([_LT_TAG_COMPILER])dnl
194
195 case $host_os in
196 aix3*)
197 # AIX sometimes has problems with the GCC collect2 program. For some
198 # reason, if we set the COLLECT_NAMES environment variable, the problems
199 # vanish in a puff of smoke.
200 if test "X${COLLECT_NAMES+set}" != Xset; then
201 COLLECT_NAMES=
202 export COLLECT_NAMES
203 fi
204 ;;
205 esac
206
207 # Global variables:
208 ofile=libtool
209 can_build_shared=yes
210
211 # All known linkers require a `.a' archive for static linking (except MSVC,
212 # which needs '.lib').
213 libext=a
214
215 with_gnu_ld="$lt_cv_prog_gnu_ld"
216
217 old_CC="$CC"
218 old_CFLAGS="$CFLAGS"
219
220 # Set sane defaults for various variables
221 test -z "$CC" && CC=cc
222 test -z "$LTCC" && LTCC=$CC
223 test -z "$LTCFLAGS" && LTCFLAGS=$CFLAGS
224 test -z "$LD" && LD=ld
225 test -z "$ac_objext" && ac_objext=o
226
227 _LT_CC_BASENAME([$compiler])
228
229 # Only perform the check for file, if the check method requires it
230 test -z "$MAGIC_CMD" && MAGIC_CMD=file
231 case $deplibs_check_method in
232 file_magic*)
233 if test "$file_magic_cmd" = '$MAGIC_CMD'; then
234 _LT_PATH_MAGIC
235 fi
236 ;;
237 esac
238
239 # Use C for the default configuration in the libtool script
240 LT_SUPPORTED_TAG([CC])
241 _LT_LANG_C_CONFIG
242 _LT_LANG_DEFAULT_CONFIG
243 _LT_CONFIG_COMMANDS
244 ])# _LT_SETUP
245
246
247 # _LT_PREPARE_SED_QUOTE_VARS
248 # --------------------------
249 # Define a few sed substitution that help us do robust quoting.
250 m4_defun([_LT_PREPARE_SED_QUOTE_VARS],
251 [# Backslashify metacharacters that are still active within
252 # double-quoted strings.
253 sed_quote_subst='s/\([["`$\\]]\)/\\\1/g'
254
255 # Same as above, but do not quote variable references.
256 double_quote_subst='s/\([["`\\]]\)/\\\1/g'
257
258 # Sed substitution to delay expansion of an escaped shell variable in a
259 # double_quote_subst'ed string.
260 delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g'
261
262 # Sed substitution to delay expansion of an escaped single quote.
263 delay_single_quote_subst='s/'\''/'\'\\\\\\\'\''/g'
264
265 # Sed substitution to avoid accidental globbing in evaled expressions
266 no_glob_subst='s/\*/\\\*/g'
267 ])
268
269 # _LT_PROG_LTMAIN
270 # ---------------
271 # Note that this code is called both from `configure', and `config.status'
272 # now that we use AC_CONFIG_COMMANDS to generate libtool. Notably,
273 # `config.status' has no value for ac_aux_dir unless we are using Automake,
274 # so we pass a copy along to make sure it has a sensible value anyway.
275 m4_defun([_LT_PROG_LTMAIN],
276 [m4_ifdef([AC_REQUIRE_AUX_FILE], [AC_REQUIRE_AUX_FILE([ltmain.sh])])dnl
277 _LT_CONFIG_LIBTOOL_INIT([ac_aux_dir='$ac_aux_dir'])
278 ltmain="$ac_aux_dir/ltmain.sh"
279 ])# _LT_PROG_LTMAIN
280
281
282 ## ------------------------------------- ##
283 ## Accumulate code for creating libtool. ##
284 ## ------------------------------------- ##
285
286 # So that we can recreate a full libtool script including additional
287 # tags, we accumulate the chunks of code to send to AC_CONFIG_COMMANDS
288 # in macros and then make a single call at the end using the `libtool'
289 # label.
290
291
292 # _LT_CONFIG_LIBTOOL_INIT([INIT-COMMANDS])
293 # ----------------------------------------
294 # Register INIT-COMMANDS to be passed to AC_CONFIG_COMMANDS later.
295 m4_define([_LT_CONFIG_LIBTOOL_INIT],
296 [m4_ifval([$1],
297 [m4_append([_LT_OUTPUT_LIBTOOL_INIT],
298 [$1
299 ])])])
300
301 # Initialize.
302 m4_define([_LT_OUTPUT_LIBTOOL_INIT])
303
304
305 # _LT_CONFIG_LIBTOOL([COMMANDS])
306 # ------------------------------
307 # Register COMMANDS to be passed to AC_CONFIG_COMMANDS later.
308 m4_define([_LT_CONFIG_LIBTOOL],
309 [m4_ifval([$1],
310 [m4_append([_LT_OUTPUT_LIBTOOL_COMMANDS],
311 [$1
312 ])])])
313
314 # Initialize.
315 m4_define([_LT_OUTPUT_LIBTOOL_COMMANDS])
316
317
318 # _LT_CONFIG_SAVE_COMMANDS([COMMANDS], [INIT_COMMANDS])
319 # -----------------------------------------------------
320 m4_defun([_LT_CONFIG_SAVE_COMMANDS],
321 [_LT_CONFIG_LIBTOOL([$1])
322 _LT_CONFIG_LIBTOOL_INIT([$2])
323 ])
324
325
326 # _LT_FORMAT_COMMENT([COMMENT])
327 # -----------------------------
328 # Add leading comment marks to the start of each line, and a trailing
329 # full-stop to the whole comment if one is not present already.
330 m4_define([_LT_FORMAT_COMMENT],
331 [m4_ifval([$1], [
332 m4_bpatsubst([m4_bpatsubst([$1], [^ *], [# ])],
333 [['`$\]], [\\\&])]m4_bmatch([$1], [[!?.]$], [], [.])
334 )])
335
336
337
338 ## ------------------------ ##
339 ## FIXME: Eliminate VARNAME ##
340 ## ------------------------ ##
341
342
343 # _LT_DECL([CONFIGNAME], VARNAME, VALUE, [DESCRIPTION], [IS-TAGGED?])
344 # -------------------------------------------------------------------
345 # CONFIGNAME is the name given to the value in the libtool script.
346 # VARNAME is the (base) name used in the configure script.
347 # VALUE may be 0, 1 or 2 for a computed quote escaped value based on
348 # VARNAME. Any other value will be used directly.
349 m4_define([_LT_DECL],
350 [lt_if_append_uniq([lt_decl_varnames], [$2], [, ],
351 [lt_dict_add_subkey([lt_decl_dict], [$2], [libtool_name],
352 [m4_ifval([$1], [$1], [$2])])
353 lt_dict_add_subkey([lt_decl_dict], [$2], [value], [$3])
354 m4_ifval([$4],
355 [lt_dict_add_subkey([lt_decl_dict], [$2], [description], [$4])])
356 lt_dict_add_subkey([lt_decl_dict], [$2],
357 [tagged?], [m4_ifval([$5], [yes], [no])])])
358 ])
359
360
361 # _LT_TAGDECL([CONFIGNAME], VARNAME, VALUE, [DESCRIPTION])
362 # --------------------------------------------------------
363 m4_define([_LT_TAGDECL], [_LT_DECL([$1], [$2], [$3], [$4], [yes])])
364
365
366 # lt_decl_tag_varnames([SEPARATOR], [VARNAME1...])
367 # ------------------------------------------------
368 m4_define([lt_decl_tag_varnames],
369 [_lt_decl_filter([tagged?], [yes], $@)])
370
371
372 # _lt_decl_filter(SUBKEY, VALUE, [SEPARATOR], [VARNAME1..])
373 # ---------------------------------------------------------
374 m4_define([_lt_decl_filter],
375 [m4_case([$#],
376 [0], [m4_fatal([$0: too few arguments: $#])],
377 [1], [m4_fatal([$0: too few arguments: $#: $1])],
378 [2], [lt_dict_filter([lt_decl_dict], [$1], [$2], [], lt_decl_varnames)],
379 [3], [lt_dict_filter([lt_decl_dict], [$1], [$2], [$3], lt_decl_varnames)],
380 [lt_dict_filter([lt_decl_dict], $@)])[]dnl
381 ])
382
383
384 # lt_decl_quote_varnames([SEPARATOR], [VARNAME1...])
385 # --------------------------------------------------
386 m4_define([lt_decl_quote_varnames],
387 [_lt_decl_filter([value], [1], $@)])
388
389
390 # lt_decl_dquote_varnames([SEPARATOR], [VARNAME1...])
391 # ---------------------------------------------------
392 m4_define([lt_decl_dquote_varnames],
393 [_lt_decl_filter([value], [2], $@)])
394
395
396 # lt_decl_varnames_tagged([SEPARATOR], [VARNAME1...])
397 # ---------------------------------------------------
398 m4_define([lt_decl_varnames_tagged],
399 [m4_assert([$# <= 2])dnl
400 _$0(m4_quote(m4_default([$1], [[, ]])),
401 m4_ifval([$2], [[$2]], [m4_dquote(lt_decl_tag_varnames)]),
402 m4_split(m4_normalize(m4_quote(_LT_TAGS)), [ ]))])
403 m4_define([_lt_decl_varnames_tagged],
404 [m4_ifval([$3], [lt_combine([$1], [$2], [_], $3)])])
405
406
407 # lt_decl_all_varnames([SEPARATOR], [VARNAME1...])
408 # ------------------------------------------------
409 m4_define([lt_decl_all_varnames],
410 [_$0(m4_quote(m4_default([$1], [[, ]])),
411 m4_if([$2], [],
412 m4_quote(lt_decl_varnames),
413 m4_quote(m4_shift($@))))[]dnl
414 ])
415 m4_define([_lt_decl_all_varnames],
416 [lt_join($@, lt_decl_varnames_tagged([$1],
417 lt_decl_tag_varnames([[, ]], m4_shift($@))))dnl
418 ])
419
420
421 # _LT_CONFIG_STATUS_DECLARE([VARNAME])
422 # ------------------------------------
423 # Quote a variable value, and forward it to `config.status' so that its
424 # declaration there will have the same value as in `configure'. VARNAME
425 # must have a single quote delimited value for this to work.
426 m4_define([_LT_CONFIG_STATUS_DECLARE],
427 [$1='`$ECHO "$][$1" | $SED "$delay_single_quote_subst"`'])
428
429
430 # _LT_CONFIG_STATUS_DECLARATIONS
431 # ------------------------------
432 # We delimit libtool config variables with single quotes, so when
433 # we write them to config.status, we have to be sure to quote all
434 # embedded single quotes properly. In configure, this macro expands
435 # each variable declared with _LT_DECL (and _LT_TAGDECL) into:
436 #
437 # <var>='`$ECHO "$<var>" | $SED "$delay_single_quote_subst"`'
438 m4_defun([_LT_CONFIG_STATUS_DECLARATIONS],
439 [m4_foreach([_lt_var], m4_quote(lt_decl_all_varnames),
440 [m4_n([_LT_CONFIG_STATUS_DECLARE(_lt_var)])])])
441
442
443 # _LT_LIBTOOL_TAGS
444 # ----------------
445 # Output comment and list of tags supported by the script
446 m4_defun([_LT_LIBTOOL_TAGS],
447 [_LT_FORMAT_COMMENT([The names of the tagged configurations supported by this script])dnl
448 available_tags="_LT_TAGS"dnl
449 ])
450
451
452 # _LT_LIBTOOL_DECLARE(VARNAME, [TAG])
453 # -----------------------------------
454 # Extract the dictionary values for VARNAME (optionally with TAG) and
455 # expand to a commented shell variable setting:
456 #
457 # # Some comment about what VAR is for.
458 # visible_name=$lt_internal_name
459 m4_define([_LT_LIBTOOL_DECLARE],
460 [_LT_FORMAT_COMMENT(m4_quote(lt_dict_fetch([lt_decl_dict], [$1],
461 [description])))[]dnl
462 m4_pushdef([_libtool_name],
463 m4_quote(lt_dict_fetch([lt_decl_dict], [$1], [libtool_name])))[]dnl
464 m4_case(m4_quote(lt_dict_fetch([lt_decl_dict], [$1], [value])),
465 [0], [_libtool_name=[$]$1],
466 [1], [_libtool_name=$lt_[]$1],
467 [2], [_libtool_name=$lt_[]$1],
468 [_libtool_name=lt_dict_fetch([lt_decl_dict], [$1], [value])])[]dnl
469 m4_ifval([$2], [_$2])[]m4_popdef([_libtool_name])[]dnl
470 ])
471
472
473 # _LT_LIBTOOL_CONFIG_VARS
474 # -----------------------
475 # Produce commented declarations of non-tagged libtool config variables
476 # suitable for insertion in the LIBTOOL CONFIG section of the `libtool'
477 # script. Tagged libtool config variables (even for the LIBTOOL CONFIG
478 # section) are produced by _LT_LIBTOOL_TAG_VARS.
479 m4_defun([_LT_LIBTOOL_CONFIG_VARS],
480 [m4_foreach([_lt_var],
481 m4_quote(_lt_decl_filter([tagged?], [no], [], lt_decl_varnames)),
482 [m4_n([_LT_LIBTOOL_DECLARE(_lt_var)])])])
483
484
485 # _LT_LIBTOOL_TAG_VARS(TAG)
486 # -------------------------
487 m4_define([_LT_LIBTOOL_TAG_VARS],
488 [m4_foreach([_lt_var], m4_quote(lt_decl_tag_varnames),
489 [m4_n([_LT_LIBTOOL_DECLARE(_lt_var, [$1])])])])
490
491
492 # _LT_TAGVAR(VARNAME, [TAGNAME])
493 # ------------------------------
494 m4_define([_LT_TAGVAR], [m4_ifval([$2], [$1_$2], [$1])])
495
496
497 # _LT_CONFIG_COMMANDS
498 # -------------------
499 # Send accumulated output to $CONFIG_STATUS. Thanks to the lists of
500 # variables for single and double quote escaping we saved from calls
501 # to _LT_DECL, we can put quote escaped variables declarations
502 # into `config.status', and then the shell code to quote escape them in
503 # for loops in `config.status'. Finally, any additional code accumulated
504 # from calls to _LT_CONFIG_LIBTOOL_INIT is expanded.
505 m4_defun([_LT_CONFIG_COMMANDS],
506 [AC_PROVIDE_IFELSE([LT_OUTPUT],
507 dnl If the libtool generation code has been placed in $CONFIG_LT,
508 dnl instead of duplicating it all over again into config.status,
509 dnl then we will have config.status run $CONFIG_LT later, so it
510 dnl needs to know what name is stored there:
511 [AC_CONFIG_COMMANDS([libtool],
512 [$SHELL $CONFIG_LT || AS_EXIT(1)], [CONFIG_LT='$CONFIG_LT'])],
513 dnl If the libtool generation code is destined for config.status,
514 dnl expand the accumulated commands and init code now:
515 [AC_CONFIG_COMMANDS([libtool],
516 [_LT_OUTPUT_LIBTOOL_COMMANDS], [_LT_OUTPUT_LIBTOOL_COMMANDS_INIT])])
517 ])#_LT_CONFIG_COMMANDS
518
519
520 # Initialize.
521 m4_define([_LT_OUTPUT_LIBTOOL_COMMANDS_INIT],
522 [
523
524 # The HP-UX ksh and POSIX shell print the target directory to stdout
525 # if CDPATH is set.
526 (unset CDPATH) >/dev/null 2>&1 && unset CDPATH
527
528 sed_quote_subst='$sed_quote_subst'
529 double_quote_subst='$double_quote_subst'
530 delay_variable_subst='$delay_variable_subst'
531 _LT_CONFIG_STATUS_DECLARATIONS
532 LTCC='$LTCC'
533 LTCFLAGS='$LTCFLAGS'
534 compiler='$compiler_DEFAULT'
535
536 # A function that is used when there is no print builtin or printf.
537 func_fallback_echo ()
538 {
539 eval 'cat <<_LTECHO_EOF
540 \$[]1
541 _LTECHO_EOF'
542 }
543
544 # Quote evaled strings.
545 for var in lt_decl_all_varnames([[ \
546 ]], lt_decl_quote_varnames); do
547 case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in
548 *[[\\\\\\\`\\"\\\$]]*)
549 eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED \\"\\\$sed_quote_subst\\"\\\`\\\\\\""
550 ;;
551 *)
552 eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\""
553 ;;
554 esac
555 done
556
557 # Double-quote double-evaled strings.
558 for var in lt_decl_all_varnames([[ \
559 ]], lt_decl_dquote_varnames); do
560 case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in
561 *[[\\\\\\\`\\"\\\$]]*)
562 eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED -e \\"\\\$double_quote_subst\\" -e \\"\\\$sed_quote_subst\\" -e \\"\\\$delay_variable_subst\\"\\\`\\\\\\""
563 ;;
564 *)
565 eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\""
566 ;;
567 esac
568 done
569
570 _LT_OUTPUT_LIBTOOL_INIT
571 ])
572
573 # _LT_GENERATED_FILE_INIT(FILE, [COMMENT])
574 # ------------------------------------
575 # Generate a child script FILE with all initialization necessary to
576 # reuse the environment learned by the parent script, and make the
577 # file executable. If COMMENT is supplied, it is inserted after the
578 # `#!' sequence but before initialization text begins. After this
579 # macro, additional text can be appended to FILE to form the body of
580 # the child script. The macro ends with non-zero status if the
581 # file could not be fully written (such as if the disk is full).
582 m4_ifdef([AS_INIT_GENERATED],
583 [m4_defun([_LT_GENERATED_FILE_INIT],[AS_INIT_GENERATED($@)])],
584 [m4_defun([_LT_GENERATED_FILE_INIT],
585 [m4_require([AS_PREPARE])]dnl
586 [m4_pushdef([AS_MESSAGE_LOG_FD])]dnl
587 [lt_write_fail=0
588 cat >$1 <<_ASEOF || lt_write_fail=1
589 #! $SHELL
590 # Generated by $as_me.
591 $2
592 SHELL=\${CONFIG_SHELL-$SHELL}
593 export SHELL
594 _ASEOF
595 cat >>$1 <<\_ASEOF || lt_write_fail=1
596 AS_SHELL_SANITIZE
597 _AS_PREPARE
598 exec AS_MESSAGE_FD>&1
599 _ASEOF
600 test $lt_write_fail = 0 && chmod +x $1[]dnl
601 m4_popdef([AS_MESSAGE_LOG_FD])])])# _LT_GENERATED_FILE_INIT
602
603 # LT_OUTPUT
604 # ---------
605 # This macro allows early generation of the libtool script (before
606 # AC_OUTPUT is called), incase it is used in configure for compilation
607 # tests.
608 AC_DEFUN([LT_OUTPUT],
609 [: ${CONFIG_LT=./config.lt}
610 AC_MSG_NOTICE([creating $CONFIG_LT])
611 _LT_GENERATED_FILE_INIT(["$CONFIG_LT"],
612 [# Run this file to recreate a libtool stub with the current configuration.])
613
614 cat >>"$CONFIG_LT" <<\_LTEOF
615 lt_cl_silent=false
616 exec AS_MESSAGE_LOG_FD>>config.log
617 {
618 echo
619 AS_BOX([Running $as_me.])
620 } >&AS_MESSAGE_LOG_FD
621
622 lt_cl_help="\
623 \`$as_me' creates a local libtool stub from the current configuration,
624 for use in further configure time tests before the real libtool is
625 generated.
626
627 Usage: $[0] [[OPTIONS]]
628
629 -h, --help print this help, then exit
630 -V, --version print version number, then exit
631 -q, --quiet do not print progress messages
632 -d, --debug don't remove temporary files
633
634 Report bugs to <bug-libtool@gnu.org>."
635
636 lt_cl_version="\
637 m4_ifset([AC_PACKAGE_NAME], [AC_PACKAGE_NAME ])config.lt[]dnl
638 m4_ifset([AC_PACKAGE_VERSION], [ AC_PACKAGE_VERSION])
639 configured by $[0], generated by m4_PACKAGE_STRING.
640
641 Copyright (C) 2011 Free Software Foundation, Inc.
642 This config.lt script is free software; the Free Software Foundation
643 gives unlimited permision to copy, distribute and modify it."
644
645 while test $[#] != 0
646 do
647 case $[1] in
648 --version | --v* | -V )
649 echo "$lt_cl_version"; exit 0 ;;
650 --help | --h* | -h )
651 echo "$lt_cl_help"; exit 0 ;;
652 --debug | --d* | -d )
653 debug=: ;;
654 --quiet | --q* | --silent | --s* | -q )
655 lt_cl_silent=: ;;
656
657 -*) AC_MSG_ERROR([unrecognized option: $[1]
658 Try \`$[0] --help' for more information.]) ;;
659
660 *) AC_MSG_ERROR([unrecognized argument: $[1]
661 Try \`$[0] --help' for more information.]) ;;
662 esac
663 shift
664 done
665
666 if $lt_cl_silent; then
667 exec AS_MESSAGE_FD>/dev/null
668 fi
669 _LTEOF
670
671 cat >>"$CONFIG_LT" <<_LTEOF
672 _LT_OUTPUT_LIBTOOL_COMMANDS_INIT
673 _LTEOF
674
675 cat >>"$CONFIG_LT" <<\_LTEOF
676 AC_MSG_NOTICE([creating $ofile])
677 _LT_OUTPUT_LIBTOOL_COMMANDS
678 AS_EXIT(0)
679 _LTEOF
680 chmod +x "$CONFIG_LT"
681
682 # configure is writing to config.log, but config.lt does its own redirection,
683 # appending to config.log, which fails on DOS, as config.log is still kept
684 # open by configure. Here we exec the FD to /dev/null, effectively closing
685 # config.log, so it can be properly (re)opened and appended to by config.lt.
686 lt_cl_success=:
687 test "$silent" = yes &&
688 lt_config_lt_args="$lt_config_lt_args --quiet"
689 exec AS_MESSAGE_LOG_FD>/dev/null
690 $SHELL "$CONFIG_LT" $lt_config_lt_args || lt_cl_success=false
691 exec AS_MESSAGE_LOG_FD>>config.log
692 $lt_cl_success || AS_EXIT(1)
693 ])# LT_OUTPUT
694
695
696 # _LT_CONFIG(TAG)
697 # ---------------
698 # If TAG is the built-in tag, create an initial libtool script with a
699 # default configuration from the untagged config vars. Otherwise add code
700 # to config.status for appending the configuration named by TAG from the
701 # matching tagged config vars.
702 m4_defun([_LT_CONFIG],
703 [m4_require([_LT_FILEUTILS_DEFAULTS])dnl
704 _LT_CONFIG_SAVE_COMMANDS([
705 m4_define([_LT_TAG], m4_if([$1], [], [C], [$1]))dnl
706 m4_if(_LT_TAG, [C], [
707 # See if we are running on zsh, and set the options which allow our
708 # commands through without removal of \ escapes.
709 if test -n "${ZSH_VERSION+set}" ; then
710 setopt NO_GLOB_SUBST
711 fi
712
713 cfgfile="${ofile}T"
714 trap "$RM \"$cfgfile\"; exit 1" 1 2 15
715 $RM "$cfgfile"
716
717 cat <<_LT_EOF >> "$cfgfile"
718 #! $SHELL
719
720 # `$ECHO "$ofile" | sed 's%^.*/%%'` - Provide generalized library-building support services.
721 # Generated automatically by $as_me ($PACKAGE$TIMESTAMP) $VERSION
722 # Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`:
723 # NOTE: Changes made to this file will be lost: look at ltmain.sh.
724 #
725 _LT_COPYING
726 _LT_LIBTOOL_TAGS
727
728 # ### BEGIN LIBTOOL CONFIG
729 _LT_LIBTOOL_CONFIG_VARS
730 _LT_LIBTOOL_TAG_VARS
731 # ### END LIBTOOL CONFIG
732
733 _LT_EOF
734
735 case $host_os in
736 aix3*)
737 cat <<\_LT_EOF >> "$cfgfile"
738 # AIX sometimes has problems with the GCC collect2 program. For some
739 # reason, if we set the COLLECT_NAMES environment variable, the problems
740 # vanish in a puff of smoke.
741 if test "X${COLLECT_NAMES+set}" != Xset; then
742 COLLECT_NAMES=
743 export COLLECT_NAMES
744 fi
745 _LT_EOF
746 ;;
747 esac
748
749 _LT_PROG_LTMAIN
750
751 # We use sed instead of cat because bash on DJGPP gets confused if
752 # if finds mixed CR/LF and LF-only lines. Since sed operates in
753 # text mode, it properly converts lines to CR/LF. This bash problem
754 # is reportedly fixed, but why not run on old versions too?
755 sed '$q' "$ltmain" >> "$cfgfile" \
756 || (rm -f "$cfgfile"; exit 1)
757
758 _LT_PROG_REPLACE_SHELLFNS
759
760 mv -f "$cfgfile" "$ofile" ||
761 (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile")
762 chmod +x "$ofile"
763 ],
764 [cat <<_LT_EOF >> "$ofile"
765
766 dnl Unfortunately we have to use $1 here, since _LT_TAG is not expanded
767 dnl in a comment (ie after a #).
768 # ### BEGIN LIBTOOL TAG CONFIG: $1
769 _LT_LIBTOOL_TAG_VARS(_LT_TAG)
770 # ### END LIBTOOL TAG CONFIG: $1
771 _LT_EOF
772 ])dnl /m4_if
773 ],
774 [m4_if([$1], [], [
775 PACKAGE='$PACKAGE'
776 VERSION='$VERSION'
777 TIMESTAMP='$TIMESTAMP'
778 RM='$RM'
779 ofile='$ofile'], [])
780 ])dnl /_LT_CONFIG_SAVE_COMMANDS
781 ])# _LT_CONFIG
782
783
784 # LT_SUPPORTED_TAG(TAG)
785 # ---------------------
786 # Trace this macro to discover what tags are supported by the libtool
787 # --tag option, using:
788 # autoconf --trace 'LT_SUPPORTED_TAG:$1'
789 AC_DEFUN([LT_SUPPORTED_TAG], [])
790
791
792 # C support is built-in for now
793 m4_define([_LT_LANG_C_enabled], [])
794 m4_define([_LT_TAGS], [])
795
796
797 # LT_LANG(LANG)
798 # -------------
799 # Enable libtool support for the given language if not already enabled.
800 AC_DEFUN([LT_LANG],
801 [AC_BEFORE([$0], [LT_OUTPUT])dnl
802 m4_case([$1],
803 [C], [_LT_LANG(C)],
804 [C++], [_LT_LANG(CXX)],
805 [Go], [_LT_LANG(GO)],
806 [Java], [_LT_LANG(GCJ)],
807 [Fortran 77], [_LT_LANG(F77)],
808 [Fortran], [_LT_LANG(FC)],
809 [Windows Resource], [_LT_LANG(RC)],
810 [m4_ifdef([_LT_LANG_]$1[_CONFIG],
811 [_LT_LANG($1)],
812 [m4_fatal([$0: unsupported language: "$1"])])])dnl
813 ])# LT_LANG
814
815
816 # _LT_LANG(LANGNAME)
817 # ------------------
818 m4_defun([_LT_LANG],
819 [m4_ifdef([_LT_LANG_]$1[_enabled], [],
820 [LT_SUPPORTED_TAG([$1])dnl
821 m4_append([_LT_TAGS], [$1 ])dnl
822 m4_define([_LT_LANG_]$1[_enabled], [])dnl
823 _LT_LANG_$1_CONFIG($1)])dnl
824 ])# _LT_LANG
825
826
827 m4_ifndef([AC_PROG_GO], [
828 ############################################################
829 # NOTE: This macro has been submitted for inclusion into #
830 # GNU Autoconf as AC_PROG_GO. When it is available in #
831 # a released version of Autoconf we should remove this #
832 # macro and use it instead. #
833 ############################################################
834 m4_defun([AC_PROG_GO],
835 [AC_LANG_PUSH(Go)dnl
836 AC_ARG_VAR([GOC], [Go compiler command])dnl
837 AC_ARG_VAR([GOFLAGS], [Go compiler flags])dnl
838 _AC_ARG_VAR_LDFLAGS()dnl
839 AC_CHECK_TOOL(GOC, gccgo)
840 if test -z "$GOC"; then
841 if test -n "$ac_tool_prefix"; then
842 AC_CHECK_PROG(GOC, [${ac_tool_prefix}gccgo], [${ac_tool_prefix}gccgo])
843 fi
844 fi
845 if test -z "$GOC"; then
846 AC_CHECK_PROG(GOC, gccgo, gccgo, false)
847 fi
848 ])#m4_defun
849 ])#m4_ifndef
850
851
852 # _LT_LANG_DEFAULT_CONFIG
853 # -----------------------
854 m4_defun([_LT_LANG_DEFAULT_CONFIG],
855 [AC_PROVIDE_IFELSE([AC_PROG_CXX],
856 [LT_LANG(CXX)],
857 [m4_define([AC_PROG_CXX], defn([AC_PROG_CXX])[LT_LANG(CXX)])])
858
859 AC_PROVIDE_IFELSE([AC_PROG_F77],
860 [LT_LANG(F77)],
861 [m4_define([AC_PROG_F77], defn([AC_PROG_F77])[LT_LANG(F77)])])
862
863 AC_PROVIDE_IFELSE([AC_PROG_FC],
864 [LT_LANG(FC)],
865 [m4_define([AC_PROG_FC], defn([AC_PROG_FC])[LT_LANG(FC)])])
866
867 dnl The call to [A][M_PROG_GCJ] is quoted like that to stop aclocal
868 dnl pulling things in needlessly.
869 AC_PROVIDE_IFELSE([AC_PROG_GCJ],
870 [LT_LANG(GCJ)],
871 [AC_PROVIDE_IFELSE([A][M_PROG_GCJ],
872 [LT_LANG(GCJ)],
873 [AC_PROVIDE_IFELSE([LT_PROG_GCJ],
874 [LT_LANG(GCJ)],
875 [m4_ifdef([AC_PROG_GCJ],
876 [m4_define([AC_PROG_GCJ], defn([AC_PROG_GCJ])[LT_LANG(GCJ)])])
877 m4_ifdef([A][M_PROG_GCJ],
878 [m4_define([A][M_PROG_GCJ], defn([A][M_PROG_GCJ])[LT_LANG(GCJ)])])
879 m4_ifdef([LT_PROG_GCJ],
880 [m4_define([LT_PROG_GCJ], defn([LT_PROG_GCJ])[LT_LANG(GCJ)])])])])])
881
882 AC_PROVIDE_IFELSE([AC_PROG_GO],
883 [LT_LANG(GO)],
884 [m4_define([AC_PROG_GO], defn([AC_PROG_GO])[LT_LANG(GO)])])
885
886 AC_PROVIDE_IFELSE([LT_PROG_RC],
887 [LT_LANG(RC)],
888 [m4_define([LT_PROG_RC], defn([LT_PROG_RC])[LT_LANG(RC)])])
889 ])# _LT_LANG_DEFAULT_CONFIG
890
891 # Obsolete macros:
892 AU_DEFUN([AC_LIBTOOL_CXX], [LT_LANG(C++)])
893 AU_DEFUN([AC_LIBTOOL_F77], [LT_LANG(Fortran 77)])
894 AU_DEFUN([AC_LIBTOOL_FC], [LT_LANG(Fortran)])
895 AU_DEFUN([AC_LIBTOOL_GCJ], [LT_LANG(Java)])
896 AU_DEFUN([AC_LIBTOOL_RC], [LT_LANG(Windows Resource)])
897 dnl aclocal-1.4 backwards compatibility:
898 dnl AC_DEFUN([AC_LIBTOOL_CXX], [])
899 dnl AC_DEFUN([AC_LIBTOOL_F77], [])
900 dnl AC_DEFUN([AC_LIBTOOL_FC], [])
901 dnl AC_DEFUN([AC_LIBTOOL_GCJ], [])
902 dnl AC_DEFUN([AC_LIBTOOL_RC], [])
903
904
905 # _LT_TAG_COMPILER
906 # ----------------
907 m4_defun([_LT_TAG_COMPILER],
908 [AC_REQUIRE([AC_PROG_CC])dnl
909
910 _LT_DECL([LTCC], [CC], [1], [A C compiler])dnl
911 _LT_DECL([LTCFLAGS], [CFLAGS], [1], [LTCC compiler flags])dnl
912 _LT_TAGDECL([CC], [compiler], [1], [A language specific compiler])dnl
913 _LT_TAGDECL([with_gcc], [GCC], [0], [Is the compiler the GNU compiler?])dnl
914
915 # If no C compiler was specified, use CC.
916 LTCC=${LTCC-"$CC"}
917
918 # If no C compiler flags were specified, use CFLAGS.
919 LTCFLAGS=${LTCFLAGS-"$CFLAGS"}
920
921 # Allow CC to be a program name with arguments.
922 compiler=$CC
923 ])# _LT_TAG_COMPILER
924
925
926 # _LT_COMPILER_BOILERPLATE
927 # ------------------------
928 # Check for compiler boilerplate output or warnings with
929 # the simple compiler test code.
930 m4_defun([_LT_COMPILER_BOILERPLATE],
931 [m4_require([_LT_DECL_SED])dnl
932 ac_outfile=conftest.$ac_objext
933 echo "$lt_simple_compile_test_code" >conftest.$ac_ext
934 eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err
935 _lt_compiler_boilerplate=`cat conftest.err`
936 $RM conftest*
937 ])# _LT_COMPILER_BOILERPLATE
938
939
940 # _LT_LINKER_BOILERPLATE
941 # ----------------------
942 # Check for linker boilerplate output or warnings with
943 # the simple link test code.
944 m4_defun([_LT_LINKER_BOILERPLATE],
945 [m4_require([_LT_DECL_SED])dnl
946 ac_outfile=conftest.$ac_objext
947 echo "$lt_simple_link_test_code" >conftest.$ac_ext
948 eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err
949 _lt_linker_boilerplate=`cat conftest.err`
950 $RM -r conftest*
951 ])# _LT_LINKER_BOILERPLATE
952
953 # _LT_REQUIRED_DARWIN_CHECKS
954 # -------------------------
955 m4_defun_once([_LT_REQUIRED_DARWIN_CHECKS],[
956 case $host_os in
957 rhapsody* | darwin*)
958 AC_CHECK_TOOL([DSYMUTIL], [dsymutil], [:])
959 AC_CHECK_TOOL([NMEDIT], [nmedit], [:])
960 AC_CHECK_TOOL([LIPO], [lipo], [:])
961 AC_CHECK_TOOL([OTOOL], [otool], [:])
962 AC_CHECK_TOOL([OTOOL64], [otool64], [:])
963 _LT_DECL([], [DSYMUTIL], [1],
964 [Tool to manipulate archived DWARF debug symbol files on Mac OS X])
965 _LT_DECL([], [NMEDIT], [1],
966 [Tool to change global to local symbols on Mac OS X])
967 _LT_DECL([], [LIPO], [1],
968 [Tool to manipulate fat objects and archives on Mac OS X])
969 _LT_DECL([], [OTOOL], [1],
970 [ldd/readelf like tool for Mach-O binaries on Mac OS X])
971 _LT_DECL([], [OTOOL64], [1],
972 [ldd/readelf like tool for 64 bit Mach-O binaries on Mac OS X 10.4])
973
974 AC_CACHE_CHECK([for -single_module linker flag],[lt_cv_apple_cc_single_mod],
975 [lt_cv_apple_cc_single_mod=no
976 if test -z "${LT_MULTI_MODULE}"; then
977 # By default we will add the -single_module flag. You can override
978 # by either setting the environment variable LT_MULTI_MODULE
979 # non-empty at configure time, or by adding -multi_module to the
980 # link flags.
981 rm -rf libconftest.dylib*
982 echo "int foo(void){return 1;}" > conftest.c
983 echo "$LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \
984 -dynamiclib -Wl,-single_module conftest.c" >&AS_MESSAGE_LOG_FD
985 $LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \
986 -dynamiclib -Wl,-single_module conftest.c 2>conftest.err
987 _lt_result=$?
988 # If there is a non-empty error log, and "single_module"
989 # appears in it, assume the flag caused a linker warning
990 if test -s conftest.err && $GREP single_module conftest.err; then
991 cat conftest.err >&AS_MESSAGE_LOG_FD
992 # Otherwise, if the output was created with a 0 exit code from
993 # the compiler, it worked.
994 elif test -f libconftest.dylib && test $_lt_result -eq 0; then
995 lt_cv_apple_cc_single_mod=yes
996 else
997 cat conftest.err >&AS_MESSAGE_LOG_FD
998 fi
999 rm -rf libconftest.dylib*
1000 rm -f conftest.*
1001 fi])
1002
1003 AC_CACHE_CHECK([for -exported_symbols_list linker flag],
1004 [lt_cv_ld_exported_symbols_list],
1005 [lt_cv_ld_exported_symbols_list=no
1006 save_LDFLAGS=$LDFLAGS
1007 echo "_main" > conftest.sym
1008 LDFLAGS="$LDFLAGS -Wl,-exported_symbols_list,conftest.sym"
1009 AC_LINK_IFELSE([AC_LANG_PROGRAM([],[])],
1010 [lt_cv_ld_exported_symbols_list=yes],
1011 [lt_cv_ld_exported_symbols_list=no])
1012 LDFLAGS="$save_LDFLAGS"
1013 ])
1014
1015 AC_CACHE_CHECK([for -force_load linker flag],[lt_cv_ld_force_load],
1016 [lt_cv_ld_force_load=no
1017 cat > conftest.c << _LT_EOF
1018 int forced_loaded() { return 2;}
1019 _LT_EOF
1020 echo "$LTCC $LTCFLAGS -c -o conftest.o conftest.c" >&AS_MESSAGE_LOG_FD
1021 $LTCC $LTCFLAGS -c -o conftest.o conftest.c 2>&AS_MESSAGE_LOG_FD
1022 echo "$AR cru libconftest.a conftest.o" >&AS_MESSAGE_LOG_FD
1023 $AR cru libconftest.a conftest.o 2>&AS_MESSAGE_LOG_FD
1024 echo "$RANLIB libconftest.a" >&AS_MESSAGE_LOG_FD
1025 $RANLIB libconftest.a 2>&AS_MESSAGE_LOG_FD
1026 cat > conftest.c << _LT_EOF
1027 int main() { return 0;}
1028 _LT_EOF
1029 echo "$LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a" >&AS_MESSAGE_LOG_FD
1030 $LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a 2>conftest.err
1031 _lt_result=$?
1032 if test -s conftest.err && $GREP force_load conftest.err; then
1033 cat conftest.err >&AS_MESSAGE_LOG_FD
1034 elif test -f conftest && test $_lt_result -eq 0 && $GREP forced_load conftest >/dev/null 2>&1 ; then
1035 lt_cv_ld_force_load=yes
1036 else
1037 cat conftest.err >&AS_MESSAGE_LOG_FD
1038 fi
1039 rm -f conftest.err libconftest.a conftest conftest.c
1040 rm -rf conftest.dSYM
1041 ])
1042 case $host_os in
1043 rhapsody* | darwin1.[[012]])
1044 _lt_dar_allow_undefined='${wl}-undefined ${wl}suppress' ;;
1045 darwin1.*)
1046 _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;;
1047 darwin*) # darwin 5.x on
1048 # if running on 10.5 or later, the deployment target defaults
1049 # to the OS version, if on x86, and 10.4, the deployment
1050 # target defaults to 10.4. Don't you love it?
1051 case ${MACOSX_DEPLOYMENT_TARGET-10.0},$host in
1052 10.0,*86*-darwin8*|10.0,*-darwin[[91]]*)
1053 _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;;
1054 10.[[012]]*)
1055 _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;;
1056 10.*)
1057 _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;;
1058 esac
1059 ;;
1060 esac
1061 if test "$lt_cv_apple_cc_single_mod" = "yes"; then
1062 _lt_dar_single_mod='$single_module'
1063 fi
1064 if test "$lt_cv_ld_exported_symbols_list" = "yes"; then
1065 _lt_dar_export_syms=' ${wl}-exported_symbols_list,$output_objdir/${libname}-symbols.expsym'
1066 else
1067 _lt_dar_export_syms='~$NMEDIT -s $output_objdir/${libname}-symbols.expsym ${lib}'
1068 fi
1069 if test "$DSYMUTIL" != ":" && test "$lt_cv_ld_force_load" = "no"; then
1070 _lt_dsymutil='~$DSYMUTIL $lib || :'
1071 else
1072 _lt_dsymutil=
1073 fi
1074 ;;
1075 esac
1076 ])
1077
1078
1079 # _LT_DARWIN_LINKER_FEATURES([TAG])
1080 # ---------------------------------
1081 # Checks for linker and compiler features on darwin
1082 m4_defun([_LT_DARWIN_LINKER_FEATURES],
1083 [
1084 m4_require([_LT_REQUIRED_DARWIN_CHECKS])
1085 _LT_TAGVAR(archive_cmds_need_lc, $1)=no
1086 _LT_TAGVAR(hardcode_direct, $1)=no
1087 _LT_TAGVAR(hardcode_automatic, $1)=yes
1088 _LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported
1089 if test "$lt_cv_ld_force_load" = "yes"; then
1090 _LT_TAGVAR(whole_archive_flag_spec, $1)='`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience ${wl}-force_load,$conv\"; done; func_echo_all \"$new_convenience\"`'
1091 m4_case([$1], [F77], [_LT_TAGVAR(compiler_needs_object, $1)=yes],
1092 [FC], [_LT_TAGVAR(compiler_needs_object, $1)=yes])
1093 else
1094 _LT_TAGVAR(whole_archive_flag_spec, $1)=''
1095 fi
1096 _LT_TAGVAR(link_all_deplibs, $1)=yes
1097 _LT_TAGVAR(allow_undefined_flag, $1)="$_lt_dar_allow_undefined"
1098 case $cc_basename in
1099 ifort*) _lt_dar_can_shared=yes ;;
1100 *) _lt_dar_can_shared=$GCC ;;
1101 esac
1102 if test "$_lt_dar_can_shared" = "yes"; then
1103 output_verbose_link_cmd=func_echo_all
1104 _LT_TAGVAR(archive_cmds, $1)="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod${_lt_dsymutil}"
1105 _LT_TAGVAR(module_cmds, $1)="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dsymutil}"
1106 _LT_TAGVAR(archive_expsym_cmds, $1)="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring ${_lt_dar_single_mod}${_lt_dar_export_syms}${_lt_dsymutil}"
1107 _LT_TAGVAR(module_expsym_cmds, $1)="sed -e 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dar_export_syms}${_lt_dsymutil}"
1108 m4_if([$1], [CXX],
1109 [ if test "$lt_cv_apple_cc_single_mod" != "yes"; then
1110 _LT_TAGVAR(archive_cmds, $1)="\$CC -r -keep_private_externs -nostdlib -o \${lib}-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \${lib}-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring${_lt_dsymutil}"
1111 _LT_TAGVAR(archive_expsym_cmds, $1)="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -r -keep_private_externs -nostdlib -o \${lib}-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \${lib}-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring${_lt_dar_export_syms}${_lt_dsymutil}"
1112 fi
1113 ],[])
1114 else
1115 _LT_TAGVAR(ld_shlibs, $1)=no
1116 fi
1117 ])
1118
1119 # _LT_SYS_MODULE_PATH_AIX([TAGNAME])
1120 # ----------------------------------
1121 # Links a minimal program and checks the executable
1122 # for the system default hardcoded library path. In most cases,
1123 # this is /usr/lib:/lib, but when the MPI compilers are used
1124 # the location of the communication and MPI libs are included too.
1125 # If we don't find anything, use the default library path according
1126 # to the aix ld manual.
1127 # Store the results from the different compilers for each TAGNAME.
1128 # Allow to override them for all tags through lt_cv_aix_libpath.
1129 m4_defun([_LT_SYS_MODULE_PATH_AIX],
1130 [m4_require([_LT_DECL_SED])dnl
1131 if test "${lt_cv_aix_libpath+set}" = set; then
1132 aix_libpath=$lt_cv_aix_libpath
1133 else
1134 AC_CACHE_VAL([_LT_TAGVAR([lt_cv_aix_libpath_], [$1])],
1135 [AC_LINK_IFELSE([AC_LANG_PROGRAM],[
1136 lt_aix_libpath_sed='[
1137 /Import File Strings/,/^$/ {
1138 /^0/ {
1139 s/^0 *\([^ ]*\) *$/\1/
1140 p
1141 }
1142 }]'
1143 _LT_TAGVAR([lt_cv_aix_libpath_], [$1])=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
1144 # Check for a 64-bit object if we didn't find anything.
1145 if test -z "$_LT_TAGVAR([lt_cv_aix_libpath_], [$1])"; then
1146 _LT_TAGVAR([lt_cv_aix_libpath_], [$1])=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
1147 fi],[])
1148 if test -z "$_LT_TAGVAR([lt_cv_aix_libpath_], [$1])"; then
1149 _LT_TAGVAR([lt_cv_aix_libpath_], [$1])="/usr/lib:/lib"
1150 fi
1151 ])
1152 aix_libpath=$_LT_TAGVAR([lt_cv_aix_libpath_], [$1])
1153 fi
1154 ])# _LT_SYS_MODULE_PATH_AIX
1155
1156
1157 # _LT_SHELL_INIT(ARG)
1158 # -------------------
1159 m4_define([_LT_SHELL_INIT],
1160 [m4_divert_text([M4SH-INIT], [$1
1161 ])])# _LT_SHELL_INIT
1162
1163
1164
1165 # _LT_PROG_ECHO_BACKSLASH
1166 # -----------------------
1167 # Find how we can fake an echo command that does not interpret backslash.
1168 # In particular, with Autoconf 2.60 or later we add some code to the start
1169 # of the generated configure script which will find a shell with a builtin
1170 # printf (which we can use as an echo command).
1171 m4_defun([_LT_PROG_ECHO_BACKSLASH],
1172 [ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'
1173 ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO
1174 ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO$ECHO
1175
1176 AC_MSG_CHECKING([how to print strings])
1177 # Test print first, because it will be a builtin if present.
1178 if test "X`( print -r -- -n ) 2>/dev/null`" = X-n && \
1179 test "X`print -r -- $ECHO 2>/dev/null`" = "X$ECHO"; then
1180 ECHO='print -r --'
1181 elif test "X`printf %s $ECHO 2>/dev/null`" = "X$ECHO"; then
1182 ECHO='printf %s\n'
1183 else
1184 # Use this function as a fallback that always works.
1185 func_fallback_echo ()
1186 {
1187 eval 'cat <<_LTECHO_EOF
1188 $[]1
1189 _LTECHO_EOF'
1190 }
1191 ECHO='func_fallback_echo'
1192 fi
1193
1194 # func_echo_all arg...
1195 # Invoke $ECHO with all args, space-separated.
1196 func_echo_all ()
1197 {
1198 $ECHO "$*"
1199 }
1200
1201 case "$ECHO" in
1202 printf*) AC_MSG_RESULT([printf]) ;;
1203 print*) AC_MSG_RESULT([print -r]) ;;
1204 *) AC_MSG_RESULT([cat]) ;;
1205 esac
1206
1207 m4_ifdef([_AS_DETECT_SUGGESTED],
1208 [_AS_DETECT_SUGGESTED([
1209 test -n "${ZSH_VERSION+set}${BASH_VERSION+set}" || (
1210 ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'
1211 ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO
1212 ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO$ECHO
1213 PATH=/empty FPATH=/empty; export PATH FPATH
1214 test "X`printf %s $ECHO`" = "X$ECHO" \
1215 || test "X`print -r -- $ECHO`" = "X$ECHO" )])])
1216
1217 _LT_DECL([], [SHELL], [1], [Shell to use when invoking shell scripts])
1218 _LT_DECL([], [ECHO], [1], [An echo program that protects backslashes])
1219 ])# _LT_PROG_ECHO_BACKSLASH
1220
1221
1222 # _LT_WITH_SYSROOT
1223 # ----------------
1224 AC_DEFUN([_LT_WITH_SYSROOT],
1225 [AC_MSG_CHECKING([for sysroot])
1226 AC_ARG_WITH([sysroot],
1227 [ --with-sysroot[=DIR] Search for dependent libraries within DIR
1228 (or the compiler's sysroot if not specified).],
1229 [], [with_sysroot=no])
1230
1231 dnl lt_sysroot will always be passed unquoted. We quote it here
1232 dnl in case the user passed a directory name.
1233 lt_sysroot=
1234 case ${with_sysroot} in #(
1235 yes)
1236 if test "$GCC" = yes; then
1237 lt_sysroot=`$CC --print-sysroot 2>/dev/null`
1238 fi
1239 ;; #(
1240 /*)
1241 lt_sysroot=`echo "$with_sysroot" | sed -e "$sed_quote_subst"`
1242 ;; #(
1243 no|'')
1244 ;; #(
1245 *)
1246 AC_MSG_RESULT([${with_sysroot}])
1247 AC_MSG_ERROR([The sysroot must be an absolute path.])
1248 ;;
1249 esac
1250
1251 AC_MSG_RESULT([${lt_sysroot:-no}])
1252 _LT_DECL([], [lt_sysroot], [0], [The root where to search for ]dnl
1253 [dependent libraries, and in which our libraries should be installed.])])
1254
1255 # _LT_ENABLE_LOCK
1256 # ---------------
1257 m4_defun([_LT_ENABLE_LOCK],
1258 [AC_ARG_ENABLE([libtool-lock],
1259 [AS_HELP_STRING([--disable-libtool-lock],
1260 [avoid locking (might break parallel builds)])])
1261 test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes
1262
1263 # Some flags need to be propagated to the compiler or linker for good
1264 # libtool support.
1265 case $host in
1266 ia64-*-hpux*)
1267 # Find out which ABI we are using.
1268 echo 'int i;' > conftest.$ac_ext
1269 if AC_TRY_EVAL(ac_compile); then
1270 case `/usr/bin/file conftest.$ac_objext` in
1271 *ELF-32*)
1272 HPUX_IA64_MODE="32"
1273 ;;
1274 *ELF-64*)
1275 HPUX_IA64_MODE="64"
1276 ;;
1277 esac
1278 fi
1279 rm -rf conftest*
1280 ;;
1281 *-*-irix6*)
1282 # Find out which ABI we are using.
1283 echo '[#]line '$LINENO' "configure"' > conftest.$ac_ext
1284 if AC_TRY_EVAL(ac_compile); then
1285 if test "$lt_cv_prog_gnu_ld" = yes; then
1286 case `/usr/bin/file conftest.$ac_objext` in
1287 *32-bit*)
1288 LD="${LD-ld} -melf32bsmip"
1289 ;;
1290 *N32*)
1291 LD="${LD-ld} -melf32bmipn32"
1292 ;;
1293 *64-bit*)
1294 LD="${LD-ld} -melf64bmip"
1295 ;;
1296 esac
1297 else
1298 case `/usr/bin/file conftest.$ac_objext` in
1299 *32-bit*)
1300 LD="${LD-ld} -32"
1301 ;;
1302 *N32*)
1303 LD="${LD-ld} -n32"
1304 ;;
1305 *64-bit*)
1306 LD="${LD-ld} -64"
1307 ;;
1308 esac
1309 fi
1310 fi
1311 rm -rf conftest*
1312 ;;
1313
1314 x86_64-*kfreebsd*-gnu|x86_64-*linux*|ppc*-*linux*|powerpc*-*linux*| \
1315 s390*-*linux*|s390*-*tpf*|sparc*-*linux*)
1316 # Find out which ABI we are using.
1317 echo 'int i;' > conftest.$ac_ext
1318 if AC_TRY_EVAL(ac_compile); then
1319 case `/usr/bin/file conftest.o` in
1320 *32-bit*)
1321 case $host in
1322 x86_64-*kfreebsd*-gnu)
1323 LD="${LD-ld} -m elf_i386_fbsd"
1324 ;;
1325 x86_64-*linux*)
1326 LD="${LD-ld} -m elf_i386"
1327 ;;
1328 ppc64-*linux*|powerpc64-*linux*)
1329 LD="${LD-ld} -m elf32ppclinux"
1330 ;;
1331 s390x-*linux*)
1332 LD="${LD-ld} -m elf_s390"
1333 ;;
1334 sparc64-*linux*)
1335 LD="${LD-ld} -m elf32_sparc"
1336 ;;
1337 esac
1338 ;;
1339 *64-bit*)
1340 case $host in
1341 x86_64-*kfreebsd*-gnu)
1342 LD="${LD-ld} -m elf_x86_64_fbsd"
1343 ;;
1344 x86_64-*linux*)
1345 LD="${LD-ld} -m elf_x86_64"
1346 ;;
1347 ppc*-*linux*|powerpc*-*linux*)
1348 LD="${LD-ld} -m elf64ppc"
1349 ;;
1350 s390*-*linux*|s390*-*tpf*)
1351 LD="${LD-ld} -m elf64_s390"
1352 ;;
1353 sparc*-*linux*)
1354 LD="${LD-ld} -m elf64_sparc"
1355 ;;
1356 esac
1357 ;;
1358 esac
1359 fi
1360 rm -rf conftest*
1361 ;;
1362
1363 *-*-sco3.2v5*)
1364 # On SCO OpenServer 5, we need -belf to get full-featured binaries.
1365 SAVE_CFLAGS="$CFLAGS"
1366 CFLAGS="$CFLAGS -belf"
1367 AC_CACHE_CHECK([whether the C compiler needs -belf], lt_cv_cc_needs_belf,
1368 [AC_LANG_PUSH(C)
1369 AC_LINK_IFELSE([AC_LANG_PROGRAM([[]],[[]])],[lt_cv_cc_needs_belf=yes],[lt_cv_cc_needs_belf=no])
1370 AC_LANG_POP])
1371 if test x"$lt_cv_cc_needs_belf" != x"yes"; then
1372 # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf
1373 CFLAGS="$SAVE_CFLAGS"
1374 fi
1375 ;;
1376 *-*solaris*)
1377 # Find out which ABI we are using.
1378 echo 'int i;' > conftest.$ac_ext
1379 if AC_TRY_EVAL(ac_compile); then
1380 case `/usr/bin/file conftest.o` in
1381 *64-bit*)
1382 case $lt_cv_prog_gnu_ld in
1383 yes*)
1384 case $host in
1385 i?86-*-solaris*)
1386 LD="${LD-ld} -m elf_x86_64"
1387 ;;
1388 sparc*-*-solaris*)
1389 LD="${LD-ld} -m elf64_sparc"
1390 ;;
1391 esac
1392 # GNU ld 2.21 introduced _sol2 emulations. Use them if available.
1393 if ${LD-ld} -V | grep _sol2 >/dev/null 2>&1; then
1394 LD="${LD-ld}_sol2"
1395 fi
1396 ;;
1397 *)
1398 if ${LD-ld} -64 -r -o conftest2.o conftest.o >/dev/null 2>&1; then
1399 LD="${LD-ld} -64"
1400 fi
1401 ;;
1402 esac
1403 ;;
1404 esac
1405 fi
1406 rm -rf conftest*
1407 ;;
1408 esac
1409
1410 need_locks="$enable_libtool_lock"
1411 ])# _LT_ENABLE_LOCK
1412
1413
1414 # _LT_PROG_AR
1415 # -----------
1416 m4_defun([_LT_PROG_AR],
1417 [AC_CHECK_TOOLS(AR, [ar], false)
1418 : ${AR=ar}
1419 : ${AR_FLAGS=cru}
1420 _LT_DECL([], [AR], [1], [The archiver])
1421 _LT_DECL([], [AR_FLAGS], [1], [Flags to create an archive])
1422
1423 AC_CACHE_CHECK([for archiver @FILE support], [lt_cv_ar_at_file],
1424 [lt_cv_ar_at_file=no
1425 AC_COMPILE_IFELSE([AC_LANG_PROGRAM],
1426 [echo conftest.$ac_objext > conftest.lst
1427 lt_ar_try='$AR $AR_FLAGS libconftest.a @conftest.lst >&AS_MESSAGE_LOG_FD'
1428 AC_TRY_EVAL([lt_ar_try])
1429 if test "$ac_status" -eq 0; then
1430 # Ensure the archiver fails upon bogus file names.
1431 rm -f conftest.$ac_objext libconftest.a
1432 AC_TRY_EVAL([lt_ar_try])
1433 if test "$ac_status" -ne 0; then
1434 lt_cv_ar_at_file=@
1435 fi
1436 fi
1437 rm -f conftest.* libconftest.a
1438 ])
1439 ])
1440
1441 if test "x$lt_cv_ar_at_file" = xno; then
1442 archiver_list_spec=
1443 else
1444 archiver_list_spec=$lt_cv_ar_at_file
1445 fi
1446 _LT_DECL([], [archiver_list_spec], [1],
1447 [How to feed a file listing to the archiver])
1448 ])# _LT_PROG_AR
1449
1450
1451 # _LT_CMD_OLD_ARCHIVE
1452 # -------------------
1453 m4_defun([_LT_CMD_OLD_ARCHIVE],
1454 [_LT_PROG_AR
1455
1456 AC_CHECK_TOOL(STRIP, strip, :)
1457 test -z "$STRIP" && STRIP=:
1458 _LT_DECL([], [STRIP], [1], [A symbol stripping program])
1459
1460 AC_CHECK_TOOL(RANLIB, ranlib, :)
1461 test -z "$RANLIB" && RANLIB=:
1462 _LT_DECL([], [RANLIB], [1],
1463 [Commands used to install an old-style archive])
1464
1465 # Determine commands to create old-style static archives.
1466 old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs'
1467 old_postinstall_cmds='chmod 644 $oldlib'
1468 old_postuninstall_cmds=
1469
1470 if test -n "$RANLIB"; then
1471 case $host_os in
1472 openbsd*)
1473 old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$tool_oldlib"
1474 ;;
1475 *)
1476 old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$tool_oldlib"
1477 ;;
1478 esac
1479 old_archive_cmds="$old_archive_cmds~\$RANLIB \$tool_oldlib"
1480 fi
1481
1482 case $host_os in
1483 darwin*)
1484 lock_old_archive_extraction=yes ;;
1485 *)
1486 lock_old_archive_extraction=no ;;
1487 esac
1488 _LT_DECL([], [old_postinstall_cmds], [2])
1489 _LT_DECL([], [old_postuninstall_cmds], [2])
1490 _LT_TAGDECL([], [old_archive_cmds], [2],
1491 [Commands used to build an old-style archive])
1492 _LT_DECL([], [lock_old_archive_extraction], [0],
1493 [Whether to use a lock for old archive extraction])
1494 ])# _LT_CMD_OLD_ARCHIVE
1495
1496
1497 # _LT_COMPILER_OPTION(MESSAGE, VARIABLE-NAME, FLAGS,
1498 # [OUTPUT-FILE], [ACTION-SUCCESS], [ACTION-FAILURE])
1499 # ----------------------------------------------------------------
1500 # Check whether the given compiler option works
1501 AC_DEFUN([_LT_COMPILER_OPTION],
1502 [m4_require([_LT_FILEUTILS_DEFAULTS])dnl
1503 m4_require([_LT_DECL_SED])dnl
1504 AC_CACHE_CHECK([$1], [$2],
1505 [$2=no
1506 m4_if([$4], , [ac_outfile=conftest.$ac_objext], [ac_outfile=$4])
1507 echo "$lt_simple_compile_test_code" > conftest.$ac_ext
1508 lt_compiler_flag="$3"
1509 # Insert the option either (1) after the last *FLAGS variable, or
1510 # (2) before a word containing "conftest.", or (3) at the end.
1511 # Note that $ac_compile itself does not contain backslashes and begins
1512 # with a dollar sign (not a hyphen), so the echo should work correctly.
1513 # The option is referenced via a variable to avoid confusing sed.
1514 lt_compile=`echo "$ac_compile" | $SED \
1515 -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
1516 -e 's: [[^ ]]*conftest\.: $lt_compiler_flag&:; t' \
1517 -e 's:$: $lt_compiler_flag:'`
1518 (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&AS_MESSAGE_LOG_FD)
1519 (eval "$lt_compile" 2>conftest.err)
1520 ac_status=$?
1521 cat conftest.err >&AS_MESSAGE_LOG_FD
1522 echo "$as_me:$LINENO: \$? = $ac_status" >&AS_MESSAGE_LOG_FD
1523 if (exit $ac_status) && test -s "$ac_outfile"; then
1524 # The compiler can only warn and ignore the option if not recognized
1525 # So say no if there are warnings other than the usual output.
1526 $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp
1527 $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
1528 if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then
1529 $2=yes
1530 fi
1531 fi
1532 $RM conftest*
1533 ])
1534
1535 if test x"[$]$2" = xyes; then
1536 m4_if([$5], , :, [$5])
1537 else
1538 m4_if([$6], , :, [$6])
1539 fi
1540 ])# _LT_COMPILER_OPTION
1541
1542 # Old name:
1543 AU_ALIAS([AC_LIBTOOL_COMPILER_OPTION], [_LT_COMPILER_OPTION])
1544 dnl aclocal-1.4 backwards compatibility:
1545 dnl AC_DEFUN([AC_LIBTOOL_COMPILER_OPTION], [])
1546
1547
1548 # _LT_LINKER_OPTION(MESSAGE, VARIABLE-NAME, FLAGS,
1549 # [ACTION-SUCCESS], [ACTION-FAILURE])
1550 # ----------------------------------------------------
1551 # Check whether the given linker option works
1552 AC_DEFUN([_LT_LINKER_OPTION],
1553 [m4_require([_LT_FILEUTILS_DEFAULTS])dnl
1554 m4_require([_LT_DECL_SED])dnl
1555 AC_CACHE_CHECK([$1], [$2],
1556 [$2=no
1557 save_LDFLAGS="$LDFLAGS"
1558 LDFLAGS="$LDFLAGS $3"
1559 echo "$lt_simple_link_test_code" > conftest.$ac_ext
1560 if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then
1561 # The linker can only warn and ignore the option if not recognized
1562 # So say no if there are warnings
1563 if test -s conftest.err; then
1564 # Append any errors to the config.log.
1565 cat conftest.err 1>&AS_MESSAGE_LOG_FD
1566 $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp
1567 $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
1568 if diff conftest.exp conftest.er2 >/dev/null; then
1569 $2=yes
1570 fi
1571 else
1572 $2=yes
1573 fi
1574 fi
1575 $RM -r conftest*
1576 LDFLAGS="$save_LDFLAGS"
1577 ])
1578
1579 if test x"[$]$2" = xyes; then
1580 m4_if([$4], , :, [$4])
1581 else
1582 m4_if([$5], , :, [$5])
1583 fi
1584 ])# _LT_LINKER_OPTION
1585
1586 # Old name:
1587 AU_ALIAS([AC_LIBTOOL_LINKER_OPTION], [_LT_LINKER_OPTION])
1588 dnl aclocal-1.4 backwards compatibility:
1589 dnl AC_DEFUN([AC_LIBTOOL_LINKER_OPTION], [])
1590
1591
1592 # LT_CMD_MAX_LEN
1593 #---------------
1594 AC_DEFUN([LT_CMD_MAX_LEN],
1595 [AC_REQUIRE([AC_CANONICAL_HOST])dnl
1596 # find the maximum length of command line arguments
1597 AC_MSG_CHECKING([the maximum length of command line arguments])
1598 AC_CACHE_VAL([lt_cv_sys_max_cmd_len], [dnl
1599 i=0
1600 teststring="ABCD"
1601
1602 case $build_os in
1603 msdosdjgpp*)
1604 # On DJGPP, this test can blow up pretty badly due to problems in libc
1605 # (any single argument exceeding 2000 bytes causes a buffer overrun
1606 # during glob expansion). Even if it were fixed, the result of this
1607 # check would be larger than it should be.
1608 lt_cv_sys_max_cmd_len=12288; # 12K is about right
1609 ;;
1610
1611 gnu*)
1612 # Under GNU Hurd, this test is not required because there is
1613 # no limit to the length of command line arguments.
1614 # Libtool will interpret -1 as no limit whatsoever
1615 lt_cv_sys_max_cmd_len=-1;
1616 ;;
1617
1618 cygwin* | mingw* | cegcc*)
1619 # On Win9x/ME, this test blows up -- it succeeds, but takes
1620 # about 5 minutes as the teststring grows exponentially.
1621 # Worse, since 9x/ME are not pre-emptively multitasking,
1622 # you end up with a "frozen" computer, even though with patience
1623 # the test eventually succeeds (with a max line length of 256k).
1624 # Instead, let's just punt: use the minimum linelength reported by
1625 # all of the supported platforms: 8192 (on NT/2K/XP).
1626 lt_cv_sys_max_cmd_len=8192;
1627 ;;
1628
1629 mint*)
1630 # On MiNT this can take a long time and run out of memory.
1631 lt_cv_sys_max_cmd_len=8192;
1632 ;;
1633
1634 amigaos*)
1635 # On AmigaOS with pdksh, this test takes hours, literally.
1636 # So we just punt and use a minimum line length of 8192.
1637 lt_cv_sys_max_cmd_len=8192;
1638 ;;
1639
1640 netbsd* | freebsd* | openbsd* | darwin* | dragonfly*)
1641 # This has been around since 386BSD, at least. Likely further.
1642 if test -x /sbin/sysctl; then
1643 lt_cv_sys_max_cmd_len=`/sbin/sysctl -n kern.argmax`
1644 elif test -x /usr/sbin/sysctl; then
1645 lt_cv_sys_max_cmd_len=`/usr/sbin/sysctl -n kern.argmax`
1646 else
1647 lt_cv_sys_max_cmd_len=65536 # usable default for all BSDs
1648 fi
1649 # And add a safety zone
1650 lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4`
1651 lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3`
1652 ;;
1653
1654 interix*)
1655 # We know the value 262144 and hardcode it with a safety zone (like BSD)
1656 lt_cv_sys_max_cmd_len=196608
1657 ;;
1658
1659 os2*)
1660 # The test takes a long time on OS/2.
1661 lt_cv_sys_max_cmd_len=8192
1662 ;;
1663
1664 osf*)
1665 # Dr. Hans Ekkehard Plesser reports seeing a kernel panic running configure
1666 # due to this test when exec_disable_arg_limit is 1 on Tru64. It is not
1667 # nice to cause kernel panics so lets avoid the loop below.
1668 # First set a reasonable default.
1669 lt_cv_sys_max_cmd_len=16384
1670 #
1671 if test -x /sbin/sysconfig; then
1672 case `/sbin/sysconfig -q proc exec_disable_arg_limit` in
1673 *1*) lt_cv_sys_max_cmd_len=-1 ;;
1674 esac
1675 fi
1676 ;;
1677 sco3.2v5*)
1678 lt_cv_sys_max_cmd_len=102400
1679 ;;
1680 sysv5* | sco5v6* | sysv4.2uw2*)
1681 kargmax=`grep ARG_MAX /etc/conf/cf.d/stune 2>/dev/null`
1682 if test -n "$kargmax"; then
1683 lt_cv_sys_max_cmd_len=`echo $kargmax | sed 's/.*[[ ]]//'`
1684 else
1685 lt_cv_sys_max_cmd_len=32768
1686 fi
1687 ;;
1688 *)
1689 lt_cv_sys_max_cmd_len=`(getconf ARG_MAX) 2> /dev/null`
1690 if test -n "$lt_cv_sys_max_cmd_len"; then
1691 lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4`
1692 lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3`
1693 else
1694 # Make teststring a little bigger before we do anything with it.
1695 # a 1K string should be a reasonable start.
1696 for i in 1 2 3 4 5 6 7 8 ; do
1697 teststring=$teststring$teststring
1698 done
1699 SHELL=${SHELL-${CONFIG_SHELL-/bin/sh}}
1700 # If test is not a shell built-in, we'll probably end up computing a
1701 # maximum length that is only half of the actual maximum length, but
1702 # we can't tell.
1703 while { test "X"`env echo "$teststring$teststring" 2>/dev/null` \
1704 = "X$teststring$teststring"; } >/dev/null 2>&1 &&
1705 test $i != 17 # 1/2 MB should be enough
1706 do
1707 i=`expr $i + 1`
1708 teststring=$teststring$teststring
1709 done
1710 # Only check the string length outside the loop.
1711 lt_cv_sys_max_cmd_len=`expr "X$teststring" : ".*" 2>&1`
1712 teststring=
1713 # Add a significant safety factor because C++ compilers can tack on
1714 # massive amounts of additional arguments before passing them to the
1715 # linker. It appears as though 1/2 is a usable value.
1716 lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 2`
1717 fi
1718 ;;
1719 esac
1720 ])
1721 if test -n $lt_cv_sys_max_cmd_len ; then
1722 AC_MSG_RESULT($lt_cv_sys_max_cmd_len)
1723 else
1724 AC_MSG_RESULT(none)
1725 fi
1726 max_cmd_len=$lt_cv_sys_max_cmd_len
1727 _LT_DECL([], [max_cmd_len], [0],
1728 [What is the maximum length of a command?])
1729 ])# LT_CMD_MAX_LEN
1730
1731 # Old name:
1732 AU_ALIAS([AC_LIBTOOL_SYS_MAX_CMD_LEN], [LT_CMD_MAX_LEN])
1733 dnl aclocal-1.4 backwards compatibility:
1734 dnl AC_DEFUN([AC_LIBTOOL_SYS_MAX_CMD_LEN], [])
1735
1736
1737 # _LT_HEADER_DLFCN
1738 # ----------------
1739 m4_defun([_LT_HEADER_DLFCN],
1740 [AC_CHECK_HEADERS([dlfcn.h], [], [], [AC_INCLUDES_DEFAULT])dnl
1741 ])# _LT_HEADER_DLFCN
1742
1743
1744 # _LT_TRY_DLOPEN_SELF (ACTION-IF-TRUE, ACTION-IF-TRUE-W-USCORE,
1745 # ACTION-IF-FALSE, ACTION-IF-CROSS-COMPILING)
1746 # ----------------------------------------------------------------
1747 m4_defun([_LT_TRY_DLOPEN_SELF],
1748 [m4_require([_LT_HEADER_DLFCN])dnl
1749 if test "$cross_compiling" = yes; then :
1750 [$4]
1751 else
1752 lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
1753 lt_status=$lt_dlunknown
1754 cat > conftest.$ac_ext <<_LT_EOF
1755 [#line $LINENO "configure"
1756 #include "confdefs.h"
1757
1758 #if HAVE_DLFCN_H
1759 #include <dlfcn.h>
1760 #endif
1761
1762 #include <stdio.h>
1763
1764 #ifdef RTLD_GLOBAL
1765 # define LT_DLGLOBAL RTLD_GLOBAL
1766 #else
1767 # ifdef DL_GLOBAL
1768 # define LT_DLGLOBAL DL_GLOBAL
1769 # else
1770 # define LT_DLGLOBAL 0
1771 # endif
1772 #endif
1773
1774 /* We may have to define LT_DLLAZY_OR_NOW in the command line if we
1775 find out it does not work in some platform. */
1776 #ifndef LT_DLLAZY_OR_NOW
1777 # ifdef RTLD_LAZY
1778 # define LT_DLLAZY_OR_NOW RTLD_LAZY
1779 # else
1780 # ifdef DL_LAZY
1781 # define LT_DLLAZY_OR_NOW DL_LAZY
1782 # else
1783 # ifdef RTLD_NOW
1784 # define LT_DLLAZY_OR_NOW RTLD_NOW
1785 # else
1786 # ifdef DL_NOW
1787 # define LT_DLLAZY_OR_NOW DL_NOW
1788 # else
1789 # define LT_DLLAZY_OR_NOW 0
1790 # endif
1791 # endif
1792 # endif
1793 # endif
1794 #endif
1795
1796 /* When -fvisbility=hidden is used, assume the code has been annotated
1797 correspondingly for the symbols needed. */
1798 #if defined(__GNUC__) && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3))
1799 int fnord () __attribute__((visibility("default")));
1800 #endif
1801
1802 int fnord () { return 42; }
1803 int main ()
1804 {
1805 void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW);
1806 int status = $lt_dlunknown;
1807
1808 if (self)
1809 {
1810 if (dlsym (self,"fnord")) status = $lt_dlno_uscore;
1811 else
1812 {
1813 if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore;
1814 else puts (dlerror ());
1815 }
1816 /* dlclose (self); */
1817 }
1818 else
1819 puts (dlerror ());
1820
1821 return status;
1822 }]
1823 _LT_EOF
1824 if AC_TRY_EVAL(ac_link) && test -s conftest${ac_exeext} 2>/dev/null; then
1825 (./conftest; exit; ) >&AS_MESSAGE_LOG_FD 2>/dev/null
1826 lt_status=$?
1827 case x$lt_status in
1828 x$lt_dlno_uscore) $1 ;;
1829 x$lt_dlneed_uscore) $2 ;;
1830 x$lt_dlunknown|x*) $3 ;;
1831 esac
1832 else :
1833 # compilation failed
1834 $3
1835 fi
1836 fi
1837 rm -fr conftest*
1838 ])# _LT_TRY_DLOPEN_SELF
1839
1840
1841 # LT_SYS_DLOPEN_SELF
1842 # ------------------
1843 AC_DEFUN([LT_SYS_DLOPEN_SELF],
1844 [m4_require([_LT_HEADER_DLFCN])dnl
1845 if test "x$enable_dlopen" != xyes; then
1846 enable_dlopen=unknown
1847 enable_dlopen_self=unknown
1848 enable_dlopen_self_static=unknown
1849 else
1850 lt_cv_dlopen=no
1851 lt_cv_dlopen_libs=
1852
1853 case $host_os in
1854 beos*)
1855 lt_cv_dlopen="load_add_on"
1856 lt_cv_dlopen_libs=
1857 lt_cv_dlopen_self=yes
1858 ;;
1859
1860 mingw* | pw32* | cegcc*)
1861 lt_cv_dlopen="LoadLibrary"
1862 lt_cv_dlopen_libs=
1863 ;;
1864
1865 cygwin*)
1866 lt_cv_dlopen="dlopen"
1867 lt_cv_dlopen_libs=
1868 ;;
1869
1870 darwin*)
1871 # if libdl is installed we need to link against it
1872 AC_CHECK_LIB([dl], [dlopen],
1873 [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"],[
1874 lt_cv_dlopen="dyld"
1875 lt_cv_dlopen_libs=
1876 lt_cv_dlopen_self=yes
1877 ])
1878 ;;
1879
1880 *)
1881 AC_CHECK_FUNC([shl_load],
1882 [lt_cv_dlopen="shl_load"],
1883 [AC_CHECK_LIB([dld], [shl_load],
1884 [lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-ldld"],
1885 [AC_CHECK_FUNC([dlopen],
1886 [lt_cv_dlopen="dlopen"],
1887 [AC_CHECK_LIB([dl], [dlopen],
1888 [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"],
1889 [AC_CHECK_LIB([svld], [dlopen],
1890 [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld"],
1891 [AC_CHECK_LIB([dld], [dld_link],
1892 [lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-ldld"])
1893 ])
1894 ])
1895 ])
1896 ])
1897 ])
1898 ;;
1899 esac
1900
1901 if test "x$lt_cv_dlopen" != xno; then
1902 enable_dlopen=yes
1903 else
1904 enable_dlopen=no
1905 fi
1906
1907 case $lt_cv_dlopen in
1908 dlopen)
1909 save_CPPFLAGS="$CPPFLAGS"
1910 test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H"
1911
1912 save_LDFLAGS="$LDFLAGS"
1913 wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\"
1914
1915 save_LIBS="$LIBS"
1916 LIBS="$lt_cv_dlopen_libs $LIBS"
1917
1918 AC_CACHE_CHECK([whether a program can dlopen itself],
1919 lt_cv_dlopen_self, [dnl
1920 _LT_TRY_DLOPEN_SELF(
1921 lt_cv_dlopen_self=yes, lt_cv_dlopen_self=yes,
1922 lt_cv_dlopen_self=no, lt_cv_dlopen_self=cross)
1923 ])
1924
1925 if test "x$lt_cv_dlopen_self" = xyes; then
1926 wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $lt_prog_compiler_static\"
1927 AC_CACHE_CHECK([whether a statically linked program can dlopen itself],
1928 lt_cv_dlopen_self_static, [dnl
1929 _LT_TRY_DLOPEN_SELF(
1930 lt_cv_dlopen_self_static=yes, lt_cv_dlopen_self_static=yes,
1931 lt_cv_dlopen_self_static=no, lt_cv_dlopen_self_static=cross)
1932 ])
1933 fi
1934
1935 CPPFLAGS="$save_CPPFLAGS"
1936 LDFLAGS="$save_LDFLAGS"
1937 LIBS="$save_LIBS"
1938 ;;
1939 esac
1940
1941 case $lt_cv_dlopen_self in
1942 yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;;
1943 *) enable_dlopen_self=unknown ;;
1944 esac
1945
1946 case $lt_cv_dlopen_self_static in
1947 yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;;
1948 *) enable_dlopen_self_static=unknown ;;
1949 esac
1950 fi
1951 _LT_DECL([dlopen_support], [enable_dlopen], [0],
1952 [Whether dlopen is supported])
1953 _LT_DECL([dlopen_self], [enable_dlopen_self], [0],
1954 [Whether dlopen of programs is supported])
1955 _LT_DECL([dlopen_self_static], [enable_dlopen_self_static], [0],
1956 [Whether dlopen of statically linked programs is supported])
1957 ])# LT_SYS_DLOPEN_SELF
1958
1959 # Old name:
1960 AU_ALIAS([AC_LIBTOOL_DLOPEN_SELF], [LT_SYS_DLOPEN_SELF])
1961 dnl aclocal-1.4 backwards compatibility:
1962 dnl AC_DEFUN([AC_LIBTOOL_DLOPEN_SELF], [])
1963
1964
1965 # _LT_COMPILER_C_O([TAGNAME])
1966 # ---------------------------
1967 # Check to see if options -c and -o are simultaneously supported by compiler.
1968 # This macro does not hard code the compiler like AC_PROG_CC_C_O.
1969 m4_defun([_LT_COMPILER_C_O],
1970 [m4_require([_LT_DECL_SED])dnl
1971 m4_require([_LT_FILEUTILS_DEFAULTS])dnl
1972 m4_require([_LT_TAG_COMPILER])dnl
1973 AC_CACHE_CHECK([if $compiler supports -c -o file.$ac_objext],
1974 [_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)],
1975 [_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)=no
1976 $RM -r conftest 2>/dev/null
1977 mkdir conftest
1978 cd conftest
1979 mkdir out
1980 echo "$lt_simple_compile_test_code" > conftest.$ac_ext
1981
1982 lt_compiler_flag="-o out/conftest2.$ac_objext"
1983 # Insert the option either (1) after the last *FLAGS variable, or
1984 # (2) before a word containing "conftest.", or (3) at the end.
1985 # Note that $ac_compile itself does not contain backslashes and begins
1986 # with a dollar sign (not a hyphen), so the echo should work correctly.
1987 lt_compile=`echo "$ac_compile" | $SED \
1988 -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
1989 -e 's: [[^ ]]*conftest\.: $lt_compiler_flag&:; t' \
1990 -e 's:$: $lt_compiler_flag:'`
1991 (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&AS_MESSAGE_LOG_FD)
1992 (eval "$lt_compile" 2>out/conftest.err)
1993 ac_status=$?
1994 cat out/conftest.err >&AS_MESSAGE_LOG_FD
1995 echo "$as_me:$LINENO: \$? = $ac_status" >&AS_MESSAGE_LOG_FD
1996 if (exit $ac_status) && test -s out/conftest2.$ac_objext
1997 then
1998 # The compiler can only warn and ignore the option if not recognized
1999 # So say no if there are warnings
2000 $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp
2001 $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2
2002 if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then
2003 _LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)=yes
2004 fi
2005 fi
2006 chmod u+w . 2>&AS_MESSAGE_LOG_FD
2007 $RM conftest*
2008 # SGI C++ compiler will create directory out/ii_files/ for
2009 # template instantiation
2010 test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files
2011 $RM out/* && rmdir out
2012 cd ..
2013 $RM -r conftest
2014 $RM conftest*
2015 ])
2016 _LT_TAGDECL([compiler_c_o], [lt_cv_prog_compiler_c_o], [1],
2017 [Does compiler simultaneously support -c and -o options?])
2018 ])# _LT_COMPILER_C_O
2019
2020
2021 # _LT_COMPILER_FILE_LOCKS([TAGNAME])
2022 # ----------------------------------
2023 # Check to see if we can do hard links to lock some files if needed
2024 m4_defun([_LT_COMPILER_FILE_LOCKS],
2025 [m4_require([_LT_ENABLE_LOCK])dnl
2026 m4_require([_LT_FILEUTILS_DEFAULTS])dnl
2027 _LT_COMPILER_C_O([$1])
2028
2029 hard_links="nottested"
2030 if test "$_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)" = no && test "$need_locks" != no; then
2031 # do not overwrite the value of need_locks provided by the user
2032 AC_MSG_CHECKING([if we can lock with hard links])
2033 hard_links=yes
2034 $RM conftest*
2035 ln conftest.a conftest.b 2>/dev/null && hard_links=no
2036 touch conftest.a
2037 ln conftest.a conftest.b 2>&5 || hard_links=no
2038 ln conftest.a conftest.b 2>/dev/null && hard_links=no
2039 AC_MSG_RESULT([$hard_links])
2040 if test "$hard_links" = no; then
2041 AC_MSG_WARN([`$CC' does not support `-c -o', so `make -j' may be unsafe])
2042 need_locks=warn
2043 fi
2044 else
2045 need_locks=no
2046 fi
2047 _LT_DECL([], [need_locks], [1], [Must we lock files when doing compilation?])
2048 ])# _LT_COMPILER_FILE_LOCKS
2049
2050
2051 # _LT_CHECK_OBJDIR
2052 # ----------------
2053 m4_defun([_LT_CHECK_OBJDIR],
2054 [AC_CACHE_CHECK([for objdir], [lt_cv_objdir],
2055 [rm -f .libs 2>/dev/null
2056 mkdir .libs 2>/dev/null
2057 if test -d .libs; then
2058 lt_cv_objdir=.libs
2059 else
2060 # MS-DOS does not allow filenames that begin with a dot.
2061 lt_cv_objdir=_libs
2062 fi
2063 rmdir .libs 2>/dev/null])
2064 objdir=$lt_cv_objdir
2065 _LT_DECL([], [objdir], [0],
2066 [The name of the directory that contains temporary libtool files])dnl
2067 m4_pattern_allow([LT_OBJDIR])dnl
2068 AC_DEFINE_UNQUOTED(LT_OBJDIR, "$lt_cv_objdir/",
2069 [Define to the sub-directory in which libtool stores uninstalled libraries.])
2070 ])# _LT_CHECK_OBJDIR
2071
2072
2073 # _LT_LINKER_HARDCODE_LIBPATH([TAGNAME])
2074 # --------------------------------------
2075 # Check hardcoding attributes.
2076 m4_defun([_LT_LINKER_HARDCODE_LIBPATH],
2077 [AC_MSG_CHECKING([how to hardcode library paths into programs])
2078 _LT_TAGVAR(hardcode_action, $1)=
2079 if test -n "$_LT_TAGVAR(hardcode_libdir_flag_spec, $1)" ||
2080 test -n "$_LT_TAGVAR(runpath_var, $1)" ||
2081 test "X$_LT_TAGVAR(hardcode_automatic, $1)" = "Xyes" ; then
2082
2083 # We can hardcode non-existent directories.
2084 if test "$_LT_TAGVAR(hardcode_direct, $1)" != no &&
2085 # If the only mechanism to avoid hardcoding is shlibpath_var, we
2086 # have to relink, otherwise we might link with an installed library
2087 # when we should be linking with a yet-to-be-installed one
2088 ## test "$_LT_TAGVAR(hardcode_shlibpath_var, $1)" != no &&
2089 test "$_LT_TAGVAR(hardcode_minus_L, $1)" != no; then
2090 # Linking always hardcodes the temporary library directory.
2091 _LT_TAGVAR(hardcode_action, $1)=relink
2092 else
2093 # We can link without hardcoding, and we can hardcode nonexisting dirs.
2094 _LT_TAGVAR(hardcode_action, $1)=immediate
2095 fi
2096 else
2097 # We cannot hardcode anything, or else we can only hardcode existing
2098 # directories.
2099 _LT_TAGVAR(hardcode_action, $1)=unsupported
2100 fi
2101 AC_MSG_RESULT([$_LT_TAGVAR(hardcode_action, $1)])
2102
2103 if test "$_LT_TAGVAR(hardcode_action, $1)" = relink ||
2104 test "$_LT_TAGVAR(inherit_rpath, $1)" = yes; then
2105 # Fast installation is not supported
2106 enable_fast_install=no
2107 elif test "$shlibpath_overrides_runpath" = yes ||
2108 test "$enable_shared" = no; then
2109 # Fast installation is not necessary
2110 enable_fast_install=needless
2111 fi
2112 _LT_TAGDECL([], [hardcode_action], [0],
2113 [How to hardcode a shared library path into an executable])
2114 ])# _LT_LINKER_HARDCODE_LIBPATH
2115
2116
2117 # _LT_CMD_STRIPLIB
2118 # ----------------
2119 m4_defun([_LT_CMD_STRIPLIB],
2120 [m4_require([_LT_DECL_EGREP])
2121 striplib=
2122 old_striplib=
2123 AC_MSG_CHECKING([whether stripping libraries is possible])
2124 if test -n "$STRIP" && $STRIP -V 2>&1 | $GREP "GNU strip" >/dev/null; then
2125 test -z "$old_striplib" && old_striplib="$STRIP --strip-debug"
2126 test -z "$striplib" && striplib="$STRIP --strip-unneeded"
2127 AC_MSG_RESULT([yes])
2128 else
2129 # FIXME - insert some real tests, host_os isn't really good enough
2130 case $host_os in
2131 darwin*)
2132 if test -n "$STRIP" ; then
2133 striplib="$STRIP -x"
2134 old_striplib="$STRIP -S"
2135 AC_MSG_RESULT([yes])
2136 else
2137 AC_MSG_RESULT([no])
2138 fi
2139 ;;
2140 *)
2141 AC_MSG_RESULT([no])
2142 ;;
2143 esac
2144 fi
2145 _LT_DECL([], [old_striplib], [1], [Commands to strip libraries])
2146 _LT_DECL([], [striplib], [1])
2147 ])# _LT_CMD_STRIPLIB
2148
2149
2150 # _LT_SYS_DYNAMIC_LINKER([TAG])
2151 # -----------------------------
2152 # PORTME Fill in your ld.so characteristics
2153 m4_defun([_LT_SYS_DYNAMIC_LINKER],
2154 [AC_REQUIRE([AC_CANONICAL_HOST])dnl
2155 m4_require([_LT_DECL_EGREP])dnl
2156 m4_require([_LT_FILEUTILS_DEFAULTS])dnl
2157 m4_require([_LT_DECL_OBJDUMP])dnl
2158 m4_require([_LT_DECL_SED])dnl
2159 m4_require([_LT_CHECK_SHELL_FEATURES])dnl
2160 AC_MSG_CHECKING([dynamic linker characteristics])
2161 m4_if([$1],
2162 [], [
2163 if test "$GCC" = yes; then
2164 case $host_os in
2165 darwin*) lt_awk_arg="/^libraries:/,/LR/" ;;
2166 *) lt_awk_arg="/^libraries:/" ;;
2167 esac
2168 case $host_os in
2169 mingw* | cegcc*) lt_sed_strip_eq="s,=\([[A-Za-z]]:\),\1,g" ;;
2170 *) lt_sed_strip_eq="s,=/,/,g" ;;
2171 esac
2172 lt_search_path_spec=`$CC -print-search-dirs | awk $lt_awk_arg | $SED -e "s/^libraries://" -e $lt_sed_strip_eq`
2173 case $lt_search_path_spec in
2174 *\;*)
2175 # if the path contains ";" then we assume it to be the separator
2176 # otherwise default to the standard path separator (i.e. ":") - it is
2177 # assumed that no part of a normal pathname contains ";" but that should
2178 # okay in the real world where ";" in dirpaths is itself problematic.
2179 lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED 's/;/ /g'`
2180 ;;
2181 *)
2182 lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED "s/$PATH_SEPARATOR/ /g"`
2183 ;;
2184 esac
2185 # Ok, now we have the path, separated by spaces, we can step through it
2186 # and add multilib dir if necessary.
2187 lt_tmp_lt_search_path_spec=
2188 lt_multi_os_dir=`$CC $CPPFLAGS $CFLAGS $LDFLAGS -print-multi-os-directory 2>/dev/null`
2189 for lt_sys_path in $lt_search_path_spec; do
2190 if test -d "$lt_sys_path/$lt_multi_os_dir"; then
2191 lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path/$lt_multi_os_dir"
2192 else
2193 test -d "$lt_sys_path" && \
2194 lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path"
2195 fi
2196 done
2197 lt_search_path_spec=`$ECHO "$lt_tmp_lt_search_path_spec" | awk '
2198 BEGIN {RS=" "; FS="/|\n";} {
2199 lt_foo="";
2200 lt_count=0;
2201 for (lt_i = NF; lt_i > 0; lt_i--) {
2202 if ($lt_i != "" && $lt_i != ".") {
2203 if ($lt_i == "..") {
2204 lt_count++;
2205 } else {
2206 if (lt_count == 0) {
2207 lt_foo="/" $lt_i lt_foo;
2208 } else {
2209 lt_count--;
2210 }
2211 }
2212 }
2213 }
2214 if (lt_foo != "") { lt_freq[[lt_foo]]++; }
2215 if (lt_freq[[lt_foo]] == 1) { print lt_foo; }
2216 }'`
2217 # AWK program above erroneously prepends '/' to C:/dos/paths
2218 # for these hosts.
2219 case $host_os in
2220 mingw* | cegcc*) lt_search_path_spec=`$ECHO "$lt_search_path_spec" |\
2221 $SED 's,/\([[A-Za-z]]:\),\1,g'` ;;
2222 esac
2223 sys_lib_search_path_spec=`$ECHO "$lt_search_path_spec" | $lt_NL2SP`
2224 else
2225 sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib"
2226 fi])
2227 library_names_spec=
2228 libname_spec='lib$name'
2229 soname_spec=
2230 shrext_cmds=".so"
2231 postinstall_cmds=
2232 postuninstall_cmds=
2233 finish_cmds=
2234 finish_eval=
2235 shlibpath_var=
2236 shlibpath_overrides_runpath=unknown
2237 version_type=none
2238 dynamic_linker="$host_os ld.so"
2239 sys_lib_dlsearch_path_spec="/lib /usr/lib"
2240 need_lib_prefix=unknown
2241 hardcode_into_libs=no
2242
2243 # when you set need_version to no, make sure it does not cause -set_version
2244 # flags to be left without arguments
2245 need_version=unknown
2246
2247 case $host_os in
2248 aix3*)
2249 version_type=linux # correct to gnu/linux during the next big refactor
2250 library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a'
2251 shlibpath_var=LIBPATH
2252
2253 # AIX 3 has no versioning support, so we append a major version to the name.
2254 soname_spec='${libname}${release}${shared_ext}$major'
2255 ;;
2256
2257 aix[[4-9]]*)
2258 version_type=linux # correct to gnu/linux during the next big refactor
2259 need_lib_prefix=no
2260 need_version=no
2261 hardcode_into_libs=yes
2262 if test "$host_cpu" = ia64; then
2263 # AIX 5 supports IA64
2264 library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}'
2265 shlibpath_var=LD_LIBRARY_PATH
2266 else
2267 # With GCC up to 2.95.x, collect2 would create an import file
2268 # for dependence libraries. The import file would start with
2269 # the line `#! .'. This would cause the generated library to
2270 # depend on `.', always an invalid library. This was fixed in
2271 # development snapshots of GCC prior to 3.0.
2272 case $host_os in
2273 aix4 | aix4.[[01]] | aix4.[[01]].*)
2274 if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)'
2275 echo ' yes '
2276 echo '#endif'; } | ${CC} -E - | $GREP yes > /dev/null; then
2277 :
2278 else
2279 can_build_shared=no
2280 fi
2281 ;;
2282 esac
2283 # AIX (on Power*) has no versioning support, so currently we can not hardcode correct
2284 # soname into executable. Probably we can add versioning support to
2285 # collect2, so additional links can be useful in future.
2286 if test "$aix_use_runtimelinking" = yes; then
2287 # If using run time linking (on AIX 4.2 or later) use lib<name>.so
2288 # instead of lib<name>.a to let people know that these are not
2289 # typical AIX shared libraries.
2290 library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
2291 else
2292 # We preserve .a as extension for shared libraries through AIX4.2
2293 # and later when we are not doing run time linking.
2294 library_names_spec='${libname}${release}.a $libname.a'
2295 soname_spec='${libname}${release}${shared_ext}$major'
2296 fi
2297 shlibpath_var=LIBPATH
2298 fi
2299 ;;
2300
2301 amigaos*)
2302 case $host_cpu in
2303 powerpc)
2304 # Since July 2007 AmigaOS4 officially supports .so libraries.
2305 # When compiling the executable, add -use-dynld -Lsobjs: to the compileline.
2306 library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
2307 ;;
2308 m68k)
2309 library_names_spec='$libname.ixlibrary $libname.a'
2310 # Create ${libname}_ixlibrary.a entries in /sys/libs.
2311 finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`func_echo_all "$lib" | $SED '\''s%^.*/\([[^/]]*\)\.ixlibrary$%\1%'\''`; test $RM /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done'
2312 ;;
2313 esac
2314 ;;
2315
2316 beos*)
2317 library_names_spec='${libname}${shared_ext}'
2318 dynamic_linker="$host_os ld.so"
2319 shlibpath_var=LIBRARY_PATH
2320 ;;
2321
2322 bsdi[[45]]*)
2323 version_type=linux # correct to gnu/linux during the next big refactor
2324 need_version=no
2325 library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
2326 soname_spec='${libname}${release}${shared_ext}$major'
2327 finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir'
2328 shlibpath_var=LD_LIBRARY_PATH
2329 sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib"
2330 sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib"
2331 # the default ld.so.conf also contains /usr/contrib/lib and
2332 # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow
2333 # libtool to hard-code these into programs
2334 ;;
2335
2336 cygwin* | mingw* | pw32* | cegcc*)
2337 version_type=windows
2338 shrext_cmds=".dll"
2339 need_version=no
2340 need_lib_prefix=no
2341
2342 case $GCC,$cc_basename in
2343 yes,*)
2344 # gcc
2345 library_names_spec='$libname.dll.a'
2346 # DLL is installed to $(libdir)/../bin by postinstall_cmds
2347 postinstall_cmds='base_file=`basename \${file}`~
2348 dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~
2349 dldir=$destdir/`dirname \$dlpath`~
2350 test -d \$dldir || mkdir -p \$dldir~
2351 $install_prog $dir/$dlname \$dldir/$dlname~
2352 chmod a+x \$dldir/$dlname~
2353 if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then
2354 eval '\''$striplib \$dldir/$dlname'\'' || exit \$?;
2355 fi'
2356 postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~
2357 dlpath=$dir/\$dldll~
2358 $RM \$dlpath'
2359 shlibpath_overrides_runpath=yes
2360
2361 case $host_os in
2362 cygwin*)
2363 # Cygwin DLLs use 'cyg' prefix rather than 'lib'
2364 soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}'
2365 m4_if([$1], [],[
2366 sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/lib/w32api"])
2367 ;;
2368 mingw* | cegcc*)
2369 # MinGW DLLs use traditional 'lib' prefix
2370 soname_spec='${libname}`echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}'
2371 ;;
2372 pw32*)
2373 # pw32 DLLs use 'pw' prefix rather than 'lib'
2374 library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}'
2375 ;;
2376 esac
2377 dynamic_linker='Win32 ld.exe'
2378 ;;
2379
2380 *,cl*)
2381 # Native MSVC
2382 libname_spec='$name'
2383 soname_spec='${libname}`echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}'
2384 library_names_spec='${libname}.dll.lib'
2385
2386 case $build_os in
2387 mingw*)
2388 sys_lib_search_path_spec=
2389 lt_save_ifs=$IFS
2390 IFS=';'
2391 for lt_path in $LIB
2392 do
2393 IFS=$lt_save_ifs
2394 # Let DOS variable expansion print the short 8.3 style file name.
2395 lt_path=`cd "$lt_path" 2>/dev/null && cmd //C "for %i in (".") do @echo %~si"`
2396 sys_lib_search_path_spec="$sys_lib_search_path_spec $lt_path"
2397 done
2398 IFS=$lt_save_ifs
2399 # Convert to MSYS style.
2400 sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | sed -e 's|\\\\|/|g' -e 's| \\([[a-zA-Z]]\\):| /\\1|g' -e 's|^ ||'`
2401 ;;
2402 cygwin*)
2403 # Convert to unix form, then to dos form, then back to unix form
2404 # but this time dos style (no spaces!) so that the unix form looks
2405 # like /cygdrive/c/PROGRA~1:/cygdr...
2406 sys_lib_search_path_spec=`cygpath --path --unix "$LIB"`
2407 sys_lib_search_path_spec=`cygpath --path --dos "$sys_lib_search_path_spec" 2>/dev/null`
2408 sys_lib_search_path_spec=`cygpath --path --unix "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"`
2409 ;;
2410 *)
2411 sys_lib_search_path_spec="$LIB"
2412 if $ECHO "$sys_lib_search_path_spec" | [$GREP ';[c-zC-Z]:/' >/dev/null]; then
2413 # It is most probably a Windows format PATH.
2414 sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'`
2415 else
2416 sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"`
2417 fi
2418 # FIXME: find the short name or the path components, as spaces are
2419 # common. (e.g. "Program Files" -> "PROGRA~1")
2420 ;;
2421 esac
2422
2423 # DLL is installed to $(libdir)/../bin by postinstall_cmds
2424 postinstall_cmds='base_file=`basename \${file}`~
2425 dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~
2426 dldir=$destdir/`dirname \$dlpath`~
2427 test -d \$dldir || mkdir -p \$dldir~
2428 $install_prog $dir/$dlname \$dldir/$dlname'
2429 postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~
2430 dlpath=$dir/\$dldll~
2431 $RM \$dlpath'
2432 shlibpath_overrides_runpath=yes
2433 dynamic_linker='Win32 link.exe'
2434 ;;
2435
2436 *)
2437 # Assume MSVC wrapper
2438 library_names_spec='${libname}`echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext} $libname.lib'
2439 dynamic_linker='Win32 ld.exe'
2440 ;;
2441 esac
2442 # FIXME: first we should search . and the directory the executable is in
2443 shlibpath_var=PATH
2444 ;;
2445
2446 darwin* | rhapsody*)
2447 dynamic_linker="$host_os dyld"
2448 version_type=darwin
2449 need_lib_prefix=no
2450 need_version=no
2451 library_names_spec='${libname}${release}${major}$shared_ext ${libname}$shared_ext'
2452 soname_spec='${libname}${release}${major}$shared_ext'
2453 shlibpath_overrides_runpath=yes
2454 shlibpath_var=DYLD_LIBRARY_PATH
2455 shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`'
2456 m4_if([$1], [],[
2457 sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/local/lib"])
2458 sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib'
2459 ;;
2460
2461 dgux*)
2462 version_type=linux # correct to gnu/linux during the next big refactor
2463 need_lib_prefix=no
2464 need_version=no
2465 library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext'
2466 soname_spec='${libname}${release}${shared_ext}$major'
2467 shlibpath_var=LD_LIBRARY_PATH
2468 ;;
2469
2470 freebsd* | dragonfly*)
2471 # DragonFly does not have aout. When/if they implement a new
2472 # versioning mechanism, adjust this.
2473 if test -x /usr/bin/objformat; then
2474 objformat=`/usr/bin/objformat`
2475 else
2476 case $host_os in
2477 freebsd[[23]].*) objformat=aout ;;
2478 *) objformat=elf ;;
2479 esac
2480 fi
2481 version_type=freebsd-$objformat
2482 case $version_type in
2483 freebsd-elf*)
2484 library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}'
2485 need_version=no
2486 need_lib_prefix=no
2487 ;;
2488 freebsd-*)
2489 library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix'
2490 need_version=yes
2491 ;;
2492 esac
2493 shlibpath_var=LD_LIBRARY_PATH
2494 case $host_os in
2495 freebsd2.*)
2496 shlibpath_overrides_runpath=yes
2497 ;;
2498 freebsd3.[[01]]* | freebsdelf3.[[01]]*)
2499 shlibpath_overrides_runpath=yes
2500 hardcode_into_libs=yes
2501 ;;
2502 freebsd3.[[2-9]]* | freebsdelf3.[[2-9]]* | \
2503 freebsd4.[[0-5]] | freebsdelf4.[[0-5]] | freebsd4.1.1 | freebsdelf4.1.1)
2504 shlibpath_overrides_runpath=no
2505 hardcode_into_libs=yes
2506 ;;
2507 *) # from 4.6 on, and DragonFly
2508 shlibpath_overrides_runpath=yes
2509 hardcode_into_libs=yes
2510 ;;
2511 esac
2512 ;;
2513
2514 gnu*)
2515 version_type=linux # correct to gnu/linux during the next big refactor
2516 need_lib_prefix=no
2517 need_version=no
2518 library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}'
2519 soname_spec='${libname}${release}${shared_ext}$major'
2520 shlibpath_var=LD_LIBRARY_PATH
2521 shlibpath_overrides_runpath=no
2522 hardcode_into_libs=yes
2523 ;;
2524
2525 haiku*)
2526 version_type=linux # correct to gnu/linux during the next big refactor
2527 need_lib_prefix=no
2528 need_version=no
2529 dynamic_linker="$host_os runtime_loader"
2530 library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}'
2531 soname_spec='${libname}${release}${shared_ext}$major'
2532 shlibpath_var=LIBRARY_PATH
2533 shlibpath_overrides_runpath=yes
2534 sys_lib_dlsearch_path_spec='/boot/home/config/lib /boot/common/lib /boot/system/lib'
2535 hardcode_into_libs=yes
2536 ;;
2537
2538 hpux9* | hpux10* | hpux11*)
2539 # Give a soname corresponding to the major version so that dld.sl refuses to
2540 # link against other versions.
2541 version_type=sunos
2542 need_lib_prefix=no
2543 need_version=no
2544 case $host_cpu in
2545 ia64*)
2546 shrext_cmds='.so'
2547 hardcode_into_libs=yes
2548 dynamic_linker="$host_os dld.so"
2549 shlibpath_var=LD_LIBRARY_PATH
2550 shlibpath_overrides_runpath=yes # Unless +noenvvar is specified.
2551 library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
2552 soname_spec='${libname}${release}${shared_ext}$major'
2553 if test "X$HPUX_IA64_MODE" = X32; then
2554 sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib"
2555 else
2556 sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64"
2557 fi
2558 sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
2559 ;;
2560 hppa*64*)
2561 shrext_cmds='.sl'
2562 hardcode_into_libs=yes
2563 dynamic_linker="$host_os dld.sl"
2564 shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH
2565 shlibpath_overrides_runpath=yes # Unless +noenvvar is specified.
2566 library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
2567 soname_spec='${libname}${release}${shared_ext}$major'
2568 sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64"
2569 sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
2570 ;;
2571 *)
2572 shrext_cmds='.sl'
2573 dynamic_linker="$host_os dld.sl"
2574 shlibpath_var=SHLIB_PATH
2575 shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH
2576 library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
2577 soname_spec='${libname}${release}${shared_ext}$major'
2578 ;;
2579 esac
2580 # HP-UX runs *really* slowly unless shared libraries are mode 555, ...
2581 postinstall_cmds='chmod 555 $lib'
2582 # or fails outright, so override atomically:
2583 install_override_mode=555
2584 ;;
2585
2586 interix[[3-9]]*)
2587 version_type=linux # correct to gnu/linux during the next big refactor
2588 need_lib_prefix=no
2589 need_version=no
2590 library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
2591 soname_spec='${libname}${release}${shared_ext}$major'
2592 dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)'
2593 shlibpath_var=LD_LIBRARY_PATH
2594 shlibpath_overrides_runpath=no
2595 hardcode_into_libs=yes
2596 ;;
2597
2598 irix5* | irix6* | nonstopux*)
2599 case $host_os in
2600 nonstopux*) version_type=nonstopux ;;
2601 *)
2602 if test "$lt_cv_prog_gnu_ld" = yes; then
2603 version_type=linux # correct to gnu/linux during the next big refactor
2604 else
2605 version_type=irix
2606 fi ;;
2607 esac
2608 need_lib_prefix=no
2609 need_version=no
2610 soname_spec='${libname}${release}${shared_ext}$major'
2611 library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}'
2612 case $host_os in
2613 irix5* | nonstopux*)
2614 libsuff= shlibsuff=
2615 ;;
2616 *)
2617 case $LD in # libtool.m4 will add one of these switches to LD
2618 *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ")
2619 libsuff= shlibsuff= libmagic=32-bit;;
2620 *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ")
2621 libsuff=32 shlibsuff=N32 libmagic=N32;;
2622 *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ")
2623 libsuff=64 shlibsuff=64 libmagic=64-bit;;
2624 *) libsuff= shlibsuff= libmagic=never-match;;
2625 esac
2626 ;;
2627 esac
2628 shlibpath_var=LD_LIBRARY${shlibsuff}_PATH
2629 shlibpath_overrides_runpath=no
2630 sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}"
2631 sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}"
2632 hardcode_into_libs=yes
2633 ;;
2634
2635 # No shared lib support for Linux oldld, aout, or coff.
2636 linux*oldld* | linux*aout* | linux*coff*)
2637 dynamic_linker=no
2638 ;;
2639
2640 # This must be glibc/ELF.
2641 linux* | k*bsd*-gnu | kopensolaris*-gnu)
2642 version_type=linux # correct to gnu/linux during the next big refactor
2643 need_lib_prefix=no
2644 need_version=no
2645 library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
2646 soname_spec='${libname}${release}${shared_ext}$major'
2647 finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir'
2648 shlibpath_var=LD_LIBRARY_PATH
2649 shlibpath_overrides_runpath=no
2650
2651 # Some binutils ld are patched to set DT_RUNPATH
2652 AC_CACHE_VAL([lt_cv_shlibpath_overrides_runpath],
2653 [lt_cv_shlibpath_overrides_runpath=no
2654 save_LDFLAGS=$LDFLAGS
2655 save_libdir=$libdir
2656 eval "libdir=/foo; wl=\"$_LT_TAGVAR(lt_prog_compiler_wl, $1)\"; \
2657 LDFLAGS=\"\$LDFLAGS $_LT_TAGVAR(hardcode_libdir_flag_spec, $1)\""
2658 AC_LINK_IFELSE([AC_LANG_PROGRAM([],[])],
2659 [AS_IF([ ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null],
2660 [lt_cv_shlibpath_overrides_runpath=yes])])
2661 LDFLAGS=$save_LDFLAGS
2662 libdir=$save_libdir
2663 ])
2664 shlibpath_overrides_runpath=$lt_cv_shlibpath_overrides_runpath
2665
2666 # This implies no fast_install, which is unacceptable.
2667 # Some rework will be needed to allow for fast_install
2668 # before this can be enabled.
2669 hardcode_into_libs=yes
2670
2671 # Append ld.so.conf contents to the search path
2672 if test -f /etc/ld.so.conf; then
2673 lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \[$]2)); skip = 1; } { if (!skip) print \[$]0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[ ]*hwcap[ ]/d;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;s/"//g;/^$/d' | tr '\n' ' '`
2674 sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra"
2675 fi
2676
2677 # We used to test for /lib/ld.so.1 and disable shared libraries on
2678 # powerpc, because MkLinux only supported shared libraries with the
2679 # GNU dynamic linker. Since this was broken with cross compilers,
2680 # most powerpc-linux boxes support dynamic linking these days and
2681 # people can always --disable-shared, the test was removed, and we
2682 # assume the GNU/Linux dynamic linker is in use.
2683 dynamic_linker='GNU/Linux ld.so'
2684 ;;
2685
2686 netbsd*)
2687 version_type=sunos
2688 need_lib_prefix=no
2689 need_version=no
2690 if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then
2691 library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
2692 finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
2693 dynamic_linker='NetBSD (a.out) ld.so'
2694 else
2695 library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
2696 soname_spec='${libname}${release}${shared_ext}$major'
2697 dynamic_linker='NetBSD ld.elf_so'
2698 fi
2699 shlibpath_var=LD_LIBRARY_PATH
2700 shlibpath_overrides_runpath=yes
2701 hardcode_into_libs=yes
2702 ;;
2703
2704 newsos6)
2705 version_type=linux # correct to gnu/linux during the next big refactor
2706 library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
2707 shlibpath_var=LD_LIBRARY_PATH
2708 shlibpath_overrides_runpath=yes
2709 ;;
2710
2711 *nto* | *qnx*)
2712 version_type=qnx
2713 need_lib_prefix=no
2714 need_version=no
2715 library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
2716 soname_spec='${libname}${release}${shared_ext}$major'
2717 shlibpath_var=LD_LIBRARY_PATH
2718 shlibpath_overrides_runpath=no
2719 hardcode_into_libs=yes
2720 dynamic_linker='ldqnx.so'
2721 ;;
2722
2723 openbsd*)
2724 version_type=sunos
2725 sys_lib_dlsearch_path_spec="/usr/lib"
2726 need_lib_prefix=no
2727 # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs.
2728 case $host_os in
2729 openbsd3.3 | openbsd3.3.*) need_version=yes ;;
2730 *) need_version=no ;;
2731 esac
2732 library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
2733 finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
2734 shlibpath_var=LD_LIBRARY_PATH
2735 if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
2736 case $host_os in
2737 openbsd2.[[89]] | openbsd2.[[89]].*)
2738 shlibpath_overrides_runpath=no
2739 ;;
2740 *)
2741 shlibpath_overrides_runpath=yes
2742 ;;
2743 esac
2744 else
2745 shlibpath_overrides_runpath=yes
2746 fi
2747 ;;
2748
2749 os2*)
2750 libname_spec='$name'
2751 shrext_cmds=".dll"
2752 need_lib_prefix=no
2753 library_names_spec='$libname${shared_ext} $libname.a'
2754 dynamic_linker='OS/2 ld.exe'
2755 shlibpath_var=LIBPATH
2756 ;;
2757
2758 osf3* | osf4* | osf5*)
2759 version_type=osf
2760 need_lib_prefix=no
2761 need_version=no
2762 soname_spec='${libname}${release}${shared_ext}$major'
2763 library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
2764 shlibpath_var=LD_LIBRARY_PATH
2765 sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib"
2766 sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec"
2767 ;;
2768
2769 rdos*)
2770 dynamic_linker=no
2771 ;;
2772
2773 solaris*)
2774 version_type=linux # correct to gnu/linux during the next big refactor
2775 need_lib_prefix=no
2776 need_version=no
2777 library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
2778 soname_spec='${libname}${release}${shared_ext}$major'
2779 shlibpath_var=LD_LIBRARY_PATH
2780 shlibpath_overrides_runpath=yes
2781 hardcode_into_libs=yes
2782 # ldd complains unless libraries are executable
2783 postinstall_cmds='chmod +x $lib'
2784 ;;
2785
2786 sunos4*)
2787 version_type=sunos
2788 library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
2789 finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir'
2790 shlibpath_var=LD_LIBRARY_PATH
2791 shlibpath_overrides_runpath=yes
2792 if test "$with_gnu_ld" = yes; then
2793 need_lib_prefix=no
2794 fi
2795 need_version=yes
2796 ;;
2797
2798 sysv4 | sysv4.3*)
2799 version_type=linux # correct to gnu/linux during the next big refactor
2800 library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
2801 soname_spec='${libname}${release}${shared_ext}$major'
2802 shlibpath_var=LD_LIBRARY_PATH
2803 case $host_vendor in
2804 sni)
2805 shlibpath_overrides_runpath=no
2806 need_lib_prefix=no
2807 runpath_var=LD_RUN_PATH
2808 ;;
2809 siemens)
2810 need_lib_prefix=no
2811 ;;
2812 motorola)
2813 need_lib_prefix=no
2814 need_version=no
2815 shlibpath_overrides_runpath=no
2816 sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib'
2817 ;;
2818 esac
2819 ;;
2820
2821 sysv4*MP*)
2822 if test -d /usr/nec ;then
2823 version_type=linux # correct to gnu/linux during the next big refactor
2824 library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}'
2825 soname_spec='$libname${shared_ext}.$major'
2826 shlibpath_var=LD_LIBRARY_PATH
2827 fi
2828 ;;
2829
2830 sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*)
2831 version_type=freebsd-elf
2832 need_lib_prefix=no
2833 need_version=no
2834 library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}'
2835 soname_spec='${libname}${release}${shared_ext}$major'
2836 shlibpath_var=LD_LIBRARY_PATH
2837 shlibpath_overrides_runpath=yes
2838 hardcode_into_libs=yes
2839 if test "$with_gnu_ld" = yes; then
2840 sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib'
2841 else
2842 sys_lib_search_path_spec='/usr/ccs/lib /usr/lib'
2843 case $host_os in
2844 sco3.2v5*)
2845 sys_lib_search_path_spec="$sys_lib_search_path_spec /lib"
2846 ;;
2847 esac
2848 fi
2849 sys_lib_dlsearch_path_spec='/usr/lib'
2850 ;;
2851
2852 tpf*)
2853 # TPF is a cross-target only. Preferred cross-host = GNU/Linux.
2854 version_type=linux # correct to gnu/linux during the next big refactor
2855 need_lib_prefix=no
2856 need_version=no
2857 library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
2858 shlibpath_var=LD_LIBRARY_PATH
2859 shlibpath_overrides_runpath=no
2860 hardcode_into_libs=yes
2861 ;;
2862
2863 uts4*)
2864 version_type=linux # correct to gnu/linux during the next big refactor
2865 library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
2866 soname_spec='${libname}${release}${shared_ext}$major'
2867 shlibpath_var=LD_LIBRARY_PATH
2868 ;;
2869
2870 *)
2871 dynamic_linker=no
2872 ;;
2873 esac
2874 AC_MSG_RESULT([$dynamic_linker])
2875 test "$dynamic_linker" = no && can_build_shared=no
2876
2877 variables_saved_for_relink="PATH $shlibpath_var $runpath_var"
2878 if test "$GCC" = yes; then
2879 variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH"
2880 fi
2881
2882 if test "${lt_cv_sys_lib_search_path_spec+set}" = set; then
2883 sys_lib_search_path_spec="$lt_cv_sys_lib_search_path_spec"
2884 fi
2885 if test "${lt_cv_sys_lib_dlsearch_path_spec+set}" = set; then
2886 sys_lib_dlsearch_path_spec="$lt_cv_sys_lib_dlsearch_path_spec"
2887 fi
2888
2889 _LT_DECL([], [variables_saved_for_relink], [1],
2890 [Variables whose values should be saved in libtool wrapper scripts and
2891 restored at link time])
2892 _LT_DECL([], [need_lib_prefix], [0],
2893 [Do we need the "lib" prefix for modules?])
2894 _LT_DECL([], [need_version], [0], [Do we need a version for libraries?])
2895 _LT_DECL([], [version_type], [0], [Library versioning type])
2896 _LT_DECL([], [runpath_var], [0], [Shared library runtime path variable])
2897 _LT_DECL([], [shlibpath_var], [0],[Shared library path variable])
2898 _LT_DECL([], [shlibpath_overrides_runpath], [0],
2899 [Is shlibpath searched before the hard-coded library search path?])
2900 _LT_DECL([], [libname_spec], [1], [Format of library name prefix])
2901 _LT_DECL([], [library_names_spec], [1],
2902 [[List of archive names. First name is the real one, the rest are links.
2903 The last name is the one that the linker finds with -lNAME]])
2904 _LT_DECL([], [soname_spec], [1],
2905 [[The coded name of the library, if different from the real name]])
2906 _LT_DECL([], [install_override_mode], [1],
2907 [Permission mode override for installation of shared libraries])
2908 _LT_DECL([], [postinstall_cmds], [2],
2909 [Command to use after installation of a shared archive])
2910 _LT_DECL([], [postuninstall_cmds], [2],
2911 [Command to use after uninstallation of a shared archive])
2912 _LT_DECL([], [finish_cmds], [2],
2913 [Commands used to finish a libtool library installation in a directory])
2914 _LT_DECL([], [finish_eval], [1],
2915 [[As "finish_cmds", except a single script fragment to be evaled but
2916 not shown]])
2917 _LT_DECL([], [hardcode_into_libs], [0],
2918 [Whether we should hardcode library paths into libraries])
2919 _LT_DECL([], [sys_lib_search_path_spec], [2],
2920 [Compile-time system search path for libraries])
2921 _LT_DECL([], [sys_lib_dlsearch_path_spec], [2],
2922 [Run-time system search path for libraries])
2923 ])# _LT_SYS_DYNAMIC_LINKER
2924
2925
2926 # _LT_PATH_TOOL_PREFIX(TOOL)
2927 # --------------------------
2928 # find a file program which can recognize shared library
2929 AC_DEFUN([_LT_PATH_TOOL_PREFIX],
2930 [m4_require([_LT_DECL_EGREP])dnl
2931 AC_MSG_CHECKING([for $1])
2932 AC_CACHE_VAL(lt_cv_path_MAGIC_CMD,
2933 [case $MAGIC_CMD in
2934 [[\\/*] | ?:[\\/]*])
2935 lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path.
2936 ;;
2937 *)
2938 lt_save_MAGIC_CMD="$MAGIC_CMD"
2939 lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
2940 dnl $ac_dummy forces splitting on constant user-supplied paths.
2941 dnl POSIX.2 word splitting is done only on the output of word expansions,
2942 dnl not every word. This closes a longstanding sh security hole.
2943 ac_dummy="m4_if([$2], , $PATH, [$2])"
2944 for ac_dir in $ac_dummy; do
2945 IFS="$lt_save_ifs"
2946 test -z "$ac_dir" && ac_dir=.
2947 if test -f $ac_dir/$1; then
2948 lt_cv_path_MAGIC_CMD="$ac_dir/$1"
2949 if test -n "$file_magic_test_file"; then
2950 case $deplibs_check_method in
2951 "file_magic "*)
2952 file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"`
2953 MAGIC_CMD="$lt_cv_path_MAGIC_CMD"
2954 if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null |
2955 $EGREP "$file_magic_regex" > /dev/null; then
2956 :
2957 else
2958 cat <<_LT_EOF 1>&2
2959
2960 *** Warning: the command libtool uses to detect shared libraries,
2961 *** $file_magic_cmd, produces output that libtool cannot recognize.
2962 *** The result is that libtool may fail to recognize shared libraries
2963 *** as such. This will affect the creation of libtool libraries that
2964 *** depend on shared libraries, but programs linked with such libtool
2965 *** libraries will work regardless of this problem. Nevertheless, you
2966 *** may want to report the problem to your system manager and/or to
2967 *** bug-libtool@gnu.org
2968
2969 _LT_EOF
2970 fi ;;
2971 esac
2972 fi
2973 break
2974 fi
2975 done
2976 IFS="$lt_save_ifs"
2977 MAGIC_CMD="$lt_save_MAGIC_CMD"
2978 ;;
2979 esac])
2980 MAGIC_CMD="$lt_cv_path_MAGIC_CMD"
2981 if test -n "$MAGIC_CMD"; then
2982 AC_MSG_RESULT($MAGIC_CMD)
2983 else
2984 AC_MSG_RESULT(no)
2985 fi
2986 _LT_DECL([], [MAGIC_CMD], [0],
2987 [Used to examine libraries when file_magic_cmd begins with "file"])dnl
2988 ])# _LT_PATH_TOOL_PREFIX
2989
2990 # Old name:
2991 AU_ALIAS([AC_PATH_TOOL_PREFIX], [_LT_PATH_TOOL_PREFIX])
2992 dnl aclocal-1.4 backwards compatibility:
2993 dnl AC_DEFUN([AC_PATH_TOOL_PREFIX], [])
2994
2995
2996 # _LT_PATH_MAGIC
2997 # --------------
2998 # find a file program which can recognize a shared library
2999 m4_defun([_LT_PATH_MAGIC],
3000 [_LT_PATH_TOOL_PREFIX(${ac_tool_prefix}file, /usr/bin$PATH_SEPARATOR$PATH)
3001 if test -z "$lt_cv_path_MAGIC_CMD"; then
3002 if test -n "$ac_tool_prefix"; then
3003 _LT_PATH_TOOL_PREFIX(file, /usr/bin$PATH_SEPARATOR$PATH)
3004 else
3005 MAGIC_CMD=:
3006 fi
3007 fi
3008 ])# _LT_PATH_MAGIC
3009
3010
3011 # LT_PATH_LD
3012 # ----------
3013 # find the pathname to the GNU or non-GNU linker
3014 AC_DEFUN([LT_PATH_LD],
3015 [AC_REQUIRE([AC_PROG_CC])dnl
3016 AC_REQUIRE([AC_CANONICAL_HOST])dnl
3017 AC_REQUIRE([AC_CANONICAL_BUILD])dnl
3018 m4_require([_LT_DECL_SED])dnl
3019 m4_require([_LT_DECL_EGREP])dnl
3020 m4_require([_LT_PROG_ECHO_BACKSLASH])dnl
3021
3022 AC_ARG_WITH([gnu-ld],
3023 [AS_HELP_STRING([--with-gnu-ld],
3024 [assume the C compiler uses GNU ld @<:@default=no@:>@])],
3025 [test "$withval" = no || with_gnu_ld=yes],
3026 [with_gnu_ld=no])dnl
3027
3028 ac_prog=ld
3029 if test "$GCC" = yes; then
3030 # Check if gcc -print-prog-name=ld gives a path.
3031 AC_MSG_CHECKING([for ld used by $CC])
3032 case $host in
3033 *-*-mingw*)
3034 # gcc leaves a trailing carriage return which upsets mingw
3035 ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;;
3036 *)
3037 ac_prog=`($CC -print-prog-name=ld) 2>&5` ;;
3038 esac
3039 case $ac_prog in
3040 # Accept absolute paths.
3041 [[\\/]]* | ?:[[\\/]]*)
3042 re_direlt='/[[^/]][[^/]]*/\.\./'
3043 # Canonicalize the pathname of ld
3044 ac_prog=`$ECHO "$ac_prog"| $SED 's%\\\\%/%g'`
3045 while $ECHO "$ac_prog" | $GREP "$re_direlt" > /dev/null 2>&1; do
3046 ac_prog=`$ECHO $ac_prog| $SED "s%$re_direlt%/%"`
3047 done
3048 test -z "$LD" && LD="$ac_prog"
3049 ;;
3050 "")
3051 # If it fails, then pretend we aren't using GCC.
3052 ac_prog=ld
3053 ;;
3054 *)
3055 # If it is relative, then search for the first ld in PATH.
3056 with_gnu_ld=unknown
3057 ;;
3058 esac
3059 elif test "$with_gnu_ld" = yes; then
3060 AC_MSG_CHECKING([for GNU ld])
3061 else
3062 AC_MSG_CHECKING([for non-GNU ld])
3063 fi
3064 AC_CACHE_VAL(lt_cv_path_LD,
3065 [if test -z "$LD"; then
3066 lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
3067 for ac_dir in $PATH; do
3068 IFS="$lt_save_ifs"
3069 test -z "$ac_dir" && ac_dir=.
3070 if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then
3071 lt_cv_path_LD="$ac_dir/$ac_prog"
3072 # Check to see if the program is GNU ld. I'd rather use --version,
3073 # but apparently some variants of GNU ld only accept -v.
3074 # Break only if it was the GNU/non-GNU ld that we prefer.
3075 case `"$lt_cv_path_LD" -v 2>&1 </dev/null` in
3076 *GNU* | *'with BFD'*)
3077 test "$with_gnu_ld" != no && break
3078 ;;
3079 *)
3080 test "$with_gnu_ld" != yes && break
3081 ;;
3082 esac
3083 fi
3084 done
3085 IFS="$lt_save_ifs"
3086 else
3087 lt_cv_path_LD="$LD" # Let the user override the test with a path.
3088 fi])
3089 LD="$lt_cv_path_LD"
3090 if test -n "$LD"; then
3091 AC_MSG_RESULT($LD)
3092 else
3093 AC_MSG_RESULT(no)
3094 fi
3095 test -z "$LD" && AC_MSG_ERROR([no acceptable ld found in \$PATH])
3096 _LT_PATH_LD_GNU
3097 AC_SUBST([LD])
3098
3099 _LT_TAGDECL([], [LD], [1], [The linker used to build libraries])
3100 ])# LT_PATH_LD
3101
3102 # Old names:
3103 AU_ALIAS([AM_PROG_LD], [LT_PATH_LD])
3104 AU_ALIAS([AC_PROG_LD], [LT_PATH_LD])
3105 dnl aclocal-1.4 backwards compatibility:
3106 dnl AC_DEFUN([AM_PROG_LD], [])
3107 dnl AC_DEFUN([AC_PROG_LD], [])
3108
3109
3110 # _LT_PATH_LD_GNU
3111 #- --------------
3112 m4_defun([_LT_PATH_LD_GNU],
3113 [AC_CACHE_CHECK([if the linker ($LD) is GNU ld], lt_cv_prog_gnu_ld,
3114 [# I'd rather use --version here, but apparently some GNU lds only accept -v.
3115 case `$LD -v 2>&1 </dev/null` in
3116 *GNU* | *'with BFD'*)
3117 lt_cv_prog_gnu_ld=yes
3118 ;;
3119 *)
3120 lt_cv_prog_gnu_ld=no
3121 ;;
3122 esac])
3123 with_gnu_ld=$lt_cv_prog_gnu_ld
3124 ])# _LT_PATH_LD_GNU
3125
3126
3127 # _LT_CMD_RELOAD
3128 # --------------
3129 # find reload flag for linker
3130 # -- PORTME Some linkers may need a different reload flag.
3131 m4_defun([_LT_CMD_RELOAD],
3132 [AC_CACHE_CHECK([for $LD option to reload object files],
3133 lt_cv_ld_reload_flag,
3134 [lt_cv_ld_reload_flag='-r'])
3135 reload_flag=$lt_cv_ld_reload_flag
3136 case $reload_flag in
3137 "" | " "*) ;;
3138 *) reload_flag=" $reload_flag" ;;
3139 esac
3140 reload_cmds='$LD$reload_flag -o $output$reload_objs'
3141 case $host_os in
3142 cygwin* | mingw* | pw32* | cegcc*)
3143 if test "$GCC" != yes; then
3144 reload_cmds=false
3145 fi
3146 ;;
3147 darwin*)
3148 if test "$GCC" = yes; then
3149 reload_cmds='$LTCC $LTCFLAGS -nostdlib ${wl}-r -o $output$reload_objs'
3150 else
3151 reload_cmds='$LD$reload_flag -o $output$reload_objs'
3152 fi
3153 ;;
3154 esac
3155 _LT_TAGDECL([], [reload_flag], [1], [How to create reloadable object files])dnl
3156 _LT_TAGDECL([], [reload_cmds], [2])dnl
3157 ])# _LT_CMD_RELOAD
3158
3159
3160 # _LT_CHECK_MAGIC_METHOD
3161 # ----------------------
3162 # how to check for library dependencies
3163 # -- PORTME fill in with the dynamic library characteristics
3164 m4_defun([_LT_CHECK_MAGIC_METHOD],
3165 [m4_require([_LT_DECL_EGREP])
3166 m4_require([_LT_DECL_OBJDUMP])
3167 AC_CACHE_CHECK([how to recognize dependent libraries],
3168 lt_cv_deplibs_check_method,
3169 [lt_cv_file_magic_cmd='$MAGIC_CMD'
3170 lt_cv_file_magic_test_file=
3171 lt_cv_deplibs_check_method='unknown'
3172 # Need to set the preceding variable on all platforms that support
3173 # interlibrary dependencies.
3174 # 'none' -- dependencies not supported.
3175 # `unknown' -- same as none, but documents that we really don't know.
3176 # 'pass_all' -- all dependencies passed with no checks.
3177 # 'test_compile' -- check by making test program.
3178 # 'file_magic [[regex]]' -- check by looking for files in library path
3179 # which responds to the $file_magic_cmd with a given extended regex.
3180 # If you have `file' or equivalent on your system and you're not sure
3181 # whether `pass_all' will *always* work, you probably want this one.
3182
3183 case $host_os in
3184 aix[[4-9]]*)
3185 lt_cv_deplibs_check_method=pass_all
3186 ;;
3187
3188 beos*)
3189 lt_cv_deplibs_check_method=pass_all
3190 ;;
3191
3192 bsdi[[45]]*)
3193 lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (shared object|dynamic lib)'
3194 lt_cv_file_magic_cmd='/usr/bin/file -L'
3195 lt_cv_file_magic_test_file=/shlib/libc.so
3196 ;;
3197
3198 cygwin*)
3199 # func_win32_libid is a shell function defined in ltmain.sh
3200 lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL'
3201 lt_cv_file_magic_cmd='func_win32_libid'
3202 ;;
3203
3204 mingw* | pw32*)
3205 # Base MSYS/MinGW do not provide the 'file' command needed by
3206 # func_win32_libid shell function, so use a weaker test based on 'objdump',
3207 # unless we find 'file', for example because we are cross-compiling.
3208 # func_win32_libid assumes BSD nm, so disallow it if using MS dumpbin.
3209 if ( test "$lt_cv_nm_interface" = "BSD nm" && file / ) >/dev/null 2>&1; then
3210 lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL'
3211 lt_cv_file_magic_cmd='func_win32_libid'
3212 else
3213 # Keep this pattern in sync with the one in func_win32_libid.
3214 lt_cv_deplibs_check_method='file_magic file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64)'
3215 lt_cv_file_magic_cmd='$OBJDUMP -f'
3216 fi
3217 ;;
3218
3219 cegcc*)
3220 # use the weaker test based on 'objdump'. See mingw*.
3221 lt_cv_deplibs_check_method='file_magic file format pe-arm-.*little(.*architecture: arm)?'
3222 lt_cv_file_magic_cmd='$OBJDUMP -f'
3223 ;;
3224
3225 darwin* | rhapsody*)
3226 lt_cv_deplibs_check_method=pass_all
3227 ;;
3228
3229 freebsd* | dragonfly*)
3230 if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then
3231 case $host_cpu in
3232 i*86 )
3233 # Not sure whether the presence of OpenBSD here was a mistake.
3234 # Let's accept both of them until this is cleared up.
3235 lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD|DragonFly)/i[[3-9]]86 (compact )?demand paged shared library'
3236 lt_cv_file_magic_cmd=/usr/bin/file
3237 lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*`
3238 ;;
3239 esac
3240 else
3241 lt_cv_deplibs_check_method=pass_all
3242 fi
3243 ;;
3244
3245 gnu*)
3246 lt_cv_deplibs_check_method=pass_all
3247 ;;
3248
3249 haiku*)
3250 lt_cv_deplibs_check_method=pass_all
3251 ;;
3252
3253 hpux10.20* | hpux11*)
3254 lt_cv_file_magic_cmd=/usr/bin/file
3255 case $host_cpu in
3256 ia64*)
3257 lt_cv_deplibs_check_method='file_magic (s[[0-9]][[0-9]][[0-9]]|ELF-[[0-9]][[0-9]]) shared object file - IA64'
3258 lt_cv_file_magic_test_file=/usr/lib/hpux32/libc.so
3259 ;;
3260 hppa*64*)
3261 [lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF[ -][0-9][0-9])(-bit)?( [LM]SB)? shared object( file)?[, -]* PA-RISC [0-9]\.[0-9]']
3262 lt_cv_file_magic_test_file=/usr/lib/pa20_64/libc.sl
3263 ;;
3264 *)
3265 lt_cv_deplibs_check_method='file_magic (s[[0-9]][[0-9]][[0-9]]|PA-RISC[[0-9]]\.[[0-9]]) shared library'
3266 lt_cv_file_magic_test_file=/usr/lib/libc.sl
3267 ;;
3268 esac
3269 ;;
3270
3271 interix[[3-9]]*)
3272 # PIC code is broken on Interix 3.x, that's why |\.a not |_pic\.a here
3273 lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so|\.a)$'
3274 ;;
3275
3276 irix5* | irix6* | nonstopux*)
3277 case $LD in
3278 *-32|*"-32 ") libmagic=32-bit;;
3279 *-n32|*"-n32 ") libmagic=N32;;
3280 *-64|*"-64 ") libmagic=64-bit;;
3281 *) libmagic=never-match;;
3282 esac
3283 lt_cv_deplibs_check_method=pass_all
3284 ;;
3285
3286 # This must be glibc/ELF.
3287 linux* | k*bsd*-gnu | kopensolaris*-gnu)
3288 lt_cv_deplibs_check_method=pass_all
3289 ;;
3290
3291 netbsd*)
3292 if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then
3293 lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|_pic\.a)$'
3294 else
3295 lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so|_pic\.a)$'
3296 fi
3297 ;;
3298
3299 newos6*)
3300 lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (executable|dynamic lib)'
3301 lt_cv_file_magic_cmd=/usr/bin/file
3302 lt_cv_file_magic_test_file=/usr/lib/libnls.so
3303 ;;
3304
3305 *nto* | *qnx*)
3306 lt_cv_deplibs_check_method=pass_all
3307 ;;
3308
3309 openbsd*)
3310 if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
3311 lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|\.so|_pic\.a)$'
3312 else
3313 lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|_pic\.a)$'
3314 fi
3315 ;;
3316
3317 osf3* | osf4* | osf5*)
3318 lt_cv_deplibs_check_method=pass_all
3319 ;;
3320
3321 rdos*)
3322 lt_cv_deplibs_check_method=pass_all
3323 ;;
3324
3325 solaris*)
3326 lt_cv_deplibs_check_method=pass_all
3327 ;;
3328
3329 sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*)
3330 lt_cv_deplibs_check_method=pass_all
3331 ;;
3332
3333 sysv4 | sysv4.3*)
3334 case $host_vendor in
3335 motorola)
3336 lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (shared object|dynamic lib) M[[0-9]][[0-9]]* Version [[0-9]]'
3337 lt_cv_file_magic_test_file=`echo /usr/lib/libc.so*`
3338 ;;
3339 ncr)
3340 lt_cv_deplibs_check_method=pass_all
3341 ;;
3342 sequent)
3343 lt_cv_file_magic_cmd='/bin/file'
3344 lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB (shared object|dynamic lib )'
3345 ;;
3346 sni)
3347 lt_cv_file_magic_cmd='/bin/file'
3348 lt_cv_deplibs_check_method="file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB dynamic lib"
3349 lt_cv_file_magic_test_file=/lib/libc.so
3350 ;;
3351 siemens)
3352 lt_cv_deplibs_check_method=pass_all
3353 ;;
3354 pc)
3355 lt_cv_deplibs_check_method=pass_all
3356 ;;
3357 esac
3358 ;;
3359
3360 tpf*)
3361 lt_cv_deplibs_check_method=pass_all
3362 ;;
3363 esac
3364 ])
3365
3366 file_magic_glob=
3367 want_nocaseglob=no
3368 if test "$build" = "$host"; then
3369 case $host_os in
3370 mingw* | pw32*)
3371 if ( shopt | grep nocaseglob ) >/dev/null 2>&1; then
3372 want_nocaseglob=yes
3373 else
3374 file_magic_glob=`echo aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ | $SED -e "s/\(..\)/s\/[[\1]]\/[[\1]]\/g;/g"`
3375 fi
3376 ;;
3377 esac
3378 fi
3379
3380 file_magic_cmd=$lt_cv_file_magic_cmd
3381 deplibs_check_method=$lt_cv_deplibs_check_method
3382 test -z "$deplibs_check_method" && deplibs_check_method=unknown
3383
3384 _LT_DECL([], [deplibs_check_method], [1],
3385 [Method to check whether dependent libraries are shared objects])
3386 _LT_DECL([], [file_magic_cmd], [1],
3387 [Command to use when deplibs_check_method = "file_magic"])
3388 _LT_DECL([], [file_magic_glob], [1],
3389 [How to find potential files when deplibs_check_method = "file_magic"])
3390 _LT_DECL([], [want_nocaseglob], [1],
3391 [Find potential files using nocaseglob when deplibs_check_method = "file_magic"])
3392 ])# _LT_CHECK_MAGIC_METHOD
3393
3394
3395 # LT_PATH_NM
3396 # ----------
3397 # find the pathname to a BSD- or MS-compatible name lister
3398 AC_DEFUN([LT_PATH_NM],
3399 [AC_REQUIRE([AC_PROG_CC])dnl
3400 AC_CACHE_CHECK([for BSD- or MS-compatible name lister (nm)], lt_cv_path_NM,
3401 [if test -n "$NM"; then
3402 # Let the user override the test.
3403 lt_cv_path_NM="$NM"
3404 else
3405 lt_nm_to_check="${ac_tool_prefix}nm"
3406 if test -n "$ac_tool_prefix" && test "$build" = "$host"; then
3407 lt_nm_to_check="$lt_nm_to_check nm"
3408 fi
3409 for lt_tmp_nm in $lt_nm_to_check; do
3410 lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
3411 for ac_dir in $PATH /usr/ccs/bin/elf /usr/ccs/bin /usr/ucb /bin; do
3412 IFS="$lt_save_ifs"
3413 test -z "$ac_dir" && ac_dir=.
3414 tmp_nm="$ac_dir/$lt_tmp_nm"
3415 if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext" ; then
3416 # Check to see if the nm accepts a BSD-compat flag.
3417 # Adding the `sed 1q' prevents false positives on HP-UX, which says:
3418 # nm: unknown option "B" ignored
3419 # Tru64's nm complains that /dev/null is an invalid object file
3420 case `"$tmp_nm" -B /dev/null 2>&1 | sed '1q'` in
3421 */dev/null* | *'Invalid file or object type'*)
3422 lt_cv_path_NM="$tmp_nm -B"
3423 break
3424 ;;
3425 *)
3426 case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in
3427 */dev/null*)
3428 lt_cv_path_NM="$tmp_nm -p"
3429 break
3430 ;;
3431 *)
3432 lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but
3433 continue # so that we can try to find one that supports BSD flags
3434 ;;
3435 esac
3436 ;;
3437 esac
3438 fi
3439 done
3440 IFS="$lt_save_ifs"
3441 done
3442 : ${lt_cv_path_NM=no}
3443 fi])
3444 if test "$lt_cv_path_NM" != "no"; then
3445 NM="$lt_cv_path_NM"
3446 else
3447 # Didn't find any BSD compatible name lister, look for dumpbin.
3448 if test -n "$DUMPBIN"; then :
3449 # Let the user override the test.
3450 else
3451 AC_CHECK_TOOLS(DUMPBIN, [dumpbin "link -dump"], :)
3452 case `$DUMPBIN -symbols /dev/null 2>&1 | sed '1q'` in
3453 *COFF*)
3454 DUMPBIN="$DUMPBIN -symbols"
3455 ;;
3456 *)
3457 DUMPBIN=:
3458 ;;
3459 esac
3460 fi
3461 AC_SUBST([DUMPBIN])
3462 if test "$DUMPBIN" != ":"; then
3463 NM="$DUMPBIN"
3464 fi
3465 fi
3466 test -z "$NM" && NM=nm
3467 AC_SUBST([NM])
3468 _LT_DECL([], [NM], [1], [A BSD- or MS-compatible name lister])dnl
3469
3470 AC_CACHE_CHECK([the name lister ($NM) interface], [lt_cv_nm_interface],
3471 [lt_cv_nm_interface="BSD nm"
3472 echo "int some_variable = 0;" > conftest.$ac_ext
3473 (eval echo "\"\$as_me:$LINENO: $ac_compile\"" >&AS_MESSAGE_LOG_FD)
3474 (eval "$ac_compile" 2>conftest.err)
3475 cat conftest.err >&AS_MESSAGE_LOG_FD
3476 (eval echo "\"\$as_me:$LINENO: $NM \\\"conftest.$ac_objext\\\"\"" >&AS_MESSAGE_LOG_FD)
3477 (eval "$NM \"conftest.$ac_objext\"" 2>conftest.err > conftest.out)
3478 cat conftest.err >&AS_MESSAGE_LOG_FD
3479 (eval echo "\"\$as_me:$LINENO: output\"" >&AS_MESSAGE_LOG_FD)
3480 cat conftest.out >&AS_MESSAGE_LOG_FD
3481 if $GREP 'External.*some_variable' conftest.out > /dev/null; then
3482 lt_cv_nm_interface="MS dumpbin"
3483 fi
3484 rm -f conftest*])
3485 ])# LT_PATH_NM
3486
3487 # Old names:
3488 AU_ALIAS([AM_PROG_NM], [LT_PATH_NM])
3489 AU_ALIAS([AC_PROG_NM], [LT_PATH_NM])
3490 dnl aclocal-1.4 backwards compatibility:
3491 dnl AC_DEFUN([AM_PROG_NM], [])
3492 dnl AC_DEFUN([AC_PROG_NM], [])
3493
3494 # _LT_CHECK_SHAREDLIB_FROM_LINKLIB
3495 # --------------------------------
3496 # how to determine the name of the shared library
3497 # associated with a specific link library.
3498 # -- PORTME fill in with the dynamic library characteristics
3499 m4_defun([_LT_CHECK_SHAREDLIB_FROM_LINKLIB],
3500 [m4_require([_LT_DECL_EGREP])
3501 m4_require([_LT_DECL_OBJDUMP])
3502 m4_require([_LT_DECL_DLLTOOL])
3503 AC_CACHE_CHECK([how to associate runtime and link libraries],
3504 lt_cv_sharedlib_from_linklib_cmd,
3505 [lt_cv_sharedlib_from_linklib_cmd='unknown'
3506
3507 case $host_os in
3508 cygwin* | mingw* | pw32* | cegcc*)
3509 # two different shell functions defined in ltmain.sh
3510 # decide which to use based on capabilities of $DLLTOOL
3511 case `$DLLTOOL --help 2>&1` in
3512 *--identify-strict*)
3513 lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib
3514 ;;
3515 *)
3516 lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib_fallback
3517 ;;
3518 esac
3519 ;;
3520 *)
3521 # fallback: assume linklib IS sharedlib
3522 lt_cv_sharedlib_from_linklib_cmd="$ECHO"
3523 ;;
3524 esac
3525 ])
3526 sharedlib_from_linklib_cmd=$lt_cv_sharedlib_from_linklib_cmd
3527 test -z "$sharedlib_from_linklib_cmd" && sharedlib_from_linklib_cmd=$ECHO
3528
3529 _LT_DECL([], [sharedlib_from_linklib_cmd], [1],
3530 [Command to associate shared and link libraries])
3531 ])# _LT_CHECK_SHAREDLIB_FROM_LINKLIB
3532
3533
3534 # _LT_PATH_MANIFEST_TOOL
3535 # ----------------------
3536 # locate the manifest tool
3537 m4_defun([_LT_PATH_MANIFEST_TOOL],
3538 [AC_CHECK_TOOL(MANIFEST_TOOL, mt, :)
3539 test -z "$MANIFEST_TOOL" && MANIFEST_TOOL=mt
3540 AC_CACHE_CHECK([if $MANIFEST_TOOL is a manifest tool], [lt_cv_path_mainfest_tool],
3541 [lt_cv_path_mainfest_tool=no
3542 echo "$as_me:$LINENO: $MANIFEST_TOOL '-?'" >&AS_MESSAGE_LOG_FD
3543 $MANIFEST_TOOL '-?' 2>conftest.err > conftest.out
3544 cat conftest.err >&AS_MESSAGE_LOG_FD
3545 if $GREP 'Manifest Tool' conftest.out > /dev/null; then
3546 lt_cv_path_mainfest_tool=yes
3547 fi
3548 rm -f conftest*])
3549 if test "x$lt_cv_path_mainfest_tool" != xyes; then
3550 MANIFEST_TOOL=:
3551 fi
3552 _LT_DECL([], [MANIFEST_TOOL], [1], [Manifest tool])dnl
3553 ])# _LT_PATH_MANIFEST_TOOL
3554
3555
3556 # LT_LIB_M
3557 # --------
3558 # check for math library
3559 AC_DEFUN([LT_LIB_M],
3560 [AC_REQUIRE([AC_CANONICAL_HOST])dnl
3561 LIBM=
3562 case $host in
3563 *-*-beos* | *-*-cegcc* | *-*-cygwin* | *-*-haiku* | *-*-pw32* | *-*-darwin*)
3564 # These system don't have libm, or don't need it
3565 ;;
3566 *-ncr-sysv4.3*)
3567 AC_CHECK_LIB(mw, _mwvalidcheckl, LIBM="-lmw")
3568 AC_CHECK_LIB(m, cos, LIBM="$LIBM -lm")
3569 ;;
3570 *)
3571 AC_CHECK_LIB(m, cos, LIBM="-lm")
3572 ;;
3573 esac
3574 AC_SUBST([LIBM])
3575 ])# LT_LIB_M
3576
3577 # Old name:
3578 AU_ALIAS([AC_CHECK_LIBM], [LT_LIB_M])
3579 dnl aclocal-1.4 backwards compatibility:
3580 dnl AC_DEFUN([AC_CHECK_LIBM], [])
3581
3582
3583 # _LT_COMPILER_NO_RTTI([TAGNAME])
3584 # -------------------------------
3585 m4_defun([_LT_COMPILER_NO_RTTI],
3586 [m4_require([_LT_TAG_COMPILER])dnl
3587
3588 _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=
3589
3590 if test "$GCC" = yes; then
3591 case $cc_basename in
3592 nvcc*)
3593 _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -Xcompiler -fno-builtin' ;;
3594 *)
3595 _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -fno-builtin' ;;
3596 esac
3597
3598 _LT_COMPILER_OPTION([if $compiler supports -fno-rtti -fno-exceptions],
3599 lt_cv_prog_compiler_rtti_exceptions,
3600 [-fno-rtti -fno-exceptions], [],
3601 [_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)="$_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1) -fno-rtti -fno-exceptions"])
3602 fi
3603 _LT_TAGDECL([no_builtin_flag], [lt_prog_compiler_no_builtin_flag], [1],
3604 [Compiler flag to turn off builtin functions])
3605 ])# _LT_COMPILER_NO_RTTI
3606
3607
3608 # _LT_CMD_GLOBAL_SYMBOLS
3609 # ----------------------
3610 m4_defun([_LT_CMD_GLOBAL_SYMBOLS],
3611 [AC_REQUIRE([AC_CANONICAL_HOST])dnl
3612 AC_REQUIRE([AC_PROG_CC])dnl
3613 AC_REQUIRE([AC_PROG_AWK])dnl
3614 AC_REQUIRE([LT_PATH_NM])dnl
3615 AC_REQUIRE([LT_PATH_LD])dnl
3616 m4_require([_LT_DECL_SED])dnl
3617 m4_require([_LT_DECL_EGREP])dnl
3618 m4_require([_LT_TAG_COMPILER])dnl
3619
3620 # Check for command to grab the raw symbol name followed by C symbol from nm.
3621 AC_MSG_CHECKING([command to parse $NM output from $compiler object])
3622 AC_CACHE_VAL([lt_cv_sys_global_symbol_pipe],
3623 [
3624 # These are sane defaults that work on at least a few old systems.
3625 # [They come from Ultrix. What could be older than Ultrix?!! ;)]
3626
3627 # Character class describing NM global symbol codes.
3628 symcode='[[BCDEGRST]]'
3629
3630 # Regexp to match symbols that can be accessed directly from C.
3631 sympat='\([[_A-Za-z]][[_A-Za-z0-9]]*\)'
3632
3633 # Define system-specific variables.
3634 case $host_os in
3635 aix*)
3636 symcode='[[BCDT]]'
3637 ;;
3638 cygwin* | mingw* | pw32* | cegcc*)
3639 symcode='[[ABCDGISTW]]'
3640 ;;
3641 hpux*)
3642 if test "$host_cpu" = ia64; then
3643 symcode='[[ABCDEGRST]]'
3644 fi
3645 ;;
3646 irix* | nonstopux*)
3647 symcode='[[BCDEGRST]]'
3648 ;;
3649 osf*)
3650 symcode='[[BCDEGQRST]]'
3651 ;;
3652 solaris*)
3653 symcode='[[BDRT]]'
3654 ;;
3655 sco3.2v5*)
3656 symcode='[[DT]]'
3657 ;;
3658 sysv4.2uw2*)
3659 symcode='[[DT]]'
3660 ;;
3661 sysv5* | sco5v6* | unixware* | OpenUNIX*)
3662 symcode='[[ABDT]]'
3663 ;;
3664 sysv4)
3665 symcode='[[DFNSTU]]'
3666 ;;
3667 esac
3668
3669 # If we're using GNU nm, then use its standard symbol codes.
3670 case `$NM -V 2>&1` in
3671 *GNU* | *'with BFD'*)
3672 symcode='[[ABCDGIRSTW]]' ;;
3673 esac
3674
3675 # Transform an extracted symbol line into a proper C declaration.
3676 # Some systems (esp. on ia64) link data and code symbols differently,
3677 # so use this general approach.
3678 lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'"
3679
3680 # Transform an extracted symbol line into symbol name and symbol address
3681 lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([[^ ]]*\)[[ ]]*$/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([[^ ]]*\) \([[^ ]]*\)$/ {\"\2\", (void *) \&\2},/p'"
3682 lt_cv_sys_global_symbol_to_c_name_address_lib_prefix="sed -n -e 's/^: \([[^ ]]*\)[[ ]]*$/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([[^ ]]*\) \(lib[[^ ]]*\)$/ {\"\2\", (void *) \&\2},/p' -e 's/^$symcode* \([[^ ]]*\) \([[^ ]]*\)$/ {\"lib\2\", (void *) \&\2},/p'"
3683
3684 # Handle CRLF in mingw tool chain
3685 opt_cr=
3686 case $build_os in
3687 mingw*)
3688 opt_cr=`$ECHO 'x\{0,1\}' | tr x '\015'` # option cr in regexp
3689 ;;
3690 esac
3691
3692 # Try without a prefix underscore, then with it.
3693 for ac_symprfx in "" "_"; do
3694
3695 # Transform symcode, sympat, and symprfx into a raw symbol and a C symbol.
3696 symxfrm="\\1 $ac_symprfx\\2 \\2"
3697
3698 # Write the raw and C identifiers.
3699 if test "$lt_cv_nm_interface" = "MS dumpbin"; then
3700 # Fake it for dumpbin and say T for any non-static function
3701 # and D for any global variable.
3702 # Also find C++ and __fastcall symbols from MSVC++,
3703 # which start with @ or ?.
3704 lt_cv_sys_global_symbol_pipe="$AWK ['"\
3705 " {last_section=section; section=\$ 3};"\
3706 " /^COFF SYMBOL TABLE/{for(i in hide) delete hide[i]};"\
3707 " /Section length .*#relocs.*(pick any)/{hide[last_section]=1};"\
3708 " \$ 0!~/External *\|/{next};"\
3709 " / 0+ UNDEF /{next}; / UNDEF \([^|]\)*()/{next};"\
3710 " {if(hide[section]) next};"\
3711 " {f=0}; \$ 0~/\(\).*\|/{f=1}; {printf f ? \"T \" : \"D \"};"\
3712 " {split(\$ 0, a, /\||\r/); split(a[2], s)};"\
3713 " s[1]~/^[@?]/{print s[1], s[1]; next};"\
3714 " s[1]~prfx {split(s[1],t,\"@\"); print t[1], substr(t[1],length(prfx))}"\
3715 " ' prfx=^$ac_symprfx]"
3716 else
3717 lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[[ ]]\($symcode$symcode*\)[[ ]][[ ]]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'"
3718 fi
3719 lt_cv_sys_global_symbol_pipe="$lt_cv_sys_global_symbol_pipe | sed '/ __gnu_lto/d'"
3720
3721 # Check to see that the pipe works correctly.
3722 pipe_works=no
3723
3724 rm -f conftest*
3725 cat > conftest.$ac_ext <<_LT_EOF
3726 #ifdef __cplusplus
3727 extern "C" {
3728 #endif
3729 char nm_test_var;
3730 void nm_test_func(void);
3731 void nm_test_func(void){}
3732 #ifdef __cplusplus
3733 }
3734 #endif
3735 int main(){nm_test_var='a';nm_test_func();return(0);}
3736 _LT_EOF
3737
3738 if AC_TRY_EVAL(ac_compile); then
3739 # Now try to grab the symbols.
3740 nlist=conftest.nm
3741 if AC_TRY_EVAL(NM conftest.$ac_objext \| "$lt_cv_sys_global_symbol_pipe" \> $nlist) && test -s "$nlist"; then
3742 # Try sorting and uniquifying the output.
3743 if sort "$nlist" | uniq > "$nlist"T; then
3744 mv -f "$nlist"T "$nlist"
3745 else
3746 rm -f "$nlist"T
3747 fi
3748
3749 # Make sure that we snagged all the symbols we need.
3750 if $GREP ' nm_test_var$' "$nlist" >/dev/null; then
3751 if $GREP ' nm_test_func$' "$nlist" >/dev/null; then
3752 cat <<_LT_EOF > conftest.$ac_ext
3753 /* Keep this code in sync between libtool.m4, ltmain, lt_system.h, and tests. */
3754 #if defined(_WIN32) || defined(__CYGWIN__) || defined(_WIN32_WCE)
3755 /* DATA imports from DLLs on WIN32 con't be const, because runtime
3756 relocations are performed -- see ld's documentation on pseudo-relocs. */
3757 # define LT@&t@_DLSYM_CONST
3758 #elif defined(__osf__)
3759 /* This system does not cope well with relocations in const data. */
3760 # define LT@&t@_DLSYM_CONST
3761 #else
3762 # define LT@&t@_DLSYM_CONST const
3763 #endif
3764
3765 #ifdef __cplusplus
3766 extern "C" {
3767 #endif
3768
3769 _LT_EOF
3770 # Now generate the symbol file.
3771 eval "$lt_cv_sys_global_symbol_to_cdecl"' < "$nlist" | $GREP -v main >> conftest.$ac_ext'
3772
3773 cat <<_LT_EOF >> conftest.$ac_ext
3774
3775 /* The mapping between symbol names and symbols. */
3776 LT@&t@_DLSYM_CONST struct {
3777 const char *name;
3778 void *address;
3779 }
3780 lt__PROGRAM__LTX_preloaded_symbols[[]] =
3781 {
3782 { "@PROGRAM@", (void *) 0 },
3783 _LT_EOF
3784 $SED "s/^$symcode$symcode* \(.*\) \(.*\)$/ {\"\2\", (void *) \&\2},/" < "$nlist" | $GREP -v main >> conftest.$ac_ext
3785 cat <<\_LT_EOF >> conftest.$ac_ext
3786 {0, (void *) 0}
3787 };
3788
3789 /* This works around a problem in FreeBSD linker */
3790 #ifdef FREEBSD_WORKAROUND
3791 static const void *lt_preloaded_setup() {
3792 return lt__PROGRAM__LTX_preloaded_symbols;
3793 }
3794 #endif
3795
3796 #ifdef __cplusplus
3797 }
3798 #endif
3799 _LT_EOF
3800 # Now try linking the two files.
3801 mv conftest.$ac_objext conftstm.$ac_objext
3802 lt_globsym_save_LIBS=$LIBS
3803 lt_globsym_save_CFLAGS=$CFLAGS
3804 LIBS="conftstm.$ac_objext"
3805 CFLAGS="$CFLAGS$_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)"
3806 if AC_TRY_EVAL(ac_link) && test -s conftest${ac_exeext}; then
3807 pipe_works=yes
3808 fi
3809 LIBS=$lt_globsym_save_LIBS
3810 CFLAGS=$lt_globsym_save_CFLAGS
3811 else
3812 echo "cannot find nm_test_func in $nlist" >&AS_MESSAGE_LOG_FD
3813 fi
3814 else
3815 echo "cannot find nm_test_var in $nlist" >&AS_MESSAGE_LOG_FD
3816 fi
3817 else
3818 echo "cannot run $lt_cv_sys_global_symbol_pipe" >&AS_MESSAGE_LOG_FD
3819 fi
3820 else
3821 echo "$progname: failed program was:" >&AS_MESSAGE_LOG_FD
3822 cat conftest.$ac_ext >&5
3823 fi
3824 rm -rf conftest* conftst*
3825
3826 # Do not use the global_symbol_pipe unless it works.
3827 if test "$pipe_works" = yes; then
3828 break
3829 else
3830 lt_cv_sys_global_symbol_pipe=
3831 fi
3832 done
3833 ])
3834 if test -z "$lt_cv_sys_global_symbol_pipe"; then
3835 lt_cv_sys_global_symbol_to_cdecl=
3836 fi
3837 if test -z "$lt_cv_sys_global_symbol_pipe$lt_cv_sys_global_symbol_to_cdecl"; then
3838 AC_MSG_RESULT(failed)
3839 else
3840 AC_MSG_RESULT(ok)
3841 fi
3842
3843 # Response file support.
3844 if test "$lt_cv_nm_interface" = "MS dumpbin"; then
3845 nm_file_list_spec='@'
3846 elif $NM --help 2>/dev/null | grep '[[@]]FILE' >/dev/null; then
3847 nm_file_list_spec='@'
3848 fi
3849
3850 _LT_DECL([global_symbol_pipe], [lt_cv_sys_global_symbol_pipe], [1],
3851 [Take the output of nm and produce a listing of raw symbols and C names])
3852 _LT_DECL([global_symbol_to_cdecl], [lt_cv_sys_global_symbol_to_cdecl], [1],
3853 [Transform the output of nm in a proper C declaration])
3854 _LT_DECL([global_symbol_to_c_name_address],
3855 [lt_cv_sys_global_symbol_to_c_name_address], [1],
3856 [Transform the output of nm in a C name address pair])
3857 _LT_DECL([global_symbol_to_c_name_address_lib_prefix],
3858 [lt_cv_sys_global_symbol_to_c_name_address_lib_prefix], [1],
3859 [Transform the output of nm in a C name address pair when lib prefix is needed])
3860 _LT_DECL([], [nm_file_list_spec], [1],
3861 [Specify filename containing input files for $NM])
3862 ]) # _LT_CMD_GLOBAL_SYMBOLS
3863
3864
3865 # _LT_COMPILER_PIC([TAGNAME])
3866 # ---------------------------
3867 m4_defun([_LT_COMPILER_PIC],
3868 [m4_require([_LT_TAG_COMPILER])dnl
3869 _LT_TAGVAR(lt_prog_compiler_wl, $1)=
3870 _LT_TAGVAR(lt_prog_compiler_pic, $1)=
3871 _LT_TAGVAR(lt_prog_compiler_static, $1)=
3872
3873 m4_if([$1], [CXX], [
3874 # C++ specific cases for pic, static, wl, etc.
3875 if test "$GXX" = yes; then
3876 _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
3877 _LT_TAGVAR(lt_prog_compiler_static, $1)='-static'
3878
3879 case $host_os in
3880 aix*)
3881 # All AIX code is PIC.
3882 if test "$host_cpu" = ia64; then
3883 # AIX 5 now supports IA64 processor
3884 _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
3885 fi
3886 ;;
3887
3888 amigaos*)
3889 case $host_cpu in
3890 powerpc)
3891 # see comment about AmigaOS4 .so support
3892 _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
3893 ;;
3894 m68k)
3895 # FIXME: we need at least 68020 code to build shared libraries, but
3896 # adding the `-m68020' flag to GCC prevents building anything better,
3897 # like `-m68040'.
3898 _LT_TAGVAR(lt_prog_compiler_pic, $1)='-m68020 -resident32 -malways-restore-a4'
3899 ;;
3900 esac
3901 ;;
3902
3903 beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*)
3904 # PIC is the default for these OSes.
3905 ;;
3906 mingw* | cygwin* | os2* | pw32* | cegcc*)
3907 # This hack is so that the source file can tell whether it is being
3908 # built for inclusion in a dll (and should export symbols for example).
3909 # Although the cygwin gcc ignores -fPIC, still need this for old-style
3910 # (--disable-auto-import) libraries
3911 m4_if([$1], [GCJ], [],
3912 [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT'])
3913 ;;
3914 darwin* | rhapsody*)
3915 # PIC is the default on this platform
3916 # Common symbols not allowed in MH_DYLIB files
3917 _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fno-common'
3918 ;;
3919 *djgpp*)
3920 # DJGPP does not support shared libraries at all
3921 _LT_TAGVAR(lt_prog_compiler_pic, $1)=
3922 ;;
3923 haiku*)
3924 # PIC is the default for Haiku.
3925 # The "-static" flag exists, but is broken.
3926 _LT_TAGVAR(lt_prog_compiler_static, $1)=
3927 ;;
3928 interix[[3-9]]*)
3929 # Interix 3.x gcc -fpic/-fPIC options generate broken code.
3930 # Instead, we relocate shared libraries at runtime.
3931 ;;
3932 sysv4*MP*)
3933 if test -d /usr/nec; then
3934 _LT_TAGVAR(lt_prog_compiler_pic, $1)=-Kconform_pic
3935 fi
3936 ;;
3937 hpux*)
3938 # PIC is the default for 64-bit PA HP-UX, but not for 32-bit
3939 # PA HP-UX. On IA64 HP-UX, PIC is the default but the pic flag
3940 # sets the default TLS model and affects inlining.
3941 case $host_cpu in
3942 hppa*64*)
3943 ;;
3944 *)
3945 _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
3946 ;;
3947 esac
3948 ;;
3949 *qnx* | *nto*)
3950 # QNX uses GNU C++, but need to define -shared option too, otherwise
3951 # it will coredump.
3952 _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared'
3953 ;;
3954 *)
3955 _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
3956 ;;
3957 esac
3958 else
3959 case $host_os in
3960 aix[[4-9]]*)
3961 # All AIX code is PIC.
3962 if test "$host_cpu" = ia64; then
3963 # AIX 5 now supports IA64 processor
3964 _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
3965 else
3966 _LT_TAGVAR(lt_prog_compiler_static, $1)='-bnso -bI:/lib/syscalls.exp'
3967 fi
3968 ;;
3969 chorus*)
3970 case $cc_basename in
3971 cxch68*)
3972 # Green Hills C++ Compiler
3973 # _LT_TAGVAR(lt_prog_compiler_static, $1)="--no_auto_instantiation -u __main -u __premain -u _abort -r $COOL_DIR/lib/libOrb.a $MVME_DIR/lib/CC/libC.a $MVME_DIR/lib/classix/libcx.s.a"
3974 ;;
3975 esac
3976 ;;
3977 mingw* | cygwin* | os2* | pw32* | cegcc*)
3978 # This hack is so that the source file can tell whether it is being
3979 # built for inclusion in a dll (and should export symbols for example).
3980 m4_if([$1], [GCJ], [],
3981 [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT'])
3982 ;;
3983 dgux*)
3984 case $cc_basename in
3985 ec++*)
3986 _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
3987 ;;
3988 ghcx*)
3989 # Green Hills C++ Compiler
3990 _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic'
3991 ;;
3992 *)
3993 ;;
3994 esac
3995 ;;
3996 freebsd* | dragonfly*)
3997 # FreeBSD uses GNU C++
3998 ;;
3999 hpux9* | hpux10* | hpux11*)
4000 case $cc_basename in
4001 CC*)
4002 _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
4003 _LT_TAGVAR(lt_prog_compiler_static, $1)='${wl}-a ${wl}archive'
4004 if test "$host_cpu" != ia64; then
4005 _LT_TAGVAR(lt_prog_compiler_pic, $1)='+Z'
4006 fi
4007 ;;
4008 aCC*)
4009 _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
4010 _LT_TAGVAR(lt_prog_compiler_static, $1)='${wl}-a ${wl}archive'
4011 case $host_cpu in
4012 hppa*64*|ia64*)
4013 # +Z the default
4014 ;;
4015 *)
4016 _LT_TAGVAR(lt_prog_compiler_pic, $1)='+Z'
4017 ;;
4018 esac
4019 ;;
4020 *)
4021 ;;
4022 esac
4023 ;;
4024 interix*)
4025 # This is c89, which is MS Visual C++ (no shared libs)
4026 # Anyone wants to do a port?
4027 ;;
4028 irix5* | irix6* | nonstopux*)
4029 case $cc_basename in
4030 CC*)
4031 _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
4032 _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared'
4033 # CC pic flag -KPIC is the default.
4034 ;;
4035 *)
4036 ;;
4037 esac
4038 ;;
4039 linux* | k*bsd*-gnu | kopensolaris*-gnu)
4040 case $cc_basename in
4041 KCC*)
4042 # KAI C++ Compiler
4043 _LT_TAGVAR(lt_prog_compiler_wl, $1)='--backend -Wl,'
4044 _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
4045 ;;
4046 ecpc* )
4047 # old Intel C++ for x86_64 which still supported -KPIC.
4048 _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
4049 _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
4050 _LT_TAGVAR(lt_prog_compiler_static, $1)='-static'
4051 ;;
4052 icpc* )
4053 # Intel C++, used to be incompatible with GCC.
4054 # ICC 10 doesn't accept -KPIC any more.
4055 _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
4056 _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
4057 _LT_TAGVAR(lt_prog_compiler_static, $1)='-static'
4058 ;;
4059 pgCC* | pgcpp*)
4060 # Portland Group C++ compiler
4061 _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
4062 _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fpic'
4063 _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
4064 ;;
4065 cxx*)
4066 # Compaq C++
4067 # Make sure the PIC flag is empty. It appears that all Alpha
4068 # Linux and Compaq Tru64 Unix objects are PIC.
4069 _LT_TAGVAR(lt_prog_compiler_pic, $1)=
4070 _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared'
4071 ;;
4072 xlc* | xlC* | bgxl[[cC]]* | mpixl[[cC]]*)
4073 # IBM XL 8.0, 9.0 on PPC and BlueGene
4074 _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
4075 _LT_TAGVAR(lt_prog_compiler_pic, $1)='-qpic'
4076 _LT_TAGVAR(lt_prog_compiler_static, $1)='-qstaticlink'
4077 ;;
4078 *)
4079 case `$CC -V 2>&1 | sed 5q` in
4080 *Sun\ C*)
4081 # Sun C++ 5.9
4082 _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
4083 _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
4084 _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld '
4085 ;;
4086 esac
4087 ;;
4088 esac
4089 ;;
4090 lynxos*)
4091 ;;
4092 m88k*)
4093 ;;
4094 mvs*)
4095 case $cc_basename in
4096 cxx*)
4097 _LT_TAGVAR(lt_prog_compiler_pic, $1)='-W c,exportall'
4098 ;;
4099 *)
4100 ;;
4101 esac
4102 ;;
4103 netbsd*)
4104 ;;
4105 *qnx* | *nto*)
4106 # QNX uses GNU C++, but need to define -shared option too, otherwise
4107 # it will coredump.
4108 _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared'
4109 ;;
4110 osf3* | osf4* | osf5*)
4111 case $cc_basename in
4112 KCC*)
4113 _LT_TAGVAR(lt_prog_compiler_wl, $1)='--backend -Wl,'
4114 ;;
4115 RCC*)
4116 # Rational C++ 2.4.1
4117 _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic'
4118 ;;
4119 cxx*)
4120 # Digital/Compaq C++
4121 _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
4122 # Make sure the PIC flag is empty. It appears that all Alpha
4123 # Linux and Compaq Tru64 Unix objects are PIC.
4124 _LT_TAGVAR(lt_prog_compiler_pic, $1)=
4125 _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared'
4126 ;;
4127 *)
4128 ;;
4129 esac
4130 ;;
4131 psos*)
4132 ;;
4133 solaris*)
4134 case $cc_basename in
4135 CC* | sunCC*)
4136 # Sun C++ 4.2, 5.x and Centerline C++
4137 _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
4138 _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
4139 _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld '
4140 ;;
4141 gcx*)
4142 # Green Hills C++ Compiler
4143 _LT_TAGVAR(lt_prog_compiler_pic, $1)='-PIC'
4144 ;;
4145 *)
4146 ;;
4147 esac
4148 ;;
4149 sunos4*)
4150 case $cc_basename in
4151 CC*)
4152 # Sun C++ 4.x
4153 _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic'
4154 _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
4155 ;;
4156 lcc*)
4157 # Lucid
4158 _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic'
4159 ;;
4160 *)
4161 ;;
4162 esac
4163 ;;
4164 sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*)
4165 case $cc_basename in
4166 CC*)
4167 _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
4168 _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
4169 _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
4170 ;;
4171 esac
4172 ;;
4173 tandem*)
4174 case $cc_basename in
4175 NCC*)
4176 # NonStop-UX NCC 3.20
4177 _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
4178 ;;
4179 *)
4180 ;;
4181 esac
4182 ;;
4183 vxworks*)
4184 ;;
4185 *)
4186 _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no
4187 ;;
4188 esac
4189 fi
4190 ],
4191 [
4192 if test "$GCC" = yes; then
4193 _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
4194 _LT_TAGVAR(lt_prog_compiler_static, $1)='-static'
4195
4196 case $host_os in
4197 aix*)
4198 # All AIX code is PIC.
4199 if test "$host_cpu" = ia64; then
4200 # AIX 5 now supports IA64 processor
4201 _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
4202 fi
4203 ;;
4204
4205 amigaos*)
4206 case $host_cpu in
4207 powerpc)
4208 # see comment about AmigaOS4 .so support
4209 _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
4210 ;;
4211 m68k)
4212 # FIXME: we need at least 68020 code to build shared libraries, but
4213 # adding the `-m68020' flag to GCC prevents building anything better,
4214 # like `-m68040'.
4215 _LT_TAGVAR(lt_prog_compiler_pic, $1)='-m68020 -resident32 -malways-restore-a4'
4216 ;;
4217 esac
4218 ;;
4219
4220 beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*)
4221 # PIC is the default for these OSes.
4222 ;;
4223
4224 mingw* | cygwin* | pw32* | os2* | cegcc*)
4225 # This hack is so that the source file can tell whether it is being
4226 # built for inclusion in a dll (and should export symbols for example).
4227 # Although the cygwin gcc ignores -fPIC, still need this for old-style
4228 # (--disable-auto-import) libraries
4229 m4_if([$1], [GCJ], [],
4230 [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT'])
4231 ;;
4232
4233 darwin* | rhapsody*)
4234 # PIC is the default on this platform
4235 # Common symbols not allowed in MH_DYLIB files
4236 _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fno-common'
4237 ;;
4238
4239 haiku*)
4240 # PIC is the default for Haiku.
4241 # The "-static" flag exists, but is broken.
4242 _LT_TAGVAR(lt_prog_compiler_static, $1)=
4243 ;;
4244
4245 hpux*)
4246 # PIC is the default for 64-bit PA HP-UX, but not for 32-bit
4247 # PA HP-UX. On IA64 HP-UX, PIC is the default but the pic flag
4248 # sets the default TLS model and affects inlining.
4249 case $host_cpu in
4250 hppa*64*)
4251 # +Z the default
4252 ;;
4253 *)
4254 _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
4255 ;;
4256 esac
4257 ;;
4258
4259 interix[[3-9]]*)
4260 # Interix 3.x gcc -fpic/-fPIC options generate broken code.
4261 # Instead, we relocate shared libraries at runtime.
4262 ;;
4263
4264 msdosdjgpp*)
4265 # Just because we use GCC doesn't mean we suddenly get shared libraries
4266 # on systems that don't support them.
4267 _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no
4268 enable_shared=no
4269 ;;
4270
4271 *nto* | *qnx*)
4272 # QNX uses GNU C++, but need to define -shared option too, otherwise
4273 # it will coredump.
4274 _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared'
4275 ;;
4276
4277 sysv4*MP*)
4278 if test -d /usr/nec; then
4279 _LT_TAGVAR(lt_prog_compiler_pic, $1)=-Kconform_pic
4280 fi
4281 ;;
4282
4283 *)
4284 _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
4285 ;;
4286 esac
4287
4288 case $cc_basename in
4289 nvcc*) # Cuda Compiler Driver 2.2
4290 _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Xlinker '
4291 if test -n "$_LT_TAGVAR(lt_prog_compiler_pic, $1)"; then
4292 _LT_TAGVAR(lt_prog_compiler_pic, $1)="-Xcompiler $_LT_TAGVAR(lt_prog_compiler_pic, $1)"
4293 fi
4294 ;;
4295 esac
4296 else
4297 # PORTME Check for flag to pass linker flags through the system compiler.
4298 case $host_os in
4299 aix*)
4300 _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
4301 if test "$host_cpu" = ia64; then
4302 # AIX 5 now supports IA64 processor
4303 _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
4304 else
4305 _LT_TAGVAR(lt_prog_compiler_static, $1)='-bnso -bI:/lib/syscalls.exp'
4306 fi
4307 ;;
4308
4309 mingw* | cygwin* | pw32* | os2* | cegcc*)
4310 # This hack is so that the source file can tell whether it is being
4311 # built for inclusion in a dll (and should export symbols for example).
4312 m4_if([$1], [GCJ], [],
4313 [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT'])
4314 ;;
4315
4316 hpux9* | hpux10* | hpux11*)
4317 _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
4318 # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but
4319 # not for PA HP-UX.
4320 case $host_cpu in
4321 hppa*64*|ia64*)
4322 # +Z the default
4323 ;;
4324 *)
4325 _LT_TAGVAR(lt_prog_compiler_pic, $1)='+Z'
4326 ;;
4327 esac
4328 # Is there a better lt_prog_compiler_static that works with the bundled CC?
4329 _LT_TAGVAR(lt_prog_compiler_static, $1)='${wl}-a ${wl}archive'
4330 ;;
4331
4332 irix5* | irix6* | nonstopux*)
4333 _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
4334 # PIC (with -KPIC) is the default.
4335 _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared'
4336 ;;
4337
4338 linux* | k*bsd*-gnu | kopensolaris*-gnu)
4339 case $cc_basename in
4340 # old Intel for x86_64 which still supported -KPIC.
4341 ecc*)
4342 _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
4343 _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
4344 _LT_TAGVAR(lt_prog_compiler_static, $1)='-static'
4345 ;;
4346 # icc used to be incompatible with GCC.
4347 # ICC 10 doesn't accept -KPIC any more.
4348 icc* | ifort*)
4349 _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
4350 _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
4351 _LT_TAGVAR(lt_prog_compiler_static, $1)='-static'
4352 ;;
4353 # Lahey Fortran 8.1.
4354 lf95*)
4355 _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
4356 _LT_TAGVAR(lt_prog_compiler_pic, $1)='--shared'
4357 _LT_TAGVAR(lt_prog_compiler_static, $1)='--static'
4358 ;;
4359 nagfor*)
4360 # NAG Fortran compiler
4361 _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,-Wl,,'
4362 _LT_TAGVAR(lt_prog_compiler_pic, $1)='-PIC'
4363 _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
4364 ;;
4365 pgcc* | pgf77* | pgf90* | pgf95* | pgfortran*)
4366 # Portland Group compilers (*not* the Pentium gcc compiler,
4367 # which looks to be a dead project)
4368 _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
4369 _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fpic'
4370 _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
4371 ;;
4372 ccc*)
4373 _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
4374 # All Alpha code is PIC.
4375 _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared'
4376 ;;
4377 xl* | bgxl* | bgf* | mpixl*)
4378 # IBM XL C 8.0/Fortran 10.1, 11.1 on PPC and BlueGene
4379 _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
4380 _LT_TAGVAR(lt_prog_compiler_pic, $1)='-qpic'
4381 _LT_TAGVAR(lt_prog_compiler_static, $1)='-qstaticlink'
4382 ;;
4383 *)
4384 case `$CC -V 2>&1 | sed 5q` in
4385 *Sun\ Ceres\ Fortran* | *Sun*Fortran*\ [[1-7]].* | *Sun*Fortran*\ 8.[[0-3]]*)
4386 # Sun Fortran 8.3 passes all unrecognized flags to the linker
4387 _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
4388 _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
4389 _LT_TAGVAR(lt_prog_compiler_wl, $1)=''
4390 ;;
4391 *Sun\ F* | *Sun*Fortran*)
4392 _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
4393 _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
4394 _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld '
4395 ;;
4396 *Sun\ C*)
4397 # Sun C 5.9
4398 _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
4399 _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
4400 _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
4401 ;;
4402 *Intel*\ [[CF]]*Compiler*)
4403 _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
4404 _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
4405 _LT_TAGVAR(lt_prog_compiler_static, $1)='-static'
4406 ;;
4407 *Portland\ Group*)
4408 _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
4409 _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fpic'
4410 _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
4411 ;;
4412 esac
4413 ;;
4414 esac
4415 ;;
4416
4417 newsos6)
4418 _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
4419 _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
4420 ;;
4421
4422 *nto* | *qnx*)
4423 # QNX uses GNU C++, but need to define -shared option too, otherwise
4424 # it will coredump.
4425 _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared'
4426 ;;
4427
4428 osf3* | osf4* | osf5*)
4429 _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
4430 # All OSF/1 code is PIC.
4431 _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared'
4432 ;;
4433
4434 rdos*)
4435 _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared'
4436 ;;
4437
4438 solaris*)
4439 _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
4440 _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
4441 case $cc_basename in
4442 f77* | f90* | f95* | sunf77* | sunf90* | sunf95*)
4443 _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ';;
4444 *)
4445 _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,';;
4446 esac
4447 ;;
4448
4449 sunos4*)
4450 _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld '
4451 _LT_TAGVAR(lt_prog_compiler_pic, $1)='-PIC'
4452 _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
4453 ;;
4454
4455 sysv4 | sysv4.2uw2* | sysv4.3*)
4456 _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
4457 _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
4458 _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
4459 ;;
4460
4461 sysv4*MP*)
4462 if test -d /usr/nec ;then
4463 _LT_TAGVAR(lt_prog_compiler_pic, $1)='-Kconform_pic'
4464 _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
4465 fi
4466 ;;
4467
4468 sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*)
4469 _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
4470 _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
4471 _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
4472 ;;
4473
4474 unicos*)
4475 _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
4476 _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no
4477 ;;
4478
4479 uts4*)
4480 _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic'
4481 _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
4482 ;;
4483
4484 *)
4485 _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no
4486 ;;
4487 esac
4488 fi
4489 ])
4490 case $host_os in
4491 # For platforms which do not support PIC, -DPIC is meaningless:
4492 *djgpp*)
4493 _LT_TAGVAR(lt_prog_compiler_pic, $1)=
4494 ;;
4495 *)
4496 _LT_TAGVAR(lt_prog_compiler_pic, $1)="$_LT_TAGVAR(lt_prog_compiler_pic, $1)@&t@m4_if([$1],[],[ -DPIC],[m4_if([$1],[CXX],[ -DPIC],[])])"
4497 ;;
4498 esac
4499
4500 AC_CACHE_CHECK([for $compiler option to produce PIC],
4501 [_LT_TAGVAR(lt_cv_prog_compiler_pic, $1)],
4502 [_LT_TAGVAR(lt_cv_prog_compiler_pic, $1)=$_LT_TAGVAR(lt_prog_compiler_pic, $1)])
4503 _LT_TAGVAR(lt_prog_compiler_pic, $1)=$_LT_TAGVAR(lt_cv_prog_compiler_pic, $1)
4504
4505 #
4506 # Check to make sure the PIC flag actually works.
4507 #
4508 if test -n "$_LT_TAGVAR(lt_prog_compiler_pic, $1)"; then
4509 _LT_COMPILER_OPTION([if $compiler PIC flag $_LT_TAGVAR(lt_prog_compiler_pic, $1) works],
4510 [_LT_TAGVAR(lt_cv_prog_compiler_pic_works, $1)],
4511 [$_LT_TAGVAR(lt_prog_compiler_pic, $1)@&t@m4_if([$1],[],[ -DPIC],[m4_if([$1],[CXX],[ -DPIC],[])])], [],
4512 [case $_LT_TAGVAR(lt_prog_compiler_pic, $1) in
4513 "" | " "*) ;;
4514 *) _LT_TAGVAR(lt_prog_compiler_pic, $1)=" $_LT_TAGVAR(lt_prog_compiler_pic, $1)" ;;
4515 esac],
4516 [_LT_TAGVAR(lt_prog_compiler_pic, $1)=
4517 _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no])
4518 fi
4519 _LT_TAGDECL([pic_flag], [lt_prog_compiler_pic], [1],
4520 [Additional compiler flags for building library objects])
4521
4522 _LT_TAGDECL([wl], [lt_prog_compiler_wl], [1],
4523 [How to pass a linker flag through the compiler])
4524 #
4525 # Check to make sure the static flag actually works.
4526 #
4527 wl=$_LT_TAGVAR(lt_prog_compiler_wl, $1) eval lt_tmp_static_flag=\"$_LT_TAGVAR(lt_prog_compiler_static, $1)\"
4528 _LT_LINKER_OPTION([if $compiler static flag $lt_tmp_static_flag works],
4529 _LT_TAGVAR(lt_cv_prog_compiler_static_works, $1),
4530 $lt_tmp_static_flag,
4531 [],
4532 [_LT_TAGVAR(lt_prog_compiler_static, $1)=])
4533 _LT_TAGDECL([link_static_flag], [lt_prog_compiler_static], [1],
4534 [Compiler flag to prevent dynamic linking])
4535 ])# _LT_COMPILER_PIC
4536
4537
4538 # _LT_LINKER_SHLIBS([TAGNAME])
4539 # ----------------------------
4540 # See if the linker supports building shared libraries.
4541 m4_defun([_LT_LINKER_SHLIBS],
4542 [AC_REQUIRE([LT_PATH_LD])dnl
4543 AC_REQUIRE([LT_PATH_NM])dnl
4544 m4_require([_LT_PATH_MANIFEST_TOOL])dnl
4545 m4_require([_LT_FILEUTILS_DEFAULTS])dnl
4546 m4_require([_LT_DECL_EGREP])dnl
4547 m4_require([_LT_DECL_SED])dnl
4548 m4_require([_LT_CMD_GLOBAL_SYMBOLS])dnl
4549 m4_require([_LT_TAG_COMPILER])dnl
4550 AC_MSG_CHECKING([whether the $compiler linker ($LD) supports shared libraries])
4551 m4_if([$1], [CXX], [
4552 _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
4553 _LT_TAGVAR(exclude_expsyms, $1)=['_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*']
4554 case $host_os in
4555 aix[[4-9]]*)
4556 # If we're using GNU nm, then we don't want the "-C" option.
4557 # -C means demangle to AIX nm, but means don't demangle with GNU nm
4558 # Also, AIX nm treats weak defined symbols like other global defined
4559 # symbols, whereas GNU nm marks them as "W".
4560 if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then
4561 _LT_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && ([substr](\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols'
4562 else
4563 _LT_TAGVAR(export_symbols_cmds, $1)='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && ([substr](\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols'
4564 fi
4565 ;;
4566 pw32*)
4567 _LT_TAGVAR(export_symbols_cmds, $1)="$ltdll_cmds"
4568 ;;
4569 cygwin* | mingw* | cegcc*)
4570 case $cc_basename in
4571 cl*)
4572 _LT_TAGVAR(exclude_expsyms, $1)='_NULL_IMPORT_DESCRIPTOR|_IMPORT_DESCRIPTOR_.*'
4573 ;;
4574 *)
4575 _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1 DATA/;s/^.*[[ ]]__nm__\([[^ ]]*\)[[ ]][[^ ]]*/\1 DATA/;/^I[[ ]]/d;/^[[AITW]][[ ]]/s/.* //'\'' | sort | uniq > $export_symbols'
4576 _LT_TAGVAR(exclude_expsyms, $1)=['[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname']
4577 ;;
4578 esac
4579 ;;
4580 *)
4581 _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
4582 ;;
4583 esac
4584 ], [
4585 runpath_var=
4586 _LT_TAGVAR(allow_undefined_flag, $1)=
4587 _LT_TAGVAR(always_export_symbols, $1)=no
4588 _LT_TAGVAR(archive_cmds, $1)=
4589 _LT_TAGVAR(archive_expsym_cmds, $1)=
4590 _LT_TAGVAR(compiler_needs_object, $1)=no
4591 _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no
4592 _LT_TAGVAR(export_dynamic_flag_spec, $1)=
4593 _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
4594 _LT_TAGVAR(hardcode_automatic, $1)=no
4595 _LT_TAGVAR(hardcode_direct, $1)=no
4596 _LT_TAGVAR(hardcode_direct_absolute, $1)=no
4597 _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=
4598 _LT_TAGVAR(hardcode_libdir_separator, $1)=
4599 _LT_TAGVAR(hardcode_minus_L, $1)=no
4600 _LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported
4601 _LT_TAGVAR(inherit_rpath, $1)=no
4602 _LT_TAGVAR(link_all_deplibs, $1)=unknown
4603 _LT_TAGVAR(module_cmds, $1)=
4604 _LT_TAGVAR(module_expsym_cmds, $1)=
4605 _LT_TAGVAR(old_archive_from_new_cmds, $1)=
4606 _LT_TAGVAR(old_archive_from_expsyms_cmds, $1)=
4607 _LT_TAGVAR(thread_safe_flag_spec, $1)=
4608 _LT_TAGVAR(whole_archive_flag_spec, $1)=
4609 # include_expsyms should be a list of space-separated symbols to be *always*
4610 # included in the symbol list
4611 _LT_TAGVAR(include_expsyms, $1)=
4612 # exclude_expsyms can be an extended regexp of symbols to exclude
4613 # it will be wrapped by ` (' and `)$', so one must not match beginning or
4614 # end of line. Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc',
4615 # as well as any symbol that contains `d'.
4616 _LT_TAGVAR(exclude_expsyms, $1)=['_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*']
4617 # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out
4618 # platforms (ab)use it in PIC code, but their linkers get confused if
4619 # the symbol is explicitly referenced. Since portable code cannot
4620 # rely on this symbol name, it's probably fine to never include it in
4621 # preloaded symbol tables.
4622 # Exclude shared library initialization/finalization symbols.
4623 dnl Note also adjust exclude_expsyms for C++ above.
4624 extract_expsyms_cmds=
4625
4626 case $host_os in
4627 cygwin* | mingw* | pw32* | cegcc*)
4628 # FIXME: the MSVC++ port hasn't been tested in a loooong time
4629 # When not using gcc, we currently assume that we are using
4630 # Microsoft Visual C++.
4631 if test "$GCC" != yes; then
4632 with_gnu_ld=no
4633 fi
4634 ;;
4635 interix*)
4636 # we just hope/assume this is gcc and not c89 (= MSVC++)
4637 with_gnu_ld=yes
4638 ;;
4639 openbsd*)
4640 with_gnu_ld=no
4641 ;;
4642 esac
4643
4644 _LT_TAGVAR(ld_shlibs, $1)=yes
4645
4646 # On some targets, GNU ld is compatible enough with the native linker
4647 # that we're better off using the native interface for both.
4648 lt_use_gnu_ld_interface=no
4649 if test "$with_gnu_ld" = yes; then
4650 case $host_os in
4651 aix*)
4652 # The AIX port of GNU ld has always aspired to compatibility
4653 # with the native linker. However, as the warning in the GNU ld
4654 # block says, versions before 2.19.5* couldn't really create working
4655 # shared libraries, regardless of the interface used.
4656 case `$LD -v 2>&1` in
4657 *\ \(GNU\ Binutils\)\ 2.19.5*) ;;
4658 *\ \(GNU\ Binutils\)\ 2.[[2-9]]*) ;;
4659 *\ \(GNU\ Binutils\)\ [[3-9]]*) ;;
4660 *)
4661 lt_use_gnu_ld_interface=yes
4662 ;;
4663 esac
4664 ;;
4665 *)
4666 lt_use_gnu_ld_interface=yes
4667 ;;
4668 esac
4669 fi
4670
4671 if test "$lt_use_gnu_ld_interface" = yes; then
4672 # If archive_cmds runs LD, not CC, wlarc should be empty
4673 wlarc='${wl}'
4674
4675 # Set some defaults for GNU ld with shared library support. These
4676 # are reset later if shared libraries are not supported. Putting them
4677 # here allows them to be overridden if necessary.
4678 runpath_var=LD_RUN_PATH
4679 _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
4680 _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic'
4681 # ancient GNU ld didn't support --whole-archive et. al.
4682 if $LD --help 2>&1 | $GREP 'no-whole-archive' > /dev/null; then
4683 _LT_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive'
4684 else
4685 _LT_TAGVAR(whole_archive_flag_spec, $1)=
4686 fi
4687 supports_anon_versioning=no
4688 case `$LD -v 2>&1` in
4689 *GNU\ gold*) supports_anon_versioning=yes ;;
4690 *\ [[01]].* | *\ 2.[[0-9]].* | *\ 2.10.*) ;; # catch versions < 2.11
4691 *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ...
4692 *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ...
4693 *\ 2.11.*) ;; # other 2.11 versions
4694 *) supports_anon_versioning=yes ;;
4695 esac
4696
4697 # See if GNU ld supports shared libraries.
4698 case $host_os in
4699 aix[[3-9]]*)
4700 # On AIX/PPC, the GNU linker is very broken
4701 if test "$host_cpu" != ia64; then
4702 _LT_TAGVAR(ld_shlibs, $1)=no
4703 cat <<_LT_EOF 1>&2
4704
4705 *** Warning: the GNU linker, at least up to release 2.19, is reported
4706 *** to be unable to reliably create shared libraries on AIX.
4707 *** Therefore, libtool is disabling shared libraries support. If you
4708 *** really care for shared libraries, you may want to install binutils
4709 *** 2.20 or above, or modify your PATH so that a non-GNU linker is found.
4710 *** You will then need to restart the configuration process.
4711
4712 _LT_EOF
4713 fi
4714 ;;
4715
4716 amigaos*)
4717 case $host_cpu in
4718 powerpc)
4719 # see comment about AmigaOS4 .so support
4720 _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
4721 _LT_TAGVAR(archive_expsym_cmds, $1)=''
4722 ;;
4723 m68k)
4724 _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)'
4725 _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
4726 _LT_TAGVAR(hardcode_minus_L, $1)=yes
4727 ;;
4728 esac
4729 ;;
4730
4731 beos*)
4732 if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
4733 _LT_TAGVAR(allow_undefined_flag, $1)=unsupported
4734 # Joseph Beckenbach <jrb3@best.com> says some releases of gcc
4735 # support --undefined. This deserves some investigation. FIXME
4736 _LT_TAGVAR(archive_cmds, $1)='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
4737 else
4738 _LT_TAGVAR(ld_shlibs, $1)=no
4739 fi
4740 ;;
4741
4742 cygwin* | mingw* | pw32* | cegcc*)
4743 # _LT_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless,
4744 # as there is no search path for DLLs.
4745 _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
4746 _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-all-symbols'
4747 _LT_TAGVAR(allow_undefined_flag, $1)=unsupported
4748 _LT_TAGVAR(always_export_symbols, $1)=no
4749 _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes
4750 _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1 DATA/;s/^.*[[ ]]__nm__\([[^ ]]*\)[[ ]][[^ ]]*/\1 DATA/;/^I[[ ]]/d;/^[[AITW]][[ ]]/s/.* //'\'' | sort | uniq > $export_symbols'
4751 _LT_TAGVAR(exclude_expsyms, $1)=['[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname']
4752
4753 if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then
4754 _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
4755 # If the export-symbols file already is a .def file (1st line
4756 # is EXPORTS), use it as is; otherwise, prepend...
4757 _LT_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then
4758 cp $export_symbols $output_objdir/$soname.def;
4759 else
4760 echo EXPORTS > $output_objdir/$soname.def;
4761 cat $export_symbols >> $output_objdir/$soname.def;
4762 fi~
4763 $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
4764 else
4765 _LT_TAGVAR(ld_shlibs, $1)=no
4766 fi
4767 ;;
4768
4769 haiku*)
4770 _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
4771 _LT_TAGVAR(link_all_deplibs, $1)=yes
4772 ;;
4773
4774 interix[[3-9]]*)
4775 _LT_TAGVAR(hardcode_direct, $1)=no
4776 _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
4777 _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
4778 _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
4779 # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc.
4780 # Instead, shared libraries are loaded at an image base (0x10000000 by
4781 # default) and relocated if they conflict, which is a slow very memory
4782 # consuming and fragmenting process. To avoid this, we pick a random,
4783 # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link
4784 # time. Moving up from 0x10000000 also allows more sbrk(2) space.
4785 _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
4786 _LT_TAGVAR(archive_expsym_cmds, $1)='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
4787 ;;
4788
4789 gnu* | linux* | tpf* | k*bsd*-gnu | kopensolaris*-gnu)
4790 tmp_diet=no
4791 if test "$host_os" = linux-dietlibc; then
4792 case $cc_basename in
4793 diet\ *) tmp_diet=yes;; # linux-dietlibc with static linking (!diet-dyn)
4794 esac
4795 fi
4796 if $LD --help 2>&1 | $EGREP ': supported targets:.* elf' > /dev/null \
4797 && test "$tmp_diet" = no
4798 then
4799 tmp_addflag=' $pic_flag'
4800 tmp_sharedflag='-shared'
4801 case $cc_basename,$host_cpu in
4802 pgcc*) # Portland Group C compiler
4803 _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive'
4804 tmp_addflag=' $pic_flag'
4805 ;;
4806 pgf77* | pgf90* | pgf95* | pgfortran*)
4807 # Portland Group f77 and f90 compilers
4808 _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive'
4809 tmp_addflag=' $pic_flag -Mnomain' ;;
4810 ecc*,ia64* | icc*,ia64*) # Intel C compiler on ia64
4811 tmp_addflag=' -i_dynamic' ;;
4812 efc*,ia64* | ifort*,ia64*) # Intel Fortran compiler on ia64
4813 tmp_addflag=' -i_dynamic -nofor_main' ;;
4814 ifc* | ifort*) # Intel Fortran compiler
4815 tmp_addflag=' -nofor_main' ;;
4816 lf95*) # Lahey Fortran 8.1
4817 _LT_TAGVAR(whole_archive_flag_spec, $1)=
4818 tmp_sharedflag='--shared' ;;
4819 xl[[cC]]* | bgxl[[cC]]* | mpixl[[cC]]*) # IBM XL C 8.0 on PPC (deal with xlf below)
4820 tmp_sharedflag='-qmkshrobj'
4821 tmp_addflag= ;;
4822 nvcc*) # Cuda Compiler Driver 2.2
4823 _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive'
4824 _LT_TAGVAR(compiler_needs_object, $1)=yes
4825 ;;
4826 esac
4827 case `$CC -V 2>&1 | sed 5q` in
4828 *Sun\ C*) # Sun C 5.9
4829 _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive'
4830 _LT_TAGVAR(compiler_needs_object, $1)=yes
4831 tmp_sharedflag='-G' ;;
4832 *Sun\ F*) # Sun Fortran 8.3
4833 tmp_sharedflag='-G' ;;
4834 esac
4835 _LT_TAGVAR(archive_cmds, $1)='$CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
4836
4837 if test "x$supports_anon_versioning" = xyes; then
4838 _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~
4839 cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
4840 echo "local: *; };" >> $output_objdir/$libname.ver~
4841 $CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib'
4842 fi
4843
4844 case $cc_basename in
4845 xlf* | bgf* | bgxlf* | mpixlf*)
4846 # IBM XL Fortran 10.1 on PPC cannot create shared libs itself
4847 _LT_TAGVAR(whole_archive_flag_spec, $1)='--whole-archive$convenience --no-whole-archive'
4848 _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
4849 _LT_TAGVAR(archive_cmds, $1)='$LD -shared $libobjs $deplibs $linker_flags -soname $soname -o $lib'
4850 if test "x$supports_anon_versioning" = xyes; then
4851 _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~
4852 cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
4853 echo "local: *; };" >> $output_objdir/$libname.ver~
4854 $LD -shared $libobjs $deplibs $linker_flags -soname $soname -version-script $output_objdir/$libname.ver -o $lib'
4855 fi
4856 ;;
4857 esac
4858 else
4859 _LT_TAGVAR(ld_shlibs, $1)=no
4860 fi
4861 ;;
4862
4863 netbsd*)
4864 if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then
4865 _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib'
4866 wlarc=
4867 else
4868 _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
4869 _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
4870 fi
4871 ;;
4872
4873 solaris*)
4874 if $LD -v 2>&1 | $GREP 'BFD 2\.8' > /dev/null; then
4875 _LT_TAGVAR(ld_shlibs, $1)=no
4876 cat <<_LT_EOF 1>&2
4877
4878 *** Warning: The releases 2.8.* of the GNU linker cannot reliably
4879 *** create shared libraries on Solaris systems. Therefore, libtool
4880 *** is disabling shared libraries support. We urge you to upgrade GNU
4881 *** binutils to release 2.9.1 or newer. Another option is to modify
4882 *** your PATH or compiler configuration so that the native linker is
4883 *** used, and then restart.
4884
4885 _LT_EOF
4886 elif $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
4887 _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
4888 _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
4889 else
4890 _LT_TAGVAR(ld_shlibs, $1)=no
4891 fi
4892 ;;
4893
4894 sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*)
4895 case `$LD -v 2>&1` in
4896 *\ [[01]].* | *\ 2.[[0-9]].* | *\ 2.1[[0-5]].*)
4897 _LT_TAGVAR(ld_shlibs, $1)=no
4898 cat <<_LT_EOF 1>&2
4899
4900 *** Warning: Releases of the GNU linker prior to 2.16.91.0.3 can not
4901 *** reliably create shared libraries on SCO systems. Therefore, libtool
4902 *** is disabling shared libraries support. We urge you to upgrade GNU
4903 *** binutils to release 2.16.91.0.3 or newer. Another option is to modify
4904 *** your PATH or compiler configuration so that the native linker is
4905 *** used, and then restart.
4906
4907 _LT_EOF
4908 ;;
4909 *)
4910 # For security reasons, it is highly recommended that you always
4911 # use absolute paths for naming shared libraries, and exclude the
4912 # DT_RUNPATH tag from executables and libraries. But doing so
4913 # requires that you compile everything twice, which is a pain.
4914 if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
4915 _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
4916 _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
4917 _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
4918 else
4919 _LT_TAGVAR(ld_shlibs, $1)=no
4920 fi
4921 ;;
4922 esac
4923 ;;
4924
4925 sunos4*)
4926 _LT_TAGVAR(archive_cmds, $1)='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags'
4927 wlarc=
4928 _LT_TAGVAR(hardcode_direct, $1)=yes
4929 _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
4930 ;;
4931
4932 *)
4933 if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
4934 _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
4935 _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
4936 else
4937 _LT_TAGVAR(ld_shlibs, $1)=no
4938 fi
4939 ;;
4940 esac
4941
4942 if test "$_LT_TAGVAR(ld_shlibs, $1)" = no; then
4943 runpath_var=
4944 _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=
4945 _LT_TAGVAR(export_dynamic_flag_spec, $1)=
4946 _LT_TAGVAR(whole_archive_flag_spec, $1)=
4947 fi
4948 else
4949 # PORTME fill in a description of your system's linker (not GNU ld)
4950 case $host_os in
4951 aix3*)
4952 _LT_TAGVAR(allow_undefined_flag, $1)=unsupported
4953 _LT_TAGVAR(always_export_symbols, $1)=yes
4954 _LT_TAGVAR(archive_expsym_cmds, $1)='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname'
4955 # Note: this linker hardcodes the directories in LIBPATH if there
4956 # are no directories specified by -L.
4957 _LT_TAGVAR(hardcode_minus_L, $1)=yes
4958 if test "$GCC" = yes && test -z "$lt_prog_compiler_static"; then
4959 # Neither direct hardcoding nor static linking is supported with a
4960 # broken collect2.
4961 _LT_TAGVAR(hardcode_direct, $1)=unsupported
4962 fi
4963 ;;
4964
4965 aix[[4-9]]*)
4966 if test "$host_cpu" = ia64; then
4967 # On IA64, the linker does run time linking by default, so we don't
4968 # have to do anything special.
4969 aix_use_runtimelinking=no
4970 exp_sym_flag='-Bexport'
4971 no_entry_flag=""
4972 else
4973 # If we're using GNU nm, then we don't want the "-C" option.
4974 # -C means demangle to AIX nm, but means don't demangle with GNU nm
4975 # Also, AIX nm treats weak defined symbols like other global
4976 # defined symbols, whereas GNU nm marks them as "W".
4977 if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then
4978 _LT_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && ([substr](\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols'
4979 else
4980 _LT_TAGVAR(export_symbols_cmds, $1)='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && ([substr](\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols'
4981 fi
4982 aix_use_runtimelinking=no
4983
4984 # Test if we are trying to use run time linking or normal
4985 # AIX style linking. If -brtl is somewhere in LDFLAGS, we
4986 # need to do runtime linking.
4987 case $host_os in aix4.[[23]]|aix4.[[23]].*|aix[[5-9]]*)
4988 for ld_flag in $LDFLAGS; do
4989 if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then
4990 aix_use_runtimelinking=yes
4991 break
4992 fi
4993 done
4994 ;;
4995 esac
4996
4997 exp_sym_flag='-bexport'
4998 no_entry_flag='-bnoentry'
4999 fi
5000
5001 # When large executables or shared objects are built, AIX ld can
5002 # have problems creating the table of contents. If linking a library
5003 # or program results in "error TOC overflow" add -mminimal-toc to
5004 # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not
5005 # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS.
5006
5007 _LT_TAGVAR(archive_cmds, $1)=''
5008 _LT_TAGVAR(hardcode_direct, $1)=yes
5009 _LT_TAGVAR(hardcode_direct_absolute, $1)=yes
5010 _LT_TAGVAR(hardcode_libdir_separator, $1)=':'
5011 _LT_TAGVAR(link_all_deplibs, $1)=yes
5012 _LT_TAGVAR(file_list_spec, $1)='${wl}-f,'
5013
5014 if test "$GCC" = yes; then
5015 case $host_os in aix4.[[012]]|aix4.[[012]].*)
5016 # We only want to do this on AIX 4.2 and lower, the check
5017 # below for broken collect2 doesn't work under 4.3+
5018 collect2name=`${CC} -print-prog-name=collect2`
5019 if test -f "$collect2name" &&
5020 strings "$collect2name" | $GREP resolve_lib_name >/dev/null
5021 then
5022 # We have reworked collect2
5023 :
5024 else
5025 # We have old collect2
5026 _LT_TAGVAR(hardcode_direct, $1)=unsupported
5027 # It fails to find uninstalled libraries when the uninstalled
5028 # path is not listed in the libpath. Setting hardcode_minus_L
5029 # to unsupported forces relinking
5030 _LT_TAGVAR(hardcode_minus_L, $1)=yes
5031 _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
5032 _LT_TAGVAR(hardcode_libdir_separator, $1)=
5033 fi
5034 ;;
5035 esac
5036 shared_flag='-shared'
5037 if test "$aix_use_runtimelinking" = yes; then
5038 shared_flag="$shared_flag "'${wl}-G'
5039 fi
5040 else
5041 # not using gcc
5042 if test "$host_cpu" = ia64; then
5043 # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release
5044 # chokes on -Wl,-G. The following line is correct:
5045 shared_flag='-G'
5046 else
5047 if test "$aix_use_runtimelinking" = yes; then
5048 shared_flag='${wl}-G'
5049 else
5050 shared_flag='${wl}-bM:SRE'
5051 fi
5052 fi
5053 fi
5054
5055 _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-bexpall'
5056 # It seems that -bexpall does not export symbols beginning with
5057 # underscore (_), so it is better to generate a list of symbols to export.
5058 _LT_TAGVAR(always_export_symbols, $1)=yes
5059 if test "$aix_use_runtimelinking" = yes; then
5060 # Warning - without using the other runtime loading flags (-brtl),
5061 # -berok will link without error, but may produce a broken library.
5062 _LT_TAGVAR(allow_undefined_flag, $1)='-berok'
5063 # Determine the default libpath from the value encoded in an
5064 # empty executable.
5065 _LT_SYS_MODULE_PATH_AIX([$1])
5066 _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath"
5067 _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then func_echo_all "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag"
5068 else
5069 if test "$host_cpu" = ia64; then
5070 _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $libdir:/usr/lib:/lib'
5071 _LT_TAGVAR(allow_undefined_flag, $1)="-z nodefs"
5072 _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols"
5073 else
5074 # Determine the default libpath from the value encoded in an
5075 # empty executable.
5076 _LT_SYS_MODULE_PATH_AIX([$1])
5077 _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath"
5078 # Warning - without using the other run time loading flags,
5079 # -berok will link without error, but may produce a broken library.
5080 _LT_TAGVAR(no_undefined_flag, $1)=' ${wl}-bernotok'
5081 _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-berok'
5082 if test "$with_gnu_ld" = yes; then
5083 # We only use this code for GNU lds that support --whole-archive.
5084 _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive$convenience ${wl}--no-whole-archive'
5085 else
5086 # Exported symbols can be pulled into shared objects from archives
5087 _LT_TAGVAR(whole_archive_flag_spec, $1)='$convenience'
5088 fi
5089 _LT_TAGVAR(archive_cmds_need_lc, $1)=yes
5090 # This is similar to how AIX traditionally builds its shared libraries.
5091 _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname'
5092 fi
5093 fi
5094 ;;
5095
5096 amigaos*)
5097 case $host_cpu in
5098 powerpc)
5099 # see comment about AmigaOS4 .so support
5100 _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
5101 _LT_TAGVAR(archive_expsym_cmds, $1)=''
5102 ;;
5103 m68k)
5104 _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)'
5105 _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
5106 _LT_TAGVAR(hardcode_minus_L, $1)=yes
5107 ;;
5108 esac
5109 ;;
5110
5111 bsdi[[45]]*)
5112 _LT_TAGVAR(export_dynamic_flag_spec, $1)=-rdynamic
5113 ;;
5114
5115 cygwin* | mingw* | pw32* | cegcc*)
5116 # When not using gcc, we currently assume that we are using
5117 # Microsoft Visual C++.
5118 # hardcode_libdir_flag_spec is actually meaningless, as there is
5119 # no search path for DLLs.
5120 case $cc_basename in
5121 cl*)
5122 # Native MSVC
5123 _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=' '
5124 _LT_TAGVAR(allow_undefined_flag, $1)=unsupported
5125 _LT_TAGVAR(always_export_symbols, $1)=yes
5126 _LT_TAGVAR(file_list_spec, $1)='@'
5127 # Tell ltmain to make .lib files, not .a files.
5128 libext=lib
5129 # Tell ltmain to make .dll files, not .so files.
5130 shrext_cmds=".dll"
5131 # FIXME: Setting linknames here is a bad hack.
5132 _LT_TAGVAR(archive_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-dll~linknames='
5133 _LT_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then
5134 sed -n -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' -e '1\\\!p' < $export_symbols > $output_objdir/$soname.exp;
5135 else
5136 sed -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' < $export_symbols > $output_objdir/$soname.exp;
5137 fi~
5138 $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~
5139 linknames='
5140 # The linker will not automatically build a static lib if we build a DLL.
5141 # _LT_TAGVAR(old_archive_from_new_cmds, $1)='true'
5142 _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes
5143 _LT_TAGVAR(exclude_expsyms, $1)='_NULL_IMPORT_DESCRIPTOR|_IMPORT_DESCRIPTOR_.*'
5144 _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1,DATA/'\'' | $SED -e '\''/^[[AITW]][[ ]]/s/.*[[ ]]//'\'' | sort | uniq > $export_symbols'
5145 # Don't use ranlib
5146 _LT_TAGVAR(old_postinstall_cmds, $1)='chmod 644 $oldlib'
5147 _LT_TAGVAR(postlink_cmds, $1)='lt_outputfile="@OUTPUT@"~
5148 lt_tool_outputfile="@TOOL_OUTPUT@"~
5149 case $lt_outputfile in
5150 *.exe|*.EXE) ;;
5151 *)
5152 lt_outputfile="$lt_outputfile.exe"
5153 lt_tool_outputfile="$lt_tool_outputfile.exe"
5154 ;;
5155 esac~
5156 if test "$MANIFEST_TOOL" != ":" && test -f "$lt_outputfile.manifest"; then
5157 $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1;
5158 $RM "$lt_outputfile.manifest";
5159 fi'
5160 ;;
5161 *)
5162 # Assume MSVC wrapper
5163 _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=' '
5164 _LT_TAGVAR(allow_undefined_flag, $1)=unsupported
5165 # Tell ltmain to make .lib files, not .a files.
5166 libext=lib
5167 # Tell ltmain to make .dll files, not .so files.
5168 shrext_cmds=".dll"
5169 # FIXME: Setting linknames here is a bad hack.
5170 _LT_TAGVAR(archive_cmds, $1)='$CC -o $lib $libobjs $compiler_flags `func_echo_all "$deplibs" | $SED '\''s/ -lc$//'\''` -link -dll~linknames='
5171 # The linker will automatically build a .lib file if we build a DLL.
5172 _LT_TAGVAR(old_archive_from_new_cmds, $1)='true'
5173 # FIXME: Should let the user specify the lib program.
5174 _LT_TAGVAR(old_archive_cmds, $1)='lib -OUT:$oldlib$oldobjs$old_deplibs'
5175 _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes
5176 ;;
5177 esac
5178 ;;
5179
5180 darwin* | rhapsody*)
5181 _LT_DARWIN_LINKER_FEATURES($1)
5182 ;;
5183
5184 dgux*)
5185 _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
5186 _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
5187 _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
5188 ;;
5189
5190 # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor
5191 # support. Future versions do this automatically, but an explicit c++rt0.o
5192 # does not break anything, and helps significantly (at the cost of a little
5193 # extra space).
5194 freebsd2.2*)
5195 _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o'
5196 _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
5197 _LT_TAGVAR(hardcode_direct, $1)=yes
5198 _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
5199 ;;
5200
5201 # Unfortunately, older versions of FreeBSD 2 do not have this feature.
5202 freebsd2.*)
5203 _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
5204 _LT_TAGVAR(hardcode_direct, $1)=yes
5205 _LT_TAGVAR(hardcode_minus_L, $1)=yes
5206 _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
5207 ;;
5208
5209 # FreeBSD 3 and greater uses gcc -shared to do shared libraries.
5210 freebsd* | dragonfly*)
5211 _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
5212 _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
5213 _LT_TAGVAR(hardcode_direct, $1)=yes
5214 _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
5215 ;;
5216
5217 hpux9*)
5218 if test "$GCC" = yes; then
5219 _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -shared $pic_flag ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
5220 else
5221 _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
5222 fi
5223 _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir'
5224 _LT_TAGVAR(hardcode_libdir_separator, $1)=:
5225 _LT_TAGVAR(hardcode_direct, $1)=yes
5226
5227 # hardcode_minus_L: Not really in the search PATH,
5228 # but as the default location of the library.
5229 _LT_TAGVAR(hardcode_minus_L, $1)=yes
5230 _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
5231 ;;
5232
5233 hpux10*)
5234 if test "$GCC" = yes && test "$with_gnu_ld" = no; then
5235 _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
5236 else
5237 _LT_TAGVAR(archive_cmds, $1)='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags'
5238 fi
5239 if test "$with_gnu_ld" = no; then
5240 _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir'
5241 _LT_TAGVAR(hardcode_libdir_separator, $1)=:
5242 _LT_TAGVAR(hardcode_direct, $1)=yes
5243 _LT_TAGVAR(hardcode_direct_absolute, $1)=yes
5244 _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
5245 # hardcode_minus_L: Not really in the search PATH,
5246 # but as the default location of the library.
5247 _LT_TAGVAR(hardcode_minus_L, $1)=yes
5248 fi
5249 ;;
5250
5251 hpux11*)
5252 if test "$GCC" = yes && test "$with_gnu_ld" = no; then
5253 case $host_cpu in
5254 hppa*64*)
5255 _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
5256 ;;
5257 ia64*)
5258 _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags'
5259 ;;
5260 *)
5261 _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
5262 ;;
5263 esac
5264 else
5265 case $host_cpu in
5266 hppa*64*)
5267 _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
5268 ;;
5269 ia64*)
5270 _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags'
5271 ;;
5272 *)
5273 m4_if($1, [], [
5274 # Older versions of the 11.00 compiler do not understand -b yet
5275 # (HP92453-01 A.11.01.20 doesn't, HP92453-01 B.11.X.35175-35176.GP does)
5276 _LT_LINKER_OPTION([if $CC understands -b],
5277 _LT_TAGVAR(lt_cv_prog_compiler__b, $1), [-b],
5278 [_LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'],
5279 [_LT_TAGVAR(archive_cmds, $1)='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags'])],
5280 [_LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'])
5281 ;;
5282 esac
5283 fi
5284 if test "$with_gnu_ld" = no; then
5285 _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir'
5286 _LT_TAGVAR(hardcode_libdir_separator, $1)=:
5287
5288 case $host_cpu in
5289 hppa*64*|ia64*)
5290 _LT_TAGVAR(hardcode_direct, $1)=no
5291 _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
5292 ;;
5293 *)
5294 _LT_TAGVAR(hardcode_direct, $1)=yes
5295 _LT_TAGVAR(hardcode_direct_absolute, $1)=yes
5296 _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
5297
5298 # hardcode_minus_L: Not really in the search PATH,
5299 # but as the default location of the library.
5300 _LT_TAGVAR(hardcode_minus_L, $1)=yes
5301 ;;
5302 esac
5303 fi
5304 ;;
5305
5306 irix5* | irix6* | nonstopux*)
5307 if test "$GCC" = yes; then
5308 _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
5309 # Try to use the -exported_symbol ld option, if it does not
5310 # work, assume that -exports_file does not work either and
5311 # implicitly export all symbols.
5312 # This should be the same for all languages, so no per-tag cache variable.
5313 AC_CACHE_CHECK([whether the $host_os linker accepts -exported_symbol],
5314 [lt_cv_irix_exported_symbol],
5315 [save_LDFLAGS="$LDFLAGS"
5316 LDFLAGS="$LDFLAGS -shared ${wl}-exported_symbol ${wl}foo ${wl}-update_registry ${wl}/dev/null"
5317 AC_LINK_IFELSE(
5318 [AC_LANG_SOURCE(
5319 [AC_LANG_CASE([C], [[int foo (void) { return 0; }]],
5320 [C++], [[int foo (void) { return 0; }]],
5321 [Fortran 77], [[
5322 subroutine foo
5323 end]],
5324 [Fortran], [[
5325 subroutine foo
5326 end]])])],
5327 [lt_cv_irix_exported_symbol=yes],
5328 [lt_cv_irix_exported_symbol=no])
5329 LDFLAGS="$save_LDFLAGS"])
5330 if test "$lt_cv_irix_exported_symbol" = yes; then
5331 _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations ${wl}-exports_file ${wl}$export_symbols -o $lib'
5332 fi
5333 else
5334 _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib'
5335 _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -exports_file $export_symbols -o $lib'
5336 fi
5337 _LT_TAGVAR(archive_cmds_need_lc, $1)='no'
5338 _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
5339 _LT_TAGVAR(hardcode_libdir_separator, $1)=:
5340 _LT_TAGVAR(inherit_rpath, $1)=yes
5341 _LT_TAGVAR(link_all_deplibs, $1)=yes
5342 ;;
5343
5344 netbsd*)
5345 if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then
5346 _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out
5347 else
5348 _LT_TAGVAR(archive_cmds, $1)='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF
5349 fi
5350 _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
5351 _LT_TAGVAR(hardcode_direct, $1)=yes
5352 _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
5353 ;;
5354
5355 newsos6)
5356 _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
5357 _LT_TAGVAR(hardcode_direct, $1)=yes
5358 _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
5359 _LT_TAGVAR(hardcode_libdir_separator, $1)=:
5360 _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
5361 ;;
5362
5363 *nto* | *qnx*)
5364 ;;
5365
5366 openbsd*)
5367 if test -f /usr/libexec/ld.so; then
5368 _LT_TAGVAR(hardcode_direct, $1)=yes
5369 _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
5370 _LT_TAGVAR(hardcode_direct_absolute, $1)=yes
5371 if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
5372 _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
5373 _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols'
5374 _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
5375 _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
5376 else
5377 case $host_os in
5378 openbsd[[01]].* | openbsd2.[[0-7]] | openbsd2.[[0-7]].*)
5379 _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
5380 _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
5381 ;;
5382 *)
5383 _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
5384 _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
5385 ;;
5386 esac
5387 fi
5388 else
5389 _LT_TAGVAR(ld_shlibs, $1)=no
5390 fi
5391 ;;
5392
5393 os2*)
5394 _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
5395 _LT_TAGVAR(hardcode_minus_L, $1)=yes
5396 _LT_TAGVAR(allow_undefined_flag, $1)=unsupported
5397 _LT_TAGVAR(archive_cmds, $1)='$ECHO "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~echo DATA >> $output_objdir/$libname.def~echo " SINGLE NONSHARED" >> $output_objdir/$libname.def~echo EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def'
5398 _LT_TAGVAR(old_archive_from_new_cmds, $1)='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def'
5399 ;;
5400
5401 osf3*)
5402 if test "$GCC" = yes; then
5403 _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*'
5404 _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
5405 else
5406 _LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*'
5407 _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib'
5408 fi
5409 _LT_TAGVAR(archive_cmds_need_lc, $1)='no'
5410 _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
5411 _LT_TAGVAR(hardcode_libdir_separator, $1)=:
5412 ;;
5413
5414 osf4* | osf5*) # as osf3* with the addition of -msym flag
5415 if test "$GCC" = yes; then
5416 _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*'
5417 _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $pic_flag $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
5418 _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
5419 else
5420 _LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*'
5421 _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib'
5422 _LT_TAGVAR(archive_expsym_cmds, $1)='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; printf "%s\\n" "-hidden">> $lib.exp~
5423 $CC -shared${allow_undefined_flag} ${wl}-input ${wl}$lib.exp $compiler_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib~$RM $lib.exp'
5424
5425 # Both c and cxx compiler support -rpath directly
5426 _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir'
5427 fi
5428 _LT_TAGVAR(archive_cmds_need_lc, $1)='no'
5429 _LT_TAGVAR(hardcode_libdir_separator, $1)=:
5430 ;;
5431
5432 solaris*)
5433 _LT_TAGVAR(no_undefined_flag, $1)=' -z defs'
5434 if test "$GCC" = yes; then
5435 wlarc='${wl}'
5436 _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag ${wl}-z ${wl}text ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
5437 _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
5438 $CC -shared $pic_flag ${wl}-z ${wl}text ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp'
5439 else
5440 case `$CC -V 2>&1` in
5441 *"Compilers 5.0"*)
5442 wlarc=''
5443 _LT_TAGVAR(archive_cmds, $1)='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags'
5444 _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
5445 $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$RM $lib.exp'
5446 ;;
5447 *)
5448 wlarc='${wl}'
5449 _LT_TAGVAR(archive_cmds, $1)='$CC -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $compiler_flags'
5450 _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
5451 $CC -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp'
5452 ;;
5453 esac
5454 fi
5455 _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
5456 _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
5457 case $host_os in
5458 solaris2.[[0-5]] | solaris2.[[0-5]].*) ;;
5459 *)
5460 # The compiler driver will combine and reorder linker options,
5461 # but understands `-z linker_flag'. GCC discards it without `$wl',
5462 # but is careful enough not to reorder.
5463 # Supported since Solaris 2.6 (maybe 2.5.1?)
5464 if test "$GCC" = yes; then
5465 _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract'
5466 else
5467 _LT_TAGVAR(whole_archive_flag_spec, $1)='-z allextract$convenience -z defaultextract'
5468 fi
5469 ;;
5470 esac
5471 _LT_TAGVAR(link_all_deplibs, $1)=yes
5472 ;;
5473
5474 sunos4*)
5475 if test "x$host_vendor" = xsequent; then
5476 # Use $CC to link under sequent, because it throws in some extra .o
5477 # files that make .init and .fini sections work.
5478 _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags'
5479 else
5480 _LT_TAGVAR(archive_cmds, $1)='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags'
5481 fi
5482 _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
5483 _LT_TAGVAR(hardcode_direct, $1)=yes
5484 _LT_TAGVAR(hardcode_minus_L, $1)=yes
5485 _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
5486 ;;
5487
5488 sysv4)
5489 case $host_vendor in
5490 sni)
5491 _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
5492 _LT_TAGVAR(hardcode_direct, $1)=yes # is this really true???
5493 ;;
5494 siemens)
5495 ## LD is ld it makes a PLAMLIB
5496 ## CC just makes a GrossModule.
5497 _LT_TAGVAR(archive_cmds, $1)='$LD -G -o $lib $libobjs $deplibs $linker_flags'
5498 _LT_TAGVAR(reload_cmds, $1)='$CC -r -o $output$reload_objs'
5499 _LT_TAGVAR(hardcode_direct, $1)=no
5500 ;;
5501 motorola)
5502 _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
5503 _LT_TAGVAR(hardcode_direct, $1)=no #Motorola manual says yes, but my tests say they lie
5504 ;;
5505 esac
5506 runpath_var='LD_RUN_PATH'
5507 _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
5508 ;;
5509
5510 sysv4.3*)
5511 _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
5512 _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
5513 _LT_TAGVAR(export_dynamic_flag_spec, $1)='-Bexport'
5514 ;;
5515
5516 sysv4*MP*)
5517 if test -d /usr/nec; then
5518 _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
5519 _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
5520 runpath_var=LD_RUN_PATH
5521 hardcode_runpath_var=yes
5522 _LT_TAGVAR(ld_shlibs, $1)=yes
5523 fi
5524 ;;
5525
5526 sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[[01]].[[10]]* | unixware7* | sco3.2v5.0.[[024]]*)
5527 _LT_TAGVAR(no_undefined_flag, $1)='${wl}-z,text'
5528 _LT_TAGVAR(archive_cmds_need_lc, $1)=no
5529 _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
5530 runpath_var='LD_RUN_PATH'
5531
5532 if test "$GCC" = yes; then
5533 _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
5534 _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
5535 else
5536 _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
5537 _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
5538 fi
5539 ;;
5540
5541 sysv5* | sco3.2v5* | sco5v6*)
5542 # Note: We can NOT use -z defs as we might desire, because we do not
5543 # link with -lc, and that would cause any symbols used from libc to
5544 # always be unresolved, which means just about no library would
5545 # ever link correctly. If we're not using GNU ld we use -z text
5546 # though, which does catch some bad symbols but isn't as heavy-handed
5547 # as -z defs.
5548 _LT_TAGVAR(no_undefined_flag, $1)='${wl}-z,text'
5549 _LT_TAGVAR(allow_undefined_flag, $1)='${wl}-z,nodefs'
5550 _LT_TAGVAR(archive_cmds_need_lc, $1)=no
5551 _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
5552 _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R,$libdir'
5553 _LT_TAGVAR(hardcode_libdir_separator, $1)=':'
5554 _LT_TAGVAR(link_all_deplibs, $1)=yes
5555 _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-Bexport'
5556 runpath_var='LD_RUN_PATH'
5557
5558 if test "$GCC" = yes; then
5559 _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
5560 _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
5561 else
5562 _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
5563 _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
5564 fi
5565 ;;
5566
5567 uts4*)
5568 _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
5569 _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
5570 _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
5571 ;;
5572
5573 *)
5574 _LT_TAGVAR(ld_shlibs, $1)=no
5575 ;;
5576 esac
5577
5578 if test x$host_vendor = xsni; then
5579 case $host in
5580 sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*)
5581 _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-Blargedynsym'
5582 ;;
5583 esac
5584 fi
5585 fi
5586 ])
5587 AC_MSG_RESULT([$_LT_TAGVAR(ld_shlibs, $1)])
5588 test "$_LT_TAGVAR(ld_shlibs, $1)" = no && can_build_shared=no
5589
5590 _LT_TAGVAR(with_gnu_ld, $1)=$with_gnu_ld
5591
5592 _LT_DECL([], [libext], [0], [Old archive suffix (normally "a")])dnl
5593 _LT_DECL([], [shrext_cmds], [1], [Shared library suffix (normally ".so")])dnl
5594 _LT_DECL([], [extract_expsyms_cmds], [2],
5595 [The commands to extract the exported symbol list from a shared archive])
5596
5597 #
5598 # Do we need to explicitly link libc?
5599 #
5600 case "x$_LT_TAGVAR(archive_cmds_need_lc, $1)" in
5601 x|xyes)
5602 # Assume -lc should be added
5603 _LT_TAGVAR(archive_cmds_need_lc, $1)=yes
5604
5605 if test "$enable_shared" = yes && test "$GCC" = yes; then
5606 case $_LT_TAGVAR(archive_cmds, $1) in
5607 *'~'*)
5608 # FIXME: we may have to deal with multi-command sequences.
5609 ;;
5610 '$CC '*)
5611 # Test whether the compiler implicitly links with -lc since on some
5612 # systems, -lgcc has to come before -lc. If gcc already passes -lc
5613 # to ld, don't add -lc before -lgcc.
5614 AC_CACHE_CHECK([whether -lc should be explicitly linked in],
5615 [lt_cv_]_LT_TAGVAR(archive_cmds_need_lc, $1),
5616 [$RM conftest*
5617 echo "$lt_simple_compile_test_code" > conftest.$ac_ext
5618
5619 if AC_TRY_EVAL(ac_compile) 2>conftest.err; then
5620 soname=conftest
5621 lib=conftest
5622 libobjs=conftest.$ac_objext
5623 deplibs=
5624 wl=$_LT_TAGVAR(lt_prog_compiler_wl, $1)
5625 pic_flag=$_LT_TAGVAR(lt_prog_compiler_pic, $1)
5626 compiler_flags=-v
5627 linker_flags=-v
5628 verstring=
5629 output_objdir=.
5630 libname=conftest
5631 lt_save_allow_undefined_flag=$_LT_TAGVAR(allow_undefined_flag, $1)
5632 _LT_TAGVAR(allow_undefined_flag, $1)=
5633 if AC_TRY_EVAL(_LT_TAGVAR(archive_cmds, $1) 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1)
5634 then
5635 lt_cv_[]_LT_TAGVAR(archive_cmds_need_lc, $1)=no
5636 else
5637 lt_cv_[]_LT_TAGVAR(archive_cmds_need_lc, $1)=yes
5638 fi
5639 _LT_TAGVAR(allow_undefined_flag, $1)=$lt_save_allow_undefined_flag
5640 else
5641 cat conftest.err 1>&5
5642 fi
5643 $RM conftest*
5644 ])
5645 _LT_TAGVAR(archive_cmds_need_lc, $1)=$lt_cv_[]_LT_TAGVAR(archive_cmds_need_lc, $1)
5646 ;;
5647 esac
5648 fi
5649 ;;
5650 esac
5651
5652 _LT_TAGDECL([build_libtool_need_lc], [archive_cmds_need_lc], [0],
5653 [Whether or not to add -lc for building shared libraries])
5654 _LT_TAGDECL([allow_libtool_libs_with_static_runtimes],
5655 [enable_shared_with_static_runtimes], [0],
5656 [Whether or not to disallow shared libs when runtime libs are static])
5657 _LT_TAGDECL([], [export_dynamic_flag_spec], [1],
5658 [Compiler flag to allow reflexive dlopens])
5659 _LT_TAGDECL([], [whole_archive_flag_spec], [1],
5660 [Compiler flag to generate shared objects directly from archives])
5661 _LT_TAGDECL([], [compiler_needs_object], [1],
5662 [Whether the compiler copes with passing no objects directly])
5663 _LT_TAGDECL([], [old_archive_from_new_cmds], [2],
5664 [Create an old-style archive from a shared archive])
5665 _LT_TAGDECL([], [old_archive_from_expsyms_cmds], [2],
5666 [Create a temporary old-style archive to link instead of a shared archive])
5667 _LT_TAGDECL([], [archive_cmds], [2], [Commands used to build a shared archive])
5668 _LT_TAGDECL([], [archive_expsym_cmds], [2])
5669 _LT_TAGDECL([], [module_cmds], [2],
5670 [Commands used to build a loadable module if different from building
5671 a shared archive.])
5672 _LT_TAGDECL([], [module_expsym_cmds], [2])
5673 _LT_TAGDECL([], [with_gnu_ld], [1],
5674 [Whether we are building with GNU ld or not])
5675 _LT_TAGDECL([], [allow_undefined_flag], [1],
5676 [Flag that allows shared libraries with undefined symbols to be built])
5677 _LT_TAGDECL([], [no_undefined_flag], [1],
5678 [Flag that enforces no undefined symbols])
5679 _LT_TAGDECL([], [hardcode_libdir_flag_spec], [1],
5680 [Flag to hardcode $libdir into a binary during linking.
5681 This must work even if $libdir does not exist])
5682 _LT_TAGDECL([], [hardcode_libdir_separator], [1],
5683 [Whether we need a single "-rpath" flag with a separated argument])
5684 _LT_TAGDECL([], [hardcode_direct], [0],
5685 [Set to "yes" if using DIR/libNAME${shared_ext} during linking hardcodes
5686 DIR into the resulting binary])
5687 _LT_TAGDECL([], [hardcode_direct_absolute], [0],
5688 [Set to "yes" if using DIR/libNAME${shared_ext} during linking hardcodes
5689 DIR into the resulting binary and the resulting library dependency is
5690 "absolute", i.e impossible to change by setting ${shlibpath_var} if the
5691 library is relocated])
5692 _LT_TAGDECL([], [hardcode_minus_L], [0],
5693 [Set to "yes" if using the -LDIR flag during linking hardcodes DIR
5694 into the resulting binary])
5695 _LT_TAGDECL([], [hardcode_shlibpath_var], [0],
5696 [Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR
5697 into the resulting binary])
5698 _LT_TAGDECL([], [hardcode_automatic], [0],
5699 [Set to "yes" if building a shared library automatically hardcodes DIR
5700 into the library and all subsequent libraries and executables linked
5701 against it])
5702 _LT_TAGDECL([], [inherit_rpath], [0],
5703 [Set to yes if linker adds runtime paths of dependent libraries
5704 to runtime path list])
5705 _LT_TAGDECL([], [link_all_deplibs], [0],
5706 [Whether libtool must link a program against all its dependency libraries])
5707 _LT_TAGDECL([], [always_export_symbols], [0],
5708 [Set to "yes" if exported symbols are required])
5709 _LT_TAGDECL([], [export_symbols_cmds], [2],
5710 [The commands to list exported symbols])
5711 _LT_TAGDECL([], [exclude_expsyms], [1],
5712 [Symbols that should not be listed in the preloaded symbols])
5713 _LT_TAGDECL([], [include_expsyms], [1],
5714 [Symbols that must always be exported])
5715 _LT_TAGDECL([], [prelink_cmds], [2],
5716 [Commands necessary for linking programs (against libraries) with templates])
5717 _LT_TAGDECL([], [postlink_cmds], [2],
5718 [Commands necessary for finishing linking programs])
5719 _LT_TAGDECL([], [file_list_spec], [1],
5720 [Specify filename containing input files])
5721 dnl FIXME: Not yet implemented
5722 dnl _LT_TAGDECL([], [thread_safe_flag_spec], [1],
5723 dnl [Compiler flag to generate thread safe objects])
5724 ])# _LT_LINKER_SHLIBS
5725
5726
5727 # _LT_LANG_C_CONFIG([TAG])
5728 # ------------------------
5729 # Ensure that the configuration variables for a C compiler are suitably
5730 # defined. These variables are subsequently used by _LT_CONFIG to write
5731 # the compiler configuration to `libtool'.
5732 m4_defun([_LT_LANG_C_CONFIG],
5733 [m4_require([_LT_DECL_EGREP])dnl
5734 lt_save_CC="$CC"
5735 AC_LANG_PUSH(C)
5736
5737 # Source file extension for C test sources.
5738 ac_ext=c
5739
5740 # Object file extension for compiled C test sources.
5741 objext=o
5742 _LT_TAGVAR(objext, $1)=$objext
5743
5744 # Code to be used in simple compile tests
5745 lt_simple_compile_test_code="int some_variable = 0;"
5746
5747 # Code to be used in simple link tests
5748 lt_simple_link_test_code='int main(){return(0);}'
5749
5750 _LT_TAG_COMPILER
5751 # Save the default compiler, since it gets overwritten when the other
5752 # tags are being tested, and _LT_TAGVAR(compiler, []) is a NOP.
5753 compiler_DEFAULT=$CC
5754
5755 # save warnings/boilerplate of simple test code
5756 _LT_COMPILER_BOILERPLATE
5757 _LT_LINKER_BOILERPLATE
5758
5759 ## CAVEAT EMPTOR:
5760 ## There is no encapsulation within the following macros, do not change
5761 ## the running order or otherwise move them around unless you know exactly
5762 ## what you are doing...
5763 if test -n "$compiler"; then
5764 _LT_COMPILER_NO_RTTI($1)
5765 _LT_COMPILER_PIC($1)
5766 _LT_COMPILER_C_O($1)
5767 _LT_COMPILER_FILE_LOCKS($1)
5768 _LT_LINKER_SHLIBS($1)
5769 _LT_SYS_DYNAMIC_LINKER($1)
5770 _LT_LINKER_HARDCODE_LIBPATH($1)
5771 LT_SYS_DLOPEN_SELF
5772 _LT_CMD_STRIPLIB
5773
5774 # Report which library types will actually be built
5775 AC_MSG_CHECKING([if libtool supports shared libraries])
5776 AC_MSG_RESULT([$can_build_shared])
5777
5778 AC_MSG_CHECKING([whether to build shared libraries])
5779 test "$can_build_shared" = "no" && enable_shared=no
5780
5781 # On AIX, shared libraries and static libraries use the same namespace, and
5782 # are all built from PIC.
5783 case $host_os in
5784 aix3*)
5785 test "$enable_shared" = yes && enable_static=no
5786 if test -n "$RANLIB"; then
5787 archive_cmds="$archive_cmds~\$RANLIB \$lib"
5788 postinstall_cmds='$RANLIB $lib'
5789 fi
5790 ;;
5791
5792 aix[[4-9]]*)
5793 if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then
5794 test "$enable_shared" = yes && enable_static=no
5795 fi
5796 ;;
5797 esac
5798 AC_MSG_RESULT([$enable_shared])
5799
5800 AC_MSG_CHECKING([whether to build static libraries])
5801 # Make sure either enable_shared or enable_static is yes.
5802 test "$enable_shared" = yes || enable_static=yes
5803 AC_MSG_RESULT([$enable_static])
5804
5805 _LT_CONFIG($1)
5806 fi
5807 AC_LANG_POP
5808 CC="$lt_save_CC"
5809 ])# _LT_LANG_C_CONFIG
5810
5811
5812 # _LT_LANG_CXX_CONFIG([TAG])
5813 # --------------------------
5814 # Ensure that the configuration variables for a C++ compiler are suitably
5815 # defined. These variables are subsequently used by _LT_CONFIG to write
5816 # the compiler configuration to `libtool'.
5817 m4_defun([_LT_LANG_CXX_CONFIG],
5818 [m4_require([_LT_FILEUTILS_DEFAULTS])dnl
5819 m4_require([_LT_DECL_EGREP])dnl
5820 m4_require([_LT_PATH_MANIFEST_TOOL])dnl
5821 if test -n "$CXX" && ( test "X$CXX" != "Xno" &&
5822 ( (test "X$CXX" = "Xg++" && `g++ -v >/dev/null 2>&1` ) ||
5823 (test "X$CXX" != "Xg++"))) ; then
5824 AC_PROG_CXXCPP
5825 else
5826 _lt_caught_CXX_error=yes
5827 fi
5828
5829 AC_LANG_PUSH(C++)
5830 _LT_TAGVAR(archive_cmds_need_lc, $1)=no
5831 _LT_TAGVAR(allow_undefined_flag, $1)=
5832 _LT_TAGVAR(always_export_symbols, $1)=no
5833 _LT_TAGVAR(archive_expsym_cmds, $1)=
5834 _LT_TAGVAR(compiler_needs_object, $1)=no
5835 _LT_TAGVAR(export_dynamic_flag_spec, $1)=
5836 _LT_TAGVAR(hardcode_direct, $1)=no
5837 _LT_TAGVAR(hardcode_direct_absolute, $1)=no
5838 _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=
5839 _LT_TAGVAR(hardcode_libdir_separator, $1)=
5840 _LT_TAGVAR(hardcode_minus_L, $1)=no
5841 _LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported
5842 _LT_TAGVAR(hardcode_automatic, $1)=no
5843 _LT_TAGVAR(inherit_rpath, $1)=no
5844 _LT_TAGVAR(module_cmds, $1)=
5845 _LT_TAGVAR(module_expsym_cmds, $1)=
5846 _LT_TAGVAR(link_all_deplibs, $1)=unknown
5847 _LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds
5848 _LT_TAGVAR(reload_flag, $1)=$reload_flag
5849 _LT_TAGVAR(reload_cmds, $1)=$reload_cmds
5850 _LT_TAGVAR(no_undefined_flag, $1)=
5851 _LT_TAGVAR(whole_archive_flag_spec, $1)=
5852 _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no
5853
5854 # Source file extension for C++ test sources.
5855 ac_ext=cpp
5856
5857 # Object file extension for compiled C++ test sources.
5858 objext=o
5859 _LT_TAGVAR(objext, $1)=$objext
5860
5861 # No sense in running all these tests if we already determined that
5862 # the CXX compiler isn't working. Some variables (like enable_shared)
5863 # are currently assumed to apply to all compilers on this platform,
5864 # and will be corrupted by setting them based on a non-working compiler.
5865 if test "$_lt_caught_CXX_error" != yes; then
5866 # Code to be used in simple compile tests
5867 lt_simple_compile_test_code="int some_variable = 0;"
5868
5869 # Code to be used in simple link tests
5870 lt_simple_link_test_code='int main(int, char *[[]]) { return(0); }'
5871
5872 # ltmain only uses $CC for tagged configurations so make sure $CC is set.
5873 _LT_TAG_COMPILER
5874
5875 # save warnings/boilerplate of simple test code
5876 _LT_COMPILER_BOILERPLATE
5877 _LT_LINKER_BOILERPLATE
5878
5879 # Allow CC to be a program name with arguments.
5880 lt_save_CC=$CC
5881 lt_save_CFLAGS=$CFLAGS
5882 lt_save_LD=$LD
5883 lt_save_GCC=$GCC
5884 GCC=$GXX
5885 lt_save_with_gnu_ld=$with_gnu_ld
5886 lt_save_path_LD=$lt_cv_path_LD
5887 if test -n "${lt_cv_prog_gnu_ldcxx+set}"; then
5888 lt_cv_prog_gnu_ld=$lt_cv_prog_gnu_ldcxx
5889 else
5890 $as_unset lt_cv_prog_gnu_ld
5891 fi
5892 if test -n "${lt_cv_path_LDCXX+set}"; then
5893 lt_cv_path_LD=$lt_cv_path_LDCXX
5894 else
5895 $as_unset lt_cv_path_LD
5896 fi
5897 test -z "${LDCXX+set}" || LD=$LDCXX
5898 CC=${CXX-"c++"}
5899 CFLAGS=$CXXFLAGS
5900 compiler=$CC
5901 _LT_TAGVAR(compiler, $1)=$CC
5902 _LT_CC_BASENAME([$compiler])
5903
5904 if test -n "$compiler"; then
5905 # We don't want -fno-exception when compiling C++ code, so set the
5906 # no_builtin_flag separately
5907 if test "$GXX" = yes; then
5908 _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -fno-builtin'
5909 else
5910 _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=
5911 fi
5912
5913 if test "$GXX" = yes; then
5914 # Set up default GNU C++ configuration
5915
5916 LT_PATH_LD
5917
5918 # Check if GNU C++ uses GNU ld as the underlying linker, since the
5919 # archiving commands below assume that GNU ld is being used.
5920 if test "$with_gnu_ld" = yes; then
5921 _LT_TAGVAR(archive_cmds, $1)='$CC $pic_flag -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib'
5922 _LT_TAGVAR(archive_expsym_cmds, $1)='$CC $pic_flag -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
5923
5924 _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
5925 _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic'
5926
5927 # If archive_cmds runs LD, not CC, wlarc should be empty
5928 # XXX I think wlarc can be eliminated in ltcf-cxx, but I need to
5929 # investigate it a little bit more. (MM)
5930 wlarc='${wl}'
5931
5932 # ancient GNU ld didn't support --whole-archive et. al.
5933 if eval "`$CC -print-prog-name=ld` --help 2>&1" |
5934 $GREP 'no-whole-archive' > /dev/null; then
5935 _LT_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive'
5936 else
5937 _LT_TAGVAR(whole_archive_flag_spec, $1)=
5938 fi
5939 else
5940 with_gnu_ld=no
5941 wlarc=
5942
5943 # A generic and very simple default shared library creation
5944 # command for GNU C++ for the case where it uses the native
5945 # linker, instead of GNU ld. If possible, this setting should
5946 # overridden to take advantage of the native linker features on
5947 # the platform it is being used on.
5948 _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib'
5949 fi
5950
5951 # Commands to make compiler produce verbose output that lists
5952 # what "hidden" libraries, object files and flags are used when
5953 # linking a shared library.
5954 output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"'
5955
5956 else
5957 GXX=no
5958 with_gnu_ld=no
5959 wlarc=
5960 fi
5961
5962 # PORTME: fill in a description of your system's C++ link characteristics
5963 AC_MSG_CHECKING([whether the $compiler linker ($LD) supports shared libraries])
5964 _LT_TAGVAR(ld_shlibs, $1)=yes
5965 case $host_os in
5966 aix3*)
5967 # FIXME: insert proper C++ library support
5968 _LT_TAGVAR(ld_shlibs, $1)=no
5969 ;;
5970 aix[[4-9]]*)
5971 if test "$host_cpu" = ia64; then
5972 # On IA64, the linker does run time linking by default, so we don't
5973 # have to do anything special.
5974 aix_use_runtimelinking=no
5975 exp_sym_flag='-Bexport'
5976 no_entry_flag=""
5977 else
5978 aix_use_runtimelinking=no
5979
5980 # Test if we are trying to use run time linking or normal
5981 # AIX style linking. If -brtl is somewhere in LDFLAGS, we
5982 # need to do runtime linking.
5983 case $host_os in aix4.[[23]]|aix4.[[23]].*|aix[[5-9]]*)
5984 for ld_flag in $LDFLAGS; do
5985 case $ld_flag in
5986 *-brtl*)
5987 aix_use_runtimelinking=yes
5988 break
5989 ;;
5990 esac
5991 done
5992 ;;
5993 esac
5994
5995 exp_sym_flag='-bexport'
5996 no_entry_flag='-bnoentry'
5997 fi
5998
5999 # When large executables or shared objects are built, AIX ld can
6000 # have problems creating the table of contents. If linking a library
6001 # or program results in "error TOC overflow" add -mminimal-toc to
6002 # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not
6003 # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS.
6004
6005 _LT_TAGVAR(archive_cmds, $1)=''
6006 _LT_TAGVAR(hardcode_direct, $1)=yes
6007 _LT_TAGVAR(hardcode_direct_absolute, $1)=yes
6008 _LT_TAGVAR(hardcode_libdir_separator, $1)=':'
6009 _LT_TAGVAR(link_all_deplibs, $1)=yes
6010 _LT_TAGVAR(file_list_spec, $1)='${wl}-f,'
6011
6012 if test "$GXX" = yes; then
6013 case $host_os in aix4.[[012]]|aix4.[[012]].*)
6014 # We only want to do this on AIX 4.2 and lower, the check
6015 # below for broken collect2 doesn't work under 4.3+
6016 collect2name=`${CC} -print-prog-name=collect2`
6017 if test -f "$collect2name" &&
6018 strings "$collect2name" | $GREP resolve_lib_name >/dev/null
6019 then
6020 # We have reworked collect2
6021 :
6022 else
6023 # We have old collect2
6024 _LT_TAGVAR(hardcode_direct, $1)=unsupported
6025 # It fails to find uninstalled libraries when the uninstalled
6026 # path is not listed in the libpath. Setting hardcode_minus_L
6027 # to unsupported forces relinking
6028 _LT_TAGVAR(hardcode_minus_L, $1)=yes
6029 _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
6030 _LT_TAGVAR(hardcode_libdir_separator, $1)=
6031 fi
6032 esac
6033 shared_flag='-shared'
6034 if test "$aix_use_runtimelinking" = yes; then
6035 shared_flag="$shared_flag "'${wl}-G'
6036 fi
6037 else
6038 # not using gcc
6039 if test "$host_cpu" = ia64; then
6040 # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release
6041 # chokes on -Wl,-G. The following line is correct:
6042 shared_flag='-G'
6043 else
6044 if test "$aix_use_runtimelinking" = yes; then
6045 shared_flag='${wl}-G'
6046 else
6047 shared_flag='${wl}-bM:SRE'
6048 fi
6049 fi
6050 fi
6051
6052 _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-bexpall'
6053 # It seems that -bexpall does not export symbols beginning with
6054 # underscore (_), so it is better to generate a list of symbols to
6055 # export.
6056 _LT_TAGVAR(always_export_symbols, $1)=yes
6057 if test "$aix_use_runtimelinking" = yes; then
6058 # Warning - without using the other runtime loading flags (-brtl),
6059 # -berok will link without error, but may produce a broken library.
6060 _LT_TAGVAR(allow_undefined_flag, $1)='-berok'
6061 # Determine the default libpath from the value encoded in an empty
6062 # executable.
6063 _LT_SYS_MODULE_PATH_AIX([$1])
6064 _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath"
6065
6066 _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then func_echo_all "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag"
6067 else
6068 if test "$host_cpu" = ia64; then
6069 _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $libdir:/usr/lib:/lib'
6070 _LT_TAGVAR(allow_undefined_flag, $1)="-z nodefs"
6071 _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols"
6072 else
6073 # Determine the default libpath from the value encoded in an
6074 # empty executable.
6075 _LT_SYS_MODULE_PATH_AIX([$1])
6076 _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath"
6077 # Warning - without using the other run time loading flags,
6078 # -berok will link without error, but may produce a broken library.
6079 _LT_TAGVAR(no_undefined_flag, $1)=' ${wl}-bernotok'
6080 _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-berok'
6081 if test "$with_gnu_ld" = yes; then
6082 # We only use this code for GNU lds that support --whole-archive.
6083 _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive$convenience ${wl}--no-whole-archive'
6084 else
6085 # Exported symbols can be pulled into shared objects from archives
6086 _LT_TAGVAR(whole_archive_flag_spec, $1)='$convenience'
6087 fi
6088 _LT_TAGVAR(archive_cmds_need_lc, $1)=yes
6089 # This is similar to how AIX traditionally builds its shared
6090 # libraries.
6091 _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname'
6092 fi
6093 fi
6094 ;;
6095
6096 beos*)
6097 if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
6098 _LT_TAGVAR(allow_undefined_flag, $1)=unsupported
6099 # Joseph Beckenbach <jrb3@best.com> says some releases of gcc
6100 # support --undefined. This deserves some investigation. FIXME
6101 _LT_TAGVAR(archive_cmds, $1)='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
6102 else
6103 _LT_TAGVAR(ld_shlibs, $1)=no
6104 fi
6105 ;;
6106
6107 chorus*)
6108 case $cc_basename in
6109 *)
6110 # FIXME: insert proper C++ library support
6111 _LT_TAGVAR(ld_shlibs, $1)=no
6112 ;;
6113 esac
6114 ;;
6115
6116 cygwin* | mingw* | pw32* | cegcc*)
6117 case $GXX,$cc_basename in
6118 ,cl* | no,cl*)
6119 # Native MSVC
6120 # hardcode_libdir_flag_spec is actually meaningless, as there is
6121 # no search path for DLLs.
6122 _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=' '
6123 _LT_TAGVAR(allow_undefined_flag, $1)=unsupported
6124 _LT_TAGVAR(always_export_symbols, $1)=yes
6125 _LT_TAGVAR(file_list_spec, $1)='@'
6126 # Tell ltmain to make .lib files, not .a files.
6127 libext=lib
6128 # Tell ltmain to make .dll files, not .so files.
6129 shrext_cmds=".dll"
6130 # FIXME: Setting linknames here is a bad hack.
6131 _LT_TAGVAR(archive_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-dll~linknames='
6132 _LT_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then
6133 $SED -n -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' -e '1\\\!p' < $export_symbols > $output_objdir/$soname.exp;
6134 else
6135 $SED -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' < $export_symbols > $output_objdir/$soname.exp;
6136 fi~
6137 $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~
6138 linknames='
6139 # The linker will not automatically build a static lib if we build a DLL.
6140 # _LT_TAGVAR(old_archive_from_new_cmds, $1)='true'
6141 _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes
6142 # Don't use ranlib
6143 _LT_TAGVAR(old_postinstall_cmds, $1)='chmod 644 $oldlib'
6144 _LT_TAGVAR(postlink_cmds, $1)='lt_outputfile="@OUTPUT@"~
6145 lt_tool_outputfile="@TOOL_OUTPUT@"~
6146 case $lt_outputfile in
6147 *.exe|*.EXE) ;;
6148 *)
6149 lt_outputfile="$lt_outputfile.exe"
6150 lt_tool_outputfile="$lt_tool_outputfile.exe"
6151 ;;
6152 esac~
6153 func_to_tool_file "$lt_outputfile"~
6154 if test "$MANIFEST_TOOL" != ":" && test -f "$lt_outputfile.manifest"; then
6155 $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1;
6156 $RM "$lt_outputfile.manifest";
6157 fi'
6158 ;;
6159 *)
6160 # g++
6161 # _LT_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless,
6162 # as there is no search path for DLLs.
6163 _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
6164 _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-all-symbols'
6165 _LT_TAGVAR(allow_undefined_flag, $1)=unsupported
6166 _LT_TAGVAR(always_export_symbols, $1)=no
6167 _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes
6168
6169 if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then
6170 _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
6171 # If the export-symbols file already is a .def file (1st line
6172 # is EXPORTS), use it as is; otherwise, prepend...
6173 _LT_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then
6174 cp $export_symbols $output_objdir/$soname.def;
6175 else
6176 echo EXPORTS > $output_objdir/$soname.def;
6177 cat $export_symbols >> $output_objdir/$soname.def;
6178 fi~
6179 $CC -shared -nostdlib $output_objdir/$soname.def $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
6180 else
6181 _LT_TAGVAR(ld_shlibs, $1)=no
6182 fi
6183 ;;
6184 esac
6185 ;;
6186 darwin* | rhapsody*)
6187 _LT_DARWIN_LINKER_FEATURES($1)
6188 ;;
6189
6190 dgux*)
6191 case $cc_basename in
6192 ec++*)
6193 # FIXME: insert proper C++ library support
6194 _LT_TAGVAR(ld_shlibs, $1)=no
6195 ;;
6196 ghcx*)
6197 # Green Hills C++ Compiler
6198 # FIXME: insert proper C++ library support
6199 _LT_TAGVAR(ld_shlibs, $1)=no
6200 ;;
6201 *)
6202 # FIXME: insert proper C++ library support
6203 _LT_TAGVAR(ld_shlibs, $1)=no
6204 ;;
6205 esac
6206 ;;
6207
6208 freebsd2.*)
6209 # C++ shared libraries reported to be fairly broken before
6210 # switch to ELF
6211 _LT_TAGVAR(ld_shlibs, $1)=no
6212 ;;
6213
6214 freebsd-elf*)
6215 _LT_TAGVAR(archive_cmds_need_lc, $1)=no
6216 ;;
6217
6218 freebsd* | dragonfly*)
6219 # FreeBSD 3 and later use GNU C++ and GNU ld with standard ELF
6220 # conventions
6221 _LT_TAGVAR(ld_shlibs, $1)=yes
6222 ;;
6223
6224 gnu*)
6225 ;;
6226
6227 haiku*)
6228 _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
6229 _LT_TAGVAR(link_all_deplibs, $1)=yes
6230 ;;
6231
6232 hpux9*)
6233 _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir'
6234 _LT_TAGVAR(hardcode_libdir_separator, $1)=:
6235 _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
6236 _LT_TAGVAR(hardcode_direct, $1)=yes
6237 _LT_TAGVAR(hardcode_minus_L, $1)=yes # Not in the search PATH,
6238 # but as the default
6239 # location of the library.
6240
6241 case $cc_basename in
6242 CC*)
6243 # FIXME: insert proper C++ library support
6244 _LT_TAGVAR(ld_shlibs, $1)=no
6245 ;;
6246 aCC*)
6247 _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -b ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
6248 # Commands to make compiler produce verbose output that lists
6249 # what "hidden" libraries, object files and flags are used when
6250 # linking a shared library.
6251 #
6252 # There doesn't appear to be a way to prevent this compiler from
6253 # explicitly linking system object files so we need to strip them
6254 # from the output so that they don't get included in the library
6255 # dependencies.
6256 output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $EGREP "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"'
6257 ;;
6258 *)
6259 if test "$GXX" = yes; then
6260 _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -shared -nostdlib $pic_flag ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
6261 else
6262 # FIXME: insert proper C++ library support
6263 _LT_TAGVAR(ld_shlibs, $1)=no
6264 fi
6265 ;;
6266 esac
6267 ;;
6268
6269 hpux10*|hpux11*)
6270 if test $with_gnu_ld = no; then
6271 _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir'
6272 _LT_TAGVAR(hardcode_libdir_separator, $1)=:
6273
6274 case $host_cpu in
6275 hppa*64*|ia64*)
6276 ;;
6277 *)
6278 _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
6279 ;;
6280 esac
6281 fi
6282 case $host_cpu in
6283 hppa*64*|ia64*)
6284 _LT_TAGVAR(hardcode_direct, $1)=no
6285 _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
6286 ;;
6287 *)
6288 _LT_TAGVAR(hardcode_direct, $1)=yes
6289 _LT_TAGVAR(hardcode_direct_absolute, $1)=yes
6290 _LT_TAGVAR(hardcode_minus_L, $1)=yes # Not in the search PATH,
6291 # but as the default
6292 # location of the library.
6293 ;;
6294 esac
6295
6296 case $cc_basename in
6297 CC*)
6298 # FIXME: insert proper C++ library support
6299 _LT_TAGVAR(ld_shlibs, $1)=no
6300 ;;
6301 aCC*)
6302 case $host_cpu in
6303 hppa*64*)
6304 _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
6305 ;;
6306 ia64*)
6307 _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
6308 ;;
6309 *)
6310 _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
6311 ;;
6312 esac
6313 # Commands to make compiler produce verbose output that lists
6314 # what "hidden" libraries, object files and flags are used when
6315 # linking a shared library.
6316 #
6317 # There doesn't appear to be a way to prevent this compiler from
6318 # explicitly linking system object files so we need to strip them
6319 # from the output so that they don't get included in the library
6320 # dependencies.
6321 output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $GREP "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"'
6322 ;;
6323 *)
6324 if test "$GXX" = yes; then
6325 if test $with_gnu_ld = no; then
6326 case $host_cpu in
6327 hppa*64*)
6328 _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
6329 ;;
6330 ia64*)
6331 _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $pic_flag ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
6332 ;;
6333 *)
6334 _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
6335 ;;
6336 esac
6337 fi
6338 else
6339 # FIXME: insert proper C++ library support
6340 _LT_TAGVAR(ld_shlibs, $1)=no
6341 fi
6342 ;;
6343 esac
6344 ;;
6345
6346 interix[[3-9]]*)
6347 _LT_TAGVAR(hardcode_direct, $1)=no
6348 _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
6349 _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
6350 _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
6351 # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc.
6352 # Instead, shared libraries are loaded at an image base (0x10000000 by
6353 # default) and relocated if they conflict, which is a slow very memory
6354 # consuming and fragmenting process. To avoid this, we pick a random,
6355 # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link
6356 # time. Moving up from 0x10000000 also allows more sbrk(2) space.
6357 _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
6358 _LT_TAGVAR(archive_expsym_cmds, $1)='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
6359 ;;
6360 irix5* | irix6*)
6361 case $cc_basename in
6362 CC*)
6363 # SGI C++
6364 _LT_TAGVAR(archive_cmds, $1)='$CC -shared -all -multigot $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib'
6365
6366 # Archives containing C++ object files must be created using
6367 # "CC -ar", where "CC" is the IRIX C++ compiler. This is
6368 # necessary to make sure instantiated templates are included
6369 # in the archive.
6370 _LT_TAGVAR(old_archive_cmds, $1)='$CC -ar -WR,-u -o $oldlib $oldobjs'
6371 ;;
6372 *)
6373 if test "$GXX" = yes; then
6374 if test "$with_gnu_ld" = no; then
6375 _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
6376 else
6377 _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` -o $lib'
6378 fi
6379 fi
6380 _LT_TAGVAR(link_all_deplibs, $1)=yes
6381 ;;
6382 esac
6383 _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
6384 _LT_TAGVAR(hardcode_libdir_separator, $1)=:
6385 _LT_TAGVAR(inherit_rpath, $1)=yes
6386 ;;
6387
6388 linux* | k*bsd*-gnu | kopensolaris*-gnu)
6389 case $cc_basename in
6390 KCC*)
6391 # Kuck and Associates, Inc. (KAI) C++ Compiler
6392
6393 # KCC will only create a shared library if the output file
6394 # ends with ".so" (or ".sl" for HP-UX), so rename the library
6395 # to its proper name (with version) after linking.
6396 _LT_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib'
6397 _LT_TAGVAR(archive_expsym_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib ${wl}-retain-symbols-file,$export_symbols; mv \$templib $lib'
6398 # Commands to make compiler produce verbose output that lists
6399 # what "hidden" libraries, object files and flags are used when
6400 # linking a shared library.
6401 #
6402 # There doesn't appear to be a way to prevent this compiler from
6403 # explicitly linking system object files so we need to strip them
6404 # from the output so that they don't get included in the library
6405 # dependencies.
6406 output_verbose_link_cmd='templist=`$CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 | $GREP "ld"`; rm -f libconftest$shared_ext; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"'
6407
6408 _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
6409 _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic'
6410
6411 # Archives containing C++ object files must be created using
6412 # "CC -Bstatic", where "CC" is the KAI C++ compiler.
6413 _LT_TAGVAR(old_archive_cmds, $1)='$CC -Bstatic -o $oldlib $oldobjs'
6414 ;;
6415 icpc* | ecpc* )
6416 # Intel C++
6417 with_gnu_ld=yes
6418 # version 8.0 and above of icpc choke on multiply defined symbols
6419 # if we add $predep_objects and $postdep_objects, however 7.1 and
6420 # earlier do not add the objects themselves.
6421 case `$CC -V 2>&1` in
6422 *"Version 7."*)
6423 _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib'
6424 _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
6425 ;;
6426 *) # Version 8.0 or newer
6427 tmp_idyn=
6428 case $host_cpu in
6429 ia64*) tmp_idyn=' -i_dynamic';;
6430 esac
6431 _LT_TAGVAR(archive_cmds, $1)='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
6432 _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
6433 ;;
6434 esac
6435 _LT_TAGVAR(archive_cmds_need_lc, $1)=no
6436 _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
6437 _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic'
6438 _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive$convenience ${wl}--no-whole-archive'
6439 ;;
6440 pgCC* | pgcpp*)
6441 # Portland Group C++ compiler
6442 case `$CC -V` in
6443 *pgCC\ [[1-5]].* | *pgcpp\ [[1-5]].*)
6444 _LT_TAGVAR(prelink_cmds, $1)='tpldir=Template.dir~
6445 rm -rf $tpldir~
6446 $CC --prelink_objects --instantiation_dir $tpldir $objs $libobjs $compile_deplibs~
6447 compile_command="$compile_command `find $tpldir -name \*.o | sort | $NL2SP`"'
6448 _LT_TAGVAR(old_archive_cmds, $1)='tpldir=Template.dir~
6449 rm -rf $tpldir~
6450 $CC --prelink_objects --instantiation_dir $tpldir $oldobjs$old_deplibs~
6451 $AR $AR_FLAGS $oldlib$oldobjs$old_deplibs `find $tpldir -name \*.o | sort | $NL2SP`~
6452 $RANLIB $oldlib'
6453 _LT_TAGVAR(archive_cmds, $1)='tpldir=Template.dir~
6454 rm -rf $tpldir~
6455 $CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~
6456 $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | sort | $NL2SP` $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib'
6457 _LT_TAGVAR(archive_expsym_cmds, $1)='tpldir=Template.dir~
6458 rm -rf $tpldir~
6459 $CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~
6460 $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | sort | $NL2SP` $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib'
6461 ;;
6462 *) # Version 6 and above use weak symbols
6463 _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib'
6464 _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib'
6465 ;;
6466 esac
6467
6468 _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}--rpath ${wl}$libdir'
6469 _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic'
6470 _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive'
6471 ;;
6472 cxx*)
6473 # Compaq C++
6474 _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib'
6475 _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib ${wl}-retain-symbols-file $wl$export_symbols'
6476
6477 runpath_var=LD_RUN_PATH
6478 _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir'
6479 _LT_TAGVAR(hardcode_libdir_separator, $1)=:
6480
6481 # Commands to make compiler produce verbose output that lists
6482 # what "hidden" libraries, object files and flags are used when
6483 # linking a shared library.
6484 #
6485 # There doesn't appear to be a way to prevent this compiler from
6486 # explicitly linking system object files so we need to strip them
6487 # from the output so that they don't get included in the library
6488 # dependencies.
6489 output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld"`; templist=`func_echo_all "$templist" | $SED "s/\(^.*ld.*\)\( .*ld .*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "X$list" | $Xsed'
6490 ;;
6491 xl* | mpixl* | bgxl*)
6492 # IBM XL 8.0 on PPC, with GNU ld
6493 _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
6494 _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic'
6495 _LT_TAGVAR(archive_cmds, $1)='$CC -qmkshrobj $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
6496 if test "x$supports_anon_versioning" = xyes; then
6497 _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~
6498 cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
6499 echo "local: *; };" >> $output_objdir/$libname.ver~
6500 $CC -qmkshrobj $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib'
6501 fi
6502 ;;
6503 *)
6504 case `$CC -V 2>&1 | sed 5q` in
6505 *Sun\ C*)
6506 # Sun C++ 5.9
6507 _LT_TAGVAR(no_undefined_flag, $1)=' -zdefs'
6508 _LT_TAGVAR(archive_cmds, $1)='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
6509 _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file ${wl}$export_symbols'
6510 _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
6511 _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive'
6512 _LT_TAGVAR(compiler_needs_object, $1)=yes
6513
6514 # Not sure whether something based on
6515 # $CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1
6516 # would be better.
6517 output_verbose_link_cmd='func_echo_all'
6518
6519 # Archives containing C++ object files must be created using
6520 # "CC -xar", where "CC" is the Sun C++ compiler. This is
6521 # necessary to make sure instantiated templates are included
6522 # in the archive.
6523 _LT_TAGVAR(old_archive_cmds, $1)='$CC -xar -o $oldlib $oldobjs'
6524 ;;
6525 esac
6526 ;;
6527 esac
6528 ;;
6529
6530 lynxos*)
6531 # FIXME: insert proper C++ library support
6532 _LT_TAGVAR(ld_shlibs, $1)=no
6533 ;;
6534
6535 m88k*)
6536 # FIXME: insert proper C++ library support
6537 _LT_TAGVAR(ld_shlibs, $1)=no
6538 ;;
6539
6540 mvs*)
6541 case $cc_basename in
6542 cxx*)
6543 # FIXME: insert proper C++ library support
6544 _LT_TAGVAR(ld_shlibs, $1)=no
6545 ;;
6546 *)
6547 # FIXME: insert proper C++ library support
6548 _LT_TAGVAR(ld_shlibs, $1)=no
6549 ;;
6550 esac
6551 ;;
6552
6553 netbsd*)
6554 if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then
6555 _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $predep_objects $libobjs $deplibs $postdep_objects $linker_flags'
6556 wlarc=
6557 _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
6558 _LT_TAGVAR(hardcode_direct, $1)=yes
6559 _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
6560 fi
6561 # Workaround some broken pre-1.5 toolchains
6562 output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP conftest.$objext | $SED -e "s:-lgcc -lc -lgcc::"'
6563 ;;
6564
6565 *nto* | *qnx*)
6566 _LT_TAGVAR(ld_shlibs, $1)=yes
6567 ;;
6568
6569 openbsd2*)
6570 # C++ shared libraries are fairly broken
6571 _LT_TAGVAR(ld_shlibs, $1)=no
6572 ;;
6573
6574 openbsd*)
6575 if test -f /usr/libexec/ld.so; then
6576 _LT_TAGVAR(hardcode_direct, $1)=yes
6577 _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
6578 _LT_TAGVAR(hardcode_direct_absolute, $1)=yes
6579 _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib'
6580 _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
6581 if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
6582 _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file,$export_symbols -o $lib'
6583 _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
6584 _LT_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive'
6585 fi
6586 output_verbose_link_cmd=func_echo_all
6587 else
6588 _LT_TAGVAR(ld_shlibs, $1)=no
6589 fi
6590 ;;
6591
6592 osf3* | osf4* | osf5*)
6593 case $cc_basename in
6594 KCC*)
6595 # Kuck and Associates, Inc. (KAI) C++ Compiler
6596
6597 # KCC will only create a shared library if the output file
6598 # ends with ".so" (or ".sl" for HP-UX), so rename the library
6599 # to its proper name (with version) after linking.
6600 _LT_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo "$lib" | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib'
6601
6602 _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
6603 _LT_TAGVAR(hardcode_libdir_separator, $1)=:
6604
6605 # Archives containing C++ object files must be created using
6606 # the KAI C++ compiler.
6607 case $host in
6608 osf3*) _LT_TAGVAR(old_archive_cmds, $1)='$CC -Bstatic -o $oldlib $oldobjs' ;;
6609 *) _LT_TAGVAR(old_archive_cmds, $1)='$CC -o $oldlib $oldobjs' ;;
6610 esac
6611 ;;
6612 RCC*)
6613 # Rational C++ 2.4.1
6614 # FIXME: insert proper C++ library support
6615 _LT_TAGVAR(ld_shlibs, $1)=no
6616 ;;
6617 cxx*)
6618 case $host in
6619 osf3*)
6620 _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*'
6621 _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $soname `test -n "$verstring" && func_echo_all "${wl}-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib'
6622 _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
6623 ;;
6624 *)
6625 _LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*'
6626 _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib'
6627 _LT_TAGVAR(archive_expsym_cmds, $1)='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done~
6628 echo "-hidden">> $lib.exp~
6629 $CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname ${wl}-input ${wl}$lib.exp `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib~
6630 $RM $lib.exp'
6631 _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir'
6632 ;;
6633 esac
6634
6635 _LT_TAGVAR(hardcode_libdir_separator, $1)=:
6636
6637 # Commands to make compiler produce verbose output that lists
6638 # what "hidden" libraries, object files and flags are used when
6639 # linking a shared library.
6640 #
6641 # There doesn't appear to be a way to prevent this compiler from
6642 # explicitly linking system object files so we need to strip them
6643 # from the output so that they don't get included in the library
6644 # dependencies.
6645 output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld" | $GREP -v "ld:"`; templist=`func_echo_all "$templist" | $SED "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"'
6646 ;;
6647 *)
6648 if test "$GXX" = yes && test "$with_gnu_ld" = no; then
6649 _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*'
6650 case $host in
6651 osf3*)
6652 _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
6653 ;;
6654 *)
6655 _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
6656 ;;
6657 esac
6658
6659 _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
6660 _LT_TAGVAR(hardcode_libdir_separator, $1)=:
6661
6662 # Commands to make compiler produce verbose output that lists
6663 # what "hidden" libraries, object files and flags are used when
6664 # linking a shared library.
6665 output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"'
6666
6667 else
6668 # FIXME: insert proper C++ library support
6669 _LT_TAGVAR(ld_shlibs, $1)=no
6670 fi
6671 ;;
6672 esac
6673 ;;
6674
6675 psos*)
6676 # FIXME: insert proper C++ library support
6677 _LT_TAGVAR(ld_shlibs, $1)=no
6678 ;;
6679
6680 sunos4*)
6681 case $cc_basename in
6682 CC*)
6683 # Sun C++ 4.x
6684 # FIXME: insert proper C++ library support
6685 _LT_TAGVAR(ld_shlibs, $1)=no
6686 ;;
6687 lcc*)
6688 # Lucid
6689 # FIXME: insert proper C++ library support
6690 _LT_TAGVAR(ld_shlibs, $1)=no
6691 ;;
6692 *)
6693 # FIXME: insert proper C++ library support
6694 _LT_TAGVAR(ld_shlibs, $1)=no
6695 ;;
6696 esac
6697 ;;
6698
6699 solaris*)
6700 case $cc_basename in
6701 CC* | sunCC*)
6702 # Sun C++ 4.2, 5.x and Centerline C++
6703 _LT_TAGVAR(archive_cmds_need_lc,$1)=yes
6704 _LT_TAGVAR(no_undefined_flag, $1)=' -zdefs'
6705 _LT_TAGVAR(archive_cmds, $1)='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
6706 _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
6707 $CC -G${allow_undefined_flag} ${wl}-M ${wl}$lib.exp -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp'
6708
6709 _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
6710 _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
6711 case $host_os in
6712 solaris2.[[0-5]] | solaris2.[[0-5]].*) ;;
6713 *)
6714 # The compiler driver will combine and reorder linker options,
6715 # but understands `-z linker_flag'.
6716 # Supported since Solaris 2.6 (maybe 2.5.1?)
6717 _LT_TAGVAR(whole_archive_flag_spec, $1)='-z allextract$convenience -z defaultextract'
6718 ;;
6719 esac
6720 _LT_TAGVAR(link_all_deplibs, $1)=yes
6721
6722 output_verbose_link_cmd='func_echo_all'
6723
6724 # Archives containing C++ object files must be created using
6725 # "CC -xar", where "CC" is the Sun C++ compiler. This is
6726 # necessary to make sure instantiated templates are included
6727 # in the archive.
6728 _LT_TAGVAR(old_archive_cmds, $1)='$CC -xar -o $oldlib $oldobjs'
6729 ;;
6730 gcx*)
6731 # Green Hills C++ Compiler
6732 _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib'
6733
6734 # The C++ compiler must be used to create the archive.
6735 _LT_TAGVAR(old_archive_cmds, $1)='$CC $LDFLAGS -archive -o $oldlib $oldobjs'
6736 ;;
6737 *)
6738 # GNU C++ compiler with Solaris linker
6739 if test "$GXX" = yes && test "$with_gnu_ld" = no; then
6740 _LT_TAGVAR(no_undefined_flag, $1)=' ${wl}-z ${wl}defs'
6741 if $CC --version | $GREP -v '^2\.7' > /dev/null; then
6742 _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib'
6743 _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
6744 $CC -shared $pic_flag -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp'
6745
6746 # Commands to make compiler produce verbose output that lists
6747 # what "hidden" libraries, object files and flags are used when
6748 # linking a shared library.
6749 output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"'
6750 else
6751 # g++ 2.7 appears to require `-G' NOT `-shared' on this
6752 # platform.
6753 _LT_TAGVAR(archive_cmds, $1)='$CC -G -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib'
6754 _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
6755 $CC -G -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp'
6756
6757 # Commands to make compiler produce verbose output that lists
6758 # what "hidden" libraries, object files and flags are used when
6759 # linking a shared library.
6760 output_verbose_link_cmd='$CC -G $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"'
6761 fi
6762
6763 _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $wl$libdir'
6764 case $host_os in
6765 solaris2.[[0-5]] | solaris2.[[0-5]].*) ;;
6766 *)
6767 _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract'
6768 ;;
6769 esac
6770 fi
6771 ;;
6772 esac
6773 ;;
6774
6775 sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[[01]].[[10]]* | unixware7* | sco3.2v5.0.[[024]]*)
6776 _LT_TAGVAR(no_undefined_flag, $1)='${wl}-z,text'
6777 _LT_TAGVAR(archive_cmds_need_lc, $1)=no
6778 _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
6779 runpath_var='LD_RUN_PATH'
6780
6781 case $cc_basename in
6782 CC*)
6783 _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
6784 _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
6785 ;;
6786 *)
6787 _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
6788 _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
6789 ;;
6790 esac
6791 ;;
6792
6793 sysv5* | sco3.2v5* | sco5v6*)
6794 # Note: We can NOT use -z defs as we might desire, because we do not
6795 # link with -lc, and that would cause any symbols used from libc to
6796 # always be unresolved, which means just about no library would
6797 # ever link correctly. If we're not using GNU ld we use -z text
6798 # though, which does catch some bad symbols but isn't as heavy-handed
6799 # as -z defs.
6800 _LT_TAGVAR(no_undefined_flag, $1)='${wl}-z,text'
6801 _LT_TAGVAR(allow_undefined_flag, $1)='${wl}-z,nodefs'
6802 _LT_TAGVAR(archive_cmds_need_lc, $1)=no
6803 _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
6804 _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R,$libdir'
6805 _LT_TAGVAR(hardcode_libdir_separator, $1)=':'
6806 _LT_TAGVAR(link_all_deplibs, $1)=yes
6807 _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-Bexport'
6808 runpath_var='LD_RUN_PATH'
6809
6810 case $cc_basename in
6811 CC*)
6812 _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
6813 _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
6814 _LT_TAGVAR(old_archive_cmds, $1)='$CC -Tprelink_objects $oldobjs~
6815 '"$_LT_TAGVAR(old_archive_cmds, $1)"
6816 _LT_TAGVAR(reload_cmds, $1)='$CC -Tprelink_objects $reload_objs~
6817 '"$_LT_TAGVAR(reload_cmds, $1)"
6818 ;;
6819 *)
6820 _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
6821 _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
6822 ;;
6823 esac
6824 ;;
6825
6826 tandem*)
6827 case $cc_basename in
6828 NCC*)
6829 # NonStop-UX NCC 3.20
6830 # FIXME: insert proper C++ library support
6831 _LT_TAGVAR(ld_shlibs, $1)=no
6832 ;;
6833 *)
6834 # FIXME: insert proper C++ library support
6835 _LT_TAGVAR(ld_shlibs, $1)=no
6836 ;;
6837 esac
6838 ;;
6839
6840 vxworks*)
6841 # FIXME: insert proper C++ library support
6842 _LT_TAGVAR(ld_shlibs, $1)=no
6843 ;;
6844
6845 *)
6846 # FIXME: insert proper C++ library support
6847 _LT_TAGVAR(ld_shlibs, $1)=no
6848 ;;
6849 esac
6850
6851 AC_MSG_RESULT([$_LT_TAGVAR(ld_shlibs, $1)])
6852 test "$_LT_TAGVAR(ld_shlibs, $1)" = no && can_build_shared=no
6853
6854 _LT_TAGVAR(GCC, $1)="$GXX"
6855 _LT_TAGVAR(LD, $1)="$LD"
6856
6857 ## CAVEAT EMPTOR:
6858 ## There is no encapsulation within the following macros, do not change
6859 ## the running order or otherwise move them around unless you know exactly
6860 ## what you are doing...
6861 _LT_SYS_HIDDEN_LIBDEPS($1)
6862 _LT_COMPILER_PIC($1)
6863 _LT_COMPILER_C_O($1)
6864 _LT_COMPILER_FILE_LOCKS($1)
6865 _LT_LINKER_SHLIBS($1)
6866 _LT_SYS_DYNAMIC_LINKER($1)
6867 _LT_LINKER_HARDCODE_LIBPATH($1)
6868
6869 _LT_CONFIG($1)
6870 fi # test -n "$compiler"
6871
6872 CC=$lt_save_CC
6873 CFLAGS=$lt_save_CFLAGS
6874 LDCXX=$LD
6875 LD=$lt_save_LD
6876 GCC=$lt_save_GCC
6877 with_gnu_ld=$lt_save_with_gnu_ld
6878 lt_cv_path_LDCXX=$lt_cv_path_LD
6879 lt_cv_path_LD=$lt_save_path_LD
6880 lt_cv_prog_gnu_ldcxx=$lt_cv_prog_gnu_ld
6881 lt_cv_prog_gnu_ld=$lt_save_with_gnu_ld
6882 fi # test "$_lt_caught_CXX_error" != yes
6883
6884 AC_LANG_POP
6885 ])# _LT_LANG_CXX_CONFIG
6886
6887
6888 # _LT_FUNC_STRIPNAME_CNF
6889 # ----------------------
6890 # func_stripname_cnf prefix suffix name
6891 # strip PREFIX and SUFFIX off of NAME.
6892 # PREFIX and SUFFIX must not contain globbing or regex special
6893 # characters, hashes, percent signs, but SUFFIX may contain a leading
6894 # dot (in which case that matches only a dot).
6895 #
6896 # This function is identical to the (non-XSI) version of func_stripname,
6897 # except this one can be used by m4 code that may be executed by configure,
6898 # rather than the libtool script.
6899 m4_defun([_LT_FUNC_STRIPNAME_CNF],[dnl
6900 AC_REQUIRE([_LT_DECL_SED])
6901 AC_REQUIRE([_LT_PROG_ECHO_BACKSLASH])
6902 func_stripname_cnf ()
6903 {
6904 case ${2} in
6905 .*) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%\\\\${2}\$%%"`;;
6906 *) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%${2}\$%%"`;;
6907 esac
6908 } # func_stripname_cnf
6909 ])# _LT_FUNC_STRIPNAME_CNF
6910
6911 # _LT_SYS_HIDDEN_LIBDEPS([TAGNAME])
6912 # ---------------------------------
6913 # Figure out "hidden" library dependencies from verbose
6914 # compiler output when linking a shared library.
6915 # Parse the compiler output and extract the necessary
6916 # objects, libraries and library flags.
6917 m4_defun([_LT_SYS_HIDDEN_LIBDEPS],
6918 [m4_require([_LT_FILEUTILS_DEFAULTS])dnl
6919 AC_REQUIRE([_LT_FUNC_STRIPNAME_CNF])dnl
6920 # Dependencies to place before and after the object being linked:
6921 _LT_TAGVAR(predep_objects, $1)=
6922 _LT_TAGVAR(postdep_objects, $1)=
6923 _LT_TAGVAR(predeps, $1)=
6924 _LT_TAGVAR(postdeps, $1)=
6925 _LT_TAGVAR(compiler_lib_search_path, $1)=
6926
6927 dnl we can't use the lt_simple_compile_test_code here,
6928 dnl because it contains code intended for an executable,
6929 dnl not a library. It's possible we should let each
6930 dnl tag define a new lt_????_link_test_code variable,
6931 dnl but it's only used here...
6932 m4_if([$1], [], [cat > conftest.$ac_ext <<_LT_EOF
6933 int a;
6934 void foo (void) { a = 0; }
6935 _LT_EOF
6936 ], [$1], [CXX], [cat > conftest.$ac_ext <<_LT_EOF
6937 class Foo
6938 {
6939 public:
6940 Foo (void) { a = 0; }
6941 private:
6942 int a;
6943 };
6944 _LT_EOF
6945 ], [$1], [F77], [cat > conftest.$ac_ext <<_LT_EOF
6946 subroutine foo
6947 implicit none
6948 integer*4 a
6949 a=0
6950 return
6951 end
6952 _LT_EOF
6953 ], [$1], [FC], [cat > conftest.$ac_ext <<_LT_EOF
6954 subroutine foo
6955 implicit none
6956 integer a
6957 a=0
6958 return
6959 end
6960 _LT_EOF
6961 ], [$1], [GCJ], [cat > conftest.$ac_ext <<_LT_EOF
6962 public class foo {
6963 private int a;
6964 public void bar (void) {
6965 a = 0;
6966 }
6967 };
6968 _LT_EOF
6969 ], [$1], [GO], [cat > conftest.$ac_ext <<_LT_EOF
6970 package foo
6971 func foo() {
6972 }
6973 _LT_EOF
6974 ])
6975
6976 _lt_libdeps_save_CFLAGS=$CFLAGS
6977 case "$CC $CFLAGS " in #(
6978 *\ -flto*\ *) CFLAGS="$CFLAGS -fno-lto" ;;
6979 *\ -fwhopr*\ *) CFLAGS="$CFLAGS -fno-whopr" ;;
6980 *\ -fuse-linker-plugin*\ *) CFLAGS="$CFLAGS -fno-use-linker-plugin" ;;
6981 esac
6982
6983 dnl Parse the compiler output and extract the necessary
6984 dnl objects, libraries and library flags.
6985 if AC_TRY_EVAL(ac_compile); then
6986 # Parse the compiler output and extract the necessary
6987 # objects, libraries and library flags.
6988
6989 # Sentinel used to keep track of whether or not we are before
6990 # the conftest object file.
6991 pre_test_object_deps_done=no
6992
6993 for p in `eval "$output_verbose_link_cmd"`; do
6994 case ${prev}${p} in
6995
6996 -L* | -R* | -l*)
6997 # Some compilers place space between "-{L,R}" and the path.
6998 # Remove the space.
6999 if test $p = "-L" ||
7000 test $p = "-R"; then
7001 prev=$p
7002 continue
7003 fi
7004
7005 # Expand the sysroot to ease extracting the directories later.
7006 if test -z "$prev"; then
7007 case $p in
7008 -L*) func_stripname_cnf '-L' '' "$p"; prev=-L; p=$func_stripname_result ;;
7009 -R*) func_stripname_cnf '-R' '' "$p"; prev=-R; p=$func_stripname_result ;;
7010 -l*) func_stripname_cnf '-l' '' "$p"; prev=-l; p=$func_stripname_result ;;
7011 esac
7012 fi
7013 case $p in
7014 =*) func_stripname_cnf '=' '' "$p"; p=$lt_sysroot$func_stripname_result ;;
7015 esac
7016 if test "$pre_test_object_deps_done" = no; then
7017 case ${prev} in
7018 -L | -R)
7019 # Internal compiler library paths should come after those
7020 # provided the user. The postdeps already come after the
7021 # user supplied libs so there is no need to process them.
7022 if test -z "$_LT_TAGVAR(compiler_lib_search_path, $1)"; then
7023 _LT_TAGVAR(compiler_lib_search_path, $1)="${prev}${p}"
7024 else
7025 _LT_TAGVAR(compiler_lib_search_path, $1)="${_LT_TAGVAR(compiler_lib_search_path, $1)} ${prev}${p}"
7026 fi
7027 ;;
7028 # The "-l" case would never come before the object being
7029 # linked, so don't bother handling this case.
7030 esac
7031 else
7032 if test -z "$_LT_TAGVAR(postdeps, $1)"; then
7033 _LT_TAGVAR(postdeps, $1)="${prev}${p}"
7034 else
7035 _LT_TAGVAR(postdeps, $1)="${_LT_TAGVAR(postdeps, $1)} ${prev}${p}"
7036 fi
7037 fi
7038 prev=
7039 ;;
7040
7041 *.lto.$objext) ;; # Ignore GCC LTO objects
7042 *.$objext)
7043 # This assumes that the test object file only shows up
7044 # once in the compiler output.
7045 if test "$p" = "conftest.$objext"; then
7046 pre_test_object_deps_done=yes
7047 continue
7048 fi
7049
7050 if test "$pre_test_object_deps_done" = no; then
7051 if test -z "$_LT_TAGVAR(predep_objects, $1)"; then
7052 _LT_TAGVAR(predep_objects, $1)="$p"
7053 else
7054 _LT_TAGVAR(predep_objects, $1)="$_LT_TAGVAR(predep_objects, $1) $p"
7055 fi
7056 else
7057 if test -z "$_LT_TAGVAR(postdep_objects, $1)"; then
7058 _LT_TAGVAR(postdep_objects, $1)="$p"
7059 else
7060 _LT_TAGVAR(postdep_objects, $1)="$_LT_TAGVAR(postdep_objects, $1) $p"
7061 fi
7062 fi
7063 ;;
7064
7065 *) ;; # Ignore the rest.
7066
7067 esac
7068 done
7069
7070 # Clean up.
7071 rm -f a.out a.exe
7072 else
7073 echo "libtool.m4: error: problem compiling $1 test program"
7074 fi
7075
7076 $RM -f confest.$objext
7077 CFLAGS=$_lt_libdeps_save_CFLAGS
7078
7079 # PORTME: override above test on systems where it is broken
7080 m4_if([$1], [CXX],
7081 [case $host_os in
7082 interix[[3-9]]*)
7083 # Interix 3.5 installs completely hosed .la files for C++, so rather than
7084 # hack all around it, let's just trust "g++" to DTRT.
7085 _LT_TAGVAR(predep_objects,$1)=
7086 _LT_TAGVAR(postdep_objects,$1)=
7087 _LT_TAGVAR(postdeps,$1)=
7088 ;;
7089
7090 linux*)
7091 case `$CC -V 2>&1 | sed 5q` in
7092 *Sun\ C*)
7093 # Sun C++ 5.9
7094
7095 # The more standards-conforming stlport4 library is
7096 # incompatible with the Cstd library. Avoid specifying
7097 # it if it's in CXXFLAGS. Ignore libCrun as
7098 # -library=stlport4 depends on it.
7099 case " $CXX $CXXFLAGS " in
7100 *" -library=stlport4 "*)
7101 solaris_use_stlport4=yes
7102 ;;
7103 esac
7104
7105 if test "$solaris_use_stlport4" != yes; then
7106 _LT_TAGVAR(postdeps,$1)='-library=Cstd -library=Crun'
7107 fi
7108 ;;
7109 esac
7110 ;;
7111
7112 solaris*)
7113 case $cc_basename in
7114 CC* | sunCC*)
7115 # The more standards-conforming stlport4 library is
7116 # incompatible with the Cstd library. Avoid specifying
7117 # it if it's in CXXFLAGS. Ignore libCrun as
7118 # -library=stlport4 depends on it.
7119 case " $CXX $CXXFLAGS " in
7120 *" -library=stlport4 "*)
7121 solaris_use_stlport4=yes
7122 ;;
7123 esac
7124
7125 # Adding this requires a known-good setup of shared libraries for
7126 # Sun compiler versions before 5.6, else PIC objects from an old
7127 # archive will be linked into the output, leading to subtle bugs.
7128 if test "$solaris_use_stlport4" != yes; then
7129 _LT_TAGVAR(postdeps,$1)='-library=Cstd -library=Crun'
7130 fi
7131 ;;
7132 esac
7133 ;;
7134 esac
7135 ])
7136
7137 case " $_LT_TAGVAR(postdeps, $1) " in
7138 *" -lc "*) _LT_TAGVAR(archive_cmds_need_lc, $1)=no ;;
7139 esac
7140 _LT_TAGVAR(compiler_lib_search_dirs, $1)=
7141 if test -n "${_LT_TAGVAR(compiler_lib_search_path, $1)}"; then
7142 _LT_TAGVAR(compiler_lib_search_dirs, $1)=`echo " ${_LT_TAGVAR(compiler_lib_search_path, $1)}" | ${SED} -e 's! -L! !g' -e 's!^ !!'`
7143 fi
7144 _LT_TAGDECL([], [compiler_lib_search_dirs], [1],
7145 [The directories searched by this compiler when creating a shared library])
7146 _LT_TAGDECL([], [predep_objects], [1],
7147 [Dependencies to place before and after the objects being linked to
7148 create a shared library])
7149 _LT_TAGDECL([], [postdep_objects], [1])
7150 _LT_TAGDECL([], [predeps], [1])
7151 _LT_TAGDECL([], [postdeps], [1])
7152 _LT_TAGDECL([], [compiler_lib_search_path], [1],
7153 [The library search path used internally by the compiler when linking
7154 a shared library])
7155 ])# _LT_SYS_HIDDEN_LIBDEPS
7156
7157
7158 # _LT_LANG_F77_CONFIG([TAG])
7159 # --------------------------
7160 # Ensure that the configuration variables for a Fortran 77 compiler are
7161 # suitably defined. These variables are subsequently used by _LT_CONFIG
7162 # to write the compiler configuration to `libtool'.
7163 m4_defun([_LT_LANG_F77_CONFIG],
7164 [AC_LANG_PUSH(Fortran 77)
7165 if test -z "$F77" || test "X$F77" = "Xno"; then
7166 _lt_disable_F77=yes
7167 fi
7168
7169 _LT_TAGVAR(archive_cmds_need_lc, $1)=no
7170 _LT_TAGVAR(allow_undefined_flag, $1)=
7171 _LT_TAGVAR(always_export_symbols, $1)=no
7172 _LT_TAGVAR(archive_expsym_cmds, $1)=
7173 _LT_TAGVAR(export_dynamic_flag_spec, $1)=
7174 _LT_TAGVAR(hardcode_direct, $1)=no
7175 _LT_TAGVAR(hardcode_direct_absolute, $1)=no
7176 _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=
7177 _LT_TAGVAR(hardcode_libdir_separator, $1)=
7178 _LT_TAGVAR(hardcode_minus_L, $1)=no
7179 _LT_TAGVAR(hardcode_automatic, $1)=no
7180 _LT_TAGVAR(inherit_rpath, $1)=no
7181 _LT_TAGVAR(module_cmds, $1)=
7182 _LT_TAGVAR(module_expsym_cmds, $1)=
7183 _LT_TAGVAR(link_all_deplibs, $1)=unknown
7184 _LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds
7185 _LT_TAGVAR(reload_flag, $1)=$reload_flag
7186 _LT_TAGVAR(reload_cmds, $1)=$reload_cmds
7187 _LT_TAGVAR(no_undefined_flag, $1)=
7188 _LT_TAGVAR(whole_archive_flag_spec, $1)=
7189 _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no
7190
7191 # Source file extension for f77 test sources.
7192 ac_ext=f
7193
7194 # Object file extension for compiled f77 test sources.
7195 objext=o
7196 _LT_TAGVAR(objext, $1)=$objext
7197
7198 # No sense in running all these tests if we already determined that
7199 # the F77 compiler isn't working. Some variables (like enable_shared)
7200 # are currently assumed to apply to all compilers on this platform,
7201 # and will be corrupted by setting them based on a non-working compiler.
7202 if test "$_lt_disable_F77" != yes; then
7203 # Code to be used in simple compile tests
7204 lt_simple_compile_test_code="\
7205 subroutine t
7206 return
7207 end
7208 "
7209
7210 # Code to be used in simple link tests
7211 lt_simple_link_test_code="\
7212 program t
7213 end
7214 "
7215
7216 # ltmain only uses $CC for tagged configurations so make sure $CC is set.
7217 _LT_TAG_COMPILER
7218
7219 # save warnings/boilerplate of simple test code
7220 _LT_COMPILER_BOILERPLATE
7221 _LT_LINKER_BOILERPLATE
7222
7223 # Allow CC to be a program name with arguments.
7224 lt_save_CC="$CC"
7225 lt_save_GCC=$GCC
7226 lt_save_CFLAGS=$CFLAGS
7227 CC=${F77-"f77"}
7228 CFLAGS=$FFLAGS
7229 compiler=$CC
7230 _LT_TAGVAR(compiler, $1)=$CC
7231 _LT_CC_BASENAME([$compiler])
7232 GCC=$G77
7233 if test -n "$compiler"; then
7234 AC_MSG_CHECKING([if libtool supports shared libraries])
7235 AC_MSG_RESULT([$can_build_shared])
7236
7237 AC_MSG_CHECKING([whether to build shared libraries])
7238 test "$can_build_shared" = "no" && enable_shared=no
7239
7240 # On AIX, shared libraries and static libraries use the same namespace, and
7241 # are all built from PIC.
7242 case $host_os in
7243 aix3*)
7244 test "$enable_shared" = yes && enable_static=no
7245 if test -n "$RANLIB"; then
7246 archive_cmds="$archive_cmds~\$RANLIB \$lib"
7247 postinstall_cmds='$RANLIB $lib'
7248 fi
7249 ;;
7250 aix[[4-9]]*)
7251 if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then
7252 test "$enable_shared" = yes && enable_static=no
7253 fi
7254 ;;
7255 esac
7256 AC_MSG_RESULT([$enable_shared])
7257
7258 AC_MSG_CHECKING([whether to build static libraries])
7259 # Make sure either enable_shared or enable_static is yes.
7260 test "$enable_shared" = yes || enable_static=yes
7261 AC_MSG_RESULT([$enable_static])
7262
7263 _LT_TAGVAR(GCC, $1)="$G77"
7264 _LT_TAGVAR(LD, $1)="$LD"
7265
7266 ## CAVEAT EMPTOR:
7267 ## There is no encapsulation within the following macros, do not change
7268 ## the running order or otherwise move them around unless you know exactly
7269 ## what you are doing...
7270 _LT_COMPILER_PIC($1)
7271 _LT_COMPILER_C_O($1)
7272 _LT_COMPILER_FILE_LOCKS($1)
7273 _LT_LINKER_SHLIBS($1)
7274 _LT_SYS_DYNAMIC_LINKER($1)
7275 _LT_LINKER_HARDCODE_LIBPATH($1)
7276
7277 _LT_CONFIG($1)
7278 fi # test -n "$compiler"
7279
7280 GCC=$lt_save_GCC
7281 CC="$lt_save_CC"
7282 CFLAGS="$lt_save_CFLAGS"
7283 fi # test "$_lt_disable_F77" != yes
7284
7285 AC_LANG_POP
7286 ])# _LT_LANG_F77_CONFIG
7287
7288
7289 # _LT_LANG_FC_CONFIG([TAG])
7290 # -------------------------
7291 # Ensure that the configuration variables for a Fortran compiler are
7292 # suitably defined. These variables are subsequently used by _LT_CONFIG
7293 # to write the compiler configuration to `libtool'.
7294 m4_defun([_LT_LANG_FC_CONFIG],
7295 [AC_LANG_PUSH(Fortran)
7296
7297 if test -z "$FC" || test "X$FC" = "Xno"; then
7298 _lt_disable_FC=yes
7299 fi
7300
7301 _LT_TAGVAR(archive_cmds_need_lc, $1)=no
7302 _LT_TAGVAR(allow_undefined_flag, $1)=
7303 _LT_TAGVAR(always_export_symbols, $1)=no
7304 _LT_TAGVAR(archive_expsym_cmds, $1)=
7305 _LT_TAGVAR(export_dynamic_flag_spec, $1)=
7306 _LT_TAGVAR(hardcode_direct, $1)=no
7307 _LT_TAGVAR(hardcode_direct_absolute, $1)=no
7308 _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=
7309 _LT_TAGVAR(hardcode_libdir_separator, $1)=
7310 _LT_TAGVAR(hardcode_minus_L, $1)=no
7311 _LT_TAGVAR(hardcode_automatic, $1)=no
7312 _LT_TAGVAR(inherit_rpath, $1)=no
7313 _LT_TAGVAR(module_cmds, $1)=
7314 _LT_TAGVAR(module_expsym_cmds, $1)=
7315 _LT_TAGVAR(link_all_deplibs, $1)=unknown
7316 _LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds
7317 _LT_TAGVAR(reload_flag, $1)=$reload_flag
7318 _LT_TAGVAR(reload_cmds, $1)=$reload_cmds
7319 _LT_TAGVAR(no_undefined_flag, $1)=
7320 _LT_TAGVAR(whole_archive_flag_spec, $1)=
7321 _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no
7322
7323 # Source file extension for fc test sources.
7324 ac_ext=${ac_fc_srcext-f}
7325
7326 # Object file extension for compiled fc test sources.
7327 objext=o
7328 _LT_TAGVAR(objext, $1)=$objext
7329
7330 # No sense in running all these tests if we already determined that
7331 # the FC compiler isn't working. Some variables (like enable_shared)
7332 # are currently assumed to apply to all compilers on this platform,
7333 # and will be corrupted by setting them based on a non-working compiler.
7334 if test "$_lt_disable_FC" != yes; then
7335 # Code to be used in simple compile tests
7336 lt_simple_compile_test_code="\
7337 subroutine t
7338 return
7339 end
7340 "
7341
7342 # Code to be used in simple link tests
7343 lt_simple_link_test_code="\
7344 program t
7345 end
7346 "
7347
7348 # ltmain only uses $CC for tagged configurations so make sure $CC is set.
7349 _LT_TAG_COMPILER
7350
7351 # save warnings/boilerplate of simple test code
7352 _LT_COMPILER_BOILERPLATE
7353 _LT_LINKER_BOILERPLATE
7354
7355 # Allow CC to be a program name with arguments.
7356 lt_save_CC="$CC"
7357 lt_save_GCC=$GCC
7358 lt_save_CFLAGS=$CFLAGS
7359 CC=${FC-"f95"}
7360 CFLAGS=$FCFLAGS
7361 compiler=$CC
7362 GCC=$ac_cv_fc_compiler_gnu
7363
7364 _LT_TAGVAR(compiler, $1)=$CC
7365 _LT_CC_BASENAME([$compiler])
7366
7367 if test -n "$compiler"; then
7368 AC_MSG_CHECKING([if libtool supports shared libraries])
7369 AC_MSG_RESULT([$can_build_shared])
7370
7371 AC_MSG_CHECKING([whether to build shared libraries])
7372 test "$can_build_shared" = "no" && enable_shared=no
7373
7374 # On AIX, shared libraries and static libraries use the same namespace, and
7375 # are all built from PIC.
7376 case $host_os in
7377 aix3*)
7378 test "$enable_shared" = yes && enable_static=no
7379 if test -n "$RANLIB"; then
7380 archive_cmds="$archive_cmds~\$RANLIB \$lib"
7381 postinstall_cmds='$RANLIB $lib'
7382 fi
7383 ;;
7384 aix[[4-9]]*)
7385 if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then
7386 test "$enable_shared" = yes && enable_static=no
7387 fi
7388 ;;
7389 esac
7390 AC_MSG_RESULT([$enable_shared])
7391
7392 AC_MSG_CHECKING([whether to build static libraries])
7393 # Make sure either enable_shared or enable_static is yes.
7394 test "$enable_shared" = yes || enable_static=yes
7395 AC_MSG_RESULT([$enable_static])
7396
7397 _LT_TAGVAR(GCC, $1)="$ac_cv_fc_compiler_gnu"
7398 _LT_TAGVAR(LD, $1)="$LD"
7399
7400 ## CAVEAT EMPTOR:
7401 ## There is no encapsulation within the following macros, do not change
7402 ## the running order or otherwise move them around unless you know exactly
7403 ## what you are doing...
7404 _LT_SYS_HIDDEN_LIBDEPS($1)
7405 _LT_COMPILER_PIC($1)
7406 _LT_COMPILER_C_O($1)
7407 _LT_COMPILER_FILE_LOCKS($1)
7408 _LT_LINKER_SHLIBS($1)
7409 _LT_SYS_DYNAMIC_LINKER($1)
7410 _LT_LINKER_HARDCODE_LIBPATH($1)
7411
7412 _LT_CONFIG($1)
7413 fi # test -n "$compiler"
7414
7415 GCC=$lt_save_GCC
7416 CC=$lt_save_CC
7417 CFLAGS=$lt_save_CFLAGS
7418 fi # test "$_lt_disable_FC" != yes
7419
7420 AC_LANG_POP
7421 ])# _LT_LANG_FC_CONFIG
7422
7423
7424 # _LT_LANG_GCJ_CONFIG([TAG])
7425 # --------------------------
7426 # Ensure that the configuration variables for the GNU Java Compiler compiler
7427 # are suitably defined. These variables are subsequently used by _LT_CONFIG
7428 # to write the compiler configuration to `libtool'.
7429 m4_defun([_LT_LANG_GCJ_CONFIG],
7430 [AC_REQUIRE([LT_PROG_GCJ])dnl
7431 AC_LANG_SAVE
7432
7433 # Source file extension for Java test sources.
7434 ac_ext=java
7435
7436 # Object file extension for compiled Java test sources.
7437 objext=o
7438 _LT_TAGVAR(objext, $1)=$objext
7439
7440 # Code to be used in simple compile tests
7441 lt_simple_compile_test_code="class foo {}"
7442
7443 # Code to be used in simple link tests
7444 lt_simple_link_test_code='public class conftest { public static void main(String[[]] argv) {}; }'
7445
7446 # ltmain only uses $CC for tagged configurations so make sure $CC is set.
7447 _LT_TAG_COMPILER
7448
7449 # save warnings/boilerplate of simple test code
7450 _LT_COMPILER_BOILERPLATE
7451 _LT_LINKER_BOILERPLATE
7452
7453 # Allow CC to be a program name with arguments.
7454 lt_save_CC=$CC
7455 lt_save_CFLAGS=$CFLAGS
7456 lt_save_GCC=$GCC
7457 GCC=yes
7458 CC=${GCJ-"gcj"}
7459 CFLAGS=$GCJFLAGS
7460 compiler=$CC
7461 _LT_TAGVAR(compiler, $1)=$CC
7462 _LT_TAGVAR(LD, $1)="$LD"
7463 _LT_CC_BASENAME([$compiler])
7464
7465 # GCJ did not exist at the time GCC didn't implicitly link libc in.
7466 _LT_TAGVAR(archive_cmds_need_lc, $1)=no
7467
7468 _LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds
7469 _LT_TAGVAR(reload_flag, $1)=$reload_flag
7470 _LT_TAGVAR(reload_cmds, $1)=$reload_cmds
7471
7472 ## CAVEAT EMPTOR:
7473 ## There is no encapsulation within the following macros, do not change
7474 ## the running order or otherwise move them around unless you know exactly
7475 ## what you are doing...
7476 if test -n "$compiler"; then
7477 _LT_COMPILER_NO_RTTI($1)
7478 _LT_COMPILER_PIC($1)
7479 _LT_COMPILER_C_O($1)
7480 _LT_COMPILER_FILE_LOCKS($1)
7481 _LT_LINKER_SHLIBS($1)
7482 _LT_LINKER_HARDCODE_LIBPATH($1)
7483
7484 _LT_CONFIG($1)
7485 fi
7486
7487 AC_LANG_RESTORE
7488
7489 GCC=$lt_save_GCC
7490 CC=$lt_save_CC
7491 CFLAGS=$lt_save_CFLAGS
7492 ])# _LT_LANG_GCJ_CONFIG
7493
7494
7495 # _LT_LANG_GO_CONFIG([TAG])
7496 # --------------------------
7497 # Ensure that the configuration variables for the GNU Go compiler
7498 # are suitably defined. These variables are subsequently used by _LT_CONFIG
7499 # to write the compiler configuration to `libtool'.
7500 m4_defun([_LT_LANG_GO_CONFIG],
7501 [AC_REQUIRE([LT_PROG_GO])dnl
7502 AC_LANG_SAVE
7503
7504 # Source file extension for Go test sources.
7505 ac_ext=go
7506
7507 # Object file extension for compiled Go test sources.
7508 objext=o
7509 _LT_TAGVAR(objext, $1)=$objext
7510
7511 # Code to be used in simple compile tests
7512 lt_simple_compile_test_code="package main; func main() { }"
7513
7514 # Code to be used in simple link tests
7515 lt_simple_link_test_code='package main; func main() { }'
7516
7517 # ltmain only uses $CC for tagged configurations so make sure $CC is set.
7518 _LT_TAG_COMPILER
7519
7520 # save warnings/boilerplate of simple test code
7521 _LT_COMPILER_BOILERPLATE
7522 _LT_LINKER_BOILERPLATE
7523
7524 # Allow CC to be a program name with arguments.
7525 lt_save_CC=$CC
7526 lt_save_CFLAGS=$CFLAGS
7527 lt_save_GCC=$GCC
7528 GCC=yes
7529 CC=${GOC-"gccgo"}
7530 CFLAGS=$GOFLAGS
7531 compiler=$CC
7532 _LT_TAGVAR(compiler, $1)=$CC
7533 _LT_TAGVAR(LD, $1)="$LD"
7534 _LT_CC_BASENAME([$compiler])
7535
7536 # Go did not exist at the time GCC didn't implicitly link libc in.
7537 _LT_TAGVAR(archive_cmds_need_lc, $1)=no
7538
7539 _LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds
7540 _LT_TAGVAR(reload_flag, $1)=$reload_flag
7541 _LT_TAGVAR(reload_cmds, $1)=$reload_cmds
7542
7543 ## CAVEAT EMPTOR:
7544 ## There is no encapsulation within the following macros, do not change
7545 ## the running order or otherwise move them around unless you know exactly
7546 ## what you are doing...
7547 if test -n "$compiler"; then
7548 _LT_COMPILER_NO_RTTI($1)
7549 _LT_COMPILER_PIC($1)
7550 _LT_COMPILER_C_O($1)
7551 _LT_COMPILER_FILE_LOCKS($1)
7552 _LT_LINKER_SHLIBS($1)
7553 _LT_LINKER_HARDCODE_LIBPATH($1)
7554
7555 _LT_CONFIG($1)
7556 fi
7557
7558 AC_LANG_RESTORE
7559
7560 GCC=$lt_save_GCC
7561 CC=$lt_save_CC
7562 CFLAGS=$lt_save_CFLAGS
7563 ])# _LT_LANG_GO_CONFIG
7564
7565
7566 # _LT_LANG_RC_CONFIG([TAG])
7567 # -------------------------
7568 # Ensure that the configuration variables for the Windows resource compiler
7569 # are suitably defined. These variables are subsequently used by _LT_CONFIG
7570 # to write the compiler configuration to `libtool'.
7571 m4_defun([_LT_LANG_RC_CONFIG],
7572 [AC_REQUIRE([LT_PROG_RC])dnl
7573 AC_LANG_SAVE
7574
7575 # Source file extension for RC test sources.
7576 ac_ext=rc
7577
7578 # Object file extension for compiled RC test sources.
7579 objext=o
7580 _LT_TAGVAR(objext, $1)=$objext
7581
7582 # Code to be used in simple compile tests
7583 lt_simple_compile_test_code='sample MENU { MENUITEM "&Soup", 100, CHECKED }'
7584
7585 # Code to be used in simple link tests
7586 lt_simple_link_test_code="$lt_simple_compile_test_code"
7587
7588 # ltmain only uses $CC for tagged configurations so make sure $CC is set.
7589 _LT_TAG_COMPILER
7590
7591 # save warnings/boilerplate of simple test code
7592 _LT_COMPILER_BOILERPLATE
7593 _LT_LINKER_BOILERPLATE
7594
7595 # Allow CC to be a program name with arguments.
7596 lt_save_CC="$CC"
7597 lt_save_CFLAGS=$CFLAGS
7598 lt_save_GCC=$GCC
7599 GCC=
7600 CC=${RC-"windres"}
7601 CFLAGS=
7602 compiler=$CC
7603 _LT_TAGVAR(compiler, $1)=$CC
7604 _LT_CC_BASENAME([$compiler])
7605 _LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)=yes
7606
7607 if test -n "$compiler"; then
7608 :
7609 _LT_CONFIG($1)
7610 fi
7611
7612 GCC=$lt_save_GCC
7613 AC_LANG_RESTORE
7614 CC=$lt_save_CC
7615 CFLAGS=$lt_save_CFLAGS
7616 ])# _LT_LANG_RC_CONFIG
7617
7618
7619 # LT_PROG_GCJ
7620 # -----------
7621 AC_DEFUN([LT_PROG_GCJ],
7622 [m4_ifdef([AC_PROG_GCJ], [AC_PROG_GCJ],
7623 [m4_ifdef([A][M_PROG_GCJ], [A][M_PROG_GCJ],
7624 [AC_CHECK_TOOL(GCJ, gcj,)
7625 test "x${GCJFLAGS+set}" = xset || GCJFLAGS="-g -O2"
7626 AC_SUBST(GCJFLAGS)])])[]dnl
7627 ])
7628
7629 # Old name:
7630 AU_ALIAS([LT_AC_PROG_GCJ], [LT_PROG_GCJ])
7631 dnl aclocal-1.4 backwards compatibility:
7632 dnl AC_DEFUN([LT_AC_PROG_GCJ], [])
7633
7634
7635 # LT_PROG_GO
7636 # ----------
7637 AC_DEFUN([LT_PROG_GO],
7638 [AC_CHECK_TOOL(GOC, gccgo,)
7639 ])
7640
7641
7642 # LT_PROG_RC
7643 # ----------
7644 AC_DEFUN([LT_PROG_RC],
7645 [AC_CHECK_TOOL(RC, windres,)
7646 ])
7647
7648 # Old name:
7649 AU_ALIAS([LT_AC_PROG_RC], [LT_PROG_RC])
7650 dnl aclocal-1.4 backwards compatibility:
7651 dnl AC_DEFUN([LT_AC_PROG_RC], [])
7652
7653
7654 # _LT_DECL_EGREP
7655 # --------------
7656 # If we don't have a new enough Autoconf to choose the best grep
7657 # available, choose the one first in the user's PATH.
7658 m4_defun([_LT_DECL_EGREP],
7659 [AC_REQUIRE([AC_PROG_EGREP])dnl
7660 AC_REQUIRE([AC_PROG_FGREP])dnl
7661 test -z "$GREP" && GREP=grep
7662 _LT_DECL([], [GREP], [1], [A grep program that handles long lines])
7663 _LT_DECL([], [EGREP], [1], [An ERE matcher])
7664 _LT_DECL([], [FGREP], [1], [A literal string matcher])
7665 dnl Non-bleeding-edge autoconf doesn't subst GREP, so do it here too
7666 AC_SUBST([GREP])
7667 ])
7668
7669
7670 # _LT_DECL_OBJDUMP
7671 # --------------
7672 # If we don't have a new enough Autoconf to choose the best objdump
7673 # available, choose the one first in the user's PATH.
7674 m4_defun([_LT_DECL_OBJDUMP],
7675 [AC_CHECK_TOOL(OBJDUMP, objdump, false)
7676 test -z "$OBJDUMP" && OBJDUMP=objdump
7677 _LT_DECL([], [OBJDUMP], [1], [An object symbol dumper])
7678 AC_SUBST([OBJDUMP])
7679 ])
7680
7681 # _LT_DECL_DLLTOOL
7682 # ----------------
7683 # Ensure DLLTOOL variable is set.
7684 m4_defun([_LT_DECL_DLLTOOL],
7685 [AC_CHECK_TOOL(DLLTOOL, dlltool, false)
7686 test -z "$DLLTOOL" && DLLTOOL=dlltool
7687 _LT_DECL([], [DLLTOOL], [1], [DLL creation program])
7688 AC_SUBST([DLLTOOL])
7689 ])
7690
7691 # _LT_DECL_SED
7692 # ------------
7693 # Check for a fully-functional sed program, that truncates
7694 # as few characters as possible. Prefer GNU sed if found.
7695 m4_defun([_LT_DECL_SED],
7696 [AC_PROG_SED
7697 test -z "$SED" && SED=sed
7698 Xsed="$SED -e 1s/^X//"
7699 _LT_DECL([], [SED], [1], [A sed program that does not truncate output])
7700 _LT_DECL([], [Xsed], ["\$SED -e 1s/^X//"],
7701 [Sed that helps us avoid accidentally triggering echo(1) options like -n])
7702 ])# _LT_DECL_SED
7703
7704 m4_ifndef([AC_PROG_SED], [
7705 ############################################################
7706 # NOTE: This macro has been submitted for inclusion into #
7707 # GNU Autoconf as AC_PROG_SED. When it is available in #
7708 # a released version of Autoconf we should remove this #
7709 # macro and use it instead. #
7710 ############################################################
7711
7712 m4_defun([AC_PROG_SED],
7713 [AC_MSG_CHECKING([for a sed that does not truncate output])
7714 AC_CACHE_VAL(lt_cv_path_SED,
7715 [# Loop through the user's path and test for sed and gsed.
7716 # Then use that list of sed's as ones to test for truncation.
7717 as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
7718 for as_dir in $PATH
7719 do
7720 IFS=$as_save_IFS
7721 test -z "$as_dir" && as_dir=.
7722 for lt_ac_prog in sed gsed; do
7723 for ac_exec_ext in '' $ac_executable_extensions; do
7724 if $as_executable_p "$as_dir/$lt_ac_prog$ac_exec_ext"; then
7725 lt_ac_sed_list="$lt_ac_sed_list $as_dir/$lt_ac_prog$ac_exec_ext"
7726 fi
7727 done
7728 done
7729 done
7730 IFS=$as_save_IFS
7731 lt_ac_max=0
7732 lt_ac_count=0
7733 # Add /usr/xpg4/bin/sed as it is typically found on Solaris
7734 # along with /bin/sed that truncates output.
7735 for lt_ac_sed in $lt_ac_sed_list /usr/xpg4/bin/sed; do
7736 test ! -f $lt_ac_sed && continue
7737 cat /dev/null > conftest.in
7738 lt_ac_count=0
7739 echo $ECHO_N "0123456789$ECHO_C" >conftest.in
7740 # Check for GNU sed and select it if it is found.
7741 if "$lt_ac_sed" --version 2>&1 < /dev/null | grep 'GNU' > /dev/null; then
7742 lt_cv_path_SED=$lt_ac_sed
7743 break
7744 fi
7745 while true; do
7746 cat conftest.in conftest.in >conftest.tmp
7747 mv conftest.tmp conftest.in
7748 cp conftest.in conftest.nl
7749 echo >>conftest.nl
7750 $lt_ac_sed -e 's/a$//' < conftest.nl >conftest.out || break
7751 cmp -s conftest.out conftest.nl || break
7752 # 10000 chars as input seems more than enough
7753 test $lt_ac_count -gt 10 && break
7754 lt_ac_count=`expr $lt_ac_count + 1`
7755 if test $lt_ac_count -gt $lt_ac_max; then
7756 lt_ac_max=$lt_ac_count
7757 lt_cv_path_SED=$lt_ac_sed
7758 fi
7759 done
7760 done
7761 ])
7762 SED=$lt_cv_path_SED
7763 AC_SUBST([SED])
7764 AC_MSG_RESULT([$SED])
7765 ])#AC_PROG_SED
7766 ])#m4_ifndef
7767
7768 # Old name:
7769 AU_ALIAS([LT_AC_PROG_SED], [AC_PROG_SED])
7770 dnl aclocal-1.4 backwards compatibility:
7771 dnl AC_DEFUN([LT_AC_PROG_SED], [])
7772
7773
7774 # _LT_CHECK_SHELL_FEATURES
7775 # ------------------------
7776 # Find out whether the shell is Bourne or XSI compatible,
7777 # or has some other useful features.
7778 m4_defun([_LT_CHECK_SHELL_FEATURES],
7779 [AC_MSG_CHECKING([whether the shell understands some XSI constructs])
7780 # Try some XSI features
7781 xsi_shell=no
7782 ( _lt_dummy="a/b/c"
7783 test "${_lt_dummy##*/},${_lt_dummy%/*},${_lt_dummy#??}"${_lt_dummy%"$_lt_dummy"}, \
7784 = c,a/b,b/c, \
7785 && eval 'test $(( 1 + 1 )) -eq 2 \
7786 && test "${#_lt_dummy}" -eq 5' ) >/dev/null 2>&1 \
7787 && xsi_shell=yes
7788 AC_MSG_RESULT([$xsi_shell])
7789 _LT_CONFIG_LIBTOOL_INIT([xsi_shell='$xsi_shell'])
7790
7791 AC_MSG_CHECKING([whether the shell understands "+="])
7792 lt_shell_append=no
7793 ( foo=bar; set foo baz; eval "$[1]+=\$[2]" && test "$foo" = barbaz ) \
7794 >/dev/null 2>&1 \
7795 && lt_shell_append=yes
7796 AC_MSG_RESULT([$lt_shell_append])
7797 _LT_CONFIG_LIBTOOL_INIT([lt_shell_append='$lt_shell_append'])
7798
7799 if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then
7800 lt_unset=unset
7801 else
7802 lt_unset=false
7803 fi
7804 _LT_DECL([], [lt_unset], [0], [whether the shell understands "unset"])dnl
7805
7806 # test EBCDIC or ASCII
7807 case `echo X|tr X '\101'` in
7808 A) # ASCII based system
7809 # \n is not interpreted correctly by Solaris 8 /usr/ucb/tr
7810 lt_SP2NL='tr \040 \012'
7811 lt_NL2SP='tr \015\012 \040\040'
7812 ;;
7813 *) # EBCDIC based system
7814 lt_SP2NL='tr \100 \n'
7815 lt_NL2SP='tr \r\n \100\100'
7816 ;;
7817 esac
7818 _LT_DECL([SP2NL], [lt_SP2NL], [1], [turn spaces into newlines])dnl
7819 _LT_DECL([NL2SP], [lt_NL2SP], [1], [turn newlines into spaces])dnl
7820 ])# _LT_CHECK_SHELL_FEATURES
7821
7822
7823 # _LT_PROG_FUNCTION_REPLACE (FUNCNAME, REPLACEMENT-BODY)
7824 # ------------------------------------------------------
7825 # In `$cfgfile', look for function FUNCNAME delimited by `^FUNCNAME ()$' and
7826 # '^} FUNCNAME ', and replace its body with REPLACEMENT-BODY.
7827 m4_defun([_LT_PROG_FUNCTION_REPLACE],
7828 [dnl {
7829 sed -e '/^$1 ()$/,/^} # $1 /c\
7830 $1 ()\
7831 {\
7832 m4_bpatsubsts([$2], [$], [\\], [^\([ ]\)], [\\\1])
7833 } # Extended-shell $1 implementation' "$cfgfile" > $cfgfile.tmp \
7834 && mv -f "$cfgfile.tmp" "$cfgfile" \
7835 || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
7836 test 0 -eq $? || _lt_function_replace_fail=:
7837 ])
7838
7839
7840 # _LT_PROG_REPLACE_SHELLFNS
7841 # -------------------------
7842 # Replace existing portable implementations of several shell functions with
7843 # equivalent extended shell implementations where those features are available..
7844 m4_defun([_LT_PROG_REPLACE_SHELLFNS],
7845 [if test x"$xsi_shell" = xyes; then
7846 _LT_PROG_FUNCTION_REPLACE([func_dirname], [dnl
7847 case ${1} in
7848 */*) func_dirname_result="${1%/*}${2}" ;;
7849 * ) func_dirname_result="${3}" ;;
7850 esac])
7851
7852 _LT_PROG_FUNCTION_REPLACE([func_basename], [dnl
7853 func_basename_result="${1##*/}"])
7854
7855 _LT_PROG_FUNCTION_REPLACE([func_dirname_and_basename], [dnl
7856 case ${1} in
7857 */*) func_dirname_result="${1%/*}${2}" ;;
7858 * ) func_dirname_result="${3}" ;;
7859 esac
7860 func_basename_result="${1##*/}"])
7861
7862 _LT_PROG_FUNCTION_REPLACE([func_stripname], [dnl
7863 # pdksh 5.2.14 does not do ${X%$Y} correctly if both X and Y are
7864 # positional parameters, so assign one to ordinary parameter first.
7865 func_stripname_result=${3}
7866 func_stripname_result=${func_stripname_result#"${1}"}
7867 func_stripname_result=${func_stripname_result%"${2}"}])
7868
7869 _LT_PROG_FUNCTION_REPLACE([func_split_long_opt], [dnl
7870 func_split_long_opt_name=${1%%=*}
7871 func_split_long_opt_arg=${1#*=}])
7872
7873 _LT_PROG_FUNCTION_REPLACE([func_split_short_opt], [dnl
7874 func_split_short_opt_arg=${1#??}
7875 func_split_short_opt_name=${1%"$func_split_short_opt_arg"}])
7876
7877 _LT_PROG_FUNCTION_REPLACE([func_lo2o], [dnl
7878 case ${1} in
7879 *.lo) func_lo2o_result=${1%.lo}.${objext} ;;
7880 *) func_lo2o_result=${1} ;;
7881 esac])
7882
7883 _LT_PROG_FUNCTION_REPLACE([func_xform], [ func_xform_result=${1%.*}.lo])
7884
7885 _LT_PROG_FUNCTION_REPLACE([func_arith], [ func_arith_result=$(( $[*] ))])
7886
7887 _LT_PROG_FUNCTION_REPLACE([func_len], [ func_len_result=${#1}])
7888 fi
7889
7890 if test x"$lt_shell_append" = xyes; then
7891 _LT_PROG_FUNCTION_REPLACE([func_append], [ eval "${1}+=\\${2}"])
7892
7893 _LT_PROG_FUNCTION_REPLACE([func_append_quoted], [dnl
7894 func_quote_for_eval "${2}"
7895 dnl m4 expansion turns \\\\ into \\, and then the shell eval turns that into \
7896 eval "${1}+=\\\\ \\$func_quote_for_eval_result"])
7897
7898 # Save a `func_append' function call where possible by direct use of '+='
7899 sed -e 's%func_append \([[a-zA-Z_]]\{1,\}\) "%\1+="%g' $cfgfile > $cfgfile.tmp \
7900 && mv -f "$cfgfile.tmp" "$cfgfile" \
7901 || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
7902 test 0 -eq $? || _lt_function_replace_fail=:
7903 else
7904 # Save a `func_append' function call even when '+=' is not available
7905 sed -e 's%func_append \([[a-zA-Z_]]\{1,\}\) "%\1="$\1%g' $cfgfile > $cfgfile.tmp \
7906 && mv -f "$cfgfile.tmp" "$cfgfile" \
7907 || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
7908 test 0 -eq $? || _lt_function_replace_fail=:
7909 fi
7910
7911 if test x"$_lt_function_replace_fail" = x":"; then
7912 AC_MSG_WARN([Unable to substitute extended shell functions in $ofile])
7913 fi
7914 ])
7915
7916 # _LT_PATH_CONVERSION_FUNCTIONS
7917 # -----------------------------
7918 # Determine which file name conversion functions should be used by
7919 # func_to_host_file (and, implicitly, by func_to_host_path). These are needed
7920 # for certain cross-compile configurations and native mingw.
7921 m4_defun([_LT_PATH_CONVERSION_FUNCTIONS],
7922 [AC_REQUIRE([AC_CANONICAL_HOST])dnl
7923 AC_REQUIRE([AC_CANONICAL_BUILD])dnl
7924 AC_MSG_CHECKING([how to convert $build file names to $host format])
7925 AC_CACHE_VAL(lt_cv_to_host_file_cmd,
7926 [case $host in
7927 *-*-mingw* )
7928 case $build in
7929 *-*-mingw* ) # actually msys
7930 lt_cv_to_host_file_cmd=func_convert_file_msys_to_w32
7931 ;;
7932 *-*-cygwin* )
7933 lt_cv_to_host_file_cmd=func_convert_file_cygwin_to_w32
7934 ;;
7935 * ) # otherwise, assume *nix
7936 lt_cv_to_host_file_cmd=func_convert_file_nix_to_w32
7937 ;;
7938 esac
7939 ;;
7940 *-*-cygwin* )
7941 case $build in
7942 *-*-mingw* ) # actually msys
7943 lt_cv_to_host_file_cmd=func_convert_file_msys_to_cygwin
7944 ;;
7945 *-*-cygwin* )
7946 lt_cv_to_host_file_cmd=func_convert_file_noop
7947 ;;
7948 * ) # otherwise, assume *nix
7949 lt_cv_to_host_file_cmd=func_convert_file_nix_to_cygwin
7950 ;;
7951 esac
7952 ;;
7953 * ) # unhandled hosts (and "normal" native builds)
7954 lt_cv_to_host_file_cmd=func_convert_file_noop
7955 ;;
7956 esac
7957 ])
7958 to_host_file_cmd=$lt_cv_to_host_file_cmd
7959 AC_MSG_RESULT([$lt_cv_to_host_file_cmd])
7960 _LT_DECL([to_host_file_cmd], [lt_cv_to_host_file_cmd],
7961 [0], [convert $build file names to $host format])dnl
7962
7963 AC_MSG_CHECKING([how to convert $build file names to toolchain format])
7964 AC_CACHE_VAL(lt_cv_to_tool_file_cmd,
7965 [#assume ordinary cross tools, or native build.
7966 lt_cv_to_tool_file_cmd=func_convert_file_noop
7967 case $host in
7968 *-*-mingw* )
7969 case $build in
7970 *-*-mingw* ) # actually msys
7971 lt_cv_to_tool_file_cmd=func_convert_file_msys_to_w32
7972 ;;
7973 esac
7974 ;;
7975 esac
7976 ])
7977 to_tool_file_cmd=$lt_cv_to_tool_file_cmd
7978 AC_MSG_RESULT([$lt_cv_to_tool_file_cmd])
7979 _LT_DECL([to_tool_file_cmd], [lt_cv_to_tool_file_cmd],
7980 [0], [convert $build files to toolchain format])dnl
7981 ])# _LT_PATH_CONVERSION_FUNCTIONS
+0
-384
m4/ltoptions.m4 less more
0 # Helper functions for option handling. -*- Autoconf -*-
1 #
2 # Copyright (C) 2004, 2005, 2007, 2008, 2009 Free Software Foundation,
3 # Inc.
4 # Written by Gary V. Vaughan, 2004
5 #
6 # This file is free software; the Free Software Foundation gives
7 # unlimited permission to copy and/or distribute it, with or without
8 # modifications, as long as this notice is preserved.
9
10 # serial 7 ltoptions.m4
11
12 # This is to help aclocal find these macros, as it can't see m4_define.
13 AC_DEFUN([LTOPTIONS_VERSION], [m4_if([1])])
14
15
16 # _LT_MANGLE_OPTION(MACRO-NAME, OPTION-NAME)
17 # ------------------------------------------
18 m4_define([_LT_MANGLE_OPTION],
19 [[_LT_OPTION_]m4_bpatsubst($1__$2, [[^a-zA-Z0-9_]], [_])])
20
21
22 # _LT_SET_OPTION(MACRO-NAME, OPTION-NAME)
23 # ---------------------------------------
24 # Set option OPTION-NAME for macro MACRO-NAME, and if there is a
25 # matching handler defined, dispatch to it. Other OPTION-NAMEs are
26 # saved as a flag.
27 m4_define([_LT_SET_OPTION],
28 [m4_define(_LT_MANGLE_OPTION([$1], [$2]))dnl
29 m4_ifdef(_LT_MANGLE_DEFUN([$1], [$2]),
30 _LT_MANGLE_DEFUN([$1], [$2]),
31 [m4_warning([Unknown $1 option `$2'])])[]dnl
32 ])
33
34
35 # _LT_IF_OPTION(MACRO-NAME, OPTION-NAME, IF-SET, [IF-NOT-SET])
36 # ------------------------------------------------------------
37 # Execute IF-SET if OPTION is set, IF-NOT-SET otherwise.
38 m4_define([_LT_IF_OPTION],
39 [m4_ifdef(_LT_MANGLE_OPTION([$1], [$2]), [$3], [$4])])
40
41
42 # _LT_UNLESS_OPTIONS(MACRO-NAME, OPTION-LIST, IF-NOT-SET)
43 # -------------------------------------------------------
44 # Execute IF-NOT-SET unless all options in OPTION-LIST for MACRO-NAME
45 # are set.
46 m4_define([_LT_UNLESS_OPTIONS],
47 [m4_foreach([_LT_Option], m4_split(m4_normalize([$2])),
48 [m4_ifdef(_LT_MANGLE_OPTION([$1], _LT_Option),
49 [m4_define([$0_found])])])[]dnl
50 m4_ifdef([$0_found], [m4_undefine([$0_found])], [$3
51 ])[]dnl
52 ])
53
54
55 # _LT_SET_OPTIONS(MACRO-NAME, OPTION-LIST)
56 # ----------------------------------------
57 # OPTION-LIST is a space-separated list of Libtool options associated
58 # with MACRO-NAME. If any OPTION has a matching handler declared with
59 # LT_OPTION_DEFINE, dispatch to that macro; otherwise complain about
60 # the unknown option and exit.
61 m4_defun([_LT_SET_OPTIONS],
62 [# Set options
63 m4_foreach([_LT_Option], m4_split(m4_normalize([$2])),
64 [_LT_SET_OPTION([$1], _LT_Option)])
65
66 m4_if([$1],[LT_INIT],[
67 dnl
68 dnl Simply set some default values (i.e off) if boolean options were not
69 dnl specified:
70 _LT_UNLESS_OPTIONS([LT_INIT], [dlopen], [enable_dlopen=no
71 ])
72 _LT_UNLESS_OPTIONS([LT_INIT], [win32-dll], [enable_win32_dll=no
73 ])
74 dnl
75 dnl If no reference was made to various pairs of opposing options, then
76 dnl we run the default mode handler for the pair. For example, if neither
77 dnl `shared' nor `disable-shared' was passed, we enable building of shared
78 dnl archives by default:
79 _LT_UNLESS_OPTIONS([LT_INIT], [shared disable-shared], [_LT_ENABLE_SHARED])
80 _LT_UNLESS_OPTIONS([LT_INIT], [static disable-static], [_LT_ENABLE_STATIC])
81 _LT_UNLESS_OPTIONS([LT_INIT], [pic-only no-pic], [_LT_WITH_PIC])
82 _LT_UNLESS_OPTIONS([LT_INIT], [fast-install disable-fast-install],
83 [_LT_ENABLE_FAST_INSTALL])
84 ])
85 ])# _LT_SET_OPTIONS
86
87
88 ## --------------------------------- ##
89 ## Macros to handle LT_INIT options. ##
90 ## --------------------------------- ##
91
92 # _LT_MANGLE_DEFUN(MACRO-NAME, OPTION-NAME)
93 # -----------------------------------------
94 m4_define([_LT_MANGLE_DEFUN],
95 [[_LT_OPTION_DEFUN_]m4_bpatsubst(m4_toupper([$1__$2]), [[^A-Z0-9_]], [_])])
96
97
98 # LT_OPTION_DEFINE(MACRO-NAME, OPTION-NAME, CODE)
99 # -----------------------------------------------
100 m4_define([LT_OPTION_DEFINE],
101 [m4_define(_LT_MANGLE_DEFUN([$1], [$2]), [$3])[]dnl
102 ])# LT_OPTION_DEFINE
103
104
105 # dlopen
106 # ------
107 LT_OPTION_DEFINE([LT_INIT], [dlopen], [enable_dlopen=yes
108 ])
109
110 AU_DEFUN([AC_LIBTOOL_DLOPEN],
111 [_LT_SET_OPTION([LT_INIT], [dlopen])
112 AC_DIAGNOSE([obsolete],
113 [$0: Remove this warning and the call to _LT_SET_OPTION when you
114 put the `dlopen' option into LT_INIT's first parameter.])
115 ])
116
117 dnl aclocal-1.4 backwards compatibility:
118 dnl AC_DEFUN([AC_LIBTOOL_DLOPEN], [])
119
120
121 # win32-dll
122 # ---------
123 # Declare package support for building win32 dll's.
124 LT_OPTION_DEFINE([LT_INIT], [win32-dll],
125 [enable_win32_dll=yes
126
127 case $host in
128 *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-cegcc*)
129 AC_CHECK_TOOL(AS, as, false)
130 AC_CHECK_TOOL(DLLTOOL, dlltool, false)
131 AC_CHECK_TOOL(OBJDUMP, objdump, false)
132 ;;
133 esac
134
135 test -z "$AS" && AS=as
136 _LT_DECL([], [AS], [1], [Assembler program])dnl
137
138 test -z "$DLLTOOL" && DLLTOOL=dlltool
139 _LT_DECL([], [DLLTOOL], [1], [DLL creation program])dnl
140
141 test -z "$OBJDUMP" && OBJDUMP=objdump
142 _LT_DECL([], [OBJDUMP], [1], [Object dumper program])dnl
143 ])# win32-dll
144
145 AU_DEFUN([AC_LIBTOOL_WIN32_DLL],
146 [AC_REQUIRE([AC_CANONICAL_HOST])dnl
147 _LT_SET_OPTION([LT_INIT], [win32-dll])
148 AC_DIAGNOSE([obsolete],
149 [$0: Remove this warning and the call to _LT_SET_OPTION when you
150 put the `win32-dll' option into LT_INIT's first parameter.])
151 ])
152
153 dnl aclocal-1.4 backwards compatibility:
154 dnl AC_DEFUN([AC_LIBTOOL_WIN32_DLL], [])
155
156
157 # _LT_ENABLE_SHARED([DEFAULT])
158 # ----------------------------
159 # implement the --enable-shared flag, and supports the `shared' and
160 # `disable-shared' LT_INIT options.
161 # DEFAULT is either `yes' or `no'. If omitted, it defaults to `yes'.
162 m4_define([_LT_ENABLE_SHARED],
163 [m4_define([_LT_ENABLE_SHARED_DEFAULT], [m4_if($1, no, no, yes)])dnl
164 AC_ARG_ENABLE([shared],
165 [AS_HELP_STRING([--enable-shared@<:@=PKGS@:>@],
166 [build shared libraries @<:@default=]_LT_ENABLE_SHARED_DEFAULT[@:>@])],
167 [p=${PACKAGE-default}
168 case $enableval in
169 yes) enable_shared=yes ;;
170 no) enable_shared=no ;;
171 *)
172 enable_shared=no
173 # Look at the argument we got. We use all the common list separators.
174 lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
175 for pkg in $enableval; do
176 IFS="$lt_save_ifs"
177 if test "X$pkg" = "X$p"; then
178 enable_shared=yes
179 fi
180 done
181 IFS="$lt_save_ifs"
182 ;;
183 esac],
184 [enable_shared=]_LT_ENABLE_SHARED_DEFAULT)
185
186 _LT_DECL([build_libtool_libs], [enable_shared], [0],
187 [Whether or not to build shared libraries])
188 ])# _LT_ENABLE_SHARED
189
190 LT_OPTION_DEFINE([LT_INIT], [shared], [_LT_ENABLE_SHARED([yes])])
191 LT_OPTION_DEFINE([LT_INIT], [disable-shared], [_LT_ENABLE_SHARED([no])])
192
193 # Old names:
194 AC_DEFUN([AC_ENABLE_SHARED],
195 [_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[shared])
196 ])
197
198 AC_DEFUN([AC_DISABLE_SHARED],
199 [_LT_SET_OPTION([LT_INIT], [disable-shared])
200 ])
201
202 AU_DEFUN([AM_ENABLE_SHARED], [AC_ENABLE_SHARED($@)])
203 AU_DEFUN([AM_DISABLE_SHARED], [AC_DISABLE_SHARED($@)])
204
205 dnl aclocal-1.4 backwards compatibility:
206 dnl AC_DEFUN([AM_ENABLE_SHARED], [])
207 dnl AC_DEFUN([AM_DISABLE_SHARED], [])
208
209
210
211 # _LT_ENABLE_STATIC([DEFAULT])
212 # ----------------------------
213 # implement the --enable-static flag, and support the `static' and
214 # `disable-static' LT_INIT options.
215 # DEFAULT is either `yes' or `no'. If omitted, it defaults to `yes'.
216 m4_define([_LT_ENABLE_STATIC],
217 [m4_define([_LT_ENABLE_STATIC_DEFAULT], [m4_if($1, no, no, yes)])dnl
218 AC_ARG_ENABLE([static],
219 [AS_HELP_STRING([--enable-static@<:@=PKGS@:>@],
220 [build static libraries @<:@default=]_LT_ENABLE_STATIC_DEFAULT[@:>@])],
221 [p=${PACKAGE-default}
222 case $enableval in
223 yes) enable_static=yes ;;
224 no) enable_static=no ;;
225 *)
226 enable_static=no
227 # Look at the argument we got. We use all the common list separators.
228 lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
229 for pkg in $enableval; do
230 IFS="$lt_save_ifs"
231 if test "X$pkg" = "X$p"; then
232 enable_static=yes
233 fi
234 done
235 IFS="$lt_save_ifs"
236 ;;
237 esac],
238 [enable_static=]_LT_ENABLE_STATIC_DEFAULT)
239
240 _LT_DECL([build_old_libs], [enable_static], [0],
241 [Whether or not to build static libraries])
242 ])# _LT_ENABLE_STATIC
243
244 LT_OPTION_DEFINE([LT_INIT], [static], [_LT_ENABLE_STATIC([yes])])
245 LT_OPTION_DEFINE([LT_INIT], [disable-static], [_LT_ENABLE_STATIC([no])])
246
247 # Old names:
248 AC_DEFUN([AC_ENABLE_STATIC],
249 [_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[static])
250 ])
251
252 AC_DEFUN([AC_DISABLE_STATIC],
253 [_LT_SET_OPTION([LT_INIT], [disable-static])
254 ])
255
256 AU_DEFUN([AM_ENABLE_STATIC], [AC_ENABLE_STATIC($@)])
257 AU_DEFUN([AM_DISABLE_STATIC], [AC_DISABLE_STATIC($@)])
258
259 dnl aclocal-1.4 backwards compatibility:
260 dnl AC_DEFUN([AM_ENABLE_STATIC], [])
261 dnl AC_DEFUN([AM_DISABLE_STATIC], [])
262
263
264
265 # _LT_ENABLE_FAST_INSTALL([DEFAULT])
266 # ----------------------------------
267 # implement the --enable-fast-install flag, and support the `fast-install'
268 # and `disable-fast-install' LT_INIT options.
269 # DEFAULT is either `yes' or `no'. If omitted, it defaults to `yes'.
270 m4_define([_LT_ENABLE_FAST_INSTALL],
271 [m4_define([_LT_ENABLE_FAST_INSTALL_DEFAULT], [m4_if($1, no, no, yes)])dnl
272 AC_ARG_ENABLE([fast-install],
273 [AS_HELP_STRING([--enable-fast-install@<:@=PKGS@:>@],
274 [optimize for fast installation @<:@default=]_LT_ENABLE_FAST_INSTALL_DEFAULT[@:>@])],
275 [p=${PACKAGE-default}
276 case $enableval in
277 yes) enable_fast_install=yes ;;
278 no) enable_fast_install=no ;;
279 *)
280 enable_fast_install=no
281 # Look at the argument we got. We use all the common list separators.
282 lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
283 for pkg in $enableval; do
284 IFS="$lt_save_ifs"
285 if test "X$pkg" = "X$p"; then
286 enable_fast_install=yes
287 fi
288 done
289 IFS="$lt_save_ifs"
290 ;;
291 esac],
292 [enable_fast_install=]_LT_ENABLE_FAST_INSTALL_DEFAULT)
293
294 _LT_DECL([fast_install], [enable_fast_install], [0],
295 [Whether or not to optimize for fast installation])dnl
296 ])# _LT_ENABLE_FAST_INSTALL
297
298 LT_OPTION_DEFINE([LT_INIT], [fast-install], [_LT_ENABLE_FAST_INSTALL([yes])])
299 LT_OPTION_DEFINE([LT_INIT], [disable-fast-install], [_LT_ENABLE_FAST_INSTALL([no])])
300
301 # Old names:
302 AU_DEFUN([AC_ENABLE_FAST_INSTALL],
303 [_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[fast-install])
304 AC_DIAGNOSE([obsolete],
305 [$0: Remove this warning and the call to _LT_SET_OPTION when you put
306 the `fast-install' option into LT_INIT's first parameter.])
307 ])
308
309 AU_DEFUN([AC_DISABLE_FAST_INSTALL],
310 [_LT_SET_OPTION([LT_INIT], [disable-fast-install])
311 AC_DIAGNOSE([obsolete],
312 [$0: Remove this warning and the call to _LT_SET_OPTION when you put
313 the `disable-fast-install' option into LT_INIT's first parameter.])
314 ])
315
316 dnl aclocal-1.4 backwards compatibility:
317 dnl AC_DEFUN([AC_ENABLE_FAST_INSTALL], [])
318 dnl AC_DEFUN([AM_DISABLE_FAST_INSTALL], [])
319
320
321 # _LT_WITH_PIC([MODE])
322 # --------------------
323 # implement the --with-pic flag, and support the `pic-only' and `no-pic'
324 # LT_INIT options.
325 # MODE is either `yes' or `no'. If omitted, it defaults to `both'.
326 m4_define([_LT_WITH_PIC],
327 [AC_ARG_WITH([pic],
328 [AS_HELP_STRING([--with-pic@<:@=PKGS@:>@],
329 [try to use only PIC/non-PIC objects @<:@default=use both@:>@])],
330 [lt_p=${PACKAGE-default}
331 case $withval in
332 yes|no) pic_mode=$withval ;;
333 *)
334 pic_mode=default
335 # Look at the argument we got. We use all the common list separators.
336 lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
337 for lt_pkg in $withval; do
338 IFS="$lt_save_ifs"
339 if test "X$lt_pkg" = "X$lt_p"; then
340 pic_mode=yes
341 fi
342 done
343 IFS="$lt_save_ifs"
344 ;;
345 esac],
346 [pic_mode=default])
347
348 test -z "$pic_mode" && pic_mode=m4_default([$1], [default])
349
350 _LT_DECL([], [pic_mode], [0], [What type of objects to build])dnl
351 ])# _LT_WITH_PIC
352
353 LT_OPTION_DEFINE([LT_INIT], [pic-only], [_LT_WITH_PIC([yes])])
354 LT_OPTION_DEFINE([LT_INIT], [no-pic], [_LT_WITH_PIC([no])])
355
356 # Old name:
357 AU_DEFUN([AC_LIBTOOL_PICMODE],
358 [_LT_SET_OPTION([LT_INIT], [pic-only])
359 AC_DIAGNOSE([obsolete],
360 [$0: Remove this warning and the call to _LT_SET_OPTION when you
361 put the `pic-only' option into LT_INIT's first parameter.])
362 ])
363
364 dnl aclocal-1.4 backwards compatibility:
365 dnl AC_DEFUN([AC_LIBTOOL_PICMODE], [])
366
367 ## ----------------- ##
368 ## LTDL_INIT Options ##
369 ## ----------------- ##
370
371 m4_define([_LTDL_MODE], [])
372 LT_OPTION_DEFINE([LTDL_INIT], [nonrecursive],
373 [m4_define([_LTDL_MODE], [nonrecursive])])
374 LT_OPTION_DEFINE([LTDL_INIT], [recursive],
375 [m4_define([_LTDL_MODE], [recursive])])
376 LT_OPTION_DEFINE([LTDL_INIT], [subproject],
377 [m4_define([_LTDL_MODE], [subproject])])
378
379 m4_define([_LTDL_TYPE], [])
380 LT_OPTION_DEFINE([LTDL_INIT], [installable],
381 [m4_define([_LTDL_TYPE], [installable])])
382 LT_OPTION_DEFINE([LTDL_INIT], [convenience],
383 [m4_define([_LTDL_TYPE], [convenience])])
+0
-123
m4/ltsugar.m4 less more
0 # ltsugar.m4 -- libtool m4 base layer. -*-Autoconf-*-
1 #
2 # Copyright (C) 2004, 2005, 2007, 2008 Free Software Foundation, Inc.
3 # Written by Gary V. Vaughan, 2004
4 #
5 # This file is free software; the Free Software Foundation gives
6 # unlimited permission to copy and/or distribute it, with or without
7 # modifications, as long as this notice is preserved.
8
9 # serial 6 ltsugar.m4
10
11 # This is to help aclocal find these macros, as it can't see m4_define.
12 AC_DEFUN([LTSUGAR_VERSION], [m4_if([0.1])])
13
14
15 # lt_join(SEP, ARG1, [ARG2...])
16 # -----------------------------
17 # Produce ARG1SEPARG2...SEPARGn, omitting [] arguments and their
18 # associated separator.
19 # Needed until we can rely on m4_join from Autoconf 2.62, since all earlier
20 # versions in m4sugar had bugs.
21 m4_define([lt_join],
22 [m4_if([$#], [1], [],
23 [$#], [2], [[$2]],
24 [m4_if([$2], [], [], [[$2]_])$0([$1], m4_shift(m4_shift($@)))])])
25 m4_define([_lt_join],
26 [m4_if([$#$2], [2], [],
27 [m4_if([$2], [], [], [[$1$2]])$0([$1], m4_shift(m4_shift($@)))])])
28
29
30 # lt_car(LIST)
31 # lt_cdr(LIST)
32 # ------------
33 # Manipulate m4 lists.
34 # These macros are necessary as long as will still need to support
35 # Autoconf-2.59 which quotes differently.
36 m4_define([lt_car], [[$1]])
37 m4_define([lt_cdr],
38 [m4_if([$#], 0, [m4_fatal([$0: cannot be called without arguments])],
39 [$#], 1, [],
40 [m4_dquote(m4_shift($@))])])
41 m4_define([lt_unquote], $1)
42
43
44 # lt_append(MACRO-NAME, STRING, [SEPARATOR])
45 # ------------------------------------------
46 # Redefine MACRO-NAME to hold its former content plus `SEPARATOR'`STRING'.
47 # Note that neither SEPARATOR nor STRING are expanded; they are appended
48 # to MACRO-NAME as is (leaving the expansion for when MACRO-NAME is invoked).
49 # No SEPARATOR is output if MACRO-NAME was previously undefined (different
50 # than defined and empty).
51 #
52 # This macro is needed until we can rely on Autoconf 2.62, since earlier
53 # versions of m4sugar mistakenly expanded SEPARATOR but not STRING.
54 m4_define([lt_append],
55 [m4_define([$1],
56 m4_ifdef([$1], [m4_defn([$1])[$3]])[$2])])
57
58
59
60 # lt_combine(SEP, PREFIX-LIST, INFIX, SUFFIX1, [SUFFIX2...])
61 # ----------------------------------------------------------
62 # Produce a SEP delimited list of all paired combinations of elements of
63 # PREFIX-LIST with SUFFIX1 through SUFFIXn. Each element of the list
64 # has the form PREFIXmINFIXSUFFIXn.
65 # Needed until we can rely on m4_combine added in Autoconf 2.62.
66 m4_define([lt_combine],
67 [m4_if(m4_eval([$# > 3]), [1],
68 [m4_pushdef([_Lt_sep], [m4_define([_Lt_sep], m4_defn([lt_car]))])]]dnl
69 [[m4_foreach([_Lt_prefix], [$2],
70 [m4_foreach([_Lt_suffix],
71 ]m4_dquote(m4_dquote(m4_shift(m4_shift(m4_shift($@)))))[,
72 [_Lt_sep([$1])[]m4_defn([_Lt_prefix])[$3]m4_defn([_Lt_suffix])])])])])
73
74
75 # lt_if_append_uniq(MACRO-NAME, VARNAME, [SEPARATOR], [UNIQ], [NOT-UNIQ])
76 # -----------------------------------------------------------------------
77 # Iff MACRO-NAME does not yet contain VARNAME, then append it (delimited
78 # by SEPARATOR if supplied) and expand UNIQ, else NOT-UNIQ.
79 m4_define([lt_if_append_uniq],
80 [m4_ifdef([$1],
81 [m4_if(m4_index([$3]m4_defn([$1])[$3], [$3$2$3]), [-1],
82 [lt_append([$1], [$2], [$3])$4],
83 [$5])],
84 [lt_append([$1], [$2], [$3])$4])])
85
86
87 # lt_dict_add(DICT, KEY, VALUE)
88 # -----------------------------
89 m4_define([lt_dict_add],
90 [m4_define([$1($2)], [$3])])
91
92
93 # lt_dict_add_subkey(DICT, KEY, SUBKEY, VALUE)
94 # --------------------------------------------
95 m4_define([lt_dict_add_subkey],
96 [m4_define([$1($2:$3)], [$4])])
97
98
99 # lt_dict_fetch(DICT, KEY, [SUBKEY])
100 # ----------------------------------
101 m4_define([lt_dict_fetch],
102 [m4_ifval([$3],
103 m4_ifdef([$1($2:$3)], [m4_defn([$1($2:$3)])]),
104 m4_ifdef([$1($2)], [m4_defn([$1($2)])]))])
105
106
107 # lt_if_dict_fetch(DICT, KEY, [SUBKEY], VALUE, IF-TRUE, [IF-FALSE])
108 # -----------------------------------------------------------------
109 m4_define([lt_if_dict_fetch],
110 [m4_if(lt_dict_fetch([$1], [$2], [$3]), [$4],
111 [$5],
112 [$6])])
113
114
115 # lt_dict_filter(DICT, [SUBKEY], VALUE, [SEPARATOR], KEY, [...])
116 # --------------------------------------------------------------
117 m4_define([lt_dict_filter],
118 [m4_if([$5], [], [],
119 [lt_join(m4_quote(m4_default([$4], [[, ]])),
120 lt_unquote(m4_split(m4_normalize(m4_foreach(_Lt_key, lt_car([m4_shiftn(4, $@)]),
121 [lt_if_dict_fetch([$1], _Lt_key, [$2], [$3], [_Lt_key ])])))))])[]dnl
122 ])
+0
-23
m4/ltversion.m4 less more
0 # ltversion.m4 -- version numbers -*- Autoconf -*-
1 #
2 # Copyright (C) 2004 Free Software Foundation, Inc.
3 # Written by Scott James Remnant, 2004
4 #
5 # This file is free software; the Free Software Foundation gives
6 # unlimited permission to copy and/or distribute it, with or without
7 # modifications, as long as this notice is preserved.
8
9 # @configure_input@
10
11 # serial 3337 ltversion.m4
12 # This file is part of GNU Libtool
13
14 m4_define([LT_PACKAGE_VERSION], [2.4.2])
15 m4_define([LT_PACKAGE_REVISION], [1.3337])
16
17 AC_DEFUN([LTVERSION_VERSION],
18 [macro_version='2.4.2'
19 macro_revision='1.3337'
20 _LT_DECL(, macro_version, 0, [Which release of libtool.m4 was used?])
21 _LT_DECL(, macro_revision, 0)
22 ])
+0
-98
m4/lt~obsolete.m4 less more
0 # lt~obsolete.m4 -- aclocal satisfying obsolete definitions. -*-Autoconf-*-
1 #
2 # Copyright (C) 2004, 2005, 2007, 2009 Free Software Foundation, Inc.
3 # Written by Scott James Remnant, 2004.
4 #
5 # This file is free software; the Free Software Foundation gives
6 # unlimited permission to copy and/or distribute it, with or without
7 # modifications, as long as this notice is preserved.
8
9 # serial 5 lt~obsolete.m4
10
11 # These exist entirely to fool aclocal when bootstrapping libtool.
12 #
13 # In the past libtool.m4 has provided macros via AC_DEFUN (or AU_DEFUN)
14 # which have later been changed to m4_define as they aren't part of the
15 # exported API, or moved to Autoconf or Automake where they belong.
16 #
17 # The trouble is, aclocal is a bit thick. It'll see the old AC_DEFUN
18 # in /usr/share/aclocal/libtool.m4 and remember it, then when it sees us
19 # using a macro with the same name in our local m4/libtool.m4 it'll
20 # pull the old libtool.m4 in (it doesn't see our shiny new m4_define
21 # and doesn't know about Autoconf macros at all.)
22 #
23 # So we provide this file, which has a silly filename so it's always
24 # included after everything else. This provides aclocal with the
25 # AC_DEFUNs it wants, but when m4 processes it, it doesn't do anything
26 # because those macros already exist, or will be overwritten later.
27 # We use AC_DEFUN over AU_DEFUN for compatibility with aclocal-1.6.
28 #
29 # Anytime we withdraw an AC_DEFUN or AU_DEFUN, remember to add it here.
30 # Yes, that means every name once taken will need to remain here until
31 # we give up compatibility with versions before 1.7, at which point
32 # we need to keep only those names which we still refer to.
33
34 # This is to help aclocal find these macros, as it can't see m4_define.
35 AC_DEFUN([LTOBSOLETE_VERSION], [m4_if([1])])
36
37 m4_ifndef([AC_LIBTOOL_LINKER_OPTION], [AC_DEFUN([AC_LIBTOOL_LINKER_OPTION])])
38 m4_ifndef([AC_PROG_EGREP], [AC_DEFUN([AC_PROG_EGREP])])
39 m4_ifndef([_LT_AC_PROG_ECHO_BACKSLASH], [AC_DEFUN([_LT_AC_PROG_ECHO_BACKSLASH])])
40 m4_ifndef([_LT_AC_SHELL_INIT], [AC_DEFUN([_LT_AC_SHELL_INIT])])
41 m4_ifndef([_LT_AC_SYS_LIBPATH_AIX], [AC_DEFUN([_LT_AC_SYS_LIBPATH_AIX])])
42 m4_ifndef([_LT_PROG_LTMAIN], [AC_DEFUN([_LT_PROG_LTMAIN])])
43 m4_ifndef([_LT_AC_TAGVAR], [AC_DEFUN([_LT_AC_TAGVAR])])
44 m4_ifndef([AC_LTDL_ENABLE_INSTALL], [AC_DEFUN([AC_LTDL_ENABLE_INSTALL])])
45 m4_ifndef([AC_LTDL_PREOPEN], [AC_DEFUN([AC_LTDL_PREOPEN])])
46 m4_ifndef([_LT_AC_SYS_COMPILER], [AC_DEFUN([_LT_AC_SYS_COMPILER])])
47 m4_ifndef([_LT_AC_LOCK], [AC_DEFUN([_LT_AC_LOCK])])
48 m4_ifndef([AC_LIBTOOL_SYS_OLD_ARCHIVE], [AC_DEFUN([AC_LIBTOOL_SYS_OLD_ARCHIVE])])
49 m4_ifndef([_LT_AC_TRY_DLOPEN_SELF], [AC_DEFUN([_LT_AC_TRY_DLOPEN_SELF])])
50 m4_ifndef([AC_LIBTOOL_PROG_CC_C_O], [AC_DEFUN([AC_LIBTOOL_PROG_CC_C_O])])
51 m4_ifndef([AC_LIBTOOL_SYS_HARD_LINK_LOCKS], [AC_DEFUN([AC_LIBTOOL_SYS_HARD_LINK_LOCKS])])
52 m4_ifndef([AC_LIBTOOL_OBJDIR], [AC_DEFUN([AC_LIBTOOL_OBJDIR])])
53 m4_ifndef([AC_LTDL_OBJDIR], [AC_DEFUN([AC_LTDL_OBJDIR])])
54 m4_ifndef([AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH], [AC_DEFUN([AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH])])
55 m4_ifndef([AC_LIBTOOL_SYS_LIB_STRIP], [AC_DEFUN([AC_LIBTOOL_SYS_LIB_STRIP])])
56 m4_ifndef([AC_PATH_MAGIC], [AC_DEFUN([AC_PATH_MAGIC])])
57 m4_ifndef([AC_PROG_LD_GNU], [AC_DEFUN([AC_PROG_LD_GNU])])
58 m4_ifndef([AC_PROG_LD_RELOAD_FLAG], [AC_DEFUN([AC_PROG_LD_RELOAD_FLAG])])
59 m4_ifndef([AC_DEPLIBS_CHECK_METHOD], [AC_DEFUN([AC_DEPLIBS_CHECK_METHOD])])
60 m4_ifndef([AC_LIBTOOL_PROG_COMPILER_NO_RTTI], [AC_DEFUN([AC_LIBTOOL_PROG_COMPILER_NO_RTTI])])
61 m4_ifndef([AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE], [AC_DEFUN([AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE])])
62 m4_ifndef([AC_LIBTOOL_PROG_COMPILER_PIC], [AC_DEFUN([AC_LIBTOOL_PROG_COMPILER_PIC])])
63 m4_ifndef([AC_LIBTOOL_PROG_LD_SHLIBS], [AC_DEFUN([AC_LIBTOOL_PROG_LD_SHLIBS])])
64 m4_ifndef([AC_LIBTOOL_POSTDEP_PREDEP], [AC_DEFUN([AC_LIBTOOL_POSTDEP_PREDEP])])
65 m4_ifndef([LT_AC_PROG_EGREP], [AC_DEFUN([LT_AC_PROG_EGREP])])
66 m4_ifndef([LT_AC_PROG_SED], [AC_DEFUN([LT_AC_PROG_SED])])
67 m4_ifndef([_LT_CC_BASENAME], [AC_DEFUN([_LT_CC_BASENAME])])
68 m4_ifndef([_LT_COMPILER_BOILERPLATE], [AC_DEFUN([_LT_COMPILER_BOILERPLATE])])
69 m4_ifndef([_LT_LINKER_BOILERPLATE], [AC_DEFUN([_LT_LINKER_BOILERPLATE])])
70 m4_ifndef([_AC_PROG_LIBTOOL], [AC_DEFUN([_AC_PROG_LIBTOOL])])
71 m4_ifndef([AC_LIBTOOL_SETUP], [AC_DEFUN([AC_LIBTOOL_SETUP])])
72 m4_ifndef([_LT_AC_CHECK_DLFCN], [AC_DEFUN([_LT_AC_CHECK_DLFCN])])
73 m4_ifndef([AC_LIBTOOL_SYS_DYNAMIC_LINKER], [AC_DEFUN([AC_LIBTOOL_SYS_DYNAMIC_LINKER])])
74 m4_ifndef([_LT_AC_TAGCONFIG], [AC_DEFUN([_LT_AC_TAGCONFIG])])
75 m4_ifndef([AC_DISABLE_FAST_INSTALL], [AC_DEFUN([AC_DISABLE_FAST_INSTALL])])
76 m4_ifndef([_LT_AC_LANG_CXX], [AC_DEFUN([_LT_AC_LANG_CXX])])
77 m4_ifndef([_LT_AC_LANG_F77], [AC_DEFUN([_LT_AC_LANG_F77])])
78 m4_ifndef([_LT_AC_LANG_GCJ], [AC_DEFUN([_LT_AC_LANG_GCJ])])
79 m4_ifndef([AC_LIBTOOL_LANG_C_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_C_CONFIG])])
80 m4_ifndef([_LT_AC_LANG_C_CONFIG], [AC_DEFUN([_LT_AC_LANG_C_CONFIG])])
81 m4_ifndef([AC_LIBTOOL_LANG_CXX_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_CXX_CONFIG])])
82 m4_ifndef([_LT_AC_LANG_CXX_CONFIG], [AC_DEFUN([_LT_AC_LANG_CXX_CONFIG])])
83 m4_ifndef([AC_LIBTOOL_LANG_F77_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_F77_CONFIG])])
84 m4_ifndef([_LT_AC_LANG_F77_CONFIG], [AC_DEFUN([_LT_AC_LANG_F77_CONFIG])])
85 m4_ifndef([AC_LIBTOOL_LANG_GCJ_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_GCJ_CONFIG])])
86 m4_ifndef([_LT_AC_LANG_GCJ_CONFIG], [AC_DEFUN([_LT_AC_LANG_GCJ_CONFIG])])
87 m4_ifndef([AC_LIBTOOL_LANG_RC_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_RC_CONFIG])])
88 m4_ifndef([_LT_AC_LANG_RC_CONFIG], [AC_DEFUN([_LT_AC_LANG_RC_CONFIG])])
89 m4_ifndef([AC_LIBTOOL_CONFIG], [AC_DEFUN([AC_LIBTOOL_CONFIG])])
90 m4_ifndef([_LT_AC_FILE_LTDLL_C], [AC_DEFUN([_LT_AC_FILE_LTDLL_C])])
91 m4_ifndef([_LT_REQUIRED_DARWIN_CHECKS], [AC_DEFUN([_LT_REQUIRED_DARWIN_CHECKS])])
92 m4_ifndef([_LT_AC_PROG_CXXCPP], [AC_DEFUN([_LT_AC_PROG_CXXCPP])])
93 m4_ifndef([_LT_PREPARE_SED_QUOTE_VARS], [AC_DEFUN([_LT_PREPARE_SED_QUOTE_VARS])])
94 m4_ifndef([_LT_PROG_ECHO_BACKSLASH], [AC_DEFUN([_LT_PROG_ECHO_BACKSLASH])])
95 m4_ifndef([_LT_PROG_F77], [AC_DEFUN([_LT_PROG_F77])])
96 m4_ifndef([_LT_PROG_FC], [AC_DEFUN([_LT_PROG_FC])])
97 m4_ifndef([_LT_PROG_CXX], [AC_DEFUN([_LT_PROG_CXX])])
+0
-215
missing less more
0 #! /bin/sh
1 # Common wrapper for a few potentially missing GNU programs.
2
3 scriptversion=2012-06-26.16; # UTC
4
5 # Copyright (C) 1996-2013 Free Software Foundation, Inc.
6 # Originally written by Fran,cois Pinard <pinard@iro.umontreal.ca>, 1996.
7
8 # This program is free software; you can redistribute it and/or modify
9 # it under the terms of the GNU General Public License as published by
10 # the Free Software Foundation; either version 2, or (at your option)
11 # any later version.
12
13 # This program is distributed in the hope that it will be useful,
14 # but WITHOUT ANY WARRANTY; without even the implied warranty of
15 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16 # GNU General Public License for more details.
17
18 # You should have received a copy of the GNU General Public License
19 # along with this program. If not, see <http://www.gnu.org/licenses/>.
20
21 # As a special exception to the GNU General Public License, if you
22 # distribute this file as part of a program that contains a
23 # configuration script generated by Autoconf, you may include it under
24 # the same distribution terms that you use for the rest of that program.
25
26 if test $# -eq 0; then
27 echo 1>&2 "Try '$0 --help' for more information"
28 exit 1
29 fi
30
31 case $1 in
32
33 --is-lightweight)
34 # Used by our autoconf macros to check whether the available missing
35 # script is modern enough.
36 exit 0
37 ;;
38
39 --run)
40 # Back-compat with the calling convention used by older automake.
41 shift
42 ;;
43
44 -h|--h|--he|--hel|--help)
45 echo "\
46 $0 [OPTION]... PROGRAM [ARGUMENT]...
47
48 Run 'PROGRAM [ARGUMENT]...', returning a proper advice when this fails due
49 to PROGRAM being missing or too old.
50
51 Options:
52 -h, --help display this help and exit
53 -v, --version output version information and exit
54
55 Supported PROGRAM values:
56 aclocal autoconf autoheader autom4te automake makeinfo
57 bison yacc flex lex help2man
58
59 Version suffixes to PROGRAM as well as the prefixes 'gnu-', 'gnu', and
60 'g' are ignored when checking the name.
61
62 Send bug reports to <bug-automake@gnu.org>."
63 exit $?
64 ;;
65
66 -v|--v|--ve|--ver|--vers|--versi|--versio|--version)
67 echo "missing $scriptversion (GNU Automake)"
68 exit $?
69 ;;
70
71 -*)
72 echo 1>&2 "$0: unknown '$1' option"
73 echo 1>&2 "Try '$0 --help' for more information"
74 exit 1
75 ;;
76
77 esac
78
79 # Run the given program, remember its exit status.
80 "$@"; st=$?
81
82 # If it succeeded, we are done.
83 test $st -eq 0 && exit 0
84
85 # Also exit now if we it failed (or wasn't found), and '--version' was
86 # passed; such an option is passed most likely to detect whether the
87 # program is present and works.
88 case $2 in --version|--help) exit $st;; esac
89
90 # Exit code 63 means version mismatch. This often happens when the user
91 # tries to use an ancient version of a tool on a file that requires a
92 # minimum version.
93 if test $st -eq 63; then
94 msg="probably too old"
95 elif test $st -eq 127; then
96 # Program was missing.
97 msg="missing on your system"
98 else
99 # Program was found and executed, but failed. Give up.
100 exit $st
101 fi
102
103 perl_URL=http://www.perl.org/
104 flex_URL=http://flex.sourceforge.net/
105 gnu_software_URL=http://www.gnu.org/software
106
107 program_details ()
108 {
109 case $1 in
110 aclocal|automake)
111 echo "The '$1' program is part of the GNU Automake package:"
112 echo "<$gnu_software_URL/automake>"
113 echo "It also requires GNU Autoconf, GNU m4 and Perl in order to run:"
114 echo "<$gnu_software_URL/autoconf>"
115 echo "<$gnu_software_URL/m4/>"
116 echo "<$perl_URL>"
117 ;;
118 autoconf|autom4te|autoheader)
119 echo "The '$1' program is part of the GNU Autoconf package:"
120 echo "<$gnu_software_URL/autoconf/>"
121 echo "It also requires GNU m4 and Perl in order to run:"
122 echo "<$gnu_software_URL/m4/>"
123 echo "<$perl_URL>"
124 ;;
125 esac
126 }
127
128 give_advice ()
129 {
130 # Normalize program name to check for.
131 normalized_program=`echo "$1" | sed '
132 s/^gnu-//; t
133 s/^gnu//; t
134 s/^g//; t'`
135
136 printf '%s\n' "'$1' is $msg."
137
138 configure_deps="'configure.ac' or m4 files included by 'configure.ac'"
139 case $normalized_program in
140 autoconf*)
141 echo "You should only need it if you modified 'configure.ac',"
142 echo "or m4 files included by it."
143 program_details 'autoconf'
144 ;;
145 autoheader*)
146 echo "You should only need it if you modified 'acconfig.h' or"
147 echo "$configure_deps."
148 program_details 'autoheader'
149 ;;
150 automake*)
151 echo "You should only need it if you modified 'Makefile.am' or"
152 echo "$configure_deps."
153 program_details 'automake'
154 ;;
155 aclocal*)
156 echo "You should only need it if you modified 'acinclude.m4' or"
157 echo "$configure_deps."
158 program_details 'aclocal'
159 ;;
160 autom4te*)
161 echo "You might have modified some maintainer files that require"
162 echo "the 'automa4te' program to be rebuilt."
163 program_details 'autom4te'
164 ;;
165 bison*|yacc*)
166 echo "You should only need it if you modified a '.y' file."
167 echo "You may want to install the GNU Bison package:"
168 echo "<$gnu_software_URL/bison/>"
169 ;;
170 lex*|flex*)
171 echo "You should only need it if you modified a '.l' file."
172 echo "You may want to install the Fast Lexical Analyzer package:"
173 echo "<$flex_URL>"
174 ;;
175 help2man*)
176 echo "You should only need it if you modified a dependency" \
177 "of a man page."
178 echo "You may want to install the GNU Help2man package:"
179 echo "<$gnu_software_URL/help2man/>"
180 ;;
181 makeinfo*)
182 echo "You should only need it if you modified a '.texi' file, or"
183 echo "any other file indirectly affecting the aspect of the manual."
184 echo "You might want to install the Texinfo package:"
185 echo "<$gnu_software_URL/texinfo/>"
186 echo "The spurious makeinfo call might also be the consequence of"
187 echo "using a buggy 'make' (AIX, DU, IRIX), in which case you might"
188 echo "want to install GNU make:"
189 echo "<$gnu_software_URL/make/>"
190 ;;
191 *)
192 echo "You might have modified some files without having the proper"
193 echo "tools for further handling them. Check the 'README' file, it"
194 echo "often tells you about the needed prerequisites for installing"
195 echo "this package. You may also peek at any GNU archive site, in"
196 echo "case some other package contains this missing '$1' program."
197 ;;
198 esac
199 }
200
201 give_advice "$1" | sed -e '1s/^/WARNING: /' \
202 -e '2,$s/^/ /' >&2
203
204 # Propagate the correct exit status (expected to be 127 for a program
205 # not found, 63 for a program that failed due to version mismatch).
206 exit $st
207
208 # Local variables:
209 # eval: (add-hook 'write-file-hooks 'time-stamp)
210 # time-stamp-start: "scriptversion="
211 # time-stamp-format: "%:y-%02m-%02d.%02H"
212 # time-stamp-time-zone: "UTC"
213 # time-stamp-end: "; # UTC"
214 # End:
+0
-344
src/alg_sig.c less more
0 /* * Copyright (c) 2013, Kevin Greenan (kmgreen2@gmail.com)
1 * All rights reserved.
2 *
3 * Redistribution and use in source and binary forms, with or without
4 * modification, are permitted provided that the following conditions are met:
5 *
6 * Redistributions of source code must retain the above copyright notice, this
7 * list of conditions and the following disclaimer.
8 *
9 * Redistributions in binary form must reproduce the above copyright notice, this
10 * list of conditions and the following disclaimer in the documentation and/or
11 * other materials provided with the distribution. THIS SOFTWARE IS PROVIDED BY
12 * THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED
13 * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
14 * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
15 * EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
16 * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
17 * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
18 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
19 * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
20 * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
21 * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
22 */
23
24 #include<alg_sig.h>
25 #include<stdlib.h>
26 #include<string.h>
27
28 int valid_gf_w[] = { 8, 16, -1 };
29 int valid_pairs[][2] = { { 8, 32}, {16, 32}, {16, 64}, {-1, -1} };
30
31
32 static
33 alg_sig_t *init_alg_sig_w8(int sig_len)
34 {
35 alg_sig_t *alg_sig_handle;
36 int num_gf_lr_table_syms;
37 int i;
38 int w = 8;
39 int alpha = 2, beta = 4, gamma = 8;
40 int num_components = sig_len / w;
41
42 alg_sig_handle = (alg_sig_t *)malloc(sizeof(alg_sig_t));
43 if (alg_sig_handle == NULL) {
44 return NULL;
45 }
46
47 alg_sig_handle->sig_len = sig_len;
48 alg_sig_handle->gf_w = w;
49
50 num_gf_lr_table_syms = 1 << (w >> 1);
51
52 if (num_components >= 4) {
53 alg_sig_handle->tbl1_l = (int*)malloc(sizeof(int) * num_gf_lr_table_syms);
54 alg_sig_handle->tbl1_r = (int*)malloc(sizeof(int) * num_gf_lr_table_syms);
55 alg_sig_handle->tbl2_l = (int*)malloc(sizeof(int) * num_gf_lr_table_syms);
56 alg_sig_handle->tbl2_r = (int*)malloc(sizeof(int) * num_gf_lr_table_syms);
57 alg_sig_handle->tbl3_l = (int*)malloc(sizeof(int) * num_gf_lr_table_syms);
58 alg_sig_handle->tbl3_r = (int*)malloc(sizeof(int) * num_gf_lr_table_syms);
59 }
60
61 /*
62 * Note that \alpha = 2
63 * Note that \beta = 4 (\alpha ^ 2)
64 * Note that \gamme = 8 (\alpha ^ 3)
65 */
66 for (i = 0; i < 16; i++) {
67 if (num_components >= 4) {
68 alg_sig_handle->tbl1_l[i] = galois_single_multiply((unsigned char) (i << 4) & 0xf0, alpha, w);
69 alg_sig_handle->tbl1_r[i] = galois_single_multiply((unsigned char) i, alpha, w);
70
71 alg_sig_handle->tbl2_l[i] = galois_single_multiply((unsigned char) (i << 4) & 0xf0, beta, w);
72 alg_sig_handle->tbl2_r[i] = galois_single_multiply((unsigned char) i, beta, w);
73
74 alg_sig_handle->tbl3_l[i] = galois_single_multiply((unsigned char) (i << 4) & 0xf0, gamma, w);
75 alg_sig_handle->tbl3_r[i] = galois_single_multiply((unsigned char) i, gamma, w);
76 }
77 }
78
79 return alg_sig_handle;
80 }
81
82 static
83 alg_sig_t *init_alg_sig_w16(int sig_len)
84 {
85 alg_sig_t *alg_sig_handle;
86 int num_gf_lr_table_syms;
87 int i;
88 int w = 16;
89 int alpha = 2, beta = 4, gamma = 8;
90 int num_components = sig_len / w;
91
92 alg_sig_handle = (alg_sig_t *)malloc(sizeof(alg_sig_t));
93 if (alg_sig_handle == NULL) {
94 return NULL;
95 }
96
97 alg_sig_handle->sig_len = sig_len;
98 alg_sig_handle->gf_w = w;
99
100 num_gf_lr_table_syms = 1 << (w >> 1);
101
102 if (num_components >= 2) {
103 alg_sig_handle->tbl1_l = (int*)malloc(sizeof(int) * num_gf_lr_table_syms);
104 alg_sig_handle->tbl1_r = (int*)malloc(sizeof(int) * num_gf_lr_table_syms);
105 }
106
107 if (num_components >= 4) {
108 alg_sig_handle->tbl2_l = (int*)malloc(sizeof(int) * num_gf_lr_table_syms);
109 alg_sig_handle->tbl2_r = (int*)malloc(sizeof(int) * num_gf_lr_table_syms);
110 alg_sig_handle->tbl3_l = (int*)malloc(sizeof(int) * num_gf_lr_table_syms);
111 alg_sig_handle->tbl3_r = (int*)malloc(sizeof(int) * num_gf_lr_table_syms);
112 }
113
114 /*
115 * Note that \alpha = 2
116 * Note that \beta = 4 (\alpha ^ 2 MOD 2^16)
117 * Note that \gamme = 8 (\alpha ^ 3 MOD 2^16)
118 */
119 for (i = 0; i < 256; i++) {
120 alg_sig_handle->tbl1_l[i] = galois_single_multiply((unsigned short) (i << 8), alpha, w);
121 alg_sig_handle->tbl1_r[i] = galois_single_multiply((unsigned short) i, alpha, w);
122
123 if (num_components >= 4) {
124 alg_sig_handle->tbl2_l[i] = galois_single_multiply((unsigned short) (i << 8), beta, w);
125 alg_sig_handle->tbl2_r[i] = galois_single_multiply((unsigned short) i, beta, w);
126
127 alg_sig_handle->tbl3_l[i] = galois_single_multiply((unsigned short) (i << 8), gamma, w);
128 alg_sig_handle->tbl3_r[i] = galois_single_multiply((unsigned short) i, gamma, w);
129 }
130 }
131
132 return alg_sig_handle;
133 }
134
135 alg_sig_t *init_alg_sig(int sig_len, int gf_w)
136 {
137 int i=0;
138 while (valid_pairs[i][0] > -1) {
139 if (gf_w == valid_pairs[i][0] &&
140 sig_len == valid_pairs[i][1]) {
141 break;
142 }
143 i++;
144 }
145
146 if (valid_pairs[i][0] == -1) {
147 return NULL;
148 }
149
150 if (gf_w == 8) {
151 return init_alg_sig_w8(sig_len);
152 } else if (gf_w == 16) {
153 return init_alg_sig_w16(sig_len);
154 }
155 return NULL;
156 }
157
158 void destroy_alg_sig(alg_sig_t* alg_sig_handle)
159 {
160 if (alg_sig_handle == NULL) {
161 return;
162 }
163 if (alg_sig_handle->gf_w == 0) {
164 free(alg_sig_handle);
165 return;
166 }
167 int num_components = alg_sig_handle->sig_len / alg_sig_handle->gf_w;
168
169 free(alg_sig_handle->tbl1_l);
170 free(alg_sig_handle->tbl1_r);
171 if (num_components >= 4) {
172 free(alg_sig_handle->tbl2_l);
173 free(alg_sig_handle->tbl2_r);
174 free(alg_sig_handle->tbl3_l);
175 free(alg_sig_handle->tbl3_r);
176 }
177 free(alg_sig_handle);
178 }
179
180
181 static
182 int compute_w8_alg_sig_32(alg_sig_t *alg_sig_handle, char *buf, int len, char *sig)
183 {
184 int bit_mask;
185 int i;
186 int alpha = 2, beta = 4, gamma = 8;
187 int w = 8;
188
189 if (len == 0) {
190 bzero(sig, 4);
191 return 0;
192 }
193
194 sig[0] = buf[len-1];
195 sig[1] = buf[len-1];
196 sig[2] = buf[len-1];
197 sig[3] = buf[len-1];
198
199 /**
200 * This is the loop to optimize. It is currently optimized enough : using Horner's alg.,
201 * shortened mult. tables, and other tricks.
202 */
203 for (i = len - 2; i >= 0; i--) {
204 sig[0] ^= buf[i];
205 sig[1] = (buf[i] ^ (alg_sig_handle->tbl1_l[(sig[1] >> 4) & 0x0f] ^ alg_sig_handle->tbl1_r[sig[1] & 0x0f]));
206 sig[2] = (buf[i] ^ (alg_sig_handle->tbl2_l[(sig[2] >> 4) & 0x0f] ^ alg_sig_handle->tbl2_r[sig[2] & 0x0f]));
207 sig[3] = (buf[i] ^ (alg_sig_handle->tbl3_l[(sig[3] >> 4) & 0x0f] ^ alg_sig_handle->tbl3_r[sig[3] & 0x0f]));
208 }
209
210 return 0;
211 }
212
213 static
214 int compute_w16_alg_sig_64(alg_sig_t *alg_sig_handle, char *buf, int len, char *sig)
215 {
216 int bit_mask;
217 int adj_len = len / 2;
218 int i;
219 unsigned short *_buf = (unsigned short *)buf;
220 unsigned short sig_buf[4];
221
222 if (len == 0) {
223 bzero(sig, 8);
224 return 0;
225 }
226
227 switch (len % 2) {
228 case 1:
229 bit_mask = 0x00ff;
230 break;
231 default:
232 bit_mask = 0xffff;
233 break;
234 }
235
236 if (len % 2 > 0) {
237 adj_len++;
238 }
239
240 // Account for buffer not being uint16_t aligned
241 sig_buf[0] = (_buf[adj_len - 1] & bit_mask);
242 sig_buf[1] = (_buf[adj_len - 1] & bit_mask);
243 sig_buf[2] = (_buf[adj_len - 1] & bit_mask);
244 sig_buf[3] = (_buf[adj_len - 1] & bit_mask);
245
246 /**
247 * This is the loop to optimize. It is currently optimized enough : using Horner's alg.,
248 * shortened mult. tables, and other tricks.
249 */
250 for (i = adj_len - 2; i >= 0; i--) {
251 sig_buf[0] ^= _buf[i];
252 sig_buf[1] = (_buf[i] ^ (alg_sig_handle->tbl1_l[(sig_buf[1] >> 8) & 0x00ff] ^ alg_sig_handle->tbl1_r[sig_buf[1] & 0x00ff]));
253 sig_buf[2] = (_buf[i] ^ (alg_sig_handle->tbl2_l[(sig_buf[2] >> 8) & 0x00ff] ^ alg_sig_handle->tbl2_r[sig_buf[2] & 0x00ff]));
254 sig_buf[3] = (_buf[i] ^ (alg_sig_handle->tbl3_l[(sig_buf[3] >> 8) & 0x00ff] ^ alg_sig_handle->tbl3_r[sig_buf[3] & 0x00ff]));
255 }
256
257 sig[0] = (char) (sig_buf[0] & 0x000ff);
258 sig[1] = (char) ((sig_buf[0] >> 8) & 0x000ff);
259 sig[2] = (char) (sig_buf[1] & 0x00ff);
260 sig[3] = (char) ((sig_buf[1] >> 8) & 0x00ff);
261 sig[4] = (char) (sig_buf[2] & 0x00ff);
262 sig[5] = (char) ((sig_buf[2] >> 8) & 0x00ff);
263 sig[6] = (char) (sig_buf[3] & 0x00ff);
264 sig[7] = (char) ((sig_buf[3] >> 8) & 0x00ff);
265 return 0;
266 }
267
268 static
269 int compute_w16_alg_sig_32(alg_sig_t *alg_sig_handle, char *buf, int len, char *sig)
270 {
271 int bit_mask;
272 int adj_len = len / 2;
273 int i;
274 unsigned short *_buf = (unsigned short *)buf;
275 unsigned short sig_buf[2];
276
277 if (len == 0) {
278 bzero(sig, 8);
279 return 0;
280 }
281
282 switch (len % 2) {
283 case 1:
284 bit_mask = 0x00ff;
285 break;
286 default:
287 bit_mask = 0xffff;
288 break;
289 }
290
291 if (len % 2 > 0) {
292 adj_len++;
293 }
294
295 // Account for buffer not being uint16_t aligned
296 sig_buf[0] = (_buf[adj_len - 1] & bit_mask);
297 sig_buf[1] = (_buf[adj_len - 1] & bit_mask);
298
299 /**
300 * This is the loop to optimize. It is currently optimized enough : using Horner's alg.,
301 * shortened mult. tables, and other tricks.
302 */
303 for (i = adj_len - 2; i >= 0; i--) {
304 sig_buf[0] ^= _buf[i];
305 sig_buf[1] = (_buf[i] ^ (alg_sig_handle->tbl1_l[(sig_buf[1] >> 8) & 0x00ff] ^ alg_sig_handle->tbl1_r[sig_buf[1] & 0x00ff]));
306 }
307
308 sig[0] = (char) (sig_buf[0] & 0x000ff);
309 sig[1] = (char) ((sig_buf[0] >> 8) & 0x000ff);
310 sig[2] = (char) (sig_buf[1] & 0x00ff);
311 sig[3] = (char) ((sig_buf[1] >> 8) & 0x00ff);
312 return 0;
313 }
314
315 static
316 int compute_alg_sig_32(alg_sig_t *alg_sig_handle, char *buf, int len, char *sig)
317 {
318 if (alg_sig_handle->gf_w == 8) {
319 return compute_w8_alg_sig_32(alg_sig_handle, buf, len, sig);
320 } else if (alg_sig_handle->gf_w == 16) {
321 return compute_w16_alg_sig_32(alg_sig_handle, buf, len, sig);
322 }
323 return -1;
324 }
325
326 static
327 int compute_alg_sig_64(alg_sig_t *alg_sig_handle, char *buf, int len, char *sig)
328 {
329 if (alg_sig_handle->gf_w == 16) {
330 return compute_w16_alg_sig_64(alg_sig_handle, buf, len, sig);
331 }
332 return -1;
333 }
334
335 int compute_alg_sig(alg_sig_t *alg_sig_handle, char *buf, int len, char *sig)
336 {
337 if (alg_sig_handle->sig_len == 32) {
338 return compute_alg_sig_32(alg_sig_handle, buf, len, sig);
339 } else if (alg_sig_handle->sig_len == 64) {
340 return compute_alg_sig_64(alg_sig_handle, buf, len, sig);
341 }
342 return -1;
343 }
+0
-132
src/crc32.c less more
0 /*-
1 * COPYRIGHT (C) 1986 Gary S. Brown. You may use this program, or
2 * code or tables extracted from it, as desired without restriction.
3 *
4 * First, the polynomial itself and its table of feedback terms. The
5 * polynomial is
6 * X^32+X^26+X^23+X^22+X^16+X^12+X^11+X^10+X^8+X^7+X^5+X^4+X^2+X^1+X^0
7 *
8 * Note that we take it "backwards" and put the highest-order term in
9 * the lowest-order bit. The X^32 term is "implied"; the LSB is the
10 * X^31 term, etc. The X^0 term (usually shown as "+1") results in
11 * the MSB being 1
12 *
13 * Note that the usual hardware shift register implementation, which
14 * is what we're using (we're merely optimizing it by doing eight-bit
15 * chunks at a time) shifts bits into the lowest-order term. In our
16 * implementation, that means shifting towards the right. Why do we
17 * do it this way? Because the calculated CRC must be transmitted in
18 * order from highest-order term to lowest-order term. UARTs transmit
19 * characters in order from LSB to MSB. By storing the CRC this way
20 * we hand it to the UART in the order low-byte to high-byte; the UART
21 * sends each low-bit to hight-bit; and the result is transmission bit
22 * by bit from highest- to lowest-order term without requiring any bit
23 * shuffling on our part. Reception works similarly
24 *
25 * The feedback terms table consists of 256, 32-bit entries. Notes
26 *
27 * The table can be generated at runtime if desired; code to do so
28 * is shown later. It might not be obvious, but the feedback
29 * terms simply represent the results of eight shift/xor opera
30 * tions for all combinations of data and CRC register values
31 *
32 * The values must be right-shifted by eight bits by the "updcrc
33 * logic; the shift must be unsigned (bring in zeroes). On some
34 * hardware you could probably optimize the shift in assembler by
35 * using byte-swap instructions
36 * polynomial $edb88320
37 *
38 *
39 * CRC32 code derived from work by Gary S. Brown.
40 */
41
42 #include <sys/param.h>
43
44 #if defined(INTEL_SSE4)
45 #include <nmmintrin.h>
46
47 int
48 crc32(int crc, const void *buf, size_t size)
49 {
50 unsigned long long *current = (unsigned long long*)buf;
51 unsigned char *current_char;
52
53 crc = crc ^ ~0U;
54
55 while(size >= 8) {
56 crc = _mm_crc32_u64(crc, *current++);
57 size -= 8;
58 }
59
60 current_char = (unsigned char*)current;
61 while (size--) {
62 crc = _mm_crc32_u8(crc, *current_char++);
63 }
64 return crc ^ ~0U;
65 }
66 #else
67
68 static int crc32_tab[] = {
69 0x00000000, 0x77073096, 0xee0e612c, 0x990951ba, 0x076dc419, 0x706af48f,
70 0xe963a535, 0x9e6495a3, 0x0edb8832, 0x79dcb8a4, 0xe0d5e91e, 0x97d2d988,
71 0x09b64c2b, 0x7eb17cbd, 0xe7b82d07, 0x90bf1d91, 0x1db71064, 0x6ab020f2,
72 0xf3b97148, 0x84be41de, 0x1adad47d, 0x6ddde4eb, 0xf4d4b551, 0x83d385c7,
73 0x136c9856, 0x646ba8c0, 0xfd62f97a, 0x8a65c9ec, 0x14015c4f, 0x63066cd9,
74 0xfa0f3d63, 0x8d080df5, 0x3b6e20c8, 0x4c69105e, 0xd56041e4, 0xa2677172,
75 0x3c03e4d1, 0x4b04d447, 0xd20d85fd, 0xa50ab56b, 0x35b5a8fa, 0x42b2986c,
76 0xdbbbc9d6, 0xacbcf940, 0x32d86ce3, 0x45df5c75, 0xdcd60dcf, 0xabd13d59,
77 0x26d930ac, 0x51de003a, 0xc8d75180, 0xbfd06116, 0x21b4f4b5, 0x56b3c423,
78 0xcfba9599, 0xb8bda50f, 0x2802b89e, 0x5f058808, 0xc60cd9b2, 0xb10be924,
79 0x2f6f7c87, 0x58684c11, 0xc1611dab, 0xb6662d3d, 0x76dc4190, 0x01db7106,
80 0x98d220bc, 0xefd5102a, 0x71b18589, 0x06b6b51f, 0x9fbfe4a5, 0xe8b8d433,
81 0x7807c9a2, 0x0f00f934, 0x9609a88e, 0xe10e9818, 0x7f6a0dbb, 0x086d3d2d,
82 0x91646c97, 0xe6635c01, 0x6b6b51f4, 0x1c6c6162, 0x856530d8, 0xf262004e,
83 0x6c0695ed, 0x1b01a57b, 0x8208f4c1, 0xf50fc457, 0x65b0d9c6, 0x12b7e950,
84 0x8bbeb8ea, 0xfcb9887c, 0x62dd1ddf, 0x15da2d49, 0x8cd37cf3, 0xfbd44c65,
85 0x4db26158, 0x3ab551ce, 0xa3bc0074, 0xd4bb30e2, 0x4adfa541, 0x3dd895d7,
86 0xa4d1c46d, 0xd3d6f4fb, 0x4369e96a, 0x346ed9fc, 0xad678846, 0xda60b8d0,
87 0x44042d73, 0x33031de5, 0xaa0a4c5f, 0xdd0d7cc9, 0x5005713c, 0x270241aa,
88 0xbe0b1010, 0xc90c2086, 0x5768b525, 0x206f85b3, 0xb966d409, 0xce61e49f,
89 0x5edef90e, 0x29d9c998, 0xb0d09822, 0xc7d7a8b4, 0x59b33d17, 0x2eb40d81,
90 0xb7bd5c3b, 0xc0ba6cad, 0xedb88320, 0x9abfb3b6, 0x03b6e20c, 0x74b1d29a,
91 0xead54739, 0x9dd277af, 0x04db2615, 0x73dc1683, 0xe3630b12, 0x94643b84,
92 0x0d6d6a3e, 0x7a6a5aa8, 0xe40ecf0b, 0x9309ff9d, 0x0a00ae27, 0x7d079eb1,
93 0xf00f9344, 0x8708a3d2, 0x1e01f268, 0x6906c2fe, 0xf762575d, 0x806567cb,
94 0x196c3671, 0x6e6b06e7, 0xfed41b76, 0x89d32be0, 0x10da7a5a, 0x67dd4acc,
95 0xf9b9df6f, 0x8ebeeff9, 0x17b7be43, 0x60b08ed5, 0xd6d6a3e8, 0xa1d1937e,
96 0x38d8c2c4, 0x4fdff252, 0xd1bb67f1, 0xa6bc5767, 0x3fb506dd, 0x48b2364b,
97 0xd80d2bda, 0xaf0a1b4c, 0x36034af6, 0x41047a60, 0xdf60efc3, 0xa867df55,
98 0x316e8eef, 0x4669be79, 0xcb61b38c, 0xbc66831a, 0x256fd2a0, 0x5268e236,
99 0xcc0c7795, 0xbb0b4703, 0x220216b9, 0x5505262f, 0xc5ba3bbe, 0xb2bd0b28,
100 0x2bb45a92, 0x5cb36a04, 0xc2d7ffa7, 0xb5d0cf31, 0x2cd99e8b, 0x5bdeae1d,
101 0x9b64c2b0, 0xec63f226, 0x756aa39c, 0x026d930a, 0x9c0906a9, 0xeb0e363f,
102 0x72076785, 0x05005713, 0x95bf4a82, 0xe2b87a14, 0x7bb12bae, 0x0cb61b38,
103 0x92d28e9b, 0xe5d5be0d, 0x7cdcefb7, 0x0bdbdf21, 0x86d3d2d4, 0xf1d4e242,
104 0x68ddb3f8, 0x1fda836e, 0x81be16cd, 0xf6b9265b, 0x6fb077e1, 0x18b74777,
105 0x88085ae6, 0xff0f6a70, 0x66063bca, 0x11010b5c, 0x8f659eff, 0xf862ae69,
106 0x616bffd3, 0x166ccf45, 0xa00ae278, 0xd70dd2ee, 0x4e048354, 0x3903b3c2,
107 0xa7672661, 0xd06016f7, 0x4969474d, 0x3e6e77db, 0xaed16a4a, 0xd9d65adc,
108 0x40df0b66, 0x37d83bf0, 0xa9bcae53, 0xdebb9ec5, 0x47b2cf7f, 0x30b5ffe9,
109 0xbdbdf21c, 0xcabac28a, 0x53b39330, 0x24b4a3a6, 0xbad03605, 0xcdd70693,
110 0x54de5729, 0x23d967bf, 0xb3667a2e, 0xc4614ab8, 0x5d681b02, 0x2a6f2b94,
111 0xb40bbe37, 0xc30c8ea1, 0x5a05df1b, 0x2d02ef8d
112 };
113
114 // Use same polynomial as Intel's SSE4 instruction!
115 #define POLY_CRC_32 0x11EDC6F41
116
117 int
118 crc32(int crc, const void *buf, size_t size)
119 {
120 const char *p;
121
122 p = buf;
123 crc = crc ^ ~0U;
124
125 while (size--)
126 crc = crc32_tab[(crc ^ *p++) & 0xFF] ^ (crc >> 8);
127
128 return crc ^ ~0U;
129 }
130 #endif
131
+0
-403
src/xor_code.c less more
0 /* * Copyright (c) 2013, Kevin Greenan (kmgreen2@gmail.com)
1 * All rights reserved.
2 *
3 * Redistribution and use in source and binary forms, with or without
4 * modification, are permitted provided that the following conditions are met:
5 *
6 * Redistributions of source code must retain the above copyright notice, this
7 * list of conditions and the following disclaimer.
8 *
9 * Redistributions in binary form must reproduce the above copyright notice, this
10 * list of conditions and the following disclaimer in the documentation and/or
11 * other materials provided with the distribution. THIS SOFTWARE IS PROVIDED BY
12 * THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED
13 * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
14 * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
15 * EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
16 * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
17 * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
18 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
19 * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
20 * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
21 * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
22 */
23
24 #include <emmintrin.h> //SSE2
25 #include <stdio.h>
26 #include <stdlib.h>
27 #include <string.h>
28 #include <time.h>
29 #include <xor_code.h>
30
31 const int g_bit_lookup[] = {0x1, 0x2, 0x4, 0x8,
32 0x10, 0x20, 0x40, 0x80,
33 0x100, 0x200, 0x400, 0x800,
34 0x1000, 0x2000, 0x4000, 0x8000,
35 0x10000, 0x20000, 0x40000, 0x80000,
36 0x100000, 0x200000, 0x400000, 0x800000,
37 0x1000000, 0x2000000, 0x4000000, 0x8000000,
38 0x10000000, 0x20000000, 0x40000000, 0x80000000};
39
40 int is_data_in_parity(int data_idx, unsigned int parity_bm)
41 {
42 return ((g_bit_lookup[data_idx] & parity_bm) == g_bit_lookup[data_idx]);
43 }
44
45 int does_parity_have_data(int parity_idx, unsigned int data_bm)
46 {
47 return ((g_bit_lookup[parity_idx] & data_bm) == g_bit_lookup[parity_idx]);
48 }
49
50 int parity_bit_lookup(xor_code_t *code_desc, int index)
51 {
52 return g_bit_lookup[code_desc->k - index];
53 }
54
55 int data_bit_lookup(xor_code_t *code_desc, int index)
56 {
57 return g_bit_lookup[index];
58 }
59
60 int missing_elements_bm(xor_code_t *code_desc, int *missing_elements, int (*bit_lookup_func)(xor_code_t *code_desc, int index))
61 {
62 int i = 0;
63 int bm = 0;
64
65 while (missing_elements[i] > -1) {
66 bm |= bit_lookup_func(code_desc, missing_elements[i]);
67 i++;
68 }
69
70 return bm;
71 }
72
73 void *aligned_malloc( size_t size, int align )
74 {
75 void *mem = malloc( size + (align-1) + sizeof(void*) );
76 char *amem;
77 if (!mem) {
78 return NULL;
79 }
80
81 amem = ((char*)mem) + sizeof(void*);
82 amem += align - ((unsigned long)amem & (align - 1));
83
84 ((void**)amem)[-1] = mem;
85 return amem;
86 }
87
88 void aligned_free( void *mem )
89 {
90 free( ((void**)mem)[-1] );
91 }
92
93 failure_pattern_t get_failure_pattern(xor_code_t *code_desc, int *missing_idxs)
94 {
95 int i = 0;
96 int num_failures = 0;
97 failure_pattern_t pattern = FAIL_PATTERN_0D_0P;
98
99 while (missing_idxs[i] > -1) {
100 if (num_failures >= code_desc->hd) {
101 pattern = FAIL_PATTERN_GE_HD;
102 }
103 switch(pattern) {
104 case FAIL_PATTERN_0D_0P:
105 pattern = (missing_idxs[i] < code_desc->k) ? FAIL_PATTERN_1D_0P : FAIL_PATTERN_0D_1P;
106 break;
107 case FAIL_PATTERN_1D_0P:
108 pattern = (missing_idxs[i] < code_desc->k) ? FAIL_PATTERN_2D_0P : FAIL_PATTERN_1D_1P;
109 break;
110 case FAIL_PATTERN_2D_0P:
111 pattern = (missing_idxs[i] < code_desc->k) ? FAIL_PATTERN_3D_0P : FAIL_PATTERN_2D_1P;
112 break;
113 case FAIL_PATTERN_3D_0P:
114 pattern = FAIL_PATTERN_GE_HD;
115 break;
116 case FAIL_PATTERN_1D_1P:
117 pattern = (missing_idxs[i] < code_desc->k) ? FAIL_PATTERN_2D_1P : FAIL_PATTERN_1D_2P;
118 break;
119 case FAIL_PATTERN_1D_2P:
120 pattern = FAIL_PATTERN_GE_HD;
121 break;
122 case FAIL_PATTERN_2D_1P:
123 pattern = FAIL_PATTERN_GE_HD;
124 break;
125 case FAIL_PATTERN_0D_1P:
126 pattern = (missing_idxs[i] < code_desc->k) ? FAIL_PATTERN_1D_1P : FAIL_PATTERN_0D_2P;
127 break;
128 case FAIL_PATTERN_0D_2P:
129 pattern = (missing_idxs[i] < code_desc->k) ? FAIL_PATTERN_1D_2P : FAIL_PATTERN_0D_3P;
130 break;
131 case FAIL_PATTERN_0D_3P:
132 pattern = FAIL_PATTERN_GE_HD;
133 break;
134 case FAIL_PATTERN_GE_HD:
135 default:
136 break;
137 }
138 if (pattern == FAIL_PATTERN_GE_HD) {
139 break;
140 }
141 i++;
142 }
143
144 return pattern;
145 }
146
147 void fast_memcpy(char *dst, char *src, int size)
148 {
149 // Use _mm_stream_si128((__m128i*) _buf2, sum);
150 memcpy(dst, src, size);
151 }
152
153 /*
154 * Buffers must be aligned to 16-byte boundaries
155 *
156 * Store in buf2 (opposite of memcpy convention... Maybe change?)
157 */
158 void xor_bufs_and_store(char *buf1, char *buf2, int blocksize)
159 {
160 #ifdef INTEL_SSE2
161 int residual_bytes = num_unaligned_end(blocksize);
162 int fast_blocksize = blocksize > residual_bytes ? (blocksize - residual_bytes) : 0;
163 int fast_int_blocksize = fast_blocksize / sizeof(__m128i);
164 int i;
165 __m128i *_buf1 = (__m128i*)buf1;
166 __m128i *_buf2 = (__m128i*)buf2;
167
168 /*
169 * XOR aligned region using 128-bit XOR
170 */
171 for (i=0; i < fast_int_blocksize; i++) {
172 _buf2[i] = _mm_xor_si128(_buf1[i], _buf2[i]);
173 }
174 #else
175 int residual_bytes = num_unaligned_end(blocksize);
176 int fast_blocksize = blocksize > residual_bytes ? (blocksize - residual_bytes) : 0;
177 int fast_int_blocksize = fast_blocksize / sizeof(unsigned long);
178 int i;
179
180 unsigned long*_buf1 = (unsigned long*)buf1;
181 unsigned long*_buf2 = (unsigned long*)buf2;
182
183 for (i=0; i < fast_int_blocksize; i++) {
184 _buf2[i] = _buf1[i] ^ _buf2[i];
185 }
186 #endif
187
188 /*
189 * XOR unaligned end of region
190 */
191 for (i=fast_blocksize; i < blocksize; i++)
192 {
193 buf2[i] ^= buf1[i];
194 }
195 }
196
197 void xor_code_encode(xor_code_t *code_desc, char **data, char **parity, int blocksize)
198 {
199 int i, j;
200
201 for (i=0; i < code_desc->k; i++) {
202 for (j=0; j < code_desc->m; j++) {
203 if (is_data_in_parity(i, code_desc->parity_bms[j])) {
204 xor_bufs_and_store(data[i], parity[j], blocksize);
205 }
206 }
207 }
208 }
209
210 void selective_encode(xor_code_t *code_desc, char **data, char **parity, int *missing_parity, int blocksize)
211 {
212 int i;
213 for (i=0; i < code_desc->k; i++) {
214 int j=0;
215 while (missing_parity[j] > -1) {
216 int parity_index = missing_parity[j] - code_desc->k;
217 if (is_data_in_parity(i, code_desc->parity_bms[parity_index])) {
218 xor_bufs_and_store(data[i], parity[parity_index], blocksize);
219 }
220 j++;
221 }
222 }
223 }
224
225 int * get_missing_parity(xor_code_t *code_desc, int *missing_idxs)
226 {
227 int *missing_parity = (int*)malloc(sizeof(int)*MAX_PARITY);
228 int i = 0, j = 0;
229
230 while (missing_idxs[i] > -1) {
231 if (missing_idxs[i] >= code_desc->k) {
232 missing_parity[j] = missing_idxs[i];
233 j++;
234 }
235 i++;
236 }
237
238 missing_parity[j] = -1;
239 return missing_parity;
240 }
241
242 int * get_missing_data(xor_code_t *code_desc, int *missing_idxs)
243 {
244 int *missing_data = (int*)malloc(sizeof(int)*MAX_DATA);
245 int i = 0, j = 0;
246
247 while (missing_idxs[i] > -1) {
248 if (missing_idxs[i] < code_desc->k) {
249 missing_data[j] = missing_idxs[i];
250 j++;
251 }
252 i++;
253 }
254
255 missing_data[j] = -1;
256 return missing_data;
257 }
258
259 /*
260 * Reconstruct a single missing symbol, given other symbols may be missing
261 */
262 void xor_reconstruct_one(xor_code_t *code_desc, char **data, char **parity, int *missing_idxs, int index_to_reconstruct, int blocksize)
263 {
264 int *missing_data = get_missing_data(code_desc, missing_idxs);
265 int *missing_parity = get_missing_parity(code_desc, missing_idxs);
266 int i;
267
268 // If it is a data symbol, we need to figure out
269 // what data+parity symbols are needed to reconstruct
270 // If there is not at least one parity equation with
271 // one missing data element (the index to resonstruct),
272 // just call the underlying decode function
273 if (index_to_reconstruct < code_desc->k) {
274 int connected_parity_idx = index_of_connected_parity(code_desc, index_to_reconstruct, missing_parity, missing_data);
275
276 if (connected_parity_idx >= 0) {
277 // Can do a cheap reoncstruction!
278 int relative_parity_idx = connected_parity_idx - code_desc->k;
279 int parity_bm = code_desc->parity_bms[relative_parity_idx];
280
281 fast_memcpy(data[index_to_reconstruct], parity[relative_parity_idx], blocksize);
282
283 for (i=0; i < code_desc->k; i++) {
284 if (parity_bm & (1 << i)) {
285 if (i != index_to_reconstruct) {
286 xor_bufs_and_store(data[i], data[index_to_reconstruct], blocksize);
287 }
288 }
289 }
290
291 } else {
292 // Just call decode
293 code_desc->decode(code_desc, data, parity, missing_idxs, blocksize, 1);
294 }
295
296 } else {
297
298 // If it is a parity symbol, we need to figure out
299 // what data symbols are needed to reconstruct the
300 // parity. If *any* data symbols in the parity
301 // equation are missing, we are better off calling
302 // the underlying decode function.
303 int num_data_missing = num_missing_data_in_parity(code_desc, index_to_reconstruct, missing_data);
304
305 if (num_data_missing == 0) {
306 int relative_parity_idx = index_to_reconstruct - code_desc->k;
307 int parity_bm = code_desc->parity_bms[relative_parity_idx];
308
309 memset(parity[relative_parity_idx], 0, blocksize);
310
311 for (i=0; i < code_desc->k; i++) {
312 if (parity_bm & (1 << i)) {
313 xor_bufs_and_store(data[i], parity[relative_parity_idx], blocksize);
314 }
315 }
316
317 } else {
318 // Just call decode
319 code_desc->decode(code_desc, data, parity, missing_idxs, blocksize, 1);
320 }
321 }
322 free(missing_data);
323 free(missing_parity);
324 }
325
326 int num_missing_data_in_parity(xor_code_t *code_desc, int parity_idx, int *missing_data)
327 {
328 int i = 0;
329 int num_missing_data = 0;
330 int relative_parity_index = parity_idx - code_desc->k;
331 if (missing_data == NULL) {
332 return 0;
333 }
334
335 while (missing_data[i] > -1) {
336 if (does_parity_have_data(relative_parity_index, code_desc->data_bms[missing_data[i]]) > 0) {
337 num_missing_data++;
338 }
339 i++;
340 }
341
342 return num_missing_data;
343 }
344
345 int index_of_connected_parity(xor_code_t *code_desc, int data_index, int *missing_parity, int *missing_data)
346 {
347 int parity_index = -1;
348 int i;
349
350 for (i=0; i < code_desc->m; i++) {
351 if (num_missing_data_in_parity(code_desc, i + code_desc->k, missing_data) > 1) {
352 continue;
353 }
354 if (is_data_in_parity(data_index, code_desc->parity_bms[i])) {
355 int j=0;
356 int is_missing = 0;
357 if (missing_parity == NULL) {
358 parity_index = i;
359 break;
360 }
361 while (missing_parity[j] > -1) {
362 if ((code_desc->k + i) == missing_parity[j]) {
363 is_missing = 1;
364 break;
365 }
366 j++;
367 }
368 if (!is_missing) {
369 parity_index = i;
370 break;
371 }
372 }
373 }
374
375 // Must add k to get the absolute
376 // index of the parity in the stripe
377 return parity_index > -1 ? parity_index + code_desc->k : parity_index;
378 }
379
380 void remove_from_missing_list(int element, int *missing_list)
381 {
382 int i = 0;
383 int elem_idx = -1;
384 int num_elems = 0;
385
386 while (missing_list[i] > -1) {
387 if (missing_list[i] == element) {
388 elem_idx = i;
389 missing_list[i] = -1;
390 }
391 i++;
392 }
393
394 num_elems = i;
395
396 for (i=elem_idx;i < num_elems-1;i++) {
397 int tmp = missing_list[i+1];
398 missing_list[i+1] = missing_list[i];
399 missing_list[i] = tmp;
400 }
401 }
402
+0
-612
src/xor_hd_code.c less more
0 /* * Copyright (c) 2013, Kevin Greenan (kmgreen2@gmail.com)
1 * All rights reserved.
2 *
3 * Redistribution and use in source and binary forms, with or without
4 * modification, are permitted provided that the following conditions are met:
5 *
6 * Redistributions of source code must retain the above copyright notice, this
7 * list of conditions and the following disclaimer.
8 *
9 * Redistributions in binary form must reproduce the above copyright notice, this
10 * list of conditions and the following disclaimer in the documentation and/or
11 * other materials provided with the distribution. THIS SOFTWARE IS PROVIDED BY
12 * THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED
13 * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
14 * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
15 * EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
16 * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
17 * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
18 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
19 * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
20 * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
21 * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
22 */
23
24 #include <stdio.h>
25 #include <stdlib.h>
26 #include <string.h>
27 #include <xor_code.h>
28 #include <xor_hd_code_defs.h>
29
30 /*
31 * Returns -1 if not possible
32 */
33 static int fragments_needed_one_data(xor_code_t *code_desc, int *missing_data, int *missing_parity, unsigned int *data_bm, unsigned int *parity_bm)
34 {
35 int data_index = missing_data[0];
36 int parity_index = index_of_connected_parity(code_desc, data_index, missing_parity, missing_data);
37
38 if (parity_index < 0) {
39 return -1;
40 }
41
42 // Include all data elements except for this one
43 *data_bm |= (code_desc->parity_bms[parity_index-code_desc->k]);
44
45 // Include this parity element
46 *parity_bm |= (1 << (parity_index-code_desc->k));
47 *data_bm &= ~((unsigned int)1 << data_index);
48
49 return 0;
50 }
51
52 /*
53 * Returns -1 if not possible
54 */
55 static int fragments_needed_two_data(xor_code_t *code_desc, int *missing_data, int *missing_parity, unsigned int *data_bm, unsigned int *parity_bm)
56 {
57 // Verify that missing_data[2] == -1?
58 int data_index = missing_data[0];
59 int parity_index = index_of_connected_parity(code_desc, data_index, missing_parity, missing_data);
60 int i;
61 int ret;
62
63 if (parity_index < 0) {
64 data_index = missing_data[1];
65 parity_index = index_of_connected_parity(code_desc, data_index, missing_parity, missing_data);
66 if (parity_index < 0) {
67 return -1;
68 }
69 missing_data[1] = -1;
70 } else {
71 missing_data[0] = missing_data[1];
72 missing_data[1] = -1;
73 }
74
75 // Include all data elements except for this one
76 *data_bm |= (code_desc->parity_bms[parity_index-code_desc->k]);
77
78 // Include this parity element
79 *parity_bm |= (1 << (parity_index-code_desc->k));
80
81 ret = fragments_needed_one_data(code_desc, missing_data, missing_parity, data_bm, parity_bm);
82
83 *data_bm &= ~((unsigned int)1 << data_index);
84
85 return ret;
86 }
87
88 /*
89 * Returns -1 if not possible
90 */
91 static int fragments_needed_three_data(xor_code_t *code_desc, int *missing_data, int *missing_parity, unsigned int *data_bm, unsigned int *parity_bm)
92 {
93 int i = 0;
94 int parity_index = -1;
95 int data_index = -1;
96 int tmp_parity_bm = -1;
97 int contains_2d = -1;
98 int contains_3d = -1;
99 int ret = 0;
100
101 /*
102 * Try to find a parity that only contains
103 * one of the missing data elements.
104 */
105 while (missing_data[i] > -1) {
106 parity_index = index_of_connected_parity(code_desc, missing_data[i], missing_parity, missing_data);
107 if (parity_index > -1) {
108 data_index = missing_data[i];
109 tmp_parity_bm = code_desc->parity_bms[parity_index-code_desc->k];
110 break;
111 }
112 i++;
113 }
114 /*
115 * If we cannot find a parity that is connected to only
116 * one missing element, we must find a parity that is
117 * connected to exactly 2 (P) and another that is connected
118 * to exactly 3 (Q) (it should exist!!!).
119 *
120 * We XOR those parities together and use it to recover
121 * the element that is not connected to P.
122 */
123 if (parity_index < 0) {
124
125 for (i=0;i < code_desc->m;i++) {
126 int num_missing = num_missing_data_in_parity(code_desc, code_desc->k+i, missing_data);
127 if (num_missing == 2 && contains_2d < 0) {
128 contains_2d = i;
129 } else if (num_missing == 3 && contains_3d < 0) {
130 contains_3d = i;
131 }
132 }
133
134 if (contains_2d < 0 || contains_3d < 0) {
135 return -1;
136 }
137
138 // P XOR Q
139 tmp_parity_bm = code_desc->parity_bms[contains_2d] ^ code_desc->parity_bms[contains_3d];
140
141 i=0;
142 data_index = -1;
143 while (missing_data[i] > -1) {
144 if (is_data_in_parity(missing_data[i], tmp_parity_bm)) {
145 data_index = missing_data[i];
146 break;
147 }
148 i++;
149 }
150
151 if (data_index < 0) {
152 return -1;
153 }
154 }
155
156 remove_from_missing_list(data_index, missing_data);
157
158 // Include all data elements except for this one
159 *data_bm |= (code_desc->parity_bms[parity_index-code_desc->k]);
160
161 // Include this parity element
162 if (parity_index > -1) {
163 *parity_bm |= (1 << (parity_index-code_desc->k));
164 } else {
165 *parity_bm |= (1 << (contains_2d-code_desc->k));
166 *parity_bm |= (1 << (contains_3d-code_desc->k));
167 }
168
169 ret = fragments_needed_two_data(code_desc, missing_data, missing_parity, data_bm, parity_bm);
170
171 *data_bm &= ~((unsigned int)1 << data_index);
172
173 return ret;
174 }
175
176
177
178 int xor_hd_fragments_needed(xor_code_t *code_desc, int *missing_idxs, int *fragments_needed)
179 {
180 failure_pattern_t pattern = get_failure_pattern(code_desc, missing_idxs);
181 unsigned int data_bm = 0, parity_bm = 0;
182 int ret = 0;
183 int i, j;
184
185 switch(pattern) {
186 case FAIL_PATTERN_0D_0P:
187 break;
188 case FAIL_PATTERN_1D_0P:
189 {
190 int *missing_data = get_missing_data(code_desc, missing_idxs);
191 ret = fragments_needed_one_data(code_desc, missing_data, NULL, &data_bm, &parity_bm);
192 free(missing_data);
193 break;
194 }
195 case FAIL_PATTERN_2D_0P:
196 {
197 int *missing_data = get_missing_data(code_desc, missing_idxs);
198 ret = fragments_needed_two_data(code_desc, missing_data, NULL, &data_bm, &parity_bm);
199 free(missing_data);
200 break;
201 }
202 case FAIL_PATTERN_3D_0P:
203 {
204 int *missing_data = get_missing_data(code_desc, missing_idxs);
205 ret = fragments_needed_three_data(code_desc, missing_data, NULL, &data_bm, &parity_bm);
206 free(missing_data);
207 break;
208 }
209 case FAIL_PATTERN_1D_1P:
210 {
211 int *missing_data = get_missing_data(code_desc, missing_idxs);
212 int *missing_parity = get_missing_parity(code_desc, missing_idxs);
213 unsigned int missing_data_bm = missing_elements_bm(code_desc, missing_data, data_bit_lookup);
214 ret = fragments_needed_one_data(code_desc, missing_data, missing_parity, &data_bm, &parity_bm);
215 // OR all parities
216 i=0;
217 while (missing_parity[i] > -1) {
218 data_bm |= code_desc->parity_bms[missing_parity[i]-code_desc->k];
219 data_bm &= ~(missing_data_bm);
220 i++;
221 }
222 free(missing_parity);
223 free(missing_data);
224 break;
225 }
226 case FAIL_PATTERN_1D_2P:
227 {
228 int *missing_data = get_missing_data(code_desc, missing_idxs);
229 int *missing_parity = get_missing_parity(code_desc, missing_idxs);
230 int missing_data_bm = missing_elements_bm(code_desc, missing_data, data_bit_lookup);
231 ret = fragments_needed_one_data(code_desc, missing_data, missing_parity, &data_bm, &parity_bm);
232 // OR all parities
233 i=0;
234 while (missing_parity[i] > -1) {
235 data_bm |= code_desc->parity_bms[missing_parity[i]-code_desc->k];
236 data_bm &= ~(missing_data_bm);
237 i++;
238 }
239 free(missing_parity);
240 free(missing_data);
241 break;
242 }
243 case FAIL_PATTERN_2D_1P:
244 {
245 int *missing_data = get_missing_data(code_desc, missing_idxs);
246 int *missing_parity = get_missing_parity(code_desc, missing_idxs);
247 unsigned int missing_data_bm = missing_elements_bm(code_desc, missing_data, data_bit_lookup);
248 ret = fragments_needed_two_data(code_desc, missing_data, missing_parity, &data_bm, &parity_bm);
249 // OR all parities
250 i=0;
251 while (missing_parity[i] > -1) {
252 data_bm |= code_desc->parity_bms[missing_parity[i]-code_desc->k];
253 data_bm &= ~(missing_data_bm);
254 i++;
255 }
256 free(missing_parity);
257 free(missing_data);
258 break;
259 }
260 case FAIL_PATTERN_0D_1P:
261 {
262 int *missing_parity = get_missing_parity(code_desc, missing_idxs);
263 // OR all of the parities
264 i=0;
265 while (missing_parity[i] > -1) {
266 data_bm |= code_desc->parity_bms[missing_parity[i]-code_desc->k];
267 i++;
268 }
269 free(missing_parity);
270 break;
271 }
272 case FAIL_PATTERN_0D_2P:
273 {
274 int *missing_parity = get_missing_parity(code_desc, missing_idxs);
275 // OR all of the parities
276 i=0;
277 while (missing_parity[i] > -1) {
278 data_bm |= code_desc->parity_bms[missing_parity[i]-code_desc->k];
279 i++;
280 }
281 free(missing_parity);
282 break;
283 }
284 case FAIL_PATTERN_0D_3P:
285 {
286 int *missing_parity = get_missing_parity(code_desc, missing_idxs);
287 // OR all of the parities
288 i=0;
289 while (missing_parity[i] > -1) {
290 data_bm |= code_desc->parity_bms[missing_parity[i]-code_desc->k];
291 i++;
292 }
293 free(missing_parity);
294 break;
295 }
296 case FAIL_PATTERN_GE_HD:
297 default:
298 break;
299 }
300
301 if (ret >= 0) {
302 i=0;
303 j=0;
304 while (data_bm) {
305 if (data_bm & 1) {
306 fragments_needed[j] = i;
307 j++;
308 }
309 i++;
310 data_bm >>= 1;
311 }
312
313 i=0;
314 while (parity_bm) {
315 if (parity_bm & 1) {
316 fragments_needed[j] = i + code_desc->k;
317 j++;
318 }
319 i++;
320 parity_bm >>= 1;
321 }
322
323 fragments_needed[j] = -1;
324 }
325
326 return ret;
327 }
328
329 /*
330 * There is one unavailable data element, so any available parity connected to
331 * the data element is sufficient to decode.
332 */
333 static void decode_one_data(xor_code_t *code_desc, char **data, char **parity, int *missing_data, int *missing_parity, int blocksize)
334 {
335 // Verify that missing_data[1] == -1?
336 int data_index = missing_data[0];
337 int parity_index = index_of_connected_parity(code_desc, data_index, missing_parity, missing_data);
338 int i;
339
340 // Copy the appropriate parity into the data buffer
341 fast_memcpy(data[data_index], parity[parity_index-code_desc->k], blocksize);
342
343 for (i=0; i < code_desc->k; i++) {
344 if (i != data_index && is_data_in_parity(i, code_desc->parity_bms[parity_index-code_desc->k])) {
345 xor_bufs_and_store(data[i], data[data_index], blocksize);
346 }
347 }
348 }
349
350 static void decode_two_data(xor_code_t *code_desc, char **data, char **parity, int *missing_data, int *missing_parity, int blocksize)
351 {
352 // Verify that missing_data[2] == -1?
353 int data_index = missing_data[0];
354 int parity_index = index_of_connected_parity(code_desc, data_index, missing_parity, missing_data);
355 int i;
356
357 if (parity_index < 0) {
358 data_index = missing_data[1];
359 parity_index = index_of_connected_parity(code_desc, data_index, missing_parity, missing_data);
360 if (parity_index < 0) {
361 fprintf(stderr, "Shit is broken, cannot find a proper parity!!!\n");
362 exit(2);
363 }
364 missing_data[1] = -1;
365 } else {
366 missing_data[0] = missing_data[1];
367 missing_data[1] = -1;
368 }
369
370 // Copy the appropriate parity into the data buffer
371 fast_memcpy(data[data_index], parity[parity_index-code_desc->k], blocksize);
372
373 for (i=0; i < code_desc->k; i++) {
374 if (i != data_index && is_data_in_parity(i, code_desc->parity_bms[parity_index-code_desc->k])) {
375 xor_bufs_and_store(data[i], data[data_index], blocksize);
376 }
377 }
378 decode_one_data(code_desc, data, parity, missing_data, missing_parity, blocksize);
379 }
380
381 static void decode_three_data(xor_code_t *code_desc, char **data, char **parity, int *missing_data, int *missing_parity, int blocksize)
382 {
383 int i = 0;
384 int parity_index = -1;
385 int data_index = -1;
386 unsigned int parity_bm = -1;
387 char *parity_buffer = NULL;
388
389 /*
390 * Try to find a parity that only contains
391 * one of the missing data elements.
392 */
393 while (missing_data[i] > -1) {
394 parity_index = index_of_connected_parity(code_desc, missing_data[i], missing_parity, missing_data);
395 if (parity_index > -1) {
396 data_index = missing_data[i];
397 parity_buffer = parity[parity_index-code_desc->k];
398 parity_bm = code_desc->parity_bms[parity_index-code_desc->k];
399 break;
400 }
401 i++;
402 }
403
404 /*
405 * If we cannot find a parity that is connected to only
406 * one missing element, we must find a parity that is
407 * connected to exactly 2 (P) and another that is connected
408 * to exactly 3 (Q) (it should exist!!!).
409 *
410 * We XOR those parities together and use it to recover
411 * the element that is not connected to P.
412 */
413 if (parity_index < 0) {
414 int contains_2d = -1;
415 int contains_3d = -1;
416
417 for (i=0;i < code_desc->m;i++) {
418 int num_missing = num_missing_data_in_parity(code_desc, code_desc->k+i, missing_data);
419 if (num_missing == 2 && contains_2d < 0) {
420 contains_2d = i;
421 } else if (num_missing == 3 && contains_3d < 0) {
422 contains_3d = i;
423 }
424 }
425
426 if (contains_2d < 0 || contains_3d < 0) {
427 fprintf(stderr, "Shit is broken, cannot find a proper parity (2 and 3-connected parities)!!!\n");
428 exit(2);
429 }
430
431 parity_buffer = aligned_malloc(blocksize, 16);
432
433 // P XOR Q
434 parity_bm = code_desc->parity_bms[contains_2d] ^ code_desc->parity_bms[contains_3d];
435
436 // Create buffer with P XOR Q -> parity_buffer
437 fast_memcpy(parity_buffer, parity[contains_2d], blocksize);
438 xor_bufs_and_store(parity[contains_3d], parity_buffer, blocksize);
439
440 i=0;
441 data_index = -1;
442 while (missing_data[i] > -1) {
443 if (is_data_in_parity(missing_data[i], parity_bm)) {
444 data_index = missing_data[i];
445 break;
446 }
447 i++;
448 }
449
450 if (data_index < 0) {
451 fprintf(stderr, "Shit is broken, cannot construct equations to repair 3 failures!!!\n");
452 exit(2);
453 }
454 // Copy the appropriate parity into the data buffer
455 fast_memcpy(data[data_index], parity_buffer, blocksize);
456 // Free up the buffer we allocated above
457 aligned_free(parity_buffer);
458 } else {
459 // Copy the appropriate parity into the data buffer
460 fast_memcpy(data[data_index], parity_buffer, blocksize);
461 }
462
463
464 for (i=0; i < code_desc->k; i++) {
465 if (i != data_index && is_data_in_parity(i, parity_bm)) {
466 xor_bufs_and_store(data[i], data[data_index], blocksize);
467 }
468 }
469
470 remove_from_missing_list(data_index, missing_data);
471
472 decode_two_data(code_desc, data, parity, missing_data, missing_parity, blocksize);
473 }
474
475 void xor_hd_decode(xor_code_t *code_desc, char **data, char **parity, int *missing_idxs, int blocksize, int decode_parity)
476 {
477 failure_pattern_t pattern = get_failure_pattern(code_desc, missing_idxs);
478
479 switch(pattern) {
480 case FAIL_PATTERN_0D_0P:
481 break;
482 case FAIL_PATTERN_1D_0P:
483 {
484 int *missing_data = get_missing_data(code_desc, missing_idxs);
485 decode_one_data(code_desc, data, parity, missing_data, NULL, blocksize);
486 free(missing_data);
487 break;
488 }
489 case FAIL_PATTERN_2D_0P:
490 {
491 int *missing_data = get_missing_data(code_desc, missing_idxs);
492 decode_two_data(code_desc, data, parity, missing_data, NULL, blocksize);
493 free(missing_data);
494 break;
495 }
496 case FAIL_PATTERN_3D_0P:
497 {
498 int *missing_data = get_missing_data(code_desc, missing_idxs);
499 decode_three_data(code_desc, data, parity, missing_data, NULL, blocksize);
500 free(missing_data);
501 break;
502 }
503 case FAIL_PATTERN_1D_1P:
504 {
505 int *missing_data = get_missing_data(code_desc, missing_idxs);
506 int *missing_parity = get_missing_parity(code_desc, missing_idxs);
507 decode_one_data(code_desc, data, parity, missing_data, missing_parity, blocksize);
508 if (decode_parity) {
509 selective_encode(code_desc, data, parity, missing_parity, blocksize);
510 }
511 free(missing_parity);
512 free(missing_data);
513 break;
514 }
515 case FAIL_PATTERN_1D_2P:
516 {
517 int *missing_data = get_missing_data(code_desc, missing_idxs);
518 int *missing_parity = get_missing_parity(code_desc, missing_idxs);
519 decode_one_data(code_desc, data, parity, missing_data, missing_parity, blocksize);
520 if (decode_parity) {
521 selective_encode(code_desc, data, parity, missing_parity, blocksize);
522 }
523 free(missing_data);
524 free(missing_parity);
525 break;
526 }
527 case FAIL_PATTERN_2D_1P:
528 {
529 int *missing_data = get_missing_data(code_desc, missing_idxs);
530 int *missing_parity = get_missing_parity(code_desc, missing_idxs);
531 decode_two_data(code_desc, data, parity, missing_data, missing_parity, blocksize);
532 if (decode_parity) {
533 selective_encode(code_desc, data, parity, missing_parity, blocksize);
534 }
535 free(missing_parity);
536 free(missing_data);
537 break;
538 }
539 case FAIL_PATTERN_0D_1P:
540 if (decode_parity) {
541 int *missing_parity = get_missing_parity(code_desc, missing_idxs);
542 selective_encode(code_desc, data, parity, missing_parity, blocksize);
543 free(missing_parity);
544 }
545 break;
546 case FAIL_PATTERN_0D_2P:
547 if (decode_parity) {
548 int *missing_parity = get_missing_parity(code_desc, missing_idxs);
549 selective_encode(code_desc, data, parity, missing_parity, blocksize);
550 free(missing_parity);
551 }
552 break;
553 case FAIL_PATTERN_0D_3P:
554 if (decode_parity) {
555 int *missing_parity = get_missing_parity(code_desc, missing_idxs);
556 selective_encode(code_desc, data, parity, missing_parity, blocksize);
557 free(missing_parity);
558 }
559 break;
560 case FAIL_PATTERN_GE_HD:
561 default:
562 break;
563 }
564
565 return;
566 }
567
568 xor_code_t* init_xor_hd_code(int k, int m, int hd)
569 {
570 xor_code_t *code_desc = NULL;
571 int is_valid = 0;
572
573 if (hd == 3) {
574 if (m == 6) {
575 if (k <= 15 && k >= 6) {
576 is_valid = 1;
577 }
578 } else if (m == 5) {
579 if (k <= 10 && k >= 5) {
580 is_valid = 1;
581 }
582 }
583 }
584
585 if (hd == 4) {
586 if (m == 6) {
587 if (k <= 20 && k >= 6) {
588 is_valid = 1;
589 }
590 } else if (m == 5) {
591 if (k <= 10 && k >= 5) {
592 is_valid = 1;
593 }
594 }
595 }
596
597 if (is_valid) {
598 code_desc = (xor_code_t*)malloc(sizeof(xor_code_t));
599 code_desc->parity_bms = PARITY_BM_ARY(k, m, hd);
600 code_desc->data_bms = DATA_BM_ARY(k, m, hd);
601 code_desc->k = k;
602 code_desc->m = m;
603 code_desc->hd = hd;
604 code_desc->decode = xor_hd_decode;
605 code_desc->encode = xor_code_encode;
606 code_desc->fragments_needed = xor_hd_fragments_needed;
607 }
608
609 return code_desc;
610 }
611
+0
-253
tests/alg_sig_test.c less more
0 /* * Copyright (c) 2013, Kevin Greenan (kmgreen2@gmail.com)
1 * All rights reserved.
2 *
3 * Redistribution and use in source and binary forms, with or without
4 * modification, are permitted provided that the following conditions are met:
5 *
6 * Redistributions of source code must retain the above copyright notice, this
7 * list of conditions and the following disclaimer.
8 *
9 * Redistributions in binary form must reproduce the above copyright notice, this
10 * list of conditions and the following disclaimer in the documentation and/or
11 * other materials provided with the distribution. THIS SOFTWARE IS PROVIDED BY
12 * THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED
13 * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
14 * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
15 * EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
16 * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
17 * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
18 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
19 * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
20 * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
21 * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
22 */
23
24 #include<alg_sig.h>
25 #include<stdlib.h>
26 #include<stdio.h>
27 #include<string.h>
28 #include<time.h>
29
30 // Max is 8 bytes right now (64-bits)
31 #define MAX_SIG_LEN 8
32
33 void fill_random_buffer(char *buf, int size)
34 {
35 int i;
36
37 for (i=0; i < size; i++) {
38 buf[i] = (char)(rand() % 256);
39 }
40 }
41
42 void compute_parity(char **data, char* parity, int num_data, int size)
43 {
44 int i, j;
45
46 bzero(parity, size);
47
48 for (i=0; i < num_data; i++) {
49 for (j=0; j < size; j++) {
50 parity[j] ^= data[i][j];
51 }
52 }
53 }
54
55 int check_parity_of_sigs(char **sigs, int num_data, int size)
56 {
57 int i, j;
58 int ret = 0;
59 char *parity_sig = (char*)malloc(MAX_SIG_LEN);
60
61 bzero(parity_sig, MAX_SIG_LEN);
62
63 for (i=0; i < num_data; i++) {
64 for (j=0; j < MAX_SIG_LEN; j++) {
65 parity_sig[j] ^= sigs[i][j];
66 }
67 }
68
69 if (memcmp(parity_sig, sigs[num_data], MAX_SIG_LEN) != 0) {
70 fprintf(stderr, "Signatures do not match:\n");
71 for (i=0; i < MAX_SIG_LEN; i++) {
72 fprintf(stderr, "parity_sig[%d] = 0x%x, sigs[%d][%d] = 0x%x\n", i, parity_sig[i], num_data, i, sigs[num_data][i]);
73 }
74 ret = 1;
75 }
76
77 out:
78 free(parity_sig);
79
80 return ret;
81 }
82
83 static int basic_xor_test_8_32()
84 {
85 alg_sig_t* sig_handle = init_alg_sig(32, 8);
86 int blocksize = 65536;
87 int num_data = 12;
88 char **data;
89 char *parity;
90 char **sigs;
91 int i;
92 int ret = 0;
93
94 data = (char**)malloc(sizeof(char*) * num_data);
95 sigs = (char**)malloc(sizeof(char*) * (num_data + 1));
96 for (i=0; i < num_data; i++) {
97 data[i] = (char*)malloc(sizeof(char)*blocksize);
98 fill_random_buffer(data[i], blocksize);
99 sigs[i] = (char*)malloc(MAX_SIG_LEN);
100
101 }
102 parity = (char*)malloc(sizeof(char)*blocksize);
103 sigs[i] = (char*)malloc(MAX_SIG_LEN);
104
105 compute_parity(data, parity, num_data, blocksize);
106
107 for (i=0; i < num_data; i++) {
108 bzero(sigs[i], MAX_SIG_LEN);
109 compute_alg_sig(sig_handle, data[i], blocksize, sigs[i]);
110 }
111 bzero(sigs[i], MAX_SIG_LEN);
112 compute_alg_sig(sig_handle, parity, blocksize, sigs[i]);
113
114 ret = check_parity_of_sigs(sigs, num_data, blocksize);
115
116 for (i=0; i < num_data; i++) {
117 free(data[i]);
118 free(sigs[i]);
119 }
120
121 free(parity);
122 free(sigs[num_data]);
123 free(sigs);
124 free(data);
125 destroy_alg_sig(sig_handle);
126
127 return ret;
128 }
129
130 static int basic_xor_test_16_64()
131 {
132 alg_sig_t* sig_handle = init_alg_sig(64, 16);
133 int blocksize = 65536;
134 int num_data = 12;
135 char **data;
136 char *parity;
137 char **sigs;
138 int i;
139 int ret = 0;
140
141 data = (char**)malloc(sizeof(char*) * num_data);
142 sigs = (char**)malloc(sizeof(char*) * (num_data + 1));
143 for (i=0; i < num_data; i++) {
144 data[i] = (char*)malloc(sizeof(char)*blocksize);
145 fill_random_buffer(data[i], blocksize);
146 sigs[i] = (char*)malloc(MAX_SIG_LEN);
147 }
148 parity = (char*)malloc(sizeof(char)*blocksize);
149 sigs[i] = (char*)malloc(MAX_SIG_LEN);
150
151 compute_parity(data, parity, num_data, blocksize);
152
153 for (i=0; i < num_data; i++) {
154 bzero(sigs[i], MAX_SIG_LEN);
155 compute_alg_sig(sig_handle, data[i], blocksize, sigs[i]);
156 }
157 bzero(sigs[i], MAX_SIG_LEN);
158 compute_alg_sig(sig_handle, parity, blocksize, sigs[i]);
159
160 ret = check_parity_of_sigs(sigs, num_data, blocksize);
161
162 for (i=0; i < num_data; i++) {
163 free(data[i]);
164 free(sigs[i]);
165 }
166
167 free(parity);
168 free(sigs[num_data]);
169 free(sigs);
170 free(data);
171 destroy_alg_sig(sig_handle);
172
173 return ret;
174
175 }
176
177 static int basic_xor_test_16_32()
178 {
179 alg_sig_t* sig_handle = init_alg_sig(32, 16);
180 int blocksize = 65536;
181 int num_data = 12;
182 char **data;
183 char *parity;
184 char **sigs;
185 int i;
186 int ret = 0;
187
188 data = (char**)malloc(sizeof(char*) * num_data);
189 sigs = (char**)malloc(sizeof(char*) * (num_data + 1));
190 for (i=0; i < num_data; i++) {
191 data[i] = (char*)malloc(sizeof(char)*blocksize);
192 fill_random_buffer(data[i], blocksize);
193 sigs[i] = (char*)malloc(MAX_SIG_LEN);
194
195 }
196 parity = (char*)malloc(sizeof(char)*blocksize);
197 sigs[i] = (char*)malloc(MAX_SIG_LEN);
198
199 compute_parity(data, parity, num_data, blocksize);
200
201 for (i=0; i < num_data; i++) {
202 bzero(sigs[i], MAX_SIG_LEN);
203 compute_alg_sig(sig_handle, data[i], blocksize, sigs[i]);
204 }
205 bzero(sigs[i], MAX_SIG_LEN);
206 compute_alg_sig(sig_handle, parity, blocksize, sigs[i]);
207
208 ret = check_parity_of_sigs(sigs, num_data, blocksize);
209
210 for (i=0; i < num_data; i++) {
211 free(data[i]);
212 free(sigs[i]);
213 }
214
215 free(parity);
216 free(sigs[num_data]);
217 free(sigs);
218 free(data);
219 destroy_alg_sig(sig_handle);
220
221 return ret;
222 }
223
224 int main(int argc, char**argv)
225 {
226 int ret;
227 int num_failed = 0;
228
229 srand(time(NULL));
230
231 ret = basic_xor_test_16_32();
232 if (ret) {
233 fprintf(stderr, "basic_xor_test_16_32 has failed!\n");
234 num_failed++;
235 }
236 ret = basic_xor_test_16_64();
237 if (ret) {
238 fprintf(stderr, "basic_xor_test_16_64 has failed!\n");
239 num_failed++;
240 }
241 ret = basic_xor_test_8_32();
242 if (ret) {
243 fprintf(stderr, "basic_xor_test_8_32 has failed!\n");
244 num_failed++;
245 }
246
247 if (num_failed == 0) {
248 fprintf(stderr, "Tests pass!!!\n");
249 }
250 return num_failed;
251 }
252
+0
-415
tests/test_xor_hd_code.c less more
0 /* * Copyright (c) 2013, Kevin Greenan (kmgreen2@gmail.com)
1 * All rights reserved.
2 *
3 * Redistribution and use in source and binary forms, with or without
4 * modification, are permitted provided that the following conditions are met:
5 *
6 * Redistributions of source code must retain the above copyright notice, this
7 * list of conditions and the following disclaimer.
8 *
9 * Redistributions in binary form must reproduce the above copyright notice, this
10 * list of conditions and the following disclaimer in the documentation and/or
11 * other materials provided with the distribution. THIS SOFTWARE IS PROVIDED BY
12 * THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED
13 * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
14 * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
15 * EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
16 * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
17 * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
18 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
19 * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
20 * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
21 * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
22 */
23
24 #include <stdio.h>
25 #include <stdlib.h>
26 #include <string.h>
27 #include <time.h>
28 #include <xor_code.h>
29 #include <test_xor_hd_code.h>
30
31 void fill_buffer(unsigned char *buf, int size, int seed)
32 {
33 int i;
34
35 buf[0] = seed;
36
37 for (i=1; i < size; i++) {
38 buf[i] = ((buf[i-1] + i) % 256);
39 }
40 }
41
42 int check_buffer(unsigned char *buf, int size, int seed)
43 {
44 int i;
45
46 if (buf[0] != seed) {
47 fprintf(stderr, "Seed does not match index 0: %u\n", buf[0]);
48 return -1;
49 }
50
51 for (i=1; i < size; i++) {
52 if (buf[i] != ((buf[i-1] + i) % 256)) {
53 fprintf(stderr, "Buffer does not match index %d: %u\n", i, (buf[i] & 0xff));
54 return -1;
55 }
56 }
57
58 return 0;
59 }
60
61 int test_hd_code(xor_code_t *code_desc, int num_failure_combs, int failure_combs[][4])
62 {
63 int i, j;
64 int num_iter = 1000;
65 int blocksize = 32768;
66 int missing_idxs[4] = { -1 };
67 int ret = 0;
68 char **data, **parity;
69 clock_t start_time, end_time;
70 int *fragments_needed;
71
72 srand(time(NULL));
73
74 data = (char**)malloc(code_desc->k * sizeof(char*));
75 parity = (char**)malloc(code_desc->m * sizeof(char*));
76 fragments_needed = (int*)malloc(code_desc->k*code_desc->m*sizeof(int));
77 if (!fragments_needed) {
78 fprintf(stderr, "Could not allocate memory for fragments %d\n", i);
79 exit(2);
80 }
81
82 bzero(fragments_needed, code_desc->k*code_desc->m*sizeof(int));
83
84 for (i=0; i < code_desc->k; i++) {
85 data[i] = aligned_malloc(blocksize, 16);
86 fill_buffer(data[i], blocksize, i);
87 if (!data[i]) {
88 fprintf(stderr, "Could not allocate memory for data %d\n", i);
89 exit(2);
90 }
91 }
92
93 for (i=0; i < code_desc->m; i++) {
94 parity[i] = aligned_malloc(blocksize, 16);
95 memset(parity[i], 0, blocksize);
96 if (!parity[i]) {
97 fprintf(stderr, "Could not allocate memory for parity %d\n", i);
98 exit(2);
99 }
100 }
101
102 start_time = clock();
103 for (i=0; i < num_iter-1; i++) {
104 code_desc->encode(code_desc, data, parity, blocksize);
105 }
106 end_time = clock();
107
108 fprintf(stderr, "Encode: %.2f MB/s\n", ((double)(num_iter * blocksize * code_desc->k) / 1000 / 1000 ) / ((double)(end_time-start_time) / CLOCKS_PER_SEC));
109
110 for (i=0; i < code_desc->m; i++) {
111 memset(parity[i], 0, blocksize);
112 }
113
114 code_desc->encode(code_desc, data, parity, blocksize);
115
116 for (i=0; i < num_failure_combs; i++) {
117 int missing_idx_0 = failure_combs[i][0];
118 int missing_idx_1 = failure_combs[i][1];
119 int missing_idx_2 = failure_combs[i][2];
120
121 missing_idxs[0] = missing_idx_0;
122 missing_idxs[1] = missing_idx_1;
123 missing_idxs[2] = missing_idx_2;
124 missing_idxs[3] = -1;
125
126 if (missing_idxs[0] > -1) {
127 if (missing_idxs[0] < code_desc->k) {
128 memset(data[missing_idxs[0]], 0, blocksize);
129 } else {
130 memset(parity[missing_idxs[0] - code_desc->k], 0, blocksize);
131 }
132 }
133 if (missing_idxs[1] > -1) {
134 if (missing_idxs[1] < code_desc->k) {
135 memset(data[missing_idxs[1]], 0, blocksize);
136 } else {
137 memset(parity[missing_idxs[1] - code_desc->k], 0, blocksize);
138 }
139 }
140 if (missing_idxs[2] > -1) {
141 if (missing_idxs[2] < code_desc->k) {
142 memset(data[missing_idxs[2]], 0, blocksize);
143 } else {
144 memset(parity[missing_idxs[2] - code_desc->k], 0, blocksize);
145 }
146 }
147
148 /*
149 * Spot check to ensure missing elements are not included in
150 * list of fragments needed and that decode is 'doable'
151 */
152 ret = code_desc->fragments_needed(code_desc, missing_idxs, fragments_needed);
153
154 if (ret < 0) {
155 fprintf(stderr, "xor_hd_fragments_needed thinks reconstruction not possible, when it is!\n");
156 exit(2);
157 }
158
159 j = 0;
160 while (fragments_needed[j] > -1) {
161 if (fragments_needed[j] == missing_idxs[0] ||
162 fragments_needed[j] == missing_idxs[1] ||
163 fragments_needed[j] == missing_idxs[2]) {
164 fprintf(stderr, "fragments_needed[%d]=%d in missing index list: (%d %d %d)!\n", j, fragments_needed[j], missing_idxs[0], missing_idxs[1], missing_idxs[2]);
165 exit(2);
166 }
167 j++;
168 }
169
170 missing_idxs[0] = missing_idx_0;
171 missing_idxs[1] = missing_idx_1;
172 missing_idxs[2] = missing_idx_2;
173 missing_idxs[3] = -1;
174
175 code_desc->decode(code_desc, data, parity, missing_idxs, blocksize, 1);
176
177 if (missing_idxs[0] > -1 && missing_idxs[0] < code_desc->k && check_buffer(data[missing_idx_0], blocksize, missing_idx_0) < 0) {
178 fprintf(stderr, "Decode did not work: %d (%d %d %d)!\n", missing_idxs[0], missing_idxs[0], missing_idxs[1], missing_idxs[2]);
179 exit(2);
180 }
181 if (missing_idxs[1] > -1 && missing_idxs[1] < code_desc->k && check_buffer(data[missing_idx_1], blocksize, missing_idx_1) < 0) {
182 fprintf(stderr, "Decode did not work: %d (%d %d %d)!\n", missing_idxs[1], missing_idxs[0], missing_idxs[1], missing_idxs[2]);
183 exit(2);
184 }
185 if (missing_idxs[2] > -1 && missing_idxs[2] < code_desc->k && check_buffer(data[missing_idx_2], blocksize, missing_idx_2) < 0) {
186 fprintf(stderr, "Decode did not work: %d (%d %d %d)!\n", missing_idxs[2], missing_idxs[0], missing_idxs[1], missing_idxs[2]);
187 exit(2);
188 }
189 }
190
191 start_time = clock();
192 for (i=0; i < num_iter; i++) {
193 int j;
194
195 missing_idxs[0] = rand() % (code_desc->k + code_desc->m);
196 for (j=1; j < code_desc->hd-1;j++) {
197 missing_idxs[j] = (missing_idxs[j-1] + 1) % (code_desc->k + code_desc->m);
198 }
199 missing_idxs[code_desc->hd-1] = -1;
200
201 if (missing_idxs[0] > -1 && missing_idxs[0] < code_desc->k) {
202 memset(data[missing_idxs[0]], 0, blocksize);
203 }
204 if (missing_idxs[1] > -1 && missing_idxs[1] < code_desc->k) {
205 memset(data[missing_idxs[1]], 0, blocksize);
206 }
207 if (missing_idxs[2] > -1 && missing_idxs[2] < code_desc->k) {
208 memset(data[missing_idxs[2]], 0, blocksize);
209 }
210
211 code_desc->decode(code_desc, data, parity, missing_idxs, blocksize, 1);
212 }
213 end_time = clock();
214
215 fprintf(stderr, "Decode: %.2f MB/s\n", ((double)(num_iter * blocksize * code_desc->k) / 1000 / 1000 ) / ((double)(end_time-start_time) / CLOCKS_PER_SEC));
216 free(fragments_needed);
217 for (i = 0; i < code_desc->k; i++) {
218 aligned_free(data[i]);
219 }
220 free(data);
221 for (i = 0; i < code_desc->m; i++) {
222 aligned_free(parity[i]);
223 }
224 free(parity);
225
226 return 0;
227 }
228
229 int run_test(int k, int m, int hd)
230 {
231 int ret = -1;
232 xor_code_t * code_desc = init_xor_hd_code(k, m, hd);
233
234 fprintf(stderr, "Running (%d, %d, %d):\n", k, m, hd);
235
236 switch(k+m) {
237 case 10:
238 if (hd == 3) {
239 ret = test_hd_code(code_desc, NUM_10_3_COMBS, failure_combs_10_3);
240 } else {
241 ret = test_hd_code(code_desc, NUM_10_4_COMBS, failure_combs_10_4);
242 }
243 break;
244 case 11:
245 if (hd == 3) {
246 ret = test_hd_code(code_desc, NUM_11_3_COMBS, failure_combs_11_3);
247 } else {
248 ret = test_hd_code(code_desc, NUM_11_4_COMBS, failure_combs_11_4);
249 }
250 break;
251 case 12:
252 if (hd == 3) {
253 ret = test_hd_code(code_desc, NUM_12_3_COMBS, failure_combs_12_3);
254 } else {
255 ret = test_hd_code(code_desc, NUM_12_4_COMBS, failure_combs_12_4);
256 }
257 break;
258 case 13:
259 if (hd == 3) {
260 ret = test_hd_code(code_desc, NUM_13_3_COMBS, failure_combs_13_3);
261 } else {
262 ret = test_hd_code(code_desc, NUM_13_4_COMBS, failure_combs_13_4);
263 }
264 break;
265 case 14:
266 if (hd == 3) {
267 ret = test_hd_code(code_desc, NUM_14_3_COMBS, failure_combs_14_3);
268 } else {
269 ret = test_hd_code(code_desc, NUM_14_4_COMBS, failure_combs_14_4);
270 }
271 break;
272 case 15:
273 if (hd == 3) {
274 ret = test_hd_code(code_desc, NUM_15_3_COMBS, failure_combs_15_3);
275 } else {
276 ret = test_hd_code(code_desc, NUM_15_4_COMBS, failure_combs_15_4);
277 }
278 break;
279 case 16:
280 if (hd == 3) {
281 ret = test_hd_code(code_desc, NUM_16_3_COMBS, failure_combs_16_3);
282 } else {
283 ret = test_hd_code(code_desc, NUM_16_4_COMBS, failure_combs_16_4);
284 }
285 break;
286 case 17:
287 if (hd == 3) {
288 ret = test_hd_code(code_desc, NUM_17_3_COMBS, failure_combs_17_3);
289 } else {
290 ret = test_hd_code(code_desc, NUM_17_4_COMBS, failure_combs_17_4);
291 }
292 break;
293 case 18:
294 if (hd == 3) {
295 ret = test_hd_code(code_desc, NUM_18_3_COMBS, failure_combs_18_3);
296 } else {
297 ret = test_hd_code(code_desc, NUM_18_4_COMBS, failure_combs_18_4);
298 }
299 break;
300 case 19:
301 if (hd == 3) {
302 ret = test_hd_code(code_desc, NUM_19_3_COMBS, failure_combs_19_3);
303 } else {
304 ret = test_hd_code(code_desc, NUM_19_4_COMBS, failure_combs_19_4);
305 }
306 break;
307 case 20:
308 if (hd == 3) {
309 ret = test_hd_code(code_desc, NUM_20_3_COMBS, failure_combs_20_3);
310 } else {
311 ret = test_hd_code(code_desc, NUM_20_4_COMBS, failure_combs_20_4);
312 }
313 break;
314 case 21:
315 if (hd == 3) {
316 ret = test_hd_code(code_desc, NUM_21_3_COMBS, failure_combs_21_3);
317 } else {
318 ret = test_hd_code(code_desc, NUM_21_4_COMBS, failure_combs_21_4);
319 }
320 break;
321 case 22:
322 ret = test_hd_code(code_desc, NUM_22_4_COMBS, failure_combs_22_4);
323 break;
324 case 23:
325 ret = test_hd_code(code_desc, NUM_23_4_COMBS, failure_combs_23_4);
326 break;
327 case 24:
328 ret = test_hd_code(code_desc, NUM_24_4_COMBS, failure_combs_24_4);
329 break;
330 case 25:
331 ret = test_hd_code(code_desc, NUM_25_4_COMBS, failure_combs_25_4);
332 break;
333 case 26:
334 ret = test_hd_code(code_desc, NUM_26_4_COMBS, failure_combs_26_4);
335 break;
336 default:
337 ret = -1;
338 }
339 free(code_desc);
340 return ret;
341 }
342
343 /**
344 * Runs a series aligned_malloc/aligned_free calls with a set of size and
345 * alignment values. For each alignment value, perform a series of boundry
346 * value anaylsis alloctions for every power-of-two between 2 and 32768.
347 * Then perform an aligned_free for each allocation.
348 *
349 * @return 0 is test behaves as expected, else -1.
350 *
351 */
352 int run_aligned_malloc_test() {
353 int align = 8;
354 size_t amount;
355 int modifier;
356
357 for (align = 8; align <= 128; align *= 2) {
358 size_t amount = 2;
359 for (amount = 2; amount <= 32768; amount *= 2) {
360 int modifier;
361 for (modifier = -1; modifier <= 1; modifier++) {
362 size_t actual_amount = amount + modifier;
363 void *tmem = aligned_malloc(actual_amount,align);
364 if (!tmem) {
365 return -1;
366 }
367 if (memset(tmem,0,actual_amount) != tmem) {
368 return -1;
369 }
370 aligned_free(tmem);
371 }
372 }
373 }
374 return 0;
375 }
376
377 int main()
378 {
379 int ret = 0;
380 int i;
381 ret = run_aligned_malloc_test();
382 if (ret != 0) {
383 return ret;
384 }
385
386 for (i=6; i < 16; i++) {
387 ret = run_test(i, 6, 3);
388 if (ret != 0) {
389 return ret;
390 }
391 }
392
393 for (i=5; i < 11; i++) {
394 ret = run_test(i, 5, 3);
395 if (ret != 0) {
396 return ret;
397 }
398 }
399
400 for (i=6; i < 21; i++) {
401 ret = run_test(i, 6, 4);
402 if (ret != 0) {
403 return ret;
404 }
405 }
406 for (i=5; i < 11; i++) {
407 ret = run_test(i, 5, 4);
408 if (ret != 0) {
409 return ret;
410 }
411 }
412 exit(0);
413 }
414
+0
-92
tests/test_xor_hd_code.h less more
0 /* * Copyright (c) 2013, Kevin Greenan (kmgreen2@gmail.com)
1 * All rights reserved.
2 *
3 * Redistribution and use in source and binary forms, with or without
4 * modification, are permitted provided that the following conditions are met:
5 *
6 * Redistributions of source code must retain the above copyright notice, this
7 * list of conditions and the following disclaimer.
8 *
9 * Redistributions in binary form must reproduce the above copyright notice, this
10 * list of conditions and the following disclaimer in the documentation and/or
11 * other materials provided with the distribution. THIS SOFTWARE IS PROVIDED BY
12 * THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED
13 * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
14 * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
15 * EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
16 * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
17 * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
18 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
19 * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
20 * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
21 * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
22 */
23
24 #define NUM_10_3_COMBS 55
25 int failure_combs_10_3[NUM_10_3_COMBS][4] = {{0, -1, -1, -1}, {1, -1, -1, -1}, {2, -1, -1, -1}, {3, -1, -1, -1}, {4, -1, -1, -1}, {5, -1, -1, -1}, {6, -1, -1, -1}, {7, -1, -1, -1}, {8, -1, -1, -1}, {9, -1, -1, -1}, {0, 1, -1, -1}, {0, 2, -1, -1}, {0, 3, -1, -1}, {0, 4, -1, -1}, {0, 5, -1, -1}, {0, 6, -1, -1}, {0, 7, -1, -1}, {0, 8, -1, -1}, {0, 9, -1, -1}, {1, 2, -1, -1}, {1, 3, -1, -1}, {1, 4, -1, -1}, {1, 5, -1, -1}, {1, 6, -1, -1}, {1, 7, -1, -1}, {1, 8, -1, -1}, {1, 9, -1, -1}, {2, 3, -1, -1}, {2, 4, -1, -1}, {2, 5, -1, -1}, {2, 6, -1, -1}, {2, 7, -1, -1}, {2, 8, -1, -1}, {2, 9, -1, -1}, {3, 4, -1, -1}, {3, 5, -1, -1}, {3, 6, -1, -1}, {3, 7, -1, -1}, {3, 8, -1, -1}, {3, 9, -1, -1}, {4, 5, -1, -1}, {4, 6, -1, -1}, {4, 7, -1, -1}, {4, 8, -1, -1}, {4, 9, -1, -1}, {5, 6, -1, -1}, {5, 7, -1, -1}, {5, 8, -1, -1}, {5, 9, -1, -1}, {6, 7, -1, -1}, {6, 8, -1, -1}, {6, 9, -1, -1}, {7, 8, -1, -1}, {7, 9, -1, -1}, {8, 9, -1, -1}} ;
26 #define NUM_10_4_COMBS 175
27 int failure_combs_10_4[NUM_10_4_COMBS][4] = {{0, -1, -1, -1}, {1, -1, -1, -1}, {2, -1, -1, -1}, {3, -1, -1, -1}, {4, -1, -1, -1}, {5, -1, -1, -1}, {6, -1, -1, -1}, {7, -1, -1, -1}, {8, -1, -1, -1}, {9, -1, -1, -1}, {0, 1, -1, -1}, {0, 2, -1, -1}, {0, 3, -1, -1}, {0, 4, -1, -1}, {0, 5, -1, -1}, {0, 6, -1, -1}, {0, 7, -1, -1}, {0, 8, -1, -1}, {0, 9, -1, -1}, {1, 2, -1, -1}, {1, 3, -1, -1}, {1, 4, -1, -1}, {1, 5, -1, -1}, {1, 6, -1, -1}, {1, 7, -1, -1}, {1, 8, -1, -1}, {1, 9, -1, -1}, {2, 3, -1, -1}, {2, 4, -1, -1}, {2, 5, -1, -1}, {2, 6, -1, -1}, {2, 7, -1, -1}, {2, 8, -1, -1}, {2, 9, -1, -1}, {3, 4, -1, -1}, {3, 5, -1, -1}, {3, 6, -1, -1}, {3, 7, -1, -1}, {3, 8, -1, -1}, {3, 9, -1, -1}, {4, 5, -1, -1}, {4, 6, -1, -1}, {4, 7, -1, -1}, {4, 8, -1, -1}, {4, 9, -1, -1}, {5, 6, -1, -1}, {5, 7, -1, -1}, {5, 8, -1, -1}, {5, 9, -1, -1}, {6, 7, -1, -1}, {6, 8, -1, -1}, {6, 9, -1, -1}, {7, 8, -1, -1}, {7, 9, -1, -1}, {8, 9, -1, -1}, {0, 1, 2, -1}, {0, 1, 3, -1}, {0, 1, 4, -1}, {0, 1, 5, -1}, {0, 1, 6, -1}, {0, 1, 7, -1}, {0, 1, 8, -1}, {0, 1, 9, -1}, {0, 2, 3, -1}, {0, 2, 4, -1}, {0, 2, 5, -1}, {0, 2, 6, -1}, {0, 2, 7, -1}, {0, 2, 8, -1}, {0, 2, 9, -1}, {0, 3, 4, -1}, {0, 3, 5, -1}, {0, 3, 6, -1}, {0, 3, 7, -1}, {0, 3, 8, -1}, {0, 3, 9, -1}, {0, 4, 5, -1}, {0, 4, 6, -1}, {0, 4, 7, -1}, {0, 4, 8, -1}, {0, 4, 9, -1}, {0, 5, 6, -1}, {0, 5, 7, -1}, {0, 5, 8, -1}, {0, 5, 9, -1}, {0, 6, 7, -1}, {0, 6, 8, -1}, {0, 6, 9, -1}, {0, 7, 8, -1}, {0, 7, 9, -1}, {0, 8, 9, -1}, {1, 2, 3, -1}, {1, 2, 4, -1}, {1, 2, 5, -1}, {1, 2, 6, -1}, {1, 2, 7, -1}, {1, 2, 8, -1}, {1, 2, 9, -1}, {1, 3, 4, -1}, {1, 3, 5, -1}, {1, 3, 6, -1}, {1, 3, 7, -1}, {1, 3, 8, -1}, {1, 3, 9, -1}, {1, 4, 5, -1}, {1, 4, 6, -1}, {1, 4, 7, -1}, {1, 4, 8, -1}, {1, 4, 9, -1}, {1, 5, 6, -1}, {1, 5, 7, -1}, {1, 5, 8, -1}, {1, 5, 9, -1}, {1, 6, 7, -1}, {1, 6, 8, -1}, {1, 6, 9, -1}, {1, 7, 8, -1}, {1, 7, 9, -1}, {1, 8, 9, -1}, {2, 3, 4, -1}, {2, 3, 5, -1}, {2, 3, 6, -1}, {2, 3, 7, -1}, {2, 3, 8, -1}, {2, 3, 9, -1}, {2, 4, 5, -1}, {2, 4, 6, -1}, {2, 4, 7, -1}, {2, 4, 8, -1}, {2, 4, 9, -1}, {2, 5, 6, -1}, {2, 5, 7, -1}, {2, 5, 8, -1}, {2, 5, 9, -1}, {2, 6, 7, -1}, {2, 6, 8, -1}, {2, 6, 9, -1}, {2, 7, 8, -1}, {2, 7, 9, -1}, {2, 8, 9, -1}, {3, 4, 5, -1}, {3, 4, 6, -1}, {3, 4, 7, -1}, {3, 4, 8, -1}, {3, 4, 9, -1}, {3, 5, 6, -1}, {3, 5, 7, -1}, {3, 5, 8, -1}, {3, 5, 9, -1}, {3, 6, 7, -1}, {3, 6, 8, -1}, {3, 6, 9, -1}, {3, 7, 8, -1}, {3, 7, 9, -1}, {3, 8, 9, -1}, {4, 5, 6, -1}, {4, 5, 7, -1}, {4, 5, 8, -1}, {4, 5, 9, -1}, {4, 6, 7, -1}, {4, 6, 8, -1}, {4, 6, 9, -1}, {4, 7, 8, -1}, {4, 7, 9, -1}, {4, 8, 9, -1}, {5, 6, 7, -1}, {5, 6, 8, -1}, {5, 6, 9, -1}, {5, 7, 8, -1}, {5, 7, 9, -1}, {5, 8, 9, -1}, {6, 7, 8, -1}, {6, 7, 9, -1}, {6, 8, 9, -1}, {7, 8, 9, -1}} ;
28 #define NUM_11_3_COMBS 66
29 int failure_combs_11_3[NUM_11_3_COMBS][4] = {{0, -1, -1, -1}, {1, -1, -1, -1}, {2, -1, -1, -1}, {3, -1, -1, -1}, {4, -1, -1, -1}, {5, -1, -1, -1}, {6, -1, -1, -1}, {7, -1, -1, -1}, {8, -1, -1, -1}, {9, -1, -1, -1}, {10, -1, -1, -1}, {0, 1, -1, -1}, {0, 2, -1, -1}, {0, 3, -1, -1}, {0, 4, -1, -1}, {0, 5, -1, -1}, {0, 6, -1, -1}, {0, 7, -1, -1}, {0, 8, -1, -1}, {0, 9, -1, -1}, {0, 10, -1, -1}, {1, 2, -1, -1}, {1, 3, -1, -1}, {1, 4, -1, -1}, {1, 5, -1, -1}, {1, 6, -1, -1}, {1, 7, -1, -1}, {1, 8, -1, -1}, {1, 9, -1, -1}, {1, 10, -1, -1}, {2, 3, -1, -1}, {2, 4, -1, -1}, {2, 5, -1, -1}, {2, 6, -1, -1}, {2, 7, -1, -1}, {2, 8, -1, -1}, {2, 9, -1, -1}, {2, 10, -1, -1}, {3, 4, -1, -1}, {3, 5, -1, -1}, {3, 6, -1, -1}, {3, 7, -1, -1}, {3, 8, -1, -1}, {3, 9, -1, -1}, {3, 10, -1, -1}, {4, 5, -1, -1}, {4, 6, -1, -1}, {4, 7, -1, -1}, {4, 8, -1, -1}, {4, 9, -1, -1}, {4, 10, -1, -1}, {5, 6, -1, -1}, {5, 7, -1, -1}, {5, 8, -1, -1}, {5, 9, -1, -1}, {5, 10, -1, -1}, {6, 7, -1, -1}, {6, 8, -1, -1}, {6, 9, -1, -1}, {6, 10, -1, -1}, {7, 8, -1, -1}, {7, 9, -1, -1}, {7, 10, -1, -1}, {8, 9, -1, -1}, {8, 10, -1, -1}, {9, 10, -1, -1}} ;
30 #define NUM_11_4_COMBS 231
31 int failure_combs_11_4[NUM_11_4_COMBS][4] = {{0, -1, -1, -1}, {1, -1, -1, -1}, {2, -1, -1, -1}, {3, -1, -1, -1}, {4, -1, -1, -1}, {5, -1, -1, -1}, {6, -1, -1, -1}, {7, -1, -1, -1}, {8, -1, -1, -1}, {9, -1, -1, -1}, {10, -1, -1, -1}, {0, 1, -1, -1}, {0, 2, -1, -1}, {0, 3, -1, -1}, {0, 4, -1, -1}, {0, 5, -1, -1}, {0, 6, -1, -1}, {0, 7, -1, -1}, {0, 8, -1, -1}, {0, 9, -1, -1}, {0, 10, -1, -1}, {1, 2, -1, -1}, {1, 3, -1, -1}, {1, 4, -1, -1}, {1, 5, -1, -1}, {1, 6, -1, -1}, {1, 7, -1, -1}, {1, 8, -1, -1}, {1, 9, -1, -1}, {1, 10, -1, -1}, {2, 3, -1, -1}, {2, 4, -1, -1}, {2, 5, -1, -1}, {2, 6, -1, -1}, {2, 7, -1, -1}, {2, 8, -1, -1}, {2, 9, -1, -1}, {2, 10, -1, -1}, {3, 4, -1, -1}, {3, 5, -1, -1}, {3, 6, -1, -1}, {3, 7, -1, -1}, {3, 8, -1, -1}, {3, 9, -1, -1}, {3, 10, -1, -1}, {4, 5, -1, -1}, {4, 6, -1, -1}, {4, 7, -1, -1}, {4, 8, -1, -1}, {4, 9, -1, -1}, {4, 10, -1, -1}, {5, 6, -1, -1}, {5, 7, -1, -1}, {5, 8, -1, -1}, {5, 9, -1, -1}, {5, 10, -1, -1}, {6, 7, -1, -1}, {6, 8, -1, -1}, {6, 9, -1, -1}, {6, 10, -1, -1}, {7, 8, -1, -1}, {7, 9, -1, -1}, {7, 10, -1, -1}, {8, 9, -1, -1}, {8, 10, -1, -1}, {9, 10, -1, -1}, {0, 1, 2, -1}, {0, 1, 3, -1}, {0, 1, 4, -1}, {0, 1, 5, -1}, {0, 1, 6, -1}, {0, 1, 7, -1}, {0, 1, 8, -1}, {0, 1, 9, -1}, {0, 1, 10, -1}, {0, 2, 3, -1}, {0, 2, 4, -1}, {0, 2, 5, -1}, {0, 2, 6, -1}, {0, 2, 7, -1}, {0, 2, 8, -1}, {0, 2, 9, -1}, {0, 2, 10, -1}, {0, 3, 4, -1}, {0, 3, 5, -1}, {0, 3, 6, -1}, {0, 3, 7, -1}, {0, 3, 8, -1}, {0, 3, 9, -1}, {0, 3, 10, -1}, {0, 4, 5, -1}, {0, 4, 6, -1}, {0, 4, 7, -1}, {0, 4, 8, -1}, {0, 4, 9, -1}, {0, 4, 10, -1}, {0, 5, 6, -1}, {0, 5, 7, -1}, {0, 5, 8, -1}, {0, 5, 9, -1}, {0, 5, 10, -1}, {0, 6, 7, -1}, {0, 6, 8, -1}, {0, 6, 9, -1}, {0, 6, 10, -1}, {0, 7, 8, -1}, {0, 7, 9, -1}, {0, 7, 10, -1}, {0, 8, 9, -1}, {0, 8, 10, -1}, {0, 9, 10, -1}, {1, 2, 3, -1}, {1, 2, 4, -1}, {1, 2, 5, -1}, {1, 2, 6, -1}, {1, 2, 7, -1}, {1, 2, 8, -1}, {1, 2, 9, -1}, {1, 2, 10, -1}, {1, 3, 4, -1}, {1, 3, 5, -1}, {1, 3, 6, -1}, {1, 3, 7, -1}, {1, 3, 8, -1}, {1, 3, 9, -1}, {1, 3, 10, -1}, {1, 4, 5, -1}, {1, 4, 6, -1}, {1, 4, 7, -1}, {1, 4, 8, -1}, {1, 4, 9, -1}, {1, 4, 10, -1}, {1, 5, 6, -1}, {1, 5, 7, -1}, {1, 5, 8, -1}, {1, 5, 9, -1}, {1, 5, 10, -1}, {1, 6, 7, -1}, {1, 6, 8, -1}, {1, 6, 9, -1}, {1, 6, 10, -1}, {1, 7, 8, -1}, {1, 7, 9, -1}, {1, 7, 10, -1}, {1, 8, 9, -1}, {1, 8, 10, -1}, {1, 9, 10, -1}, {2, 3, 4, -1}, {2, 3, 5, -1}, {2, 3, 6, -1}, {2, 3, 7, -1}, {2, 3, 8, -1}, {2, 3, 9, -1}, {2, 3, 10, -1}, {2, 4, 5, -1}, {2, 4, 6, -1}, {2, 4, 7, -1}, {2, 4, 8, -1}, {2, 4, 9, -1}, {2, 4, 10, -1}, {2, 5, 6, -1}, {2, 5, 7, -1}, {2, 5, 8, -1}, {2, 5, 9, -1}, {2, 5, 10, -1}, {2, 6, 7, -1}, {2, 6, 8, -1}, {2, 6, 9, -1}, {2, 6, 10, -1}, {2, 7, 8, -1}, {2, 7, 9, -1}, {2, 7, 10, -1}, {2, 8, 9, -1}, {2, 8, 10, -1}, {2, 9, 10, -1}, {3, 4, 5, -1}, {3, 4, 6, -1}, {3, 4, 7, -1}, {3, 4, 8, -1}, {3, 4, 9, -1}, {3, 4, 10, -1}, {3, 5, 6, -1}, {3, 5, 7, -1}, {3, 5, 8, -1}, {3, 5, 9, -1}, {3, 5, 10, -1}, {3, 6, 7, -1}, {3, 6, 8, -1}, {3, 6, 9, -1}, {3, 6, 10, -1}, {3, 7, 8, -1}, {3, 7, 9, -1}, {3, 7, 10, -1}, {3, 8, 9, -1}, {3, 8, 10, -1}, {3, 9, 10, -1}, {4, 5, 6, -1}, {4, 5, 7, -1}, {4, 5, 8, -1}, {4, 5, 9, -1}, {4, 5, 10, -1}, {4, 6, 7, -1}, {4, 6, 8, -1}, {4, 6, 9, -1}, {4, 6, 10, -1}, {4, 7, 8, -1}, {4, 7, 9, -1}, {4, 7, 10, -1}, {4, 8, 9, -1}, {4, 8, 10, -1}, {4, 9, 10, -1}, {5, 6, 7, -1}, {5, 6, 8, -1}, {5, 6, 9, -1}, {5, 6, 10, -1}, {5, 7, 8, -1}, {5, 7, 9, -1}, {5, 7, 10, -1}, {5, 8, 9, -1}, {5, 8, 10, -1}, {5, 9, 10, -1}, {6, 7, 8, -1}, {6, 7, 9, -1}, {6, 7, 10, -1}, {6, 8, 9, -1}, {6, 8, 10, -1}, {6, 9, 10, -1}, {7, 8, 9, -1}, {7, 8, 10, -1}, {7, 9, 10, -1}, {8, 9, 10, -1}} ;
32 #define NUM_12_3_COMBS 78
33 int failure_combs_12_3[NUM_12_3_COMBS][4] = {{0, -1, -1, -1}, {1, -1, -1, -1}, {2, -1, -1, -1}, {3, -1, -1, -1}, {4, -1, -1, -1}, {5, -1, -1, -1}, {6, -1, -1, -1}, {7, -1, -1, -1}, {8, -1, -1, -1}, {9, -1, -1, -1}, {10, -1, -1, -1}, {11, -1, -1, -1}, {0, 1, -1, -1}, {0, 2, -1, -1}, {0, 3, -1, -1}, {0, 4, -1, -1}, {0, 5, -1, -1}, {0, 6, -1, -1}, {0, 7, -1, -1}, {0, 8, -1, -1}, {0, 9, -1, -1}, {0, 10, -1, -1}, {0, 11, -1, -1}, {1, 2, -1, -1}, {1, 3, -1, -1}, {1, 4, -1, -1}, {1, 5, -1, -1}, {1, 6, -1, -1}, {1, 7, -1, -1}, {1, 8, -1, -1}, {1, 9, -1, -1}, {1, 10, -1, -1}, {1, 11, -1, -1}, {2, 3, -1, -1}, {2, 4, -1, -1}, {2, 5, -1, -1}, {2, 6, -1, -1}, {2, 7, -1, -1}, {2, 8, -1, -1}, {2, 9, -1, -1}, {2, 10, -1, -1}, {2, 11, -1, -1}, {3, 4, -1, -1}, {3, 5, -1, -1}, {3, 6, -1, -1}, {3, 7, -1, -1}, {3, 8, -1, -1}, {3, 9, -1, -1}, {3, 10, -1, -1}, {3, 11, -1, -1}, {4, 5, -1, -1}, {4, 6, -1, -1}, {4, 7, -1, -1}, {4, 8, -1, -1}, {4, 9, -1, -1}, {4, 10, -1, -1}, {4, 11, -1, -1}, {5, 6, -1, -1}, {5, 7, -1, -1}, {5, 8, -1, -1}, {5, 9, -1, -1}, {5, 10, -1, -1}, {5, 11, -1, -1}, {6, 7, -1, -1}, {6, 8, -1, -1}, {6, 9, -1, -1}, {6, 10, -1, -1}, {6, 11, -1, -1}, {7, 8, -1, -1}, {7, 9, -1, -1}, {7, 10, -1, -1}, {7, 11, -1, -1}, {8, 9, -1, -1}, {8, 10, -1, -1}, {8, 11, -1, -1}, {9, 10, -1, -1}, {9, 11, -1, -1}, {10, 11, -1, -1}} ;
34 #define NUM_12_4_COMBS 298
35 int failure_combs_12_4[NUM_12_4_COMBS][4] = {{0, -1, -1, -1}, {1, -1, -1, -1}, {2, -1, -1, -1}, {3, -1, -1, -1}, {4, -1, -1, -1}, {5, -1, -1, -1}, {6, -1, -1, -1}, {7, -1, -1, -1}, {8, -1, -1, -1}, {9, -1, -1, -1}, {10, -1, -1, -1}, {11, -1, -1, -1}, {0, 1, -1, -1}, {0, 2, -1, -1}, {0, 3, -1, -1}, {0, 4, -1, -1}, {0, 5, -1, -1}, {0, 6, -1, -1}, {0, 7, -1, -1}, {0, 8, -1, -1}, {0, 9, -1, -1}, {0, 10, -1, -1}, {0, 11, -1, -1}, {1, 2, -1, -1}, {1, 3, -1, -1}, {1, 4, -1, -1}, {1, 5, -1, -1}, {1, 6, -1, -1}, {1, 7, -1, -1}, {1, 8, -1, -1}, {1, 9, -1, -1}, {1, 10, -1, -1}, {1, 11, -1, -1}, {2, 3, -1, -1}, {2, 4, -1, -1}, {2, 5, -1, -1}, {2, 6, -1, -1}, {2, 7, -1, -1}, {2, 8, -1, -1}, {2, 9, -1, -1}, {2, 10, -1, -1}, {2, 11, -1, -1}, {3, 4, -1, -1}, {3, 5, -1, -1}, {3, 6, -1, -1}, {3, 7, -1, -1}, {3, 8, -1, -1}, {3, 9, -1, -1}, {3, 10, -1, -1}, {3, 11, -1, -1}, {4, 5, -1, -1}, {4, 6, -1, -1}, {4, 7, -1, -1}, {4, 8, -1, -1}, {4, 9, -1, -1}, {4, 10, -1, -1}, {4, 11, -1, -1}, {5, 6, -1, -1}, {5, 7, -1, -1}, {5, 8, -1, -1}, {5, 9, -1, -1}, {5, 10, -1, -1}, {5, 11, -1, -1}, {6, 7, -1, -1}, {6, 8, -1, -1}, {6, 9, -1, -1}, {6, 10, -1, -1}, {6, 11, -1, -1}, {7, 8, -1, -1}, {7, 9, -1, -1}, {7, 10, -1, -1}, {7, 11, -1, -1}, {8, 9, -1, -1}, {8, 10, -1, -1}, {8, 11, -1, -1}, {9, 10, -1, -1}, {9, 11, -1, -1}, {10, 11, -1, -1}, {0, 1, 2, -1}, {0, 1, 3, -1}, {0, 1, 4, -1}, {0, 1, 5, -1}, {0, 1, 6, -1}, {0, 1, 7, -1}, {0, 1, 8, -1}, {0, 1, 9, -1}, {0, 1, 10, -1}, {0, 1, 11, -1}, {0, 2, 3, -1}, {0, 2, 4, -1}, {0, 2, 5, -1}, {0, 2, 6, -1}, {0, 2, 7, -1}, {0, 2, 8, -1}, {0, 2, 9, -1}, {0, 2, 10, -1}, {0, 2, 11, -1}, {0, 3, 4, -1}, {0, 3, 5, -1}, {0, 3, 6, -1}, {0, 3, 7, -1}, {0, 3, 8, -1}, {0, 3, 9, -1}, {0, 3, 10, -1}, {0, 3, 11, -1}, {0, 4, 5, -1}, {0, 4, 6, -1}, {0, 4, 7, -1}, {0, 4, 8, -1}, {0, 4, 9, -1}, {0, 4, 10, -1}, {0, 4, 11, -1}, {0, 5, 6, -1}, {0, 5, 7, -1}, {0, 5, 8, -1}, {0, 5, 9, -1}, {0, 5, 10, -1}, {0, 5, 11, -1}, {0, 6, 7, -1}, {0, 6, 8, -1}, {0, 6, 9, -1}, {0, 6, 10, -1}, {0, 6, 11, -1}, {0, 7, 8, -1}, {0, 7, 9, -1}, {0, 7, 10, -1}, {0, 7, 11, -1}, {0, 8, 9, -1}, {0, 8, 10, -1}, {0, 8, 11, -1}, {0, 9, 10, -1}, {0, 9, 11, -1}, {0, 10, 11, -1}, {1, 2, 3, -1}, {1, 2, 4, -1}, {1, 2, 5, -1}, {1, 2, 6, -1}, {1, 2, 7, -1}, {1, 2, 8, -1}, {1, 2, 9, -1}, {1, 2, 10, -1}, {1, 2, 11, -1}, {1, 3, 4, -1}, {1, 3, 5, -1}, {1, 3, 6, -1}, {1, 3, 7, -1}, {1, 3, 8, -1}, {1, 3, 9, -1}, {1, 3, 10, -1}, {1, 3, 11, -1}, {1, 4, 5, -1}, {1, 4, 6, -1}, {1, 4, 7, -1}, {1, 4, 8, -1}, {1, 4, 9, -1}, {1, 4, 10, -1}, {1, 4, 11, -1}, {1, 5, 6, -1}, {1, 5, 7, -1}, {1, 5, 8, -1}, {1, 5, 9, -1}, {1, 5, 10, -1}, {1, 5, 11, -1}, {1, 6, 7, -1}, {1, 6, 8, -1}, {1, 6, 9, -1}, {1, 6, 10, -1}, {1, 6, 11, -1}, {1, 7, 8, -1}, {1, 7, 9, -1}, {1, 7, 10, -1}, {1, 7, 11, -1}, {1, 8, 9, -1}, {1, 8, 10, -1}, {1, 8, 11, -1}, {1, 9, 10, -1}, {1, 9, 11, -1}, {1, 10, 11, -1}, {2, 3, 4, -1}, {2, 3, 5, -1}, {2, 3, 6, -1}, {2, 3, 7, -1}, {2, 3, 8, -1}, {2, 3, 9, -1}, {2, 3, 10, -1}, {2, 3, 11, -1}, {2, 4, 5, -1}, {2, 4, 6, -1}, {2, 4, 7, -1}, {2, 4, 8, -1}, {2, 4, 9, -1}, {2, 4, 10, -1}, {2, 4, 11, -1}, {2, 5, 6, -1}, {2, 5, 7, -1}, {2, 5, 8, -1}, {2, 5, 9, -1}, {2, 5, 10, -1}, {2, 5, 11, -1}, {2, 6, 7, -1}, {2, 6, 8, -1}, {2, 6, 9, -1}, {2, 6, 10, -1}, {2, 6, 11, -1}, {2, 7, 8, -1}, {2, 7, 9, -1}, {2, 7, 10, -1}, {2, 7, 11, -1}, {2, 8, 9, -1}, {2, 8, 10, -1}, {2, 8, 11, -1}, {2, 9, 10, -1}, {2, 9, 11, -1}, {2, 10, 11, -1}, {3, 4, 5, -1}, {3, 4, 6, -1}, {3, 4, 7, -1}, {3, 4, 8, -1}, {3, 4, 9, -1}, {3, 4, 10, -1}, {3, 4, 11, -1}, {3, 5, 6, -1}, {3, 5, 7, -1}, {3, 5, 8, -1}, {3, 5, 9, -1}, {3, 5, 10, -1}, {3, 5, 11, -1}, {3, 6, 7, -1}, {3, 6, 8, -1}, {3, 6, 9, -1}, {3, 6, 10, -1}, {3, 6, 11, -1}, {3, 7, 8, -1}, {3, 7, 9, -1}, {3, 7, 10, -1}, {3, 7, 11, -1}, {3, 8, 9, -1}, {3, 8, 10, -1}, {3, 8, 11, -1}, {3, 9, 10, -1}, {3, 9, 11, -1}, {3, 10, 11, -1}, {4, 5, 6, -1}, {4, 5, 7, -1}, {4, 5, 8, -1}, {4, 5, 9, -1}, {4, 5, 10, -1}, {4, 5, 11, -1}, {4, 6, 7, -1}, {4, 6, 8, -1}, {4, 6, 9, -1}, {4, 6, 10, -1}, {4, 6, 11, -1}, {4, 7, 8, -1}, {4, 7, 9, -1}, {4, 7, 10, -1}, {4, 7, 11, -1}, {4, 8, 9, -1}, {4, 8, 10, -1}, {4, 8, 11, -1}, {4, 9, 10, -1}, {4, 9, 11, -1}, {4, 10, 11, -1}, {5, 6, 7, -1}, {5, 6, 8, -1}, {5, 6, 9, -1}, {5, 6, 10, -1}, {5, 6, 11, -1}, {5, 7, 8, -1}, {5, 7, 9, -1}, {5, 7, 10, -1}, {5, 7, 11, -1}, {5, 8, 9, -1}, {5, 8, 10, -1}, {5, 8, 11, -1}, {5, 9, 10, -1}, {5, 9, 11, -1}, {5, 10, 11, -1}, {6, 7, 8, -1}, {6, 7, 9, -1}, {6, 7, 10, -1}, {6, 7, 11, -1}, {6, 8, 9, -1}, {6, 8, 10, -1}, {6, 8, 11, -1}, {6, 9, 10, -1}, {6, 9, 11, -1}, {6, 10, 11, -1}, {7, 8, 9, -1}, {7, 8, 10, -1}, {7, 8, 11, -1}, {7, 9, 10, -1}, {7, 9, 11, -1}, {7, 10, 11, -1}, {8, 9, 10, -1}, {8, 9, 11, -1}, {8, 10, 11, -1}, {9, 10, 11, -1}} ;
36 #define NUM_13_3_COMBS 91
37 int failure_combs_13_3[NUM_13_3_COMBS][4] = {{0, -1, -1, -1}, {1, -1, -1, -1}, {2, -1, -1, -1}, {3, -1, -1, -1}, {4, -1, -1, -1}, {5, -1, -1, -1}, {6, -1, -1, -1}, {7, -1, -1, -1}, {8, -1, -1, -1}, {9, -1, -1, -1}, {10, -1, -1, -1}, {11, -1, -1, -1}, {12, -1, -1, -1}, {0, 1, -1, -1}, {0, 2, -1, -1}, {0, 3, -1, -1}, {0, 4, -1, -1}, {0, 5, -1, -1}, {0, 6, -1, -1}, {0, 7, -1, -1}, {0, 8, -1, -1}, {0, 9, -1, -1}, {0, 10, -1, -1}, {0, 11, -1, -1}, {0, 12, -1, -1}, {1, 2, -1, -1}, {1, 3, -1, -1}, {1, 4, -1, -1}, {1, 5, -1, -1}, {1, 6, -1, -1}, {1, 7, -1, -1}, {1, 8, -1, -1}, {1, 9, -1, -1}, {1, 10, -1, -1}, {1, 11, -1, -1}, {1, 12, -1, -1}, {2, 3, -1, -1}, {2, 4, -1, -1}, {2, 5, -1, -1}, {2, 6, -1, -1}, {2, 7, -1, -1}, {2, 8, -1, -1}, {2, 9, -1, -1}, {2, 10, -1, -1}, {2, 11, -1, -1}, {2, 12, -1, -1}, {3, 4, -1, -1}, {3, 5, -1, -1}, {3, 6, -1, -1}, {3, 7, -1, -1}, {3, 8, -1, -1}, {3, 9, -1, -1}, {3, 10, -1, -1}, {3, 11, -1, -1}, {3, 12, -1, -1}, {4, 5, -1, -1}, {4, 6, -1, -1}, {4, 7, -1, -1}, {4, 8, -1, -1}, {4, 9, -1, -1}, {4, 10, -1, -1}, {4, 11, -1, -1}, {4, 12, -1, -1}, {5, 6, -1, -1}, {5, 7, -1, -1}, {5, 8, -1, -1}, {5, 9, -1, -1}, {5, 10, -1, -1}, {5, 11, -1, -1}, {5, 12, -1, -1}, {6, 7, -1, -1}, {6, 8, -1, -1}, {6, 9, -1, -1}, {6, 10, -1, -1}, {6, 11, -1, -1}, {6, 12, -1, -1}, {7, 8, -1, -1}, {7, 9, -1, -1}, {7, 10, -1, -1}, {7, 11, -1, -1}, {7, 12, -1, -1}, {8, 9, -1, -1}, {8, 10, -1, -1}, {8, 11, -1, -1}, {8, 12, -1, -1}, {9, 10, -1, -1}, {9, 11, -1, -1}, {9, 12, -1, -1}, {10, 11, -1, -1}, {10, 12, -1, -1}, {11, 12, -1, -1}} ;
38 #define NUM_13_4_COMBS 377
39 int failure_combs_13_4[NUM_13_4_COMBS][4] = {{0, -1, -1, -1}, {1, -1, -1, -1}, {2, -1, -1, -1}, {3, -1, -1, -1}, {4, -1, -1, -1}, {5, -1, -1, -1}, {6, -1, -1, -1}, {7, -1, -1, -1}, {8, -1, -1, -1}, {9, -1, -1, -1}, {10, -1, -1, -1}, {11, -1, -1, -1}, {12, -1, -1, -1}, {0, 1, -1, -1}, {0, 2, -1, -1}, {0, 3, -1, -1}, {0, 4, -1, -1}, {0, 5, -1, -1}, {0, 6, -1, -1}, {0, 7, -1, -1}, {0, 8, -1, -1}, {0, 9, -1, -1}, {0, 10, -1, -1}, {0, 11, -1, -1}, {0, 12, -1, -1}, {1, 2, -1, -1}, {1, 3, -1, -1}, {1, 4, -1, -1}, {1, 5, -1, -1}, {1, 6, -1, -1}, {1, 7, -1, -1}, {1, 8, -1, -1}, {1, 9, -1, -1}, {1, 10, -1, -1}, {1, 11, -1, -1}, {1, 12, -1, -1}, {2, 3, -1, -1}, {2, 4, -1, -1}, {2, 5, -1, -1}, {2, 6, -1, -1}, {2, 7, -1, -1}, {2, 8, -1, -1}, {2, 9, -1, -1}, {2, 10, -1, -1}, {2, 11, -1, -1}, {2, 12, -1, -1}, {3, 4, -1, -1}, {3, 5, -1, -1}, {3, 6, -1, -1}, {3, 7, -1, -1}, {3, 8, -1, -1}, {3, 9, -1, -1}, {3, 10, -1, -1}, {3, 11, -1, -1}, {3, 12, -1, -1}, {4, 5, -1, -1}, {4, 6, -1, -1}, {4, 7, -1, -1}, {4, 8, -1, -1}, {4, 9, -1, -1}, {4, 10, -1, -1}, {4, 11, -1, -1}, {4, 12, -1, -1}, {5, 6, -1, -1}, {5, 7, -1, -1}, {5, 8, -1, -1}, {5, 9, -1, -1}, {5, 10, -1, -1}, {5, 11, -1, -1}, {5, 12, -1, -1}, {6, 7, -1, -1}, {6, 8, -1, -1}, {6, 9, -1, -1}, {6, 10, -1, -1}, {6, 11, -1, -1}, {6, 12, -1, -1}, {7, 8, -1, -1}, {7, 9, -1, -1}, {7, 10, -1, -1}, {7, 11, -1, -1}, {7, 12, -1, -1}, {8, 9, -1, -1}, {8, 10, -1, -1}, {8, 11, -1, -1}, {8, 12, -1, -1}, {9, 10, -1, -1}, {9, 11, -1, -1}, {9, 12, -1, -1}, {10, 11, -1, -1}, {10, 12, -1, -1}, {11, 12, -1, -1}, {0, 1, 2, -1}, {0, 1, 3, -1}, {0, 1, 4, -1}, {0, 1, 5, -1}, {0, 1, 6, -1}, {0, 1, 7, -1}, {0, 1, 8, -1}, {0, 1, 9, -1}, {0, 1, 10, -1}, {0, 1, 11, -1}, {0, 1, 12, -1}, {0, 2, 3, -1}, {0, 2, 4, -1}, {0, 2, 5, -1}, {0, 2, 6, -1}, {0, 2, 7, -1}, {0, 2, 8, -1}, {0, 2, 9, -1}, {0, 2, 10, -1}, {0, 2, 11, -1}, {0, 2, 12, -1}, {0, 3, 4, -1}, {0, 3, 5, -1}, {0, 3, 6, -1}, {0, 3, 7, -1}, {0, 3, 8, -1}, {0, 3, 9, -1}, {0, 3, 10, -1}, {0, 3, 11, -1}, {0, 3, 12, -1}, {0, 4, 5, -1}, {0, 4, 6, -1}, {0, 4, 7, -1}, {0, 4, 8, -1}, {0, 4, 9, -1}, {0, 4, 10, -1}, {0, 4, 11, -1}, {0, 4, 12, -1}, {0, 5, 6, -1}, {0, 5, 7, -1}, {0, 5, 8, -1}, {0, 5, 9, -1}, {0, 5, 10, -1}, {0, 5, 11, -1}, {0, 5, 12, -1}, {0, 6, 7, -1}, {0, 6, 8, -1}, {0, 6, 9, -1}, {0, 6, 10, -1}, {0, 6, 11, -1}, {0, 6, 12, -1}, {0, 7, 8, -1}, {0, 7, 9, -1}, {0, 7, 10, -1}, {0, 7, 11, -1}, {0, 7, 12, -1}, {0, 8, 9, -1}, {0, 8, 10, -1}, {0, 8, 11, -1}, {0, 8, 12, -1}, {0, 9, 10, -1}, {0, 9, 11, -1}, {0, 9, 12, -1}, {0, 10, 11, -1}, {0, 10, 12, -1}, {0, 11, 12, -1}, {1, 2, 3, -1}, {1, 2, 4, -1}, {1, 2, 5, -1}, {1, 2, 6, -1}, {1, 2, 7, -1}, {1, 2, 8, -1}, {1, 2, 9, -1}, {1, 2, 10, -1}, {1, 2, 11, -1}, {1, 2, 12, -1}, {1, 3, 4, -1}, {1, 3, 5, -1}, {1, 3, 6, -1}, {1, 3, 7, -1}, {1, 3, 8, -1}, {1, 3, 9, -1}, {1, 3, 10, -1}, {1, 3, 11, -1}, {1, 3, 12, -1}, {1, 4, 5, -1}, {1, 4, 6, -1}, {1, 4, 7, -1}, {1, 4, 8, -1}, {1, 4, 9, -1}, {1, 4, 10, -1}, {1, 4, 11, -1}, {1, 4, 12, -1}, {1, 5, 6, -1}, {1, 5, 7, -1}, {1, 5, 8, -1}, {1, 5, 9, -1}, {1, 5, 10, -1}, {1, 5, 11, -1}, {1, 5, 12, -1}, {1, 6, 7, -1}, {1, 6, 8, -1}, {1, 6, 9, -1}, {1, 6, 10, -1}, {1, 6, 11, -1}, {1, 6, 12, -1}, {1, 7, 8, -1}, {1, 7, 9, -1}, {1, 7, 10, -1}, {1, 7, 11, -1}, {1, 7, 12, -1}, {1, 8, 9, -1}, {1, 8, 10, -1}, {1, 8, 11, -1}, {1, 8, 12, -1}, {1, 9, 10, -1}, {1, 9, 11, -1}, {1, 9, 12, -1}, {1, 10, 11, -1}, {1, 10, 12, -1}, {1, 11, 12, -1}, {2, 3, 4, -1}, {2, 3, 5, -1}, {2, 3, 6, -1}, {2, 3, 7, -1}, {2, 3, 8, -1}, {2, 3, 9, -1}, {2, 3, 10, -1}, {2, 3, 11, -1}, {2, 3, 12, -1}, {2, 4, 5, -1}, {2, 4, 6, -1}, {2, 4, 7, -1}, {2, 4, 8, -1}, {2, 4, 9, -1}, {2, 4, 10, -1}, {2, 4, 11, -1}, {2, 4, 12, -1}, {2, 5, 6, -1}, {2, 5, 7, -1}, {2, 5, 8, -1}, {2, 5, 9, -1}, {2, 5, 10, -1}, {2, 5, 11, -1}, {2, 5, 12, -1}, {2, 6, 7, -1}, {2, 6, 8, -1}, {2, 6, 9, -1}, {2, 6, 10, -1}, {2, 6, 11, -1}, {2, 6, 12, -1}, {2, 7, 8, -1}, {2, 7, 9, -1}, {2, 7, 10, -1}, {2, 7, 11, -1}, {2, 7, 12, -1}, {2, 8, 9, -1}, {2, 8, 10, -1}, {2, 8, 11, -1}, {2, 8, 12, -1}, {2, 9, 10, -1}, {2, 9, 11, -1}, {2, 9, 12, -1}, {2, 10, 11, -1}, {2, 10, 12, -1}, {2, 11, 12, -1}, {3, 4, 5, -1}, {3, 4, 6, -1}, {3, 4, 7, -1}, {3, 4, 8, -1}, {3, 4, 9, -1}, {3, 4, 10, -1}, {3, 4, 11, -1}, {3, 4, 12, -1}, {3, 5, 6, -1}, {3, 5, 7, -1}, {3, 5, 8, -1}, {3, 5, 9, -1}, {3, 5, 10, -1}, {3, 5, 11, -1}, {3, 5, 12, -1}, {3, 6, 7, -1}, {3, 6, 8, -1}, {3, 6, 9, -1}, {3, 6, 10, -1}, {3, 6, 11, -1}, {3, 6, 12, -1}, {3, 7, 8, -1}, {3, 7, 9, -1}, {3, 7, 10, -1}, {3, 7, 11, -1}, {3, 7, 12, -1}, {3, 8, 9, -1}, {3, 8, 10, -1}, {3, 8, 11, -1}, {3, 8, 12, -1}, {3, 9, 10, -1}, {3, 9, 11, -1}, {3, 9, 12, -1}, {3, 10, 11, -1}, {3, 10, 12, -1}, {3, 11, 12, -1}, {4, 5, 6, -1}, {4, 5, 7, -1}, {4, 5, 8, -1}, {4, 5, 9, -1}, {4, 5, 10, -1}, {4, 5, 11, -1}, {4, 5, 12, -1}, {4, 6, 7, -1}, {4, 6, 8, -1}, {4, 6, 9, -1}, {4, 6, 10, -1}, {4, 6, 11, -1}, {4, 6, 12, -1}, {4, 7, 8, -1}, {4, 7, 9, -1}, {4, 7, 10, -1}, {4, 7, 11, -1}, {4, 7, 12, -1}, {4, 8, 9, -1}, {4, 8, 10, -1}, {4, 8, 11, -1}, {4, 8, 12, -1}, {4, 9, 10, -1}, {4, 9, 11, -1}, {4, 9, 12, -1}, {4, 10, 11, -1}, {4, 10, 12, -1}, {4, 11, 12, -1}, {5, 6, 7, -1}, {5, 6, 8, -1}, {5, 6, 9, -1}, {5, 6, 10, -1}, {5, 6, 11, -1}, {5, 6, 12, -1}, {5, 7, 8, -1}, {5, 7, 9, -1}, {5, 7, 10, -1}, {5, 7, 11, -1}, {5, 7, 12, -1}, {5, 8, 9, -1}, {5, 8, 10, -1}, {5, 8, 11, -1}, {5, 8, 12, -1}, {5, 9, 10, -1}, {5, 9, 11, -1}, {5, 9, 12, -1}, {5, 10, 11, -1}, {5, 10, 12, -1}, {5, 11, 12, -1}, {6, 7, 8, -1}, {6, 7, 9, -1}, {6, 7, 10, -1}, {6, 7, 11, -1}, {6, 7, 12, -1}, {6, 8, 9, -1}, {6, 8, 10, -1}, {6, 8, 11, -1}, {6, 8, 12, -1}, {6, 9, 10, -1}, {6, 9, 11, -1}, {6, 9, 12, -1}, {6, 10, 11, -1}, {6, 10, 12, -1}, {6, 11, 12, -1}, {7, 8, 9, -1}, {7, 8, 10, -1}, {7, 8, 11, -1}, {7, 8, 12, -1}, {7, 9, 10, -1}, {7, 9, 11, -1}, {7, 9, 12, -1}, {7, 10, 11, -1}, {7, 10, 12, -1}, {7, 11, 12, -1}, {8, 9, 10, -1}, {8, 9, 11, -1}, {8, 9, 12, -1}, {8, 10, 11, -1}, {8, 10, 12, -1}, {8, 11, 12, -1}, {9, 10, 11, -1}, {9, 10, 12, -1}, {9, 11, 12, -1}, {10, 11, 12, -1}} ;
40 #define NUM_14_3_COMBS 105
41 int failure_combs_14_3[NUM_14_3_COMBS][4] = {{0, -1, -1, -1}, {1, -1, -1, -1}, {2, -1, -1, -1}, {3, -1, -1, -1}, {4, -1, -1, -1}, {5, -1, -1, -1}, {6, -1, -1, -1}, {7, -1, -1, -1}, {8, -1, -1, -1}, {9, -1, -1, -1}, {10, -1, -1, -1}, {11, -1, -1, -1}, {12, -1, -1, -1}, {13, -1, -1, -1}, {0, 1, -1, -1}, {0, 2, -1, -1}, {0, 3, -1, -1}, {0, 4, -1, -1}, {0, 5, -1, -1}, {0, 6, -1, -1}, {0, 7, -1, -1}, {0, 8, -1, -1}, {0, 9, -1, -1}, {0, 10, -1, -1}, {0, 11, -1, -1}, {0, 12, -1, -1}, {0, 13, -1, -1}, {1, 2, -1, -1}, {1, 3, -1, -1}, {1, 4, -1, -1}, {1, 5, -1, -1}, {1, 6, -1, -1}, {1, 7, -1, -1}, {1, 8, -1, -1}, {1, 9, -1, -1}, {1, 10, -1, -1}, {1, 11, -1, -1}, {1, 12, -1, -1}, {1, 13, -1, -1}, {2, 3, -1, -1}, {2, 4, -1, -1}, {2, 5, -1, -1}, {2, 6, -1, -1}, {2, 7, -1, -1}, {2, 8, -1, -1}, {2, 9, -1, -1}, {2, 10, -1, -1}, {2, 11, -1, -1}, {2, 12, -1, -1}, {2, 13, -1, -1}, {3, 4, -1, -1}, {3, 5, -1, -1}, {3, 6, -1, -1}, {3, 7, -1, -1}, {3, 8, -1, -1}, {3, 9, -1, -1}, {3, 10, -1, -1}, {3, 11, -1, -1}, {3, 12, -1, -1}, {3, 13, -1, -1}, {4, 5, -1, -1}, {4, 6, -1, -1}, {4, 7, -1, -1}, {4, 8, -1, -1}, {4, 9, -1, -1}, {4, 10, -1, -1}, {4, 11, -1, -1}, {4, 12, -1, -1}, {4, 13, -1, -1}, {5, 6, -1, -1}, {5, 7, -1, -1}, {5, 8, -1, -1}, {5, 9, -1, -1}, {5, 10, -1, -1}, {5, 11, -1, -1}, {5, 12, -1, -1}, {5, 13, -1, -1}, {6, 7, -1, -1}, {6, 8, -1, -1}, {6, 9, -1, -1}, {6, 10, -1, -1}, {6, 11, -1, -1}, {6, 12, -1, -1}, {6, 13, -1, -1}, {7, 8, -1, -1}, {7, 9, -1, -1}, {7, 10, -1, -1}, {7, 11, -1, -1}, {7, 12, -1, -1}, {7, 13, -1, -1}, {8, 9, -1, -1}, {8, 10, -1, -1}, {8, 11, -1, -1}, {8, 12, -1, -1}, {8, 13, -1, -1}, {9, 10, -1, -1}, {9, 11, -1, -1}, {9, 12, -1, -1}, {9, 13, -1, -1}, {10, 11, -1, -1}, {10, 12, -1, -1}, {10, 13, -1, -1}, {11, 12, -1, -1}, {11, 13, -1, -1}, {12, 13, -1, -1}} ;
42 #define NUM_14_4_COMBS 469
43 int failure_combs_14_4[NUM_14_4_COMBS][4] = {{0, -1, -1, -1}, {1, -1, -1, -1}, {2, -1, -1, -1}, {3, -1, -1, -1}, {4, -1, -1, -1}, {5, -1, -1, -1}, {6, -1, -1, -1}, {7, -1, -1, -1}, {8, -1, -1, -1}, {9, -1, -1, -1}, {10, -1, -1, -1}, {11, -1, -1, -1}, {12, -1, -1, -1}, {13, -1, -1, -1}, {0, 1, -1, -1}, {0, 2, -1, -1}, {0, 3, -1, -1}, {0, 4, -1, -1}, {0, 5, -1, -1}, {0, 6, -1, -1}, {0, 7, -1, -1}, {0, 8, -1, -1}, {0, 9, -1, -1}, {0, 10, -1, -1}, {0, 11, -1, -1}, {0, 12, -1, -1}, {0, 13, -1, -1}, {1, 2, -1, -1}, {1, 3, -1, -1}, {1, 4, -1, -1}, {1, 5, -1, -1}, {1, 6, -1, -1}, {1, 7, -1, -1}, {1, 8, -1, -1}, {1, 9, -1, -1}, {1, 10, -1, -1}, {1, 11, -1, -1}, {1, 12, -1, -1}, {1, 13, -1, -1}, {2, 3, -1, -1}, {2, 4, -1, -1}, {2, 5, -1, -1}, {2, 6, -1, -1}, {2, 7, -1, -1}, {2, 8, -1, -1}, {2, 9, -1, -1}, {2, 10, -1, -1}, {2, 11, -1, -1}, {2, 12, -1, -1}, {2, 13, -1, -1}, {3, 4, -1, -1}, {3, 5, -1, -1}, {3, 6, -1, -1}, {3, 7, -1, -1}, {3, 8, -1, -1}, {3, 9, -1, -1}, {3, 10, -1, -1}, {3, 11, -1, -1}, {3, 12, -1, -1}, {3, 13, -1, -1}, {4, 5, -1, -1}, {4, 6, -1, -1}, {4, 7, -1, -1}, {4, 8, -1, -1}, {4, 9, -1, -1}, {4, 10, -1, -1}, {4, 11, -1, -1}, {4, 12, -1, -1}, {4, 13, -1, -1}, {5, 6, -1, -1}, {5, 7, -1, -1}, {5, 8, -1, -1}, {5, 9, -1, -1}, {5, 10, -1, -1}, {5, 11, -1, -1}, {5, 12, -1, -1}, {5, 13, -1, -1}, {6, 7, -1, -1}, {6, 8, -1, -1}, {6, 9, -1, -1}, {6, 10, -1, -1}, {6, 11, -1, -1}, {6, 12, -1, -1}, {6, 13, -1, -1}, {7, 8, -1, -1}, {7, 9, -1, -1}, {7, 10, -1, -1}, {7, 11, -1, -1}, {7, 12, -1, -1}, {7, 13, -1, -1}, {8, 9, -1, -1}, {8, 10, -1, -1}, {8, 11, -1, -1}, {8, 12, -1, -1}, {8, 13, -1, -1}, {9, 10, -1, -1}, {9, 11, -1, -1}, {9, 12, -1, -1}, {9, 13, -1, -1}, {10, 11, -1, -1}, {10, 12, -1, -1}, {10, 13, -1, -1}, {11, 12, -1, -1}, {11, 13, -1, -1}, {12, 13, -1, -1}, {0, 1, 2, -1}, {0, 1, 3, -1}, {0, 1, 4, -1}, {0, 1, 5, -1}, {0, 1, 6, -1}, {0, 1, 7, -1}, {0, 1, 8, -1}, {0, 1, 9, -1}, {0, 1, 10, -1}, {0, 1, 11, -1}, {0, 1, 12, -1}, {0, 1, 13, -1}, {0, 2, 3, -1}, {0, 2, 4, -1}, {0, 2, 5, -1}, {0, 2, 6, -1}, {0, 2, 7, -1}, {0, 2, 8, -1}, {0, 2, 9, -1}, {0, 2, 10, -1}, {0, 2, 11, -1}, {0, 2, 12, -1}, {0, 2, 13, -1}, {0, 3, 4, -1}, {0, 3, 5, -1}, {0, 3, 6, -1}, {0, 3, 7, -1}, {0, 3, 8, -1}, {0, 3, 9, -1}, {0, 3, 10, -1}, {0, 3, 11, -1}, {0, 3, 12, -1}, {0, 3, 13, -1}, {0, 4, 5, -1}, {0, 4, 6, -1}, {0, 4, 7, -1}, {0, 4, 8, -1}, {0, 4, 9, -1}, {0, 4, 10, -1}, {0, 4, 11, -1}, {0, 4, 12, -1}, {0, 4, 13, -1}, {0, 5, 6, -1}, {0, 5, 7, -1}, {0, 5, 8, -1}, {0, 5, 9, -1}, {0, 5, 10, -1}, {0, 5, 11, -1}, {0, 5, 12, -1}, {0, 5, 13, -1}, {0, 6, 7, -1}, {0, 6, 8, -1}, {0, 6, 9, -1}, {0, 6, 10, -1}, {0, 6, 11, -1}, {0, 6, 12, -1}, {0, 6, 13, -1}, {0, 7, 8, -1}, {0, 7, 9, -1}, {0, 7, 10, -1}, {0, 7, 11, -1}, {0, 7, 12, -1}, {0, 7, 13, -1}, {0, 8, 9, -1}, {0, 8, 10, -1}, {0, 8, 11, -1}, {0, 8, 12, -1}, {0, 8, 13, -1}, {0, 9, 10, -1}, {0, 9, 11, -1}, {0, 9, 12, -1}, {0, 9, 13, -1}, {0, 10, 11, -1}, {0, 10, 12, -1}, {0, 10, 13, -1}, {0, 11, 12, -1}, {0, 11, 13, -1}, {0, 12, 13, -1}, {1, 2, 3, -1}, {1, 2, 4, -1}, {1, 2, 5, -1}, {1, 2, 6, -1}, {1, 2, 7, -1}, {1, 2, 8, -1}, {1, 2, 9, -1}, {1, 2, 10, -1}, {1, 2, 11, -1}, {1, 2, 12, -1}, {1, 2, 13, -1}, {1, 3, 4, -1}, {1, 3, 5, -1}, {1, 3, 6, -1}, {1, 3, 7, -1}, {1, 3, 8, -1}, {1, 3, 9, -1}, {1, 3, 10, -1}, {1, 3, 11, -1}, {1, 3, 12, -1}, {1, 3, 13, -1}, {1, 4, 5, -1}, {1, 4, 6, -1}, {1, 4, 7, -1}, {1, 4, 8, -1}, {1, 4, 9, -1}, {1, 4, 10, -1}, {1, 4, 11, -1}, {1, 4, 12, -1}, {1, 4, 13, -1}, {1, 5, 6, -1}, {1, 5, 7, -1}, {1, 5, 8, -1}, {1, 5, 9, -1}, {1, 5, 10, -1}, {1, 5, 11, -1}, {1, 5, 12, -1}, {1, 5, 13, -1}, {1, 6, 7, -1}, {1, 6, 8, -1}, {1, 6, 9, -1}, {1, 6, 10, -1}, {1, 6, 11, -1}, {1, 6, 12, -1}, {1, 6, 13, -1}, {1, 7, 8, -1}, {1, 7, 9, -1}, {1, 7, 10, -1}, {1, 7, 11, -1}, {1, 7, 12, -1}, {1, 7, 13, -1}, {1, 8, 9, -1}, {1, 8, 10, -1}, {1, 8, 11, -1}, {1, 8, 12, -1}, {1, 8, 13, -1}, {1, 9, 10, -1}, {1, 9, 11, -1}, {1, 9, 12, -1}, {1, 9, 13, -1}, {1, 10, 11, -1}, {1, 10, 12, -1}, {1, 10, 13, -1}, {1, 11, 12, -1}, {1, 11, 13, -1}, {1, 12, 13, -1}, {2, 3, 4, -1}, {2, 3, 5, -1}, {2, 3, 6, -1}, {2, 3, 7, -1}, {2, 3, 8, -1}, {2, 3, 9, -1}, {2, 3, 10, -1}, {2, 3, 11, -1}, {2, 3, 12, -1}, {2, 3, 13, -1}, {2, 4, 5, -1}, {2, 4, 6, -1}, {2, 4, 7, -1}, {2, 4, 8, -1}, {2, 4, 9, -1}, {2, 4, 10, -1}, {2, 4, 11, -1}, {2, 4, 12, -1}, {2, 4, 13, -1}, {2, 5, 6, -1}, {2, 5, 7, -1}, {2, 5, 8, -1}, {2, 5, 9, -1}, {2, 5, 10, -1}, {2, 5, 11, -1}, {2, 5, 12, -1}, {2, 5, 13, -1}, {2, 6, 7, -1}, {2, 6, 8, -1}, {2, 6, 9, -1}, {2, 6, 10, -1}, {2, 6, 11, -1}, {2, 6, 12, -1}, {2, 6, 13, -1}, {2, 7, 8, -1}, {2, 7, 9, -1}, {2, 7, 10, -1}, {2, 7, 11, -1}, {2, 7, 12, -1}, {2, 7, 13, -1}, {2, 8, 9, -1}, {2, 8, 10, -1}, {2, 8, 11, -1}, {2, 8, 12, -1}, {2, 8, 13, -1}, {2, 9, 10, -1}, {2, 9, 11, -1}, {2, 9, 12, -1}, {2, 9, 13, -1}, {2, 10, 11, -1}, {2, 10, 12, -1}, {2, 10, 13, -1}, {2, 11, 12, -1}, {2, 11, 13, -1}, {2, 12, 13, -1}, {3, 4, 5, -1}, {3, 4, 6, -1}, {3, 4, 7, -1}, {3, 4, 8, -1}, {3, 4, 9, -1}, {3, 4, 10, -1}, {3, 4, 11, -1}, {3, 4, 12, -1}, {3, 4, 13, -1}, {3, 5, 6, -1}, {3, 5, 7, -1}, {3, 5, 8, -1}, {3, 5, 9, -1}, {3, 5, 10, -1}, {3, 5, 11, -1}, {3, 5, 12, -1}, {3, 5, 13, -1}, {3, 6, 7, -1}, {3, 6, 8, -1}, {3, 6, 9, -1}, {3, 6, 10, -1}, {3, 6, 11, -1}, {3, 6, 12, -1}, {3, 6, 13, -1}, {3, 7, 8, -1}, {3, 7, 9, -1}, {3, 7, 10, -1}, {3, 7, 11, -1}, {3, 7, 12, -1}, {3, 7, 13, -1}, {3, 8, 9, -1}, {3, 8, 10, -1}, {3, 8, 11, -1}, {3, 8, 12, -1}, {3, 8, 13, -1}, {3, 9, 10, -1}, {3, 9, 11, -1}, {3, 9, 12, -1}, {3, 9, 13, -1}, {3, 10, 11, -1}, {3, 10, 12, -1}, {3, 10, 13, -1}, {3, 11, 12, -1}, {3, 11, 13, -1}, {3, 12, 13, -1}, {4, 5, 6, -1}, {4, 5, 7, -1}, {4, 5, 8, -1}, {4, 5, 9, -1}, {4, 5, 10, -1}, {4, 5, 11, -1}, {4, 5, 12, -1}, {4, 5, 13, -1}, {4, 6, 7, -1}, {4, 6, 8, -1}, {4, 6, 9, -1}, {4, 6, 10, -1}, {4, 6, 11, -1}, {4, 6, 12, -1}, {4, 6, 13, -1}, {4, 7, 8, -1}, {4, 7, 9, -1}, {4, 7, 10, -1}, {4, 7, 11, -1}, {4, 7, 12, -1}, {4, 7, 13, -1}, {4, 8, 9, -1}, {4, 8, 10, -1}, {4, 8, 11, -1}, {4, 8, 12, -1}, {4, 8, 13, -1}, {4, 9, 10, -1}, {4, 9, 11, -1}, {4, 9, 12, -1}, {4, 9, 13, -1}, {4, 10, 11, -1}, {4, 10, 12, -1}, {4, 10, 13, -1}, {4, 11, 12, -1}, {4, 11, 13, -1}, {4, 12, 13, -1}, {5, 6, 7, -1}, {5, 6, 8, -1}, {5, 6, 9, -1}, {5, 6, 10, -1}, {5, 6, 11, -1}, {5, 6, 12, -1}, {5, 6, 13, -1}, {5, 7, 8, -1}, {5, 7, 9, -1}, {5, 7, 10, -1}, {5, 7, 11, -1}, {5, 7, 12, -1}, {5, 7, 13, -1}, {5, 8, 9, -1}, {5, 8, 10, -1}, {5, 8, 11, -1}, {5, 8, 12, -1}, {5, 8, 13, -1}, {5, 9, 10, -1}, {5, 9, 11, -1}, {5, 9, 12, -1}, {5, 9, 13, -1}, {5, 10, 11, -1}, {5, 10, 12, -1}, {5, 10, 13, -1}, {5, 11, 12, -1}, {5, 11, 13, -1}, {5, 12, 13, -1}, {6, 7, 8, -1}, {6, 7, 9, -1}, {6, 7, 10, -1}, {6, 7, 11, -1}, {6, 7, 12, -1}, {6, 7, 13, -1}, {6, 8, 9, -1}, {6, 8, 10, -1}, {6, 8, 11, -1}, {6, 8, 12, -1}, {6, 8, 13, -1}, {6, 9, 10, -1}, {6, 9, 11, -1}, {6, 9, 12, -1}, {6, 9, 13, -1}, {6, 10, 11, -1}, {6, 10, 12, -1}, {6, 10, 13, -1}, {6, 11, 12, -1}, {6, 11, 13, -1}, {6, 12, 13, -1}, {7, 8, 9, -1}, {7, 8, 10, -1}, {7, 8, 11, -1}, {7, 8, 12, -1}, {7, 8, 13, -1}, {7, 9, 10, -1}, {7, 9, 11, -1}, {7, 9, 12, -1}, {7, 9, 13, -1}, {7, 10, 11, -1}, {7, 10, 12, -1}, {7, 10, 13, -1}, {7, 11, 12, -1}, {7, 11, 13, -1}, {7, 12, 13, -1}, {8, 9, 10, -1}, {8, 9, 11, -1}, {8, 9, 12, -1}, {8, 9, 13, -1}, {8, 10, 11, -1}, {8, 10, 12, -1}, {8, 10, 13, -1}, {8, 11, 12, -1}, {8, 11, 13, -1}, {8, 12, 13, -1}, {9, 10, 11, -1}, {9, 10, 12, -1}, {9, 10, 13, -1}, {9, 11, 12, -1}, {9, 11, 13, -1}, {9, 12, 13, -1}, {10, 11, 12, -1}, {10, 11, 13, -1}, {10, 12, 13, -1}, {11, 12, 13, -1}} ;
44 #define NUM_15_3_COMBS 120
45 int failure_combs_15_3[NUM_15_3_COMBS][4] = {{0, -1, -1, -1}, {1, -1, -1, -1}, {2, -1, -1, -1}, {3, -1, -1, -1}, {4, -1, -1, -1}, {5, -1, -1, -1}, {6, -1, -1, -1}, {7, -1, -1, -1}, {8, -1, -1, -1}, {9, -1, -1, -1}, {10, -1, -1, -1}, {11, -1, -1, -1}, {12, -1, -1, -1}, {13, -1, -1, -1}, {14, -1, -1, -1}, {0, 1, -1, -1}, {0, 2, -1, -1}, {0, 3, -1, -1}, {0, 4, -1, -1}, {0, 5, -1, -1}, {0, 6, -1, -1}, {0, 7, -1, -1}, {0, 8, -1, -1}, {0, 9, -1, -1}, {0, 10, -1, -1}, {0, 11, -1, -1}, {0, 12, -1, -1}, {0, 13, -1, -1}, {0, 14, -1, -1}, {1, 2, -1, -1}, {1, 3, -1, -1}, {1, 4, -1, -1}, {1, 5, -1, -1}, {1, 6, -1, -1}, {1, 7, -1, -1}, {1, 8, -1, -1}, {1, 9, -1, -1}, {1, 10, -1, -1}, {1, 11, -1, -1}, {1, 12, -1, -1}, {1, 13, -1, -1}, {1, 14, -1, -1}, {2, 3, -1, -1}, {2, 4, -1, -1}, {2, 5, -1, -1}, {2, 6, -1, -1}, {2, 7, -1, -1}, {2, 8, -1, -1}, {2, 9, -1, -1}, {2, 10, -1, -1}, {2, 11, -1, -1}, {2, 12, -1, -1}, {2, 13, -1, -1}, {2, 14, -1, -1}, {3, 4, -1, -1}, {3, 5, -1, -1}, {3, 6, -1, -1}, {3, 7, -1, -1}, {3, 8, -1, -1}, {3, 9, -1, -1}, {3, 10, -1, -1}, {3, 11, -1, -1}, {3, 12, -1, -1}, {3, 13, -1, -1}, {3, 14, -1, -1}, {4, 5, -1, -1}, {4, 6, -1, -1}, {4, 7, -1, -1}, {4, 8, -1, -1}, {4, 9, -1, -1}, {4, 10, -1, -1}, {4, 11, -1, -1}, {4, 12, -1, -1}, {4, 13, -1, -1}, {4, 14, -1, -1}, {5, 6, -1, -1}, {5, 7, -1, -1}, {5, 8, -1, -1}, {5, 9, -1, -1}, {5, 10, -1, -1}, {5, 11, -1, -1}, {5, 12, -1, -1}, {5, 13, -1, -1}, {5, 14, -1, -1}, {6, 7, -1, -1}, {6, 8, -1, -1}, {6, 9, -1, -1}, {6, 10, -1, -1}, {6, 11, -1, -1}, {6, 12, -1, -1}, {6, 13, -1, -1}, {6, 14, -1, -1}, {7, 8, -1, -1}, {7, 9, -1, -1}, {7, 10, -1, -1}, {7, 11, -1, -1}, {7, 12, -1, -1}, {7, 13, -1, -1}, {7, 14, -1, -1}, {8, 9, -1, -1}, {8, 10, -1, -1}, {8, 11, -1, -1}, {8, 12, -1, -1}, {8, 13, -1, -1}, {8, 14, -1, -1}, {9, 10, -1, -1}, {9, 11, -1, -1}, {9, 12, -1, -1}, {9, 13, -1, -1}, {9, 14, -1, -1}, {10, 11, -1, -1}, {10, 12, -1, -1}, {10, 13, -1, -1}, {10, 14, -1, -1}, {11, 12, -1, -1}, {11, 13, -1, -1}, {11, 14, -1, -1}, {12, 13, -1, -1}, {12, 14, -1, -1}, {13, 14, -1, -1}} ;
46 #define NUM_15_4_COMBS 575
47 int failure_combs_15_4[NUM_15_4_COMBS][4] = {{0, -1, -1, -1}, {1, -1, -1, -1}, {2, -1, -1, -1}, {3, -1, -1, -1}, {4, -1, -1, -1}, {5, -1, -1, -1}, {6, -1, -1, -1}, {7, -1, -1, -1}, {8, -1, -1, -1}, {9, -1, -1, -1}, {10, -1, -1, -1}, {11, -1, -1, -1}, {12, -1, -1, -1}, {13, -1, -1, -1}, {14, -1, -1, -1}, {0, 1, -1, -1}, {0, 2, -1, -1}, {0, 3, -1, -1}, {0, 4, -1, -1}, {0, 5, -1, -1}, {0, 6, -1, -1}, {0, 7, -1, -1}, {0, 8, -1, -1}, {0, 9, -1, -1}, {0, 10, -1, -1}, {0, 11, -1, -1}, {0, 12, -1, -1}, {0, 13, -1, -1}, {0, 14, -1, -1}, {1, 2, -1, -1}, {1, 3, -1, -1}, {1, 4, -1, -1}, {1, 5, -1, -1}, {1, 6, -1, -1}, {1, 7, -1, -1}, {1, 8, -1, -1}, {1, 9, -1, -1}, {1, 10, -1, -1}, {1, 11, -1, -1}, {1, 12, -1, -1}, {1, 13, -1, -1}, {1, 14, -1, -1}, {2, 3, -1, -1}, {2, 4, -1, -1}, {2, 5, -1, -1}, {2, 6, -1, -1}, {2, 7, -1, -1}, {2, 8, -1, -1}, {2, 9, -1, -1}, {2, 10, -1, -1}, {2, 11, -1, -1}, {2, 12, -1, -1}, {2, 13, -1, -1}, {2, 14, -1, -1}, {3, 4, -1, -1}, {3, 5, -1, -1}, {3, 6, -1, -1}, {3, 7, -1, -1}, {3, 8, -1, -1}, {3, 9, -1, -1}, {3, 10, -1, -1}, {3, 11, -1, -1}, {3, 12, -1, -1}, {3, 13, -1, -1}, {3, 14, -1, -1}, {4, 5, -1, -1}, {4, 6, -1, -1}, {4, 7, -1, -1}, {4, 8, -1, -1}, {4, 9, -1, -1}, {4, 10, -1, -1}, {4, 11, -1, -1}, {4, 12, -1, -1}, {4, 13, -1, -1}, {4, 14, -1, -1}, {5, 6, -1, -1}, {5, 7, -1, -1}, {5, 8, -1, -1}, {5, 9, -1, -1}, {5, 10, -1, -1}, {5, 11, -1, -1}, {5, 12, -1, -1}, {5, 13, -1, -1}, {5, 14, -1, -1}, {6, 7, -1, -1}, {6, 8, -1, -1}, {6, 9, -1, -1}, {6, 10, -1, -1}, {6, 11, -1, -1}, {6, 12, -1, -1}, {6, 13, -1, -1}, {6, 14, -1, -1}, {7, 8, -1, -1}, {7, 9, -1, -1}, {7, 10, -1, -1}, {7, 11, -1, -1}, {7, 12, -1, -1}, {7, 13, -1, -1}, {7, 14, -1, -1}, {8, 9, -1, -1}, {8, 10, -1, -1}, {8, 11, -1, -1}, {8, 12, -1, -1}, {8, 13, -1, -1}, {8, 14, -1, -1}, {9, 10, -1, -1}, {9, 11, -1, -1}, {9, 12, -1, -1}, {9, 13, -1, -1}, {9, 14, -1, -1}, {10, 11, -1, -1}, {10, 12, -1, -1}, {10, 13, -1, -1}, {10, 14, -1, -1}, {11, 12, -1, -1}, {11, 13, -1, -1}, {11, 14, -1, -1}, {12, 13, -1, -1}, {12, 14, -1, -1}, {13, 14, -1, -1}, {0, 1, 2, -1}, {0, 1, 3, -1}, {0, 1, 4, -1}, {0, 1, 5, -1}, {0, 1, 6, -1}, {0, 1, 7, -1}, {0, 1, 8, -1}, {0, 1, 9, -1}, {0, 1, 10, -1}, {0, 1, 11, -1}, {0, 1, 12, -1}, {0, 1, 13, -1}, {0, 1, 14, -1}, {0, 2, 3, -1}, {0, 2, 4, -1}, {0, 2, 5, -1}, {0, 2, 6, -1}, {0, 2, 7, -1}, {0, 2, 8, -1}, {0, 2, 9, -1}, {0, 2, 10, -1}, {0, 2, 11, -1}, {0, 2, 12, -1}, {0, 2, 13, -1}, {0, 2, 14, -1}, {0, 3, 4, -1}, {0, 3, 5, -1}, {0, 3, 6, -1}, {0, 3, 7, -1}, {0, 3, 8, -1}, {0, 3, 9, -1}, {0, 3, 10, -1}, {0, 3, 11, -1}, {0, 3, 12, -1}, {0, 3, 13, -1}, {0, 3, 14, -1}, {0, 4, 5, -1}, {0, 4, 6, -1}, {0, 4, 7, -1}, {0, 4, 8, -1}, {0, 4, 9, -1}, {0, 4, 10, -1}, {0, 4, 11, -1}, {0, 4, 12, -1}, {0, 4, 13, -1}, {0, 4, 14, -1}, {0, 5, 6, -1}, {0, 5, 7, -1}, {0, 5, 8, -1}, {0, 5, 9, -1}, {0, 5, 10, -1}, {0, 5, 11, -1}, {0, 5, 12, -1}, {0, 5, 13, -1}, {0, 5, 14, -1}, {0, 6, 7, -1}, {0, 6, 8, -1}, {0, 6, 9, -1}, {0, 6, 10, -1}, {0, 6, 11, -1}, {0, 6, 12, -1}, {0, 6, 13, -1}, {0, 6, 14, -1}, {0, 7, 8, -1}, {0, 7, 9, -1}, {0, 7, 10, -1}, {0, 7, 11, -1}, {0, 7, 12, -1}, {0, 7, 13, -1}, {0, 7, 14, -1}, {0, 8, 9, -1}, {0, 8, 10, -1}, {0, 8, 11, -1}, {0, 8, 12, -1}, {0, 8, 13, -1}, {0, 8, 14, -1}, {0, 9, 10, -1}, {0, 9, 11, -1}, {0, 9, 12, -1}, {0, 9, 13, -1}, {0, 9, 14, -1}, {0, 10, 11, -1}, {0, 10, 12, -1}, {0, 10, 13, -1}, {0, 10, 14, -1}, {0, 11, 12, -1}, {0, 11, 13, -1}, {0, 11, 14, -1}, {0, 12, 13, -1}, {0, 12, 14, -1}, {0, 13, 14, -1}, {1, 2, 3, -1}, {1, 2, 4, -1}, {1, 2, 5, -1}, {1, 2, 6, -1}, {1, 2, 7, -1}, {1, 2, 8, -1}, {1, 2, 9, -1}, {1, 2, 10, -1}, {1, 2, 11, -1}, {1, 2, 12, -1}, {1, 2, 13, -1}, {1, 2, 14, -1}, {1, 3, 4, -1}, {1, 3, 5, -1}, {1, 3, 6, -1}, {1, 3, 7, -1}, {1, 3, 8, -1}, {1, 3, 9, -1}, {1, 3, 10, -1}, {1, 3, 11, -1}, {1, 3, 12, -1}, {1, 3, 13, -1}, {1, 3, 14, -1}, {1, 4, 5, -1}, {1, 4, 6, -1}, {1, 4, 7, -1}, {1, 4, 8, -1}, {1, 4, 9, -1}, {1, 4, 10, -1}, {1, 4, 11, -1}, {1, 4, 12, -1}, {1, 4, 13, -1}, {1, 4, 14, -1}, {1, 5, 6, -1}, {1, 5, 7, -1}, {1, 5, 8, -1}, {1, 5, 9, -1}, {1, 5, 10, -1}, {1, 5, 11, -1}, {1, 5, 12, -1}, {1, 5, 13, -1}, {1, 5, 14, -1}, {1, 6, 7, -1}, {1, 6, 8, -1}, {1, 6, 9, -1}, {1, 6, 10, -1}, {1, 6, 11, -1}, {1, 6, 12, -1}, {1, 6, 13, -1}, {1, 6, 14, -1}, {1, 7, 8, -1}, {1, 7, 9, -1}, {1, 7, 10, -1}, {1, 7, 11, -1}, {1, 7, 12, -1}, {1, 7, 13, -1}, {1, 7, 14, -1}, {1, 8, 9, -1}, {1, 8, 10, -1}, {1, 8, 11, -1}, {1, 8, 12, -1}, {1, 8, 13, -1}, {1, 8, 14, -1}, {1, 9, 10, -1}, {1, 9, 11, -1}, {1, 9, 12, -1}, {1, 9, 13, -1}, {1, 9, 14, -1}, {1, 10, 11, -1}, {1, 10, 12, -1}, {1, 10, 13, -1}, {1, 10, 14, -1}, {1, 11, 12, -1}, {1, 11, 13, -1}, {1, 11, 14, -1}, {1, 12, 13, -1}, {1, 12, 14, -1}, {1, 13, 14, -1}, {2, 3, 4, -1}, {2, 3, 5, -1}, {2, 3, 6, -1}, {2, 3, 7, -1}, {2, 3, 8, -1}, {2, 3, 9, -1}, {2, 3, 10, -1}, {2, 3, 11, -1}, {2, 3, 12, -1}, {2, 3, 13, -1}, {2, 3, 14, -1}, {2, 4, 5, -1}, {2, 4, 6, -1}, {2, 4, 7, -1}, {2, 4, 8, -1}, {2, 4, 9, -1}, {2, 4, 10, -1}, {2, 4, 11, -1}, {2, 4, 12, -1}, {2, 4, 13, -1}, {2, 4, 14, -1}, {2, 5, 6, -1}, {2, 5, 7, -1}, {2, 5, 8, -1}, {2, 5, 9, -1}, {2, 5, 10, -1}, {2, 5, 11, -1}, {2, 5, 12, -1}, {2, 5, 13, -1}, {2, 5, 14, -1}, {2, 6, 7, -1}, {2, 6, 8, -1}, {2, 6, 9, -1}, {2, 6, 10, -1}, {2, 6, 11, -1}, {2, 6, 12, -1}, {2, 6, 13, -1}, {2, 6, 14, -1}, {2, 7, 8, -1}, {2, 7, 9, -1}, {2, 7, 10, -1}, {2, 7, 11, -1}, {2, 7, 12, -1}, {2, 7, 13, -1}, {2, 7, 14, -1}, {2, 8, 9, -1}, {2, 8, 10, -1}, {2, 8, 11, -1}, {2, 8, 12, -1}, {2, 8, 13, -1}, {2, 8, 14, -1}, {2, 9, 10, -1}, {2, 9, 11, -1}, {2, 9, 12, -1}, {2, 9, 13, -1}, {2, 9, 14, -1}, {2, 10, 11, -1}, {2, 10, 12, -1}, {2, 10, 13, -1}, {2, 10, 14, -1}, {2, 11, 12, -1}, {2, 11, 13, -1}, {2, 11, 14, -1}, {2, 12, 13, -1}, {2, 12, 14, -1}, {2, 13, 14, -1}, {3, 4, 5, -1}, {3, 4, 6, -1}, {3, 4, 7, -1}, {3, 4, 8, -1}, {3, 4, 9, -1}, {3, 4, 10, -1}, {3, 4, 11, -1}, {3, 4, 12, -1}, {3, 4, 13, -1}, {3, 4, 14, -1}, {3, 5, 6, -1}, {3, 5, 7, -1}, {3, 5, 8, -1}, {3, 5, 9, -1}, {3, 5, 10, -1}, {3, 5, 11, -1}, {3, 5, 12, -1}, {3, 5, 13, -1}, {3, 5, 14, -1}, {3, 6, 7, -1}, {3, 6, 8, -1}, {3, 6, 9, -1}, {3, 6, 10, -1}, {3, 6, 11, -1}, {3, 6, 12, -1}, {3, 6, 13, -1}, {3, 6, 14, -1}, {3, 7, 8, -1}, {3, 7, 9, -1}, {3, 7, 10, -1}, {3, 7, 11, -1}, {3, 7, 12, -1}, {3, 7, 13, -1}, {3, 7, 14, -1}, {3, 8, 9, -1}, {3, 8, 10, -1}, {3, 8, 11, -1}, {3, 8, 12, -1}, {3, 8, 13, -1}, {3, 8, 14, -1}, {3, 9, 10, -1}, {3, 9, 11, -1}, {3, 9, 12, -1}, {3, 9, 13, -1}, {3, 9, 14, -1}, {3, 10, 11, -1}, {3, 10, 12, -1}, {3, 10, 13, -1}, {3, 10, 14, -1}, {3, 11, 12, -1}, {3, 11, 13, -1}, {3, 11, 14, -1}, {3, 12, 13, -1}, {3, 12, 14, -1}, {3, 13, 14, -1}, {4, 5, 6, -1}, {4, 5, 7, -1}, {4, 5, 8, -1}, {4, 5, 9, -1}, {4, 5, 10, -1}, {4, 5, 11, -1}, {4, 5, 12, -1}, {4, 5, 13, -1}, {4, 5, 14, -1}, {4, 6, 7, -1}, {4, 6, 8, -1}, {4, 6, 9, -1}, {4, 6, 10, -1}, {4, 6, 11, -1}, {4, 6, 12, -1}, {4, 6, 13, -1}, {4, 6, 14, -1}, {4, 7, 8, -1}, {4, 7, 9, -1}, {4, 7, 10, -1}, {4, 7, 11, -1}, {4, 7, 12, -1}, {4, 7, 13, -1}, {4, 7, 14, -1}, {4, 8, 9, -1}, {4, 8, 10, -1}, {4, 8, 11, -1}, {4, 8, 12, -1}, {4, 8, 13, -1}, {4, 8, 14, -1}, {4, 9, 10, -1}, {4, 9, 11, -1}, {4, 9, 12, -1}, {4, 9, 13, -1}, {4, 9, 14, -1}, {4, 10, 11, -1}, {4, 10, 12, -1}, {4, 10, 13, -1}, {4, 10, 14, -1}, {4, 11, 12, -1}, {4, 11, 13, -1}, {4, 11, 14, -1}, {4, 12, 13, -1}, {4, 12, 14, -1}, {4, 13, 14, -1}, {5, 6, 7, -1}, {5, 6, 8, -1}, {5, 6, 9, -1}, {5, 6, 10, -1}, {5, 6, 11, -1}, {5, 6, 12, -1}, {5, 6, 13, -1}, {5, 6, 14, -1}, {5, 7, 8, -1}, {5, 7, 9, -1}, {5, 7, 10, -1}, {5, 7, 11, -1}, {5, 7, 12, -1}, {5, 7, 13, -1}, {5, 7, 14, -1}, {5, 8, 9, -1}, {5, 8, 10, -1}, {5, 8, 11, -1}, {5, 8, 12, -1}, {5, 8, 13, -1}, {5, 8, 14, -1}, {5, 9, 10, -1}, {5, 9, 11, -1}, {5, 9, 12, -1}, {5, 9, 13, -1}, {5, 9, 14, -1}, {5, 10, 11, -1}, {5, 10, 12, -1}, {5, 10, 13, -1}, {5, 10, 14, -1}, {5, 11, 12, -1}, {5, 11, 13, -1}, {5, 11, 14, -1}, {5, 12, 13, -1}, {5, 12, 14, -1}, {5, 13, 14, -1}, {6, 7, 8, -1}, {6, 7, 9, -1}, {6, 7, 10, -1}, {6, 7, 11, -1}, {6, 7, 12, -1}, {6, 7, 13, -1}, {6, 7, 14, -1}, {6, 8, 9, -1}, {6, 8, 10, -1}, {6, 8, 11, -1}, {6, 8, 12, -1}, {6, 8, 13, -1}, {6, 8, 14, -1}, {6, 9, 10, -1}, {6, 9, 11, -1}, {6, 9, 12, -1}, {6, 9, 13, -1}, {6, 9, 14, -1}, {6, 10, 11, -1}, {6, 10, 12, -1}, {6, 10, 13, -1}, {6, 10, 14, -1}, {6, 11, 12, -1}, {6, 11, 13, -1}, {6, 11, 14, -1}, {6, 12, 13, -1}, {6, 12, 14, -1}, {6, 13, 14, -1}, {7, 8, 9, -1}, {7, 8, 10, -1}, {7, 8, 11, -1}, {7, 8, 12, -1}, {7, 8, 13, -1}, {7, 8, 14, -1}, {7, 9, 10, -1}, {7, 9, 11, -1}, {7, 9, 12, -1}, {7, 9, 13, -1}, {7, 9, 14, -1}, {7, 10, 11, -1}, {7, 10, 12, -1}, {7, 10, 13, -1}, {7, 10, 14, -1}, {7, 11, 12, -1}, {7, 11, 13, -1}, {7, 11, 14, -1}, {7, 12, 13, -1}, {7, 12, 14, -1}, {7, 13, 14, -1}, {8, 9, 10, -1}, {8, 9, 11, -1}, {8, 9, 12, -1}, {8, 9, 13, -1}, {8, 9, 14, -1}, {8, 10, 11, -1}, {8, 10, 12, -1}, {8, 10, 13, -1}, {8, 10, 14, -1}, {8, 11, 12, -1}, {8, 11, 13, -1}, {8, 11, 14, -1}, {8, 12, 13, -1}, {8, 12, 14, -1}, {8, 13, 14, -1}, {9, 10, 11, -1}, {9, 10, 12, -1}, {9, 10, 13, -1}, {9, 10, 14, -1}, {9, 11, 12, -1}, {9, 11, 13, -1}, {9, 11, 14, -1}, {9, 12, 13, -1}, {9, 12, 14, -1}, {9, 13, 14, -1}, {10, 11, 12, -1}, {10, 11, 13, -1}, {10, 11, 14, -1}, {10, 12, 13, -1}, {10, 12, 14, -1}, {10, 13, 14, -1}, {11, 12, 13, -1}, {11, 12, 14, -1}, {11, 13, 14, -1}, {12, 13, 14, -1}} ;
48 #define NUM_16_3_COMBS 136
49 int failure_combs_16_3[NUM_16_3_COMBS][4] = {{0, -1, -1, -1}, {1, -1, -1, -1}, {2, -1, -1, -1}, {3, -1, -1, -1}, {4, -1, -1, -1}, {5, -1, -1, -1}, {6, -1, -1, -1}, {7, -1, -1, -1}, {8, -1, -1, -1}, {9, -1, -1, -1}, {10, -1, -1, -1}, {11, -1, -1, -1}, {12, -1, -1, -1}, {13, -1, -1, -1}, {14, -1, -1, -1}, {15, -1, -1, -1}, {0, 1, -1, -1}, {0, 2, -1, -1}, {0, 3, -1, -1}, {0, 4, -1, -1}, {0, 5, -1, -1}, {0, 6, -1, -1}, {0, 7, -1, -1}, {0, 8, -1, -1}, {0, 9, -1, -1}, {0, 10, -1, -1}, {0, 11, -1, -1}, {0, 12, -1, -1}, {0, 13, -1, -1}, {0, 14, -1, -1}, {0, 15, -1, -1}, {1, 2, -1, -1}, {1, 3, -1, -1}, {1, 4, -1, -1}, {1, 5, -1, -1}, {1, 6, -1, -1}, {1, 7, -1, -1}, {1, 8, -1, -1}, {1, 9, -1, -1}, {1, 10, -1, -1}, {1, 11, -1, -1}, {1, 12, -1, -1}, {1, 13, -1, -1}, {1, 14, -1, -1}, {1, 15, -1, -1}, {2, 3, -1, -1}, {2, 4, -1, -1}, {2, 5, -1, -1}, {2, 6, -1, -1}, {2, 7, -1, -1}, {2, 8, -1, -1}, {2, 9, -1, -1}, {2, 10, -1, -1}, {2, 11, -1, -1}, {2, 12, -1, -1}, {2, 13, -1, -1}, {2, 14, -1, -1}, {2, 15, -1, -1}, {3, 4, -1, -1}, {3, 5, -1, -1}, {3, 6, -1, -1}, {3, 7, -1, -1}, {3, 8, -1, -1}, {3, 9, -1, -1}, {3, 10, -1, -1}, {3, 11, -1, -1}, {3, 12, -1, -1}, {3, 13, -1, -1}, {3, 14, -1, -1}, {3, 15, -1, -1}, {4, 5, -1, -1}, {4, 6, -1, -1}, {4, 7, -1, -1}, {4, 8, -1, -1}, {4, 9, -1, -1}, {4, 10, -1, -1}, {4, 11, -1, -1}, {4, 12, -1, -1}, {4, 13, -1, -1}, {4, 14, -1, -1}, {4, 15, -1, -1}, {5, 6, -1, -1}, {5, 7, -1, -1}, {5, 8, -1, -1}, {5, 9, -1, -1}, {5, 10, -1, -1}, {5, 11, -1, -1}, {5, 12, -1, -1}, {5, 13, -1, -1}, {5, 14, -1, -1}, {5, 15, -1, -1}, {6, 7, -1, -1}, {6, 8, -1, -1}, {6, 9, -1, -1}, {6, 10, -1, -1}, {6, 11, -1, -1}, {6, 12, -1, -1}, {6, 13, -1, -1}, {6, 14, -1, -1}, {6, 15, -1, -1}, {7, 8, -1, -1}, {7, 9, -1, -1}, {7, 10, -1, -1}, {7, 11, -1, -1}, {7, 12, -1, -1}, {7, 13, -1, -1}, {7, 14, -1, -1}, {7, 15, -1, -1}, {8, 9, -1, -1}, {8, 10, -1, -1}, {8, 11, -1, -1}, {8, 12, -1, -1}, {8, 13, -1, -1}, {8, 14, -1, -1}, {8, 15, -1, -1}, {9, 10, -1, -1}, {9, 11, -1, -1}, {9, 12, -1, -1}, {9, 13, -1, -1}, {9, 14, -1, -1}, {9, 15, -1, -1}, {10, 11, -1, -1}, {10, 12, -1, -1}, {10, 13, -1, -1}, {10, 14, -1, -1}, {10, 15, -1, -1}, {11, 12, -1, -1}, {11, 13, -1, -1}, {11, 14, -1, -1}, {11, 15, -1, -1}, {12, 13, -1, -1}, {12, 14, -1, -1}, {12, 15, -1, -1}, {13, 14, -1, -1}, {13, 15, -1, -1}, {14, 15, -1, -1}} ;
50 #define NUM_16_4_COMBS 696
51 int failure_combs_16_4[NUM_16_4_COMBS][4] = {{0, -1, -1, -1}, {1, -1, -1, -1}, {2, -1, -1, -1}, {3, -1, -1, -1}, {4, -1, -1, -1}, {5, -1, -1, -1}, {6, -1, -1, -1}, {7, -1, -1, -1}, {8, -1, -1, -1}, {9, -1, -1, -1}, {10, -1, -1, -1}, {11, -1, -1, -1}, {12, -1, -1, -1}, {13, -1, -1, -1}, {14, -1, -1, -1}, {15, -1, -1, -1}, {0, 1, -1, -1}, {0, 2, -1, -1}, {0, 3, -1, -1}, {0, 4, -1, -1}, {0, 5, -1, -1}, {0, 6, -1, -1}, {0, 7, -1, -1}, {0, 8, -1, -1}, {0, 9, -1, -1}, {0, 10, -1, -1}, {0, 11, -1, -1}, {0, 12, -1, -1}, {0, 13, -1, -1}, {0, 14, -1, -1}, {0, 15, -1, -1}, {1, 2, -1, -1}, {1, 3, -1, -1}, {1, 4, -1, -1}, {1, 5, -1, -1}, {1, 6, -1, -1}, {1, 7, -1, -1}, {1, 8, -1, -1}, {1, 9, -1, -1}, {1, 10, -1, -1}, {1, 11, -1, -1}, {1, 12, -1, -1}, {1, 13, -1, -1}, {1, 14, -1, -1}, {1, 15, -1, -1}, {2, 3, -1, -1}, {2, 4, -1, -1}, {2, 5, -1, -1}, {2, 6, -1, -1}, {2, 7, -1, -1}, {2, 8, -1, -1}, {2, 9, -1, -1}, {2, 10, -1, -1}, {2, 11, -1, -1}, {2, 12, -1, -1}, {2, 13, -1, -1}, {2, 14, -1, -1}, {2, 15, -1, -1}, {3, 4, -1, -1}, {3, 5, -1, -1}, {3, 6, -1, -1}, {3, 7, -1, -1}, {3, 8, -1, -1}, {3, 9, -1, -1}, {3, 10, -1, -1}, {3, 11, -1, -1}, {3, 12, -1, -1}, {3, 13, -1, -1}, {3, 14, -1, -1}, {3, 15, -1, -1}, {4, 5, -1, -1}, {4, 6, -1, -1}, {4, 7, -1, -1}, {4, 8, -1, -1}, {4, 9, -1, -1}, {4, 10, -1, -1}, {4, 11, -1, -1}, {4, 12, -1, -1}, {4, 13, -1, -1}, {4, 14, -1, -1}, {4, 15, -1, -1}, {5, 6, -1, -1}, {5, 7, -1, -1}, {5, 8, -1, -1}, {5, 9, -1, -1}, {5, 10, -1, -1}, {5, 11, -1, -1}, {5, 12, -1, -1}, {5, 13, -1, -1}, {5, 14, -1, -1}, {5, 15, -1, -1}, {6, 7, -1, -1}, {6, 8, -1, -1}, {6, 9, -1, -1}, {6, 10, -1, -1}, {6, 11, -1, -1}, {6, 12, -1, -1}, {6, 13, -1, -1}, {6, 14, -1, -1}, {6, 15, -1, -1}, {7, 8, -1, -1}, {7, 9, -1, -1}, {7, 10, -1, -1}, {7, 11, -1, -1}, {7, 12, -1, -1}, {7, 13, -1, -1}, {7, 14, -1, -1}, {7, 15, -1, -1}, {8, 9, -1, -1}, {8, 10, -1, -1}, {8, 11, -1, -1}, {8, 12, -1, -1}, {8, 13, -1, -1}, {8, 14, -1, -1}, {8, 15, -1, -1}, {9, 10, -1, -1}, {9, 11, -1, -1}, {9, 12, -1, -1}, {9, 13, -1, -1}, {9, 14, -1, -1}, {9, 15, -1, -1}, {10, 11, -1, -1}, {10, 12, -1, -1}, {10, 13, -1, -1}, {10, 14, -1, -1}, {10, 15, -1, -1}, {11, 12, -1, -1}, {11, 13, -1, -1}, {11, 14, -1, -1}, {11, 15, -1, -1}, {12, 13, -1, -1}, {12, 14, -1, -1}, {12, 15, -1, -1}, {13, 14, -1, -1}, {13, 15, -1, -1}, {14, 15, -1, -1}, {0, 1, 2, -1}, {0, 1, 3, -1}, {0, 1, 4, -1}, {0, 1, 5, -1}, {0, 1, 6, -1}, {0, 1, 7, -1}, {0, 1, 8, -1}, {0, 1, 9, -1}, {0, 1, 10, -1}, {0, 1, 11, -1}, {0, 1, 12, -1}, {0, 1, 13, -1}, {0, 1, 14, -1}, {0, 1, 15, -1}, {0, 2, 3, -1}, {0, 2, 4, -1}, {0, 2, 5, -1}, {0, 2, 6, -1}, {0, 2, 7, -1}, {0, 2, 8, -1}, {0, 2, 9, -1}, {0, 2, 10, -1}, {0, 2, 11, -1}, {0, 2, 12, -1}, {0, 2, 13, -1}, {0, 2, 14, -1}, {0, 2, 15, -1}, {0, 3, 4, -1}, {0, 3, 5, -1}, {0, 3, 6, -1}, {0, 3, 7, -1}, {0, 3, 8, -1}, {0, 3, 9, -1}, {0, 3, 10, -1}, {0, 3, 11, -1}, {0, 3, 12, -1}, {0, 3, 13, -1}, {0, 3, 14, -1}, {0, 3, 15, -1}, {0, 4, 5, -1}, {0, 4, 6, -1}, {0, 4, 7, -1}, {0, 4, 8, -1}, {0, 4, 9, -1}, {0, 4, 10, -1}, {0, 4, 11, -1}, {0, 4, 12, -1}, {0, 4, 13, -1}, {0, 4, 14, -1}, {0, 4, 15, -1}, {0, 5, 6, -1}, {0, 5, 7, -1}, {0, 5, 8, -1}, {0, 5, 9, -1}, {0, 5, 10, -1}, {0, 5, 11, -1}, {0, 5, 12, -1}, {0, 5, 13, -1}, {0, 5, 14, -1}, {0, 5, 15, -1}, {0, 6, 7, -1}, {0, 6, 8, -1}, {0, 6, 9, -1}, {0, 6, 10, -1}, {0, 6, 11, -1}, {0, 6, 12, -1}, {0, 6, 13, -1}, {0, 6, 14, -1}, {0, 6, 15, -1}, {0, 7, 8, -1}, {0, 7, 9, -1}, {0, 7, 10, -1}, {0, 7, 11, -1}, {0, 7, 12, -1}, {0, 7, 13, -1}, {0, 7, 14, -1}, {0, 7, 15, -1}, {0, 8, 9, -1}, {0, 8, 10, -1}, {0, 8, 11, -1}, {0, 8, 12, -1}, {0, 8, 13, -1}, {0, 8, 14, -1}, {0, 8, 15, -1}, {0, 9, 10, -1}, {0, 9, 11, -1}, {0, 9, 12, -1}, {0, 9, 13, -1}, {0, 9, 14, -1}, {0, 9, 15, -1}, {0, 10, 11, -1}, {0, 10, 12, -1}, {0, 10, 13, -1}, {0, 10, 14, -1}, {0, 10, 15, -1}, {0, 11, 12, -1}, {0, 11, 13, -1}, {0, 11, 14, -1}, {0, 11, 15, -1}, {0, 12, 13, -1}, {0, 12, 14, -1}, {0, 12, 15, -1}, {0, 13, 14, -1}, {0, 13, 15, -1}, {0, 14, 15, -1}, {1, 2, 3, -1}, {1, 2, 4, -1}, {1, 2, 5, -1}, {1, 2, 6, -1}, {1, 2, 7, -1}, {1, 2, 8, -1}, {1, 2, 9, -1}, {1, 2, 10, -1}, {1, 2, 11, -1}, {1, 2, 12, -1}, {1, 2, 13, -1}, {1, 2, 14, -1}, {1, 2, 15, -1}, {1, 3, 4, -1}, {1, 3, 5, -1}, {1, 3, 6, -1}, {1, 3, 7, -1}, {1, 3, 8, -1}, {1, 3, 9, -1}, {1, 3, 10, -1}, {1, 3, 11, -1}, {1, 3, 12, -1}, {1, 3, 13, -1}, {1, 3, 14, -1}, {1, 3, 15, -1}, {1, 4, 5, -1}, {1, 4, 6, -1}, {1, 4, 7, -1}, {1, 4, 8, -1}, {1, 4, 9, -1}, {1, 4, 10, -1}, {1, 4, 11, -1}, {1, 4, 12, -1}, {1, 4, 13, -1}, {1, 4, 14, -1}, {1, 4, 15, -1}, {1, 5, 6, -1}, {1, 5, 7, -1}, {1, 5, 8, -1}, {1, 5, 9, -1}, {1, 5, 10, -1}, {1, 5, 11, -1}, {1, 5, 12, -1}, {1, 5, 13, -1}, {1, 5, 14, -1}, {1, 5, 15, -1}, {1, 6, 7, -1}, {1, 6, 8, -1}, {1, 6, 9, -1}, {1, 6, 10, -1}, {1, 6, 11, -1}, {1, 6, 12, -1}, {1, 6, 13, -1}, {1, 6, 14, -1}, {1, 6, 15, -1}, {1, 7, 8, -1}, {1, 7, 9, -1}, {1, 7, 10, -1}, {1, 7, 11, -1}, {1, 7, 12, -1}, {1, 7, 13, -1}, {1, 7, 14, -1}, {1, 7, 15, -1}, {1, 8, 9, -1}, {1, 8, 10, -1}, {1, 8, 11, -1}, {1, 8, 12, -1}, {1, 8, 13, -1}, {1, 8, 14, -1}, {1, 8, 15, -1}, {1, 9, 10, -1}, {1, 9, 11, -1}, {1, 9, 12, -1}, {1, 9, 13, -1}, {1, 9, 14, -1}, {1, 9, 15, -1}, {1, 10, 11, -1}, {1, 10, 12, -1}, {1, 10, 13, -1}, {1, 10, 14, -1}, {1, 10, 15, -1}, {1, 11, 12, -1}, {1, 11, 13, -1}, {1, 11, 14, -1}, {1, 11, 15, -1}, {1, 12, 13, -1}, {1, 12, 14, -1}, {1, 12, 15, -1}, {1, 13, 14, -1}, {1, 13, 15, -1}, {1, 14, 15, -1}, {2, 3, 4, -1}, {2, 3, 5, -1}, {2, 3, 6, -1}, {2, 3, 7, -1}, {2, 3, 8, -1}, {2, 3, 9, -1}, {2, 3, 10, -1}, {2, 3, 11, -1}, {2, 3, 12, -1}, {2, 3, 13, -1}, {2, 3, 14, -1}, {2, 3, 15, -1}, {2, 4, 5, -1}, {2, 4, 6, -1}, {2, 4, 7, -1}, {2, 4, 8, -1}, {2, 4, 9, -1}, {2, 4, 10, -1}, {2, 4, 11, -1}, {2, 4, 12, -1}, {2, 4, 13, -1}, {2, 4, 14, -1}, {2, 4, 15, -1}, {2, 5, 6, -1}, {2, 5, 7, -1}, {2, 5, 8, -1}, {2, 5, 9, -1}, {2, 5, 10, -1}, {2, 5, 11, -1}, {2, 5, 12, -1}, {2, 5, 13, -1}, {2, 5, 14, -1}, {2, 5, 15, -1}, {2, 6, 7, -1}, {2, 6, 8, -1}, {2, 6, 9, -1}, {2, 6, 10, -1}, {2, 6, 11, -1}, {2, 6, 12, -1}, {2, 6, 13, -1}, {2, 6, 14, -1}, {2, 6, 15, -1}, {2, 7, 8, -1}, {2, 7, 9, -1}, {2, 7, 10, -1}, {2, 7, 11, -1}, {2, 7, 12, -1}, {2, 7, 13, -1}, {2, 7, 14, -1}, {2, 7, 15, -1}, {2, 8, 9, -1}, {2, 8, 10, -1}, {2, 8, 11, -1}, {2, 8, 12, -1}, {2, 8, 13, -1}, {2, 8, 14, -1}, {2, 8, 15, -1}, {2, 9, 10, -1}, {2, 9, 11, -1}, {2, 9, 12, -1}, {2, 9, 13, -1}, {2, 9, 14, -1}, {2, 9, 15, -1}, {2, 10, 11, -1}, {2, 10, 12, -1}, {2, 10, 13, -1}, {2, 10, 14, -1}, {2, 10, 15, -1}, {2, 11, 12, -1}, {2, 11, 13, -1}, {2, 11, 14, -1}, {2, 11, 15, -1}, {2, 12, 13, -1}, {2, 12, 14, -1}, {2, 12, 15, -1}, {2, 13, 14, -1}, {2, 13, 15, -1}, {2, 14, 15, -1}, {3, 4, 5, -1}, {3, 4, 6, -1}, {3, 4, 7, -1}, {3, 4, 8, -1}, {3, 4, 9, -1}, {3, 4, 10, -1}, {3, 4, 11, -1}, {3, 4, 12, -1}, {3, 4, 13, -1}, {3, 4, 14, -1}, {3, 4, 15, -1}, {3, 5, 6, -1}, {3, 5, 7, -1}, {3, 5, 8, -1}, {3, 5, 9, -1}, {3, 5, 10, -1}, {3, 5, 11, -1}, {3, 5, 12, -1}, {3, 5, 13, -1}, {3, 5, 14, -1}, {3, 5, 15, -1}, {3, 6, 7, -1}, {3, 6, 8, -1}, {3, 6, 9, -1}, {3, 6, 10, -1}, {3, 6, 11, -1}, {3, 6, 12, -1}, {3, 6, 13, -1}, {3, 6, 14, -1}, {3, 6, 15, -1}, {3, 7, 8, -1}, {3, 7, 9, -1}, {3, 7, 10, -1}, {3, 7, 11, -1}, {3, 7, 12, -1}, {3, 7, 13, -1}, {3, 7, 14, -1}, {3, 7, 15, -1}, {3, 8, 9, -1}, {3, 8, 10, -1}, {3, 8, 11, -1}, {3, 8, 12, -1}, {3, 8, 13, -1}, {3, 8, 14, -1}, {3, 8, 15, -1}, {3, 9, 10, -1}, {3, 9, 11, -1}, {3, 9, 12, -1}, {3, 9, 13, -1}, {3, 9, 14, -1}, {3, 9, 15, -1}, {3, 10, 11, -1}, {3, 10, 12, -1}, {3, 10, 13, -1}, {3, 10, 14, -1}, {3, 10, 15, -1}, {3, 11, 12, -1}, {3, 11, 13, -1}, {3, 11, 14, -1}, {3, 11, 15, -1}, {3, 12, 13, -1}, {3, 12, 14, -1}, {3, 12, 15, -1}, {3, 13, 14, -1}, {3, 13, 15, -1}, {3, 14, 15, -1}, {4, 5, 6, -1}, {4, 5, 7, -1}, {4, 5, 8, -1}, {4, 5, 9, -1}, {4, 5, 10, -1}, {4, 5, 11, -1}, {4, 5, 12, -1}, {4, 5, 13, -1}, {4, 5, 14, -1}, {4, 5, 15, -1}, {4, 6, 7, -1}, {4, 6, 8, -1}, {4, 6, 9, -1}, {4, 6, 10, -1}, {4, 6, 11, -1}, {4, 6, 12, -1}, {4, 6, 13, -1}, {4, 6, 14, -1}, {4, 6, 15, -1}, {4, 7, 8, -1}, {4, 7, 9, -1}, {4, 7, 10, -1}, {4, 7, 11, -1}, {4, 7, 12, -1}, {4, 7, 13, -1}, {4, 7, 14, -1}, {4, 7, 15, -1}, {4, 8, 9, -1}, {4, 8, 10, -1}, {4, 8, 11, -1}, {4, 8, 12, -1}, {4, 8, 13, -1}, {4, 8, 14, -1}, {4, 8, 15, -1}, {4, 9, 10, -1}, {4, 9, 11, -1}, {4, 9, 12, -1}, {4, 9, 13, -1}, {4, 9, 14, -1}, {4, 9, 15, -1}, {4, 10, 11, -1}, {4, 10, 12, -1}, {4, 10, 13, -1}, {4, 10, 14, -1}, {4, 10, 15, -1}, {4, 11, 12, -1}, {4, 11, 13, -1}, {4, 11, 14, -1}, {4, 11, 15, -1}, {4, 12, 13, -1}, {4, 12, 14, -1}, {4, 12, 15, -1}, {4, 13, 14, -1}, {4, 13, 15, -1}, {4, 14, 15, -1}, {5, 6, 7, -1}, {5, 6, 8, -1}, {5, 6, 9, -1}, {5, 6, 10, -1}, {5, 6, 11, -1}, {5, 6, 12, -1}, {5, 6, 13, -1}, {5, 6, 14, -1}, {5, 6, 15, -1}, {5, 7, 8, -1}, {5, 7, 9, -1}, {5, 7, 10, -1}, {5, 7, 11, -1}, {5, 7, 12, -1}, {5, 7, 13, -1}, {5, 7, 14, -1}, {5, 7, 15, -1}, {5, 8, 9, -1}, {5, 8, 10, -1}, {5, 8, 11, -1}, {5, 8, 12, -1}, {5, 8, 13, -1}, {5, 8, 14, -1}, {5, 8, 15, -1}, {5, 9, 10, -1}, {5, 9, 11, -1}, {5, 9, 12, -1}, {5, 9, 13, -1}, {5, 9, 14, -1}, {5, 9, 15, -1}, {5, 10, 11, -1}, {5, 10, 12, -1}, {5, 10, 13, -1}, {5, 10, 14, -1}, {5, 10, 15, -1}, {5, 11, 12, -1}, {5, 11, 13, -1}, {5, 11, 14, -1}, {5, 11, 15, -1}, {5, 12, 13, -1}, {5, 12, 14, -1}, {5, 12, 15, -1}, {5, 13, 14, -1}, {5, 13, 15, -1}, {5, 14, 15, -1}, {6, 7, 8, -1}, {6, 7, 9, -1}, {6, 7, 10, -1}, {6, 7, 11, -1}, {6, 7, 12, -1}, {6, 7, 13, -1}, {6, 7, 14, -1}, {6, 7, 15, -1}, {6, 8, 9, -1}, {6, 8, 10, -1}, {6, 8, 11, -1}, {6, 8, 12, -1}, {6, 8, 13, -1}, {6, 8, 14, -1}, {6, 8, 15, -1}, {6, 9, 10, -1}, {6, 9, 11, -1}, {6, 9, 12, -1}, {6, 9, 13, -1}, {6, 9, 14, -1}, {6, 9, 15, -1}, {6, 10, 11, -1}, {6, 10, 12, -1}, {6, 10, 13, -1}, {6, 10, 14, -1}, {6, 10, 15, -1}, {6, 11, 12, -1}, {6, 11, 13, -1}, {6, 11, 14, -1}, {6, 11, 15, -1}, {6, 12, 13, -1}, {6, 12, 14, -1}, {6, 12, 15, -1}, {6, 13, 14, -1}, {6, 13, 15, -1}, {6, 14, 15, -1}, {7, 8, 9, -1}, {7, 8, 10, -1}, {7, 8, 11, -1}, {7, 8, 12, -1}, {7, 8, 13, -1}, {7, 8, 14, -1}, {7, 8, 15, -1}, {7, 9, 10, -1}, {7, 9, 11, -1}, {7, 9, 12, -1}, {7, 9, 13, -1}, {7, 9, 14, -1}, {7, 9, 15, -1}, {7, 10, 11, -1}, {7, 10, 12, -1}, {7, 10, 13, -1}, {7, 10, 14, -1}, {7, 10, 15, -1}, {7, 11, 12, -1}, {7, 11, 13, -1}, {7, 11, 14, -1}, {7, 11, 15, -1}, {7, 12, 13, -1}, {7, 12, 14, -1}, {7, 12, 15, -1}, {7, 13, 14, -1}, {7, 13, 15, -1}, {7, 14, 15, -1}, {8, 9, 10, -1}, {8, 9, 11, -1}, {8, 9, 12, -1}, {8, 9, 13, -1}, {8, 9, 14, -1}, {8, 9, 15, -1}, {8, 10, 11, -1}, {8, 10, 12, -1}, {8, 10, 13, -1}, {8, 10, 14, -1}, {8, 10, 15, -1}, {8, 11, 12, -1}, {8, 11, 13, -1}, {8, 11, 14, -1}, {8, 11, 15, -1}, {8, 12, 13, -1}, {8, 12, 14, -1}, {8, 12, 15, -1}, {8, 13, 14, -1}, {8, 13, 15, -1}, {8, 14, 15, -1}, {9, 10, 11, -1}, {9, 10, 12, -1}, {9, 10, 13, -1}, {9, 10, 14, -1}, {9, 10, 15, -1}, {9, 11, 12, -1}, {9, 11, 13, -1}, {9, 11, 14, -1}, {9, 11, 15, -1}, {9, 12, 13, -1}, {9, 12, 14, -1}, {9, 12, 15, -1}, {9, 13, 14, -1}, {9, 13, 15, -1}, {9, 14, 15, -1}, {10, 11, 12, -1}, {10, 11, 13, -1}, {10, 11, 14, -1}, {10, 11, 15, -1}, {10, 12, 13, -1}, {10, 12, 14, -1}, {10, 12, 15, -1}, {10, 13, 14, -1}, {10, 13, 15, -1}, {10, 14, 15, -1}, {11, 12, 13, -1}, {11, 12, 14, -1}, {11, 12, 15, -1}, {11, 13, 14, -1}, {11, 13, 15, -1}, {11, 14, 15, -1}, {12, 13, 14, -1}, {12, 13, 15, -1}, {12, 14, 15, -1}, {13, 14, 15, -1}} ;
52 #define NUM_17_3_COMBS 153
53 int failure_combs_17_3[NUM_17_3_COMBS][4] = {{0, -1, -1, -1}, {1, -1, -1, -1}, {2, -1, -1, -1}, {3, -1, -1, -1}, {4, -1, -1, -1}, {5, -1, -1, -1}, {6, -1, -1, -1}, {7, -1, -1, -1}, {8, -1, -1, -1}, {9, -1, -1, -1}, {10, -1, -1, -1}, {11, -1, -1, -1}, {12, -1, -1, -1}, {13, -1, -1, -1}, {14, -1, -1, -1}, {15, -1, -1, -1}, {16, -1, -1, -1}, {0, 1, -1, -1}, {0, 2, -1, -1}, {0, 3, -1, -1}, {0, 4, -1, -1}, {0, 5, -1, -1}, {0, 6, -1, -1}, {0, 7, -1, -1}, {0, 8, -1, -1}, {0, 9, -1, -1}, {0, 10, -1, -1}, {0, 11, -1, -1}, {0, 12, -1, -1}, {0, 13, -1, -1}, {0, 14, -1, -1}, {0, 15, -1, -1}, {0, 16, -1, -1}, {1, 2, -1, -1}, {1, 3, -1, -1}, {1, 4, -1, -1}, {1, 5, -1, -1}, {1, 6, -1, -1}, {1, 7, -1, -1}, {1, 8, -1, -1}, {1, 9, -1, -1}, {1, 10, -1, -1}, {1, 11, -1, -1}, {1, 12, -1, -1}, {1, 13, -1, -1}, {1, 14, -1, -1}, {1, 15, -1, -1}, {1, 16, -1, -1}, {2, 3, -1, -1}, {2, 4, -1, -1}, {2, 5, -1, -1}, {2, 6, -1, -1}, {2, 7, -1, -1}, {2, 8, -1, -1}, {2, 9, -1, -1}, {2, 10, -1, -1}, {2, 11, -1, -1}, {2, 12, -1, -1}, {2, 13, -1, -1}, {2, 14, -1, -1}, {2, 15, -1, -1}, {2, 16, -1, -1}, {3, 4, -1, -1}, {3, 5, -1, -1}, {3, 6, -1, -1}, {3, 7, -1, -1}, {3, 8, -1, -1}, {3, 9, -1, -1}, {3, 10, -1, -1}, {3, 11, -1, -1}, {3, 12, -1, -1}, {3, 13, -1, -1}, {3, 14, -1, -1}, {3, 15, -1, -1}, {3, 16, -1, -1}, {4, 5, -1, -1}, {4, 6, -1, -1}, {4, 7, -1, -1}, {4, 8, -1, -1}, {4, 9, -1, -1}, {4, 10, -1, -1}, {4, 11, -1, -1}, {4, 12, -1, -1}, {4, 13, -1, -1}, {4, 14, -1, -1}, {4, 15, -1, -1}, {4, 16, -1, -1}, {5, 6, -1, -1}, {5, 7, -1, -1}, {5, 8, -1, -1}, {5, 9, -1, -1}, {5, 10, -1, -1}, {5, 11, -1, -1}, {5, 12, -1, -1}, {5, 13, -1, -1}, {5, 14, -1, -1}, {5, 15, -1, -1}, {5, 16, -1, -1}, {6, 7, -1, -1}, {6, 8, -1, -1}, {6, 9, -1, -1}, {6, 10, -1, -1}, {6, 11, -1, -1}, {6, 12, -1, -1}, {6, 13, -1, -1}, {6, 14, -1, -1}, {6, 15, -1, -1}, {6, 16, -1, -1}, {7, 8, -1, -1}, {7, 9, -1, -1}, {7, 10, -1, -1}, {7, 11, -1, -1}, {7, 12, -1, -1}, {7, 13, -1, -1}, {7, 14, -1, -1}, {7, 15, -1, -1}, {7, 16, -1, -1}, {8, 9, -1, -1}, {8, 10, -1, -1}, {8, 11, -1, -1}, {8, 12, -1, -1}, {8, 13, -1, -1}, {8, 14, -1, -1}, {8, 15, -1, -1}, {8, 16, -1, -1}, {9, 10, -1, -1}, {9, 11, -1, -1}, {9, 12, -1, -1}, {9, 13, -1, -1}, {9, 14, -1, -1}, {9, 15, -1, -1}, {9, 16, -1, -1}, {10, 11, -1, -1}, {10, 12, -1, -1}, {10, 13, -1, -1}, {10, 14, -1, -1}, {10, 15, -1, -1}, {10, 16, -1, -1}, {11, 12, -1, -1}, {11, 13, -1, -1}, {11, 14, -1, -1}, {11, 15, -1, -1}, {11, 16, -1, -1}, {12, 13, -1, -1}, {12, 14, -1, -1}, {12, 15, -1, -1}, {12, 16, -1, -1}, {13, 14, -1, -1}, {13, 15, -1, -1}, {13, 16, -1, -1}, {14, 15, -1, -1}, {14, 16, -1, -1}, {15, 16, -1, -1}} ;
54 #define NUM_17_4_COMBS 833
55 int failure_combs_17_4[NUM_17_4_COMBS][4] = {{0, -1, -1, -1}, {1, -1, -1, -1}, {2, -1, -1, -1}, {3, -1, -1, -1}, {4, -1, -1, -1}, {5, -1, -1, -1}, {6, -1, -1, -1}, {7, -1, -1, -1}, {8, -1, -1, -1}, {9, -1, -1, -1}, {10, -1, -1, -1}, {11, -1, -1, -1}, {12, -1, -1, -1}, {13, -1, -1, -1}, {14, -1, -1, -1}, {15, -1, -1, -1}, {16, -1, -1, -1}, {0, 1, -1, -1}, {0, 2, -1, -1}, {0, 3, -1, -1}, {0, 4, -1, -1}, {0, 5, -1, -1}, {0, 6, -1, -1}, {0, 7, -1, -1}, {0, 8, -1, -1}, {0, 9, -1, -1}, {0, 10, -1, -1}, {0, 11, -1, -1}, {0, 12, -1, -1}, {0, 13, -1, -1}, {0, 14, -1, -1}, {0, 15, -1, -1}, {0, 16, -1, -1}, {1, 2, -1, -1}, {1, 3, -1, -1}, {1, 4, -1, -1}, {1, 5, -1, -1}, {1, 6, -1, -1}, {1, 7, -1, -1}, {1, 8, -1, -1}, {1, 9, -1, -1}, {1, 10, -1, -1}, {1, 11, -1, -1}, {1, 12, -1, -1}, {1, 13, -1, -1}, {1, 14, -1, -1}, {1, 15, -1, -1}, {1, 16, -1, -1}, {2, 3, -1, -1}, {2, 4, -1, -1}, {2, 5, -1, -1}, {2, 6, -1, -1}, {2, 7, -1, -1}, {2, 8, -1, -1}, {2, 9, -1, -1}, {2, 10, -1, -1}, {2, 11, -1, -1}, {2, 12, -1, -1}, {2, 13, -1, -1}, {2, 14, -1, -1}, {2, 15, -1, -1}, {2, 16, -1, -1}, {3, 4, -1, -1}, {3, 5, -1, -1}, {3, 6, -1, -1}, {3, 7, -1, -1}, {3, 8, -1, -1}, {3, 9, -1, -1}, {3, 10, -1, -1}, {3, 11, -1, -1}, {3, 12, -1, -1}, {3, 13, -1, -1}, {3, 14, -1, -1}, {3, 15, -1, -1}, {3, 16, -1, -1}, {4, 5, -1, -1}, {4, 6, -1, -1}, {4, 7, -1, -1}, {4, 8, -1, -1}, {4, 9, -1, -1}, {4, 10, -1, -1}, {4, 11, -1, -1}, {4, 12, -1, -1}, {4, 13, -1, -1}, {4, 14, -1, -1}, {4, 15, -1, -1}, {4, 16, -1, -1}, {5, 6, -1, -1}, {5, 7, -1, -1}, {5, 8, -1, -1}, {5, 9, -1, -1}, {5, 10, -1, -1}, {5, 11, -1, -1}, {5, 12, -1, -1}, {5, 13, -1, -1}, {5, 14, -1, -1}, {5, 15, -1, -1}, {5, 16, -1, -1}, {6, 7, -1, -1}, {6, 8, -1, -1}, {6, 9, -1, -1}, {6, 10, -1, -1}, {6, 11, -1, -1}, {6, 12, -1, -1}, {6, 13, -1, -1}, {6, 14, -1, -1}, {6, 15, -1, -1}, {6, 16, -1, -1}, {7, 8, -1, -1}, {7, 9, -1, -1}, {7, 10, -1, -1}, {7, 11, -1, -1}, {7, 12, -1, -1}, {7, 13, -1, -1}, {7, 14, -1, -1}, {7, 15, -1, -1}, {7, 16, -1, -1}, {8, 9, -1, -1}, {8, 10, -1, -1}, {8, 11, -1, -1}, {8, 12, -1, -1}, {8, 13, -1, -1}, {8, 14, -1, -1}, {8, 15, -1, -1}, {8, 16, -1, -1}, {9, 10, -1, -1}, {9, 11, -1, -1}, {9, 12, -1, -1}, {9, 13, -1, -1}, {9, 14, -1, -1}, {9, 15, -1, -1}, {9, 16, -1, -1}, {10, 11, -1, -1}, {10, 12, -1, -1}, {10, 13, -1, -1}, {10, 14, -1, -1}, {10, 15, -1, -1}, {10, 16, -1, -1}, {11, 12, -1, -1}, {11, 13, -1, -1}, {11, 14, -1, -1}, {11, 15, -1, -1}, {11, 16, -1, -1}, {12, 13, -1, -1}, {12, 14, -1, -1}, {12, 15, -1, -1}, {12, 16, -1, -1}, {13, 14, -1, -1}, {13, 15, -1, -1}, {13, 16, -1, -1}, {14, 15, -1, -1}, {14, 16, -1, -1}, {15, 16, -1, -1}, {0, 1, 2, -1}, {0, 1, 3, -1}, {0, 1, 4, -1}, {0, 1, 5, -1}, {0, 1, 6, -1}, {0, 1, 7, -1}, {0, 1, 8, -1}, {0, 1, 9, -1}, {0, 1, 10, -1}, {0, 1, 11, -1}, {0, 1, 12, -1}, {0, 1, 13, -1}, {0, 1, 14, -1}, {0, 1, 15, -1}, {0, 1, 16, -1}, {0, 2, 3, -1}, {0, 2, 4, -1}, {0, 2, 5, -1}, {0, 2, 6, -1}, {0, 2, 7, -1}, {0, 2, 8, -1}, {0, 2, 9, -1}, {0, 2, 10, -1}, {0, 2, 11, -1}, {0, 2, 12, -1}, {0, 2, 13, -1}, {0, 2, 14, -1}, {0, 2, 15, -1}, {0, 2, 16, -1}, {0, 3, 4, -1}, {0, 3, 5, -1}, {0, 3, 6, -1}, {0, 3, 7, -1}, {0, 3, 8, -1}, {0, 3, 9, -1}, {0, 3, 10, -1}, {0, 3, 11, -1}, {0, 3, 12, -1}, {0, 3, 13, -1}, {0, 3, 14, -1}, {0, 3, 15, -1}, {0, 3, 16, -1}, {0, 4, 5, -1}, {0, 4, 6, -1}, {0, 4, 7, -1}, {0, 4, 8, -1}, {0, 4, 9, -1}, {0, 4, 10, -1}, {0, 4, 11, -1}, {0, 4, 12, -1}, {0, 4, 13, -1}, {0, 4, 14, -1}, {0, 4, 15, -1}, {0, 4, 16, -1}, {0, 5, 6, -1}, {0, 5, 7, -1}, {0, 5, 8, -1}, {0, 5, 9, -1}, {0, 5, 10, -1}, {0, 5, 11, -1}, {0, 5, 12, -1}, {0, 5, 13, -1}, {0, 5, 14, -1}, {0, 5, 15, -1}, {0, 5, 16, -1}, {0, 6, 7, -1}, {0, 6, 8, -1}, {0, 6, 9, -1}, {0, 6, 10, -1}, {0, 6, 11, -1}, {0, 6, 12, -1}, {0, 6, 13, -1}, {0, 6, 14, -1}, {0, 6, 15, -1}, {0, 6, 16, -1}, {0, 7, 8, -1}, {0, 7, 9, -1}, {0, 7, 10, -1}, {0, 7, 11, -1}, {0, 7, 12, -1}, {0, 7, 13, -1}, {0, 7, 14, -1}, {0, 7, 15, -1}, {0, 7, 16, -1}, {0, 8, 9, -1}, {0, 8, 10, -1}, {0, 8, 11, -1}, {0, 8, 12, -1}, {0, 8, 13, -1}, {0, 8, 14, -1}, {0, 8, 15, -1}, {0, 8, 16, -1}, {0, 9, 10, -1}, {0, 9, 11, -1}, {0, 9, 12, -1}, {0, 9, 13, -1}, {0, 9, 14, -1}, {0, 9, 15, -1}, {0, 9, 16, -1}, {0, 10, 11, -1}, {0, 10, 12, -1}, {0, 10, 13, -1}, {0, 10, 14, -1}, {0, 10, 15, -1}, {0, 10, 16, -1}, {0, 11, 12, -1}, {0, 11, 13, -1}, {0, 11, 14, -1}, {0, 11, 15, -1}, {0, 11, 16, -1}, {0, 12, 13, -1}, {0, 12, 14, -1}, {0, 12, 15, -1}, {0, 12, 16, -1}, {0, 13, 14, -1}, {0, 13, 15, -1}, {0, 13, 16, -1}, {0, 14, 15, -1}, {0, 14, 16, -1}, {0, 15, 16, -1}, {1, 2, 3, -1}, {1, 2, 4, -1}, {1, 2, 5, -1}, {1, 2, 6, -1}, {1, 2, 7, -1}, {1, 2, 8, -1}, {1, 2, 9, -1}, {1, 2, 10, -1}, {1, 2, 11, -1}, {1, 2, 12, -1}, {1, 2, 13, -1}, {1, 2, 14, -1}, {1, 2, 15, -1}, {1, 2, 16, -1}, {1, 3, 4, -1}, {1, 3, 5, -1}, {1, 3, 6, -1}, {1, 3, 7, -1}, {1, 3, 8, -1}, {1, 3, 9, -1}, {1, 3, 10, -1}, {1, 3, 11, -1}, {1, 3, 12, -1}, {1, 3, 13, -1}, {1, 3, 14, -1}, {1, 3, 15, -1}, {1, 3, 16, -1}, {1, 4, 5, -1}, {1, 4, 6, -1}, {1, 4, 7, -1}, {1, 4, 8, -1}, {1, 4, 9, -1}, {1, 4, 10, -1}, {1, 4, 11, -1}, {1, 4, 12, -1}, {1, 4, 13, -1}, {1, 4, 14, -1}, {1, 4, 15, -1}, {1, 4, 16, -1}, {1, 5, 6, -1}, {1, 5, 7, -1}, {1, 5, 8, -1}, {1, 5, 9, -1}, {1, 5, 10, -1}, {1, 5, 11, -1}, {1, 5, 12, -1}, {1, 5, 13, -1}, {1, 5, 14, -1}, {1, 5, 15, -1}, {1, 5, 16, -1}, {1, 6, 7, -1}, {1, 6, 8, -1}, {1, 6, 9, -1}, {1, 6, 10, -1}, {1, 6, 11, -1}, {1, 6, 12, -1}, {1, 6, 13, -1}, {1, 6, 14, -1}, {1, 6, 15, -1}, {1, 6, 16, -1}, {1, 7, 8, -1}, {1, 7, 9, -1}, {1, 7, 10, -1}, {1, 7, 11, -1}, {1, 7, 12, -1}, {1, 7, 13, -1}, {1, 7, 14, -1}, {1, 7, 15, -1}, {1, 7, 16, -1}, {1, 8, 9, -1}, {1, 8, 10, -1}, {1, 8, 11, -1}, {1, 8, 12, -1}, {1, 8, 13, -1}, {1, 8, 14, -1}, {1, 8, 15, -1}, {1, 8, 16, -1}, {1, 9, 10, -1}, {1, 9, 11, -1}, {1, 9, 12, -1}, {1, 9, 13, -1}, {1, 9, 14, -1}, {1, 9, 15, -1}, {1, 9, 16, -1}, {1, 10, 11, -1}, {1, 10, 12, -1}, {1, 10, 13, -1}, {1, 10, 14, -1}, {1, 10, 15, -1}, {1, 10, 16, -1}, {1, 11, 12, -1}, {1, 11, 13, -1}, {1, 11, 14, -1}, {1, 11, 15, -1}, {1, 11, 16, -1}, {1, 12, 13, -1}, {1, 12, 14, -1}, {1, 12, 15, -1}, {1, 12, 16, -1}, {1, 13, 14, -1}, {1, 13, 15, -1}, {1, 13, 16, -1}, {1, 14, 15, -1}, {1, 14, 16, -1}, {1, 15, 16, -1}, {2, 3, 4, -1}, {2, 3, 5, -1}, {2, 3, 6, -1}, {2, 3, 7, -1}, {2, 3, 8, -1}, {2, 3, 9, -1}, {2, 3, 10, -1}, {2, 3, 11, -1}, {2, 3, 12, -1}, {2, 3, 13, -1}, {2, 3, 14, -1}, {2, 3, 15, -1}, {2, 3, 16, -1}, {2, 4, 5, -1}, {2, 4, 6, -1}, {2, 4, 7, -1}, {2, 4, 8, -1}, {2, 4, 9, -1}, {2, 4, 10, -1}, {2, 4, 11, -1}, {2, 4, 12, -1}, {2, 4, 13, -1}, {2, 4, 14, -1}, {2, 4, 15, -1}, {2, 4, 16, -1}, {2, 5, 6, -1}, {2, 5, 7, -1}, {2, 5, 8, -1}, {2, 5, 9, -1}, {2, 5, 10, -1}, {2, 5, 11, -1}, {2, 5, 12, -1}, {2, 5, 13, -1}, {2, 5, 14, -1}, {2, 5, 15, -1}, {2, 5, 16, -1}, {2, 6, 7, -1}, {2, 6, 8, -1}, {2, 6, 9, -1}, {2, 6, 10, -1}, {2, 6, 11, -1}, {2, 6, 12, -1}, {2, 6, 13, -1}, {2, 6, 14, -1}, {2, 6, 15, -1}, {2, 6, 16, -1}, {2, 7, 8, -1}, {2, 7, 9, -1}, {2, 7, 10, -1}, {2, 7, 11, -1}, {2, 7, 12, -1}, {2, 7, 13, -1}, {2, 7, 14, -1}, {2, 7, 15, -1}, {2, 7, 16, -1}, {2, 8, 9, -1}, {2, 8, 10, -1}, {2, 8, 11, -1}, {2, 8, 12, -1}, {2, 8, 13, -1}, {2, 8, 14, -1}, {2, 8, 15, -1}, {2, 8, 16, -1}, {2, 9, 10, -1}, {2, 9, 11, -1}, {2, 9, 12, -1}, {2, 9, 13, -1}, {2, 9, 14, -1}, {2, 9, 15, -1}, {2, 9, 16, -1}, {2, 10, 11, -1}, {2, 10, 12, -1}, {2, 10, 13, -1}, {2, 10, 14, -1}, {2, 10, 15, -1}, {2, 10, 16, -1}, {2, 11, 12, -1}, {2, 11, 13, -1}, {2, 11, 14, -1}, {2, 11, 15, -1}, {2, 11, 16, -1}, {2, 12, 13, -1}, {2, 12, 14, -1}, {2, 12, 15, -1}, {2, 12, 16, -1}, {2, 13, 14, -1}, {2, 13, 15, -1}, {2, 13, 16, -1}, {2, 14, 15, -1}, {2, 14, 16, -1}, {2, 15, 16, -1}, {3, 4, 5, -1}, {3, 4, 6, -1}, {3, 4, 7, -1}, {3, 4, 8, -1}, {3, 4, 9, -1}, {3, 4, 10, -1}, {3, 4, 11, -1}, {3, 4, 12, -1}, {3, 4, 13, -1}, {3, 4, 14, -1}, {3, 4, 15, -1}, {3, 4, 16, -1}, {3, 5, 6, -1}, {3, 5, 7, -1}, {3, 5, 8, -1}, {3, 5, 9, -1}, {3, 5, 10, -1}, {3, 5, 11, -1}, {3, 5, 12, -1}, {3, 5, 13, -1}, {3, 5, 14, -1}, {3, 5, 15, -1}, {3, 5, 16, -1}, {3, 6, 7, -1}, {3, 6, 8, -1}, {3, 6, 9, -1}, {3, 6, 10, -1}, {3, 6, 11, -1}, {3, 6, 12, -1}, {3, 6, 13, -1}, {3, 6, 14, -1}, {3, 6, 15, -1}, {3, 6, 16, -1}, {3, 7, 8, -1}, {3, 7, 9, -1}, {3, 7, 10, -1}, {3, 7, 11, -1}, {3, 7, 12, -1}, {3, 7, 13, -1}, {3, 7, 14, -1}, {3, 7, 15, -1}, {3, 7, 16, -1}, {3, 8, 9, -1}, {3, 8, 10, -1}, {3, 8, 11, -1}, {3, 8, 12, -1}, {3, 8, 13, -1}, {3, 8, 14, -1}, {3, 8, 15, -1}, {3, 8, 16, -1}, {3, 9, 10, -1}, {3, 9, 11, -1}, {3, 9, 12, -1}, {3, 9, 13, -1}, {3, 9, 14, -1}, {3, 9, 15, -1}, {3, 9, 16, -1}, {3, 10, 11, -1}, {3, 10, 12, -1}, {3, 10, 13, -1}, {3, 10, 14, -1}, {3, 10, 15, -1}, {3, 10, 16, -1}, {3, 11, 12, -1}, {3, 11, 13, -1}, {3, 11, 14, -1}, {3, 11, 15, -1}, {3, 11, 16, -1}, {3, 12, 13, -1}, {3, 12, 14, -1}, {3, 12, 15, -1}, {3, 12, 16, -1}, {3, 13, 14, -1}, {3, 13, 15, -1}, {3, 13, 16, -1}, {3, 14, 15, -1}, {3, 14, 16, -1}, {3, 15, 16, -1}, {4, 5, 6, -1}, {4, 5, 7, -1}, {4, 5, 8, -1}, {4, 5, 9, -1}, {4, 5, 10, -1}, {4, 5, 11, -1}, {4, 5, 12, -1}, {4, 5, 13, -1}, {4, 5, 14, -1}, {4, 5, 15, -1}, {4, 5, 16, -1}, {4, 6, 7, -1}, {4, 6, 8, -1}, {4, 6, 9, -1}, {4, 6, 10, -1}, {4, 6, 11, -1}, {4, 6, 12, -1}, {4, 6, 13, -1}, {4, 6, 14, -1}, {4, 6, 15, -1}, {4, 6, 16, -1}, {4, 7, 8, -1}, {4, 7, 9, -1}, {4, 7, 10, -1}, {4, 7, 11, -1}, {4, 7, 12, -1}, {4, 7, 13, -1}, {4, 7, 14, -1}, {4, 7, 15, -1}, {4, 7, 16, -1}, {4, 8, 9, -1}, {4, 8, 10, -1}, {4, 8, 11, -1}, {4, 8, 12, -1}, {4, 8, 13, -1}, {4, 8, 14, -1}, {4, 8, 15, -1}, {4, 8, 16, -1}, {4, 9, 10, -1}, {4, 9, 11, -1}, {4, 9, 12, -1}, {4, 9, 13, -1}, {4, 9, 14, -1}, {4, 9, 15, -1}, {4, 9, 16, -1}, {4, 10, 11, -1}, {4, 10, 12, -1}, {4, 10, 13, -1}, {4, 10, 14, -1}, {4, 10, 15, -1}, {4, 10, 16, -1}, {4, 11, 12, -1}, {4, 11, 13, -1}, {4, 11, 14, -1}, {4, 11, 15, -1}, {4, 11, 16, -1}, {4, 12, 13, -1}, {4, 12, 14, -1}, {4, 12, 15, -1}, {4, 12, 16, -1}, {4, 13, 14, -1}, {4, 13, 15, -1}, {4, 13, 16, -1}, {4, 14, 15, -1}, {4, 14, 16, -1}, {4, 15, 16, -1}, {5, 6, 7, -1}, {5, 6, 8, -1}, {5, 6, 9, -1}, {5, 6, 10, -1}, {5, 6, 11, -1}, {5, 6, 12, -1}, {5, 6, 13, -1}, {5, 6, 14, -1}, {5, 6, 15, -1}, {5, 6, 16, -1}, {5, 7, 8, -1}, {5, 7, 9, -1}, {5, 7, 10, -1}, {5, 7, 11, -1}, {5, 7, 12, -1}, {5, 7, 13, -1}, {5, 7, 14, -1}, {5, 7, 15, -1}, {5, 7, 16, -1}, {5, 8, 9, -1}, {5, 8, 10, -1}, {5, 8, 11, -1}, {5, 8, 12, -1}, {5, 8, 13, -1}, {5, 8, 14, -1}, {5, 8, 15, -1}, {5, 8, 16, -1}, {5, 9, 10, -1}, {5, 9, 11, -1}, {5, 9, 12, -1}, {5, 9, 13, -1}, {5, 9, 14, -1}, {5, 9, 15, -1}, {5, 9, 16, -1}, {5, 10, 11, -1}, {5, 10, 12, -1}, {5, 10, 13, -1}, {5, 10, 14, -1}, {5, 10, 15, -1}, {5, 10, 16, -1}, {5, 11, 12, -1}, {5, 11, 13, -1}, {5, 11, 14, -1}, {5, 11, 15, -1}, {5, 11, 16, -1}, {5, 12, 13, -1}, {5, 12, 14, -1}, {5, 12, 15, -1}, {5, 12, 16, -1}, {5, 13, 14, -1}, {5, 13, 15, -1}, {5, 13, 16, -1}, {5, 14, 15, -1}, {5, 14, 16, -1}, {5, 15, 16, -1}, {6, 7, 8, -1}, {6, 7, 9, -1}, {6, 7, 10, -1}, {6, 7, 11, -1}, {6, 7, 12, -1}, {6, 7, 13, -1}, {6, 7, 14, -1}, {6, 7, 15, -1}, {6, 7, 16, -1}, {6, 8, 9, -1}, {6, 8, 10, -1}, {6, 8, 11, -1}, {6, 8, 12, -1}, {6, 8, 13, -1}, {6, 8, 14, -1}, {6, 8, 15, -1}, {6, 8, 16, -1}, {6, 9, 10, -1}, {6, 9, 11, -1}, {6, 9, 12, -1}, {6, 9, 13, -1}, {6, 9, 14, -1}, {6, 9, 15, -1}, {6, 9, 16, -1}, {6, 10, 11, -1}, {6, 10, 12, -1}, {6, 10, 13, -1}, {6, 10, 14, -1}, {6, 10, 15, -1}, {6, 10, 16, -1}, {6, 11, 12, -1}, {6, 11, 13, -1}, {6, 11, 14, -1}, {6, 11, 15, -1}, {6, 11, 16, -1}, {6, 12, 13, -1}, {6, 12, 14, -1}, {6, 12, 15, -1}, {6, 12, 16, -1}, {6, 13, 14, -1}, {6, 13, 15, -1}, {6, 13, 16, -1}, {6, 14, 15, -1}, {6, 14, 16, -1}, {6, 15, 16, -1}, {7, 8, 9, -1}, {7, 8, 10, -1}, {7, 8, 11, -1}, {7, 8, 12, -1}, {7, 8, 13, -1}, {7, 8, 14, -1}, {7, 8, 15, -1}, {7, 8, 16, -1}, {7, 9, 10, -1}, {7, 9, 11, -1}, {7, 9, 12, -1}, {7, 9, 13, -1}, {7, 9, 14, -1}, {7, 9, 15, -1}, {7, 9, 16, -1}, {7, 10, 11, -1}, {7, 10, 12, -1}, {7, 10, 13, -1}, {7, 10, 14, -1}, {7, 10, 15, -1}, {7, 10, 16, -1}, {7, 11, 12, -1}, {7, 11, 13, -1}, {7, 11, 14, -1}, {7, 11, 15, -1}, {7, 11, 16, -1}, {7, 12, 13, -1}, {7, 12, 14, -1}, {7, 12, 15, -1}, {7, 12, 16, -1}, {7, 13, 14, -1}, {7, 13, 15, -1}, {7, 13, 16, -1}, {7, 14, 15, -1}, {7, 14, 16, -1}, {7, 15, 16, -1}, {8, 9, 10, -1}, {8, 9, 11, -1}, {8, 9, 12, -1}, {8, 9, 13, -1}, {8, 9, 14, -1}, {8, 9, 15, -1}, {8, 9, 16, -1}, {8, 10, 11, -1}, {8, 10, 12, -1}, {8, 10, 13, -1}, {8, 10, 14, -1}, {8, 10, 15, -1}, {8, 10, 16, -1}, {8, 11, 12, -1}, {8, 11, 13, -1}, {8, 11, 14, -1}, {8, 11, 15, -1}, {8, 11, 16, -1}, {8, 12, 13, -1}, {8, 12, 14, -1}, {8, 12, 15, -1}, {8, 12, 16, -1}, {8, 13, 14, -1}, {8, 13, 15, -1}, {8, 13, 16, -1}, {8, 14, 15, -1}, {8, 14, 16, -1}, {8, 15, 16, -1}, {9, 10, 11, -1}, {9, 10, 12, -1}, {9, 10, 13, -1}, {9, 10, 14, -1}, {9, 10, 15, -1}, {9, 10, 16, -1}, {9, 11, 12, -1}, {9, 11, 13, -1}, {9, 11, 14, -1}, {9, 11, 15, -1}, {9, 11, 16, -1}, {9, 12, 13, -1}, {9, 12, 14, -1}, {9, 12, 15, -1}, {9, 12, 16, -1}, {9, 13, 14, -1}, {9, 13, 15, -1}, {9, 13, 16, -1}, {9, 14, 15, -1}, {9, 14, 16, -1}, {9, 15, 16, -1}, {10, 11, 12, -1}, {10, 11, 13, -1}, {10, 11, 14, -1}, {10, 11, 15, -1}, {10, 11, 16, -1}, {10, 12, 13, -1}, {10, 12, 14, -1}, {10, 12, 15, -1}, {10, 12, 16, -1}, {10, 13, 14, -1}, {10, 13, 15, -1}, {10, 13, 16, -1}, {10, 14, 15, -1}, {10, 14, 16, -1}, {10, 15, 16, -1}, {11, 12, 13, -1}, {11, 12, 14, -1}, {11, 12, 15, -1}, {11, 12, 16, -1}, {11, 13, 14, -1}, {11, 13, 15, -1}, {11, 13, 16, -1}, {11, 14, 15, -1}, {11, 14, 16, -1}, {11, 15, 16, -1}, {12, 13, 14, -1}, {12, 13, 15, -1}, {12, 13, 16, -1}, {12, 14, 15, -1}, {12, 14, 16, -1}, {12, 15, 16, -1}, {13, 14, 15, -1}, {13, 14, 16, -1}, {13, 15, 16, -1}, {14, 15, 16, -1}} ;
56 #define NUM_18_3_COMBS 171
57 int failure_combs_18_3[NUM_18_3_COMBS][4] = {{0, -1, -1, -1}, {1, -1, -1, -1}, {2, -1, -1, -1}, {3, -1, -1, -1}, {4, -1, -1, -1}, {5, -1, -1, -1}, {6, -1, -1, -1}, {7, -1, -1, -1}, {8, -1, -1, -1}, {9, -1, -1, -1}, {10, -1, -1, -1}, {11, -1, -1, -1}, {12, -1, -1, -1}, {13, -1, -1, -1}, {14, -1, -1, -1}, {15, -1, -1, -1}, {16, -1, -1, -1}, {17, -1, -1, -1}, {0, 1, -1, -1}, {0, 2, -1, -1}, {0, 3, -1, -1}, {0, 4, -1, -1}, {0, 5, -1, -1}, {0, 6, -1, -1}, {0, 7, -1, -1}, {0, 8, -1, -1}, {0, 9, -1, -1}, {0, 10, -1, -1}, {0, 11, -1, -1}, {0, 12, -1, -1}, {0, 13, -1, -1}, {0, 14, -1, -1}, {0, 15, -1, -1}, {0, 16, -1, -1}, {0, 17, -1, -1}, {1, 2, -1, -1}, {1, 3, -1, -1}, {1, 4, -1, -1}, {1, 5, -1, -1}, {1, 6, -1, -1}, {1, 7, -1, -1}, {1, 8, -1, -1}, {1, 9, -1, -1}, {1, 10, -1, -1}, {1, 11, -1, -1}, {1, 12, -1, -1}, {1, 13, -1, -1}, {1, 14, -1, -1}, {1, 15, -1, -1}, {1, 16, -1, -1}, {1, 17, -1, -1}, {2, 3, -1, -1}, {2, 4, -1, -1}, {2, 5, -1, -1}, {2, 6, -1, -1}, {2, 7, -1, -1}, {2, 8, -1, -1}, {2, 9, -1, -1}, {2, 10, -1, -1}, {2, 11, -1, -1}, {2, 12, -1, -1}, {2, 13, -1, -1}, {2, 14, -1, -1}, {2, 15, -1, -1}, {2, 16, -1, -1}, {2, 17, -1, -1}, {3, 4, -1, -1}, {3, 5, -1, -1}, {3, 6, -1, -1}, {3, 7, -1, -1}, {3, 8, -1, -1}, {3, 9, -1, -1}, {3, 10, -1, -1}, {3, 11, -1, -1}, {3, 12, -1, -1}, {3, 13, -1, -1}, {3, 14, -1, -1}, {3, 15, -1, -1}, {3, 16, -1, -1}, {3, 17, -1, -1}, {4, 5, -1, -1}, {4, 6, -1, -1}, {4, 7, -1, -1}, {4, 8, -1, -1}, {4, 9, -1, -1}, {4, 10, -1, -1}, {4, 11, -1, -1}, {4, 12, -1, -1}, {4, 13, -1, -1}, {4, 14, -1, -1}, {4, 15, -1, -1}, {4, 16, -1, -1}, {4, 17, -1, -1}, {5, 6, -1, -1}, {5, 7, -1, -1}, {5, 8, -1, -1}, {5, 9, -1, -1}, {5, 10, -1, -1}, {5, 11, -1, -1}, {5, 12, -1, -1}, {5, 13, -1, -1}, {5, 14, -1, -1}, {5, 15, -1, -1}, {5, 16, -1, -1}, {5, 17, -1, -1}, {6, 7, -1, -1}, {6, 8, -1, -1}, {6, 9, -1, -1}, {6, 10, -1, -1}, {6, 11, -1, -1}, {6, 12, -1, -1}, {6, 13, -1, -1}, {6, 14, -1, -1}, {6, 15, -1, -1}, {6, 16, -1, -1}, {6, 17, -1, -1}, {7, 8, -1, -1}, {7, 9, -1, -1}, {7, 10, -1, -1}, {7, 11, -1, -1}, {7, 12, -1, -1}, {7, 13, -1, -1}, {7, 14, -1, -1}, {7, 15, -1, -1}, {7, 16, -1, -1}, {7, 17, -1, -1}, {8, 9, -1, -1}, {8, 10, -1, -1}, {8, 11, -1, -1}, {8, 12, -1, -1}, {8, 13, -1, -1}, {8, 14, -1, -1}, {8, 15, -1, -1}, {8, 16, -1, -1}, {8, 17, -1, -1}, {9, 10, -1, -1}, {9, 11, -1, -1}, {9, 12, -1, -1}, {9, 13, -1, -1}, {9, 14, -1, -1}, {9, 15, -1, -1}, {9, 16, -1, -1}, {9, 17, -1, -1}, {10, 11, -1, -1}, {10, 12, -1, -1}, {10, 13, -1, -1}, {10, 14, -1, -1}, {10, 15, -1, -1}, {10, 16, -1, -1}, {10, 17, -1, -1}, {11, 12, -1, -1}, {11, 13, -1, -1}, {11, 14, -1, -1}, {11, 15, -1, -1}, {11, 16, -1, -1}, {11, 17, -1, -1}, {12, 13, -1, -1}, {12, 14, -1, -1}, {12, 15, -1, -1}, {12, 16, -1, -1}, {12, 17, -1, -1}, {13, 14, -1, -1}, {13, 15, -1, -1}, {13, 16, -1, -1}, {13, 17, -1, -1}, {14, 15, -1, -1}, {14, 16, -1, -1}, {14, 17, -1, -1}, {15, 16, -1, -1}, {15, 17, -1, -1}, {16, 17, -1, -1}} ;
58 #define NUM_18_4_COMBS 987
59 int failure_combs_18_4[NUM_18_4_COMBS][4] = {{0, -1, -1, -1}, {1, -1, -1, -1}, {2, -1, -1, -1}, {3, -1, -1, -1}, {4, -1, -1, -1}, {5, -1, -1, -1}, {6, -1, -1, -1}, {7, -1, -1, -1}, {8, -1, -1, -1}, {9, -1, -1, -1}, {10, -1, -1, -1}, {11, -1, -1, -1}, {12, -1, -1, -1}, {13, -1, -1, -1}, {14, -1, -1, -1}, {15, -1, -1, -1}, {16, -1, -1, -1}, {17, -1, -1, -1}, {0, 1, -1, -1}, {0, 2, -1, -1}, {0, 3, -1, -1}, {0, 4, -1, -1}, {0, 5, -1, -1}, {0, 6, -1, -1}, {0, 7, -1, -1}, {0, 8, -1, -1}, {0, 9, -1, -1}, {0, 10, -1, -1}, {0, 11, -1, -1}, {0, 12, -1, -1}, {0, 13, -1, -1}, {0, 14, -1, -1}, {0, 15, -1, -1}, {0, 16, -1, -1}, {0, 17, -1, -1}, {1, 2, -1, -1}, {1, 3, -1, -1}, {1, 4, -1, -1}, {1, 5, -1, -1}, {1, 6, -1, -1}, {1, 7, -1, -1}, {1, 8, -1, -1}, {1, 9, -1, -1}, {1, 10, -1, -1}, {1, 11, -1, -1}, {1, 12, -1, -1}, {1, 13, -1, -1}, {1, 14, -1, -1}, {1, 15, -1, -1}, {1, 16, -1, -1}, {1, 17, -1, -1}, {2, 3, -1, -1}, {2, 4, -1, -1}, {2, 5, -1, -1}, {2, 6, -1, -1}, {2, 7, -1, -1}, {2, 8, -1, -1}, {2, 9, -1, -1}, {2, 10, -1, -1}, {2, 11, -1, -1}, {2, 12, -1, -1}, {2, 13, -1, -1}, {2, 14, -1, -1}, {2, 15, -1, -1}, {2, 16, -1, -1}, {2, 17, -1, -1}, {3, 4, -1, -1}, {3, 5, -1, -1}, {3, 6, -1, -1}, {3, 7, -1, -1}, {3, 8, -1, -1}, {3, 9, -1, -1}, {3, 10, -1, -1}, {3, 11, -1, -1}, {3, 12, -1, -1}, {3, 13, -1, -1}, {3, 14, -1, -1}, {3, 15, -1, -1}, {3, 16, -1, -1}, {3, 17, -1, -1}, {4, 5, -1, -1}, {4, 6, -1, -1}, {4, 7, -1, -1}, {4, 8, -1, -1}, {4, 9, -1, -1}, {4, 10, -1, -1}, {4, 11, -1, -1}, {4, 12, -1, -1}, {4, 13, -1, -1}, {4, 14, -1, -1}, {4, 15, -1, -1}, {4, 16, -1, -1}, {4, 17, -1, -1}, {5, 6, -1, -1}, {5, 7, -1, -1}, {5, 8, -1, -1}, {5, 9, -1, -1}, {5, 10, -1, -1}, {5, 11, -1, -1}, {5, 12, -1, -1}, {5, 13, -1, -1}, {5, 14, -1, -1}, {5, 15, -1, -1}, {5, 16, -1, -1}, {5, 17, -1, -1}, {6, 7, -1, -1}, {6, 8, -1, -1}, {6, 9, -1, -1}, {6, 10, -1, -1}, {6, 11, -1, -1}, {6, 12, -1, -1}, {6, 13, -1, -1}, {6, 14, -1, -1}, {6, 15, -1, -1}, {6, 16, -1, -1}, {6, 17, -1, -1}, {7, 8, -1, -1}, {7, 9, -1, -1}, {7, 10, -1, -1}, {7, 11, -1, -1}, {7, 12, -1, -1}, {7, 13, -1, -1}, {7, 14, -1, -1}, {7, 15, -1, -1}, {7, 16, -1, -1}, {7, 17, -1, -1}, {8, 9, -1, -1}, {8, 10, -1, -1}, {8, 11, -1, -1}, {8, 12, -1, -1}, {8, 13, -1, -1}, {8, 14, -1, -1}, {8, 15, -1, -1}, {8, 16, -1, -1}, {8, 17, -1, -1}, {9, 10, -1, -1}, {9, 11, -1, -1}, {9, 12, -1, -1}, {9, 13, -1, -1}, {9, 14, -1, -1}, {9, 15, -1, -1}, {9, 16, -1, -1}, {9, 17, -1, -1}, {10, 11, -1, -1}, {10, 12, -1, -1}, {10, 13, -1, -1}, {10, 14, -1, -1}, {10, 15, -1, -1}, {10, 16, -1, -1}, {10, 17, -1, -1}, {11, 12, -1, -1}, {11, 13, -1, -1}, {11, 14, -1, -1}, {11, 15, -1, -1}, {11, 16, -1, -1}, {11, 17, -1, -1}, {12, 13, -1, -1}, {12, 14, -1, -1}, {12, 15, -1, -1}, {12, 16, -1, -1}, {12, 17, -1, -1}, {13, 14, -1, -1}, {13, 15, -1, -1}, {13, 16, -1, -1}, {13, 17, -1, -1}, {14, 15, -1, -1}, {14, 16, -1, -1}, {14, 17, -1, -1}, {15, 16, -1, -1}, {15, 17, -1, -1}, {16, 17, -1, -1}, {0, 1, 2, -1}, {0, 1, 3, -1}, {0, 1, 4, -1}, {0, 1, 5, -1}, {0, 1, 6, -1}, {0, 1, 7, -1}, {0, 1, 8, -1}, {0, 1, 9, -1}, {0, 1, 10, -1}, {0, 1, 11, -1}, {0, 1, 12, -1}, {0, 1, 13, -1}, {0, 1, 14, -1}, {0, 1, 15, -1}, {0, 1, 16, -1}, {0, 1, 17, -1}, {0, 2, 3, -1}, {0, 2, 4, -1}, {0, 2, 5, -1}, {0, 2, 6, -1}, {0, 2, 7, -1}, {0, 2, 8, -1}, {0, 2, 9, -1}, {0, 2, 10, -1}, {0, 2, 11, -1}, {0, 2, 12, -1}, {0, 2, 13, -1}, {0, 2, 14, -1}, {0, 2, 15, -1}, {0, 2, 16, -1}, {0, 2, 17, -1}, {0, 3, 4, -1}, {0, 3, 5, -1}, {0, 3, 6, -1}, {0, 3, 7, -1}, {0, 3, 8, -1}, {0, 3, 9, -1}, {0, 3, 10, -1}, {0, 3, 11, -1}, {0, 3, 12, -1}, {0, 3, 13, -1}, {0, 3, 14, -1}, {0, 3, 15, -1}, {0, 3, 16, -1}, {0, 3, 17, -1}, {0, 4, 5, -1}, {0, 4, 6, -1}, {0, 4, 7, -1}, {0, 4, 8, -1}, {0, 4, 9, -1}, {0, 4, 10, -1}, {0, 4, 11, -1}, {0, 4, 12, -1}, {0, 4, 13, -1}, {0, 4, 14, -1}, {0, 4, 15, -1}, {0, 4, 16, -1}, {0, 4, 17, -1}, {0, 5, 6, -1}, {0, 5, 7, -1}, {0, 5, 8, -1}, {0, 5, 9, -1}, {0, 5, 10, -1}, {0, 5, 11, -1}, {0, 5, 12, -1}, {0, 5, 13, -1}, {0, 5, 14, -1}, {0, 5, 15, -1}, {0, 5, 16, -1}, {0, 5, 17, -1}, {0, 6, 7, -1}, {0, 6, 8, -1}, {0, 6, 9, -1}, {0, 6, 10, -1}, {0, 6, 11, -1}, {0, 6, 12, -1}, {0, 6, 13, -1}, {0, 6, 14, -1}, {0, 6, 15, -1}, {0, 6, 16, -1}, {0, 6, 17, -1}, {0, 7, 8, -1}, {0, 7, 9, -1}, {0, 7, 10, -1}, {0, 7, 11, -1}, {0, 7, 12, -1}, {0, 7, 13, -1}, {0, 7, 14, -1}, {0, 7, 15, -1}, {0, 7, 16, -1}, {0, 7, 17, -1}, {0, 8, 9, -1}, {0, 8, 10, -1}, {0, 8, 11, -1}, {0, 8, 12, -1}, {0, 8, 13, -1}, {0, 8, 14, -1}, {0, 8, 15, -1}, {0, 8, 16, -1}, {0, 8, 17, -1}, {0, 9, 10, -1}, {0, 9, 11, -1}, {0, 9, 12, -1}, {0, 9, 13, -1}, {0, 9, 14, -1}, {0, 9, 15, -1}, {0, 9, 16, -1}, {0, 9, 17, -1}, {0, 10, 11, -1}, {0, 10, 12, -1}, {0, 10, 13, -1}, {0, 10, 14, -1}, {0, 10, 15, -1}, {0, 10, 16, -1}, {0, 10, 17, -1}, {0, 11, 12, -1}, {0, 11, 13, -1}, {0, 11, 14, -1}, {0, 11, 15, -1}, {0, 11, 16, -1}, {0, 11, 17, -1}, {0, 12, 13, -1}, {0, 12, 14, -1}, {0, 12, 15, -1}, {0, 12, 16, -1}, {0, 12, 17, -1}, {0, 13, 14, -1}, {0, 13, 15, -1}, {0, 13, 16, -1}, {0, 13, 17, -1}, {0, 14, 15, -1}, {0, 14, 16, -1}, {0, 14, 17, -1}, {0, 15, 16, -1}, {0, 15, 17, -1}, {0, 16, 17, -1}, {1, 2, 3, -1}, {1, 2, 4, -1}, {1, 2, 5, -1}, {1, 2, 6, -1}, {1, 2, 7, -1}, {1, 2, 8, -1}, {1, 2, 9, -1}, {1, 2, 10, -1}, {1, 2, 11, -1}, {1, 2, 12, -1}, {1, 2, 13, -1}, {1, 2, 14, -1}, {1, 2, 15, -1}, {1, 2, 16, -1}, {1, 2, 17, -1}, {1, 3, 4, -1}, {1, 3, 5, -1}, {1, 3, 6, -1}, {1, 3, 7, -1}, {1, 3, 8, -1}, {1, 3, 9, -1}, {1, 3, 10, -1}, {1, 3, 11, -1}, {1, 3, 12, -1}, {1, 3, 13, -1}, {1, 3, 14, -1}, {1, 3, 15, -1}, {1, 3, 16, -1}, {1, 3, 17, -1}, {1, 4, 5, -1}, {1, 4, 6, -1}, {1, 4, 7, -1}, {1, 4, 8, -1}, {1, 4, 9, -1}, {1, 4, 10, -1}, {1, 4, 11, -1}, {1, 4, 12, -1}, {1, 4, 13, -1}, {1, 4, 14, -1}, {1, 4, 15, -1}, {1, 4, 16, -1}, {1, 4, 17, -1}, {1, 5, 6, -1}, {1, 5, 7, -1}, {1, 5, 8, -1}, {1, 5, 9, -1}, {1, 5, 10, -1}, {1, 5, 11, -1}, {1, 5, 12, -1}, {1, 5, 13, -1}, {1, 5, 14, -1}, {1, 5, 15, -1}, {1, 5, 16, -1}, {1, 5, 17, -1}, {1, 6, 7, -1}, {1, 6, 8, -1}, {1, 6, 9, -1}, {1, 6, 10, -1}, {1, 6, 11, -1}, {1, 6, 12, -1}, {1, 6, 13, -1}, {1, 6, 14, -1}, {1, 6, 15, -1}, {1, 6, 16, -1}, {1, 6, 17, -1}, {1, 7, 8, -1}, {1, 7, 9, -1}, {1, 7, 10, -1}, {1, 7, 11, -1}, {1, 7, 12, -1}, {1, 7, 13, -1}, {1, 7, 14, -1}, {1, 7, 15, -1}, {1, 7, 16, -1}, {1, 7, 17, -1}, {1, 8, 9, -1}, {1, 8, 10, -1}, {1, 8, 11, -1}, {1, 8, 12, -1}, {1, 8, 13, -1}, {1, 8, 14, -1}, {1, 8, 15, -1}, {1, 8, 16, -1}, {1, 8, 17, -1}, {1, 9, 10, -1}, {1, 9, 11, -1}, {1, 9, 12, -1}, {1, 9, 13, -1}, {1, 9, 14, -1}, {1, 9, 15, -1}, {1, 9, 16, -1}, {1, 9, 17, -1}, {1, 10, 11, -1}, {1, 10, 12, -1}, {1, 10, 13, -1}, {1, 10, 14, -1}, {1, 10, 15, -1}, {1, 10, 16, -1}, {1, 10, 17, -1}, {1, 11, 12, -1}, {1, 11, 13, -1}, {1, 11, 14, -1}, {1, 11, 15, -1}, {1, 11, 16, -1}, {1, 11, 17, -1}, {1, 12, 13, -1}, {1, 12, 14, -1}, {1, 12, 15, -1}, {1, 12, 16, -1}, {1, 12, 17, -1}, {1, 13, 14, -1}, {1, 13, 15, -1}, {1, 13, 16, -1}, {1, 13, 17, -1}, {1, 14, 15, -1}, {1, 14, 16, -1}, {1, 14, 17, -1}, {1, 15, 16, -1}, {1, 15, 17, -1}, {1, 16, 17, -1}, {2, 3, 4, -1}, {2, 3, 5, -1}, {2, 3, 6, -1}, {2, 3, 7, -1}, {2, 3, 8, -1}, {2, 3, 9, -1}, {2, 3, 10, -1}, {2, 3, 11, -1}, {2, 3, 12, -1}, {2, 3, 13, -1}, {2, 3, 14, -1}, {2, 3, 15, -1}, {2, 3, 16, -1}, {2, 3, 17, -1}, {2, 4, 5, -1}, {2, 4, 6, -1}, {2, 4, 7, -1}, {2, 4, 8, -1}, {2, 4, 9, -1}, {2, 4, 10, -1}, {2, 4, 11, -1}, {2, 4, 12, -1}, {2, 4, 13, -1}, {2, 4, 14, -1}, {2, 4, 15, -1}, {2, 4, 16, -1}, {2, 4, 17, -1}, {2, 5, 6, -1}, {2, 5, 7, -1}, {2, 5, 8, -1}, {2, 5, 9, -1}, {2, 5, 10, -1}, {2, 5, 11, -1}, {2, 5, 12, -1}, {2, 5, 13, -1}, {2, 5, 14, -1}, {2, 5, 15, -1}, {2, 5, 16, -1}, {2, 5, 17, -1}, {2, 6, 7, -1}, {2, 6, 8, -1}, {2, 6, 9, -1}, {2, 6, 10, -1}, {2, 6, 11, -1}, {2, 6, 12, -1}, {2, 6, 13, -1}, {2, 6, 14, -1}, {2, 6, 15, -1}, {2, 6, 16, -1}, {2, 6, 17, -1}, {2, 7, 8, -1}, {2, 7, 9, -1}, {2, 7, 10, -1}, {2, 7, 11, -1}, {2, 7, 12, -1}, {2, 7, 13, -1}, {2, 7, 14, -1}, {2, 7, 15, -1}, {2, 7, 16, -1}, {2, 7, 17, -1}, {2, 8, 9, -1}, {2, 8, 10, -1}, {2, 8, 11, -1}, {2, 8, 12, -1}, {2, 8, 13, -1}, {2, 8, 14, -1}, {2, 8, 15, -1}, {2, 8, 16, -1}, {2, 8, 17, -1}, {2, 9, 10, -1}, {2, 9, 11, -1}, {2, 9, 12, -1}, {2, 9, 13, -1}, {2, 9, 14, -1}, {2, 9, 15, -1}, {2, 9, 16, -1}, {2, 9, 17, -1}, {2, 10, 11, -1}, {2, 10, 12, -1}, {2, 10, 13, -1}, {2, 10, 14, -1}, {2, 10, 15, -1}, {2, 10, 16, -1}, {2, 10, 17, -1}, {2, 11, 12, -1}, {2, 11, 13, -1}, {2, 11, 14, -1}, {2, 11, 15, -1}, {2, 11, 16, -1}, {2, 11, 17, -1}, {2, 12, 13, -1}, {2, 12, 14, -1}, {2, 12, 15, -1}, {2, 12, 16, -1}, {2, 12, 17, -1}, {2, 13, 14, -1}, {2, 13, 15, -1}, {2, 13, 16, -1}, {2, 13, 17, -1}, {2, 14, 15, -1}, {2, 14, 16, -1}, {2, 14, 17, -1}, {2, 15, 16, -1}, {2, 15, 17, -1}, {2, 16, 17, -1}, {3, 4, 5, -1}, {3, 4, 6, -1}, {3, 4, 7, -1}, {3, 4, 8, -1}, {3, 4, 9, -1}, {3, 4, 10, -1}, {3, 4, 11, -1}, {3, 4, 12, -1}, {3, 4, 13, -1}, {3, 4, 14, -1}, {3, 4, 15, -1}, {3, 4, 16, -1}, {3, 4, 17, -1}, {3, 5, 6, -1}, {3, 5, 7, -1}, {3, 5, 8, -1}, {3, 5, 9, -1}, {3, 5, 10, -1}, {3, 5, 11, -1}, {3, 5, 12, -1}, {3, 5, 13, -1}, {3, 5, 14, -1}, {3, 5, 15, -1}, {3, 5, 16, -1}, {3, 5, 17, -1}, {3, 6, 7, -1}, {3, 6, 8, -1}, {3, 6, 9, -1}, {3, 6, 10, -1}, {3, 6, 11, -1}, {3, 6, 12, -1}, {3, 6, 13, -1}, {3, 6, 14, -1}, {3, 6, 15, -1}, {3, 6, 16, -1}, {3, 6, 17, -1}, {3, 7, 8, -1}, {3, 7, 9, -1}, {3, 7, 10, -1}, {3, 7, 11, -1}, {3, 7, 12, -1}, {3, 7, 13, -1}, {3, 7, 14, -1}, {3, 7, 15, -1}, {3, 7, 16, -1}, {3, 7, 17, -1}, {3, 8, 9, -1}, {3, 8, 10, -1}, {3, 8, 11, -1}, {3, 8, 12, -1}, {3, 8, 13, -1}, {3, 8, 14, -1}, {3, 8, 15, -1}, {3, 8, 16, -1}, {3, 8, 17, -1}, {3, 9, 10, -1}, {3, 9, 11, -1}, {3, 9, 12, -1}, {3, 9, 13, -1}, {3, 9, 14, -1}, {3, 9, 15, -1}, {3, 9, 16, -1}, {3, 9, 17, -1}, {3, 10, 11, -1}, {3, 10, 12, -1}, {3, 10, 13, -1}, {3, 10, 14, -1}, {3, 10, 15, -1}, {3, 10, 16, -1}, {3, 10, 17, -1}, {3, 11, 12, -1}, {3, 11, 13, -1}, {3, 11, 14, -1}, {3, 11, 15, -1}, {3, 11, 16, -1}, {3, 11, 17, -1}, {3, 12, 13, -1}, {3, 12, 14, -1}, {3, 12, 15, -1}, {3, 12, 16, -1}, {3, 12, 17, -1}, {3, 13, 14, -1}, {3, 13, 15, -1}, {3, 13, 16, -1}, {3, 13, 17, -1}, {3, 14, 15, -1}, {3, 14, 16, -1}, {3, 14, 17, -1}, {3, 15, 16, -1}, {3, 15, 17, -1}, {3, 16, 17, -1}, {4, 5, 6, -1}, {4, 5, 7, -1}, {4, 5, 8, -1}, {4, 5, 9, -1}, {4, 5, 10, -1}, {4, 5, 11, -1}, {4, 5, 12, -1}, {4, 5, 13, -1}, {4, 5, 14, -1}, {4, 5, 15, -1}, {4, 5, 16, -1}, {4, 5, 17, -1}, {4, 6, 7, -1}, {4, 6, 8, -1}, {4, 6, 9, -1}, {4, 6, 10, -1}, {4, 6, 11, -1}, {4, 6, 12, -1}, {4, 6, 13, -1}, {4, 6, 14, -1}, {4, 6, 15, -1}, {4, 6, 16, -1}, {4, 6, 17, -1}, {4, 7, 8, -1}, {4, 7, 9, -1}, {4, 7, 10, -1}, {4, 7, 11, -1}, {4, 7, 12, -1}, {4, 7, 13, -1}, {4, 7, 14, -1}, {4, 7, 15, -1}, {4, 7, 16, -1}, {4, 7, 17, -1}, {4, 8, 9, -1}, {4, 8, 10, -1}, {4, 8, 11, -1}, {4, 8, 12, -1}, {4, 8, 13, -1}, {4, 8, 14, -1}, {4, 8, 15, -1}, {4, 8, 16, -1}, {4, 8, 17, -1}, {4, 9, 10, -1}, {4, 9, 11, -1}, {4, 9, 12, -1}, {4, 9, 13, -1}, {4, 9, 14, -1}, {4, 9, 15, -1}, {4, 9, 16, -1}, {4, 9, 17, -1}, {4, 10, 11, -1}, {4, 10, 12, -1}, {4, 10, 13, -1}, {4, 10, 14, -1}, {4, 10, 15, -1}, {4, 10, 16, -1}, {4, 10, 17, -1}, {4, 11, 12, -1}, {4, 11, 13, -1}, {4, 11, 14, -1}, {4, 11, 15, -1}, {4, 11, 16, -1}, {4, 11, 17, -1}, {4, 12, 13, -1}, {4, 12, 14, -1}, {4, 12, 15, -1}, {4, 12, 16, -1}, {4, 12, 17, -1}, {4, 13, 14, -1}, {4, 13, 15, -1}, {4, 13, 16, -1}, {4, 13, 17, -1}, {4, 14, 15, -1}, {4, 14, 16, -1}, {4, 14, 17, -1}, {4, 15, 16, -1}, {4, 15, 17, -1}, {4, 16, 17, -1}, {5, 6, 7, -1}, {5, 6, 8, -1}, {5, 6, 9, -1}, {5, 6, 10, -1}, {5, 6, 11, -1}, {5, 6, 12, -1}, {5, 6, 13, -1}, {5, 6, 14, -1}, {5, 6, 15, -1}, {5, 6, 16, -1}, {5, 6, 17, -1}, {5, 7, 8, -1}, {5, 7, 9, -1}, {5, 7, 10, -1}, {5, 7, 11, -1}, {5, 7, 12, -1}, {5, 7, 13, -1}, {5, 7, 14, -1}, {5, 7, 15, -1}, {5, 7, 16, -1}, {5, 7, 17, -1}, {5, 8, 9, -1}, {5, 8, 10, -1}, {5, 8, 11, -1}, {5, 8, 12, -1}, {5, 8, 13, -1}, {5, 8, 14, -1}, {5, 8, 15, -1}, {5, 8, 16, -1}, {5, 8, 17, -1}, {5, 9, 10, -1}, {5, 9, 11, -1}, {5, 9, 12, -1}, {5, 9, 13, -1}, {5, 9, 14, -1}, {5, 9, 15, -1}, {5, 9, 16, -1}, {5, 9, 17, -1}, {5, 10, 11, -1}, {5, 10, 12, -1}, {5, 10, 13, -1}, {5, 10, 14, -1}, {5, 10, 15, -1}, {5, 10, 16, -1}, {5, 10, 17, -1}, {5, 11, 12, -1}, {5, 11, 13, -1}, {5, 11, 14, -1}, {5, 11, 15, -1}, {5, 11, 16, -1}, {5, 11, 17, -1}, {5, 12, 13, -1}, {5, 12, 14, -1}, {5, 12, 15, -1}, {5, 12, 16, -1}, {5, 12, 17, -1}, {5, 13, 14, -1}, {5, 13, 15, -1}, {5, 13, 16, -1}, {5, 13, 17, -1}, {5, 14, 15, -1}, {5, 14, 16, -1}, {5, 14, 17, -1}, {5, 15, 16, -1}, {5, 15, 17, -1}, {5, 16, 17, -1}, {6, 7, 8, -1}, {6, 7, 9, -1}, {6, 7, 10, -1}, {6, 7, 11, -1}, {6, 7, 12, -1}, {6, 7, 13, -1}, {6, 7, 14, -1}, {6, 7, 15, -1}, {6, 7, 16, -1}, {6, 7, 17, -1}, {6, 8, 9, -1}, {6, 8, 10, -1}, {6, 8, 11, -1}, {6, 8, 12, -1}, {6, 8, 13, -1}, {6, 8, 14, -1}, {6, 8, 15, -1}, {6, 8, 16, -1}, {6, 8, 17, -1}, {6, 9, 10, -1}, {6, 9, 11, -1}, {6, 9, 12, -1}, {6, 9, 13, -1}, {6, 9, 14, -1}, {6, 9, 15, -1}, {6, 9, 16, -1}, {6, 9, 17, -1}, {6, 10, 11, -1}, {6, 10, 12, -1}, {6, 10, 13, -1}, {6, 10, 14, -1}, {6, 10, 15, -1}, {6, 10, 16, -1}, {6, 10, 17, -1}, {6, 11, 12, -1}, {6, 11, 13, -1}, {6, 11, 14, -1}, {6, 11, 15, -1}, {6, 11, 16, -1}, {6, 11, 17, -1}, {6, 12, 13, -1}, {6, 12, 14, -1}, {6, 12, 15, -1}, {6, 12, 16, -1}, {6, 12, 17, -1}, {6, 13, 14, -1}, {6, 13, 15, -1}, {6, 13, 16, -1}, {6, 13, 17, -1}, {6, 14, 15, -1}, {6, 14, 16, -1}, {6, 14, 17, -1}, {6, 15, 16, -1}, {6, 15, 17, -1}, {6, 16, 17, -1}, {7, 8, 9, -1}, {7, 8, 10, -1}, {7, 8, 11, -1}, {7, 8, 12, -1}, {7, 8, 13, -1}, {7, 8, 14, -1}, {7, 8, 15, -1}, {7, 8, 16, -1}, {7, 8, 17, -1}, {7, 9, 10, -1}, {7, 9, 11, -1}, {7, 9, 12, -1}, {7, 9, 13, -1}, {7, 9, 14, -1}, {7, 9, 15, -1}, {7, 9, 16, -1}, {7, 9, 17, -1}, {7, 10, 11, -1}, {7, 10, 12, -1}, {7, 10, 13, -1}, {7, 10, 14, -1}, {7, 10, 15, -1}, {7, 10, 16, -1}, {7, 10, 17, -1}, {7, 11, 12, -1}, {7, 11, 13, -1}, {7, 11, 14, -1}, {7, 11, 15, -1}, {7, 11, 16, -1}, {7, 11, 17, -1}, {7, 12, 13, -1}, {7, 12, 14, -1}, {7, 12, 15, -1}, {7, 12, 16, -1}, {7, 12, 17, -1}, {7, 13, 14, -1}, {7, 13, 15, -1}, {7, 13, 16, -1}, {7, 13, 17, -1}, {7, 14, 15, -1}, {7, 14, 16, -1}, {7, 14, 17, -1}, {7, 15, 16, -1}, {7, 15, 17, -1}, {7, 16, 17, -1}, {8, 9, 10, -1}, {8, 9, 11, -1}, {8, 9, 12, -1}, {8, 9, 13, -1}, {8, 9, 14, -1}, {8, 9, 15, -1}, {8, 9, 16, -1}, {8, 9, 17, -1}, {8, 10, 11, -1}, {8, 10, 12, -1}, {8, 10, 13, -1}, {8, 10, 14, -1}, {8, 10, 15, -1}, {8, 10, 16, -1}, {8, 10, 17, -1}, {8, 11, 12, -1}, {8, 11, 13, -1}, {8, 11, 14, -1}, {8, 11, 15, -1}, {8, 11, 16, -1}, {8, 11, 17, -1}, {8, 12, 13, -1}, {8, 12, 14, -1}, {8, 12, 15, -1}, {8, 12, 16, -1}, {8, 12, 17, -1}, {8, 13, 14, -1}, {8, 13, 15, -1}, {8, 13, 16, -1}, {8, 13, 17, -1}, {8, 14, 15, -1}, {8, 14, 16, -1}, {8, 14, 17, -1}, {8, 15, 16, -1}, {8, 15, 17, -1}, {8, 16, 17, -1}, {9, 10, 11, -1}, {9, 10, 12, -1}, {9, 10, 13, -1}, {9, 10, 14, -1}, {9, 10, 15, -1}, {9, 10, 16, -1}, {9, 10, 17, -1}, {9, 11, 12, -1}, {9, 11, 13, -1}, {9, 11, 14, -1}, {9, 11, 15, -1}, {9, 11, 16, -1}, {9, 11, 17, -1}, {9, 12, 13, -1}, {9, 12, 14, -1}, {9, 12, 15, -1}, {9, 12, 16, -1}, {9, 12, 17, -1}, {9, 13, 14, -1}, {9, 13, 15, -1}, {9, 13, 16, -1}, {9, 13, 17, -1}, {9, 14, 15, -1}, {9, 14, 16, -1}, {9, 14, 17, -1}, {9, 15, 16, -1}, {9, 15, 17, -1}, {9, 16, 17, -1}, {10, 11, 12, -1}, {10, 11, 13, -1}, {10, 11, 14, -1}, {10, 11, 15, -1}, {10, 11, 16, -1}, {10, 11, 17, -1}, {10, 12, 13, -1}, {10, 12, 14, -1}, {10, 12, 15, -1}, {10, 12, 16, -1}, {10, 12, 17, -1}, {10, 13, 14, -1}, {10, 13, 15, -1}, {10, 13, 16, -1}, {10, 13, 17, -1}, {10, 14, 15, -1}, {10, 14, 16, -1}, {10, 14, 17, -1}, {10, 15, 16, -1}, {10, 15, 17, -1}, {10, 16, 17, -1}, {11, 12, 13, -1}, {11, 12, 14, -1}, {11, 12, 15, -1}, {11, 12, 16, -1}, {11, 12, 17, -1}, {11, 13, 14, -1}, {11, 13, 15, -1}, {11, 13, 16, -1}, {11, 13, 17, -1}, {11, 14, 15, -1}, {11, 14, 16, -1}, {11, 14, 17, -1}, {11, 15, 16, -1}, {11, 15, 17, -1}, {11, 16, 17, -1}, {12, 13, 14, -1}, {12, 13, 15, -1}, {12, 13, 16, -1}, {12, 13, 17, -1}, {12, 14, 15, -1}, {12, 14, 16, -1}, {12, 14, 17, -1}, {12, 15, 16, -1}, {12, 15, 17, -1}, {12, 16, 17, -1}, {13, 14, 15, -1}, {13, 14, 16, -1}, {13, 14, 17, -1}, {13, 15, 16, -1}, {13, 15, 17, -1}, {13, 16, 17, -1}, {14, 15, 16, -1}, {14, 15, 17, -1}, {14, 16, 17, -1}, {15, 16, 17, -1}} ;
60 #define NUM_19_3_COMBS 190
61 int failure_combs_19_3[NUM_19_3_COMBS][4] = {{0, -1, -1, -1}, {1, -1, -1, -1}, {2, -1, -1, -1}, {3, -1, -1, -1}, {4, -1, -1, -1}, {5, -1, -1, -1}, {6, -1, -1, -1}, {7, -1, -1, -1}, {8, -1, -1, -1}, {9, -1, -1, -1}, {10, -1, -1, -1}, {11, -1, -1, -1}, {12, -1, -1, -1}, {13, -1, -1, -1}, {14, -1, -1, -1}, {15, -1, -1, -1}, {16, -1, -1, -1}, {17, -1, -1, -1}, {18, -1, -1, -1}, {0, 1, -1, -1}, {0, 2, -1, -1}, {0, 3, -1, -1}, {0, 4, -1, -1}, {0, 5, -1, -1}, {0, 6, -1, -1}, {0, 7, -1, -1}, {0, 8, -1, -1}, {0, 9, -1, -1}, {0, 10, -1, -1}, {0, 11, -1, -1}, {0, 12, -1, -1}, {0, 13, -1, -1}, {0, 14, -1, -1}, {0, 15, -1, -1}, {0, 16, -1, -1}, {0, 17, -1, -1}, {0, 18, -1, -1}, {1, 2, -1, -1}, {1, 3, -1, -1}, {1, 4, -1, -1}, {1, 5, -1, -1}, {1, 6, -1, -1}, {1, 7, -1, -1}, {1, 8, -1, -1}, {1, 9, -1, -1}, {1, 10, -1, -1}, {1, 11, -1, -1}, {1, 12, -1, -1}, {1, 13, -1, -1}, {1, 14, -1, -1}, {1, 15, -1, -1}, {1, 16, -1, -1}, {1, 17, -1, -1}, {1, 18, -1, -1}, {2, 3, -1, -1}, {2, 4, -1, -1}, {2, 5, -1, -1}, {2, 6, -1, -1}, {2, 7, -1, -1}, {2, 8, -1, -1}, {2, 9, -1, -1}, {2, 10, -1, -1}, {2, 11, -1, -1}, {2, 12, -1, -1}, {2, 13, -1, -1}, {2, 14, -1, -1}, {2, 15, -1, -1}, {2, 16, -1, -1}, {2, 17, -1, -1}, {2, 18, -1, -1}, {3, 4, -1, -1}, {3, 5, -1, -1}, {3, 6, -1, -1}, {3, 7, -1, -1}, {3, 8, -1, -1}, {3, 9, -1, -1}, {3, 10, -1, -1}, {3, 11, -1, -1}, {3, 12, -1, -1}, {3, 13, -1, -1}, {3, 14, -1, -1}, {3, 15, -1, -1}, {3, 16, -1, -1}, {3, 17, -1, -1}, {3, 18, -1, -1}, {4, 5, -1, -1}, {4, 6, -1, -1}, {4, 7, -1, -1}, {4, 8, -1, -1}, {4, 9, -1, -1}, {4, 10, -1, -1}, {4, 11, -1, -1}, {4, 12, -1, -1}, {4, 13, -1, -1}, {4, 14, -1, -1}, {4, 15, -1, -1}, {4, 16, -1, -1}, {4, 17, -1, -1}, {4, 18, -1, -1}, {5, 6, -1, -1}, {5, 7, -1, -1}, {5, 8, -1, -1}, {5, 9, -1, -1}, {5, 10, -1, -1}, {5, 11, -1, -1}, {5, 12, -1, -1}, {5, 13, -1, -1}, {5, 14, -1, -1}, {5, 15, -1, -1}, {5, 16, -1, -1}, {5, 17, -1, -1}, {5, 18, -1, -1}, {6, 7, -1, -1}, {6, 8, -1, -1}, {6, 9, -1, -1}, {6, 10, -1, -1}, {6, 11, -1, -1}, {6, 12, -1, -1}, {6, 13, -1, -1}, {6, 14, -1, -1}, {6, 15, -1, -1}, {6, 16, -1, -1}, {6, 17, -1, -1}, {6, 18, -1, -1}, {7, 8, -1, -1}, {7, 9, -1, -1}, {7, 10, -1, -1}, {7, 11, -1, -1}, {7, 12, -1, -1}, {7, 13, -1, -1}, {7, 14, -1, -1}, {7, 15, -1, -1}, {7, 16, -1, -1}, {7, 17, -1, -1}, {7, 18, -1, -1}, {8, 9, -1, -1}, {8, 10, -1, -1}, {8, 11, -1, -1}, {8, 12, -1, -1}, {8, 13, -1, -1}, {8, 14, -1, -1}, {8, 15, -1, -1}, {8, 16, -1, -1}, {8, 17, -1, -1}, {8, 18, -1, -1}, {9, 10, -1, -1}, {9, 11, -1, -1}, {9, 12, -1, -1}, {9, 13, -1, -1}, {9, 14, -1, -1}, {9, 15, -1, -1}, {9, 16, -1, -1}, {9, 17, -1, -1}, {9, 18, -1, -1}, {10, 11, -1, -1}, {10, 12, -1, -1}, {10, 13, -1, -1}, {10, 14, -1, -1}, {10, 15, -1, -1}, {10, 16, -1, -1}, {10, 17, -1, -1}, {10, 18, -1, -1}, {11, 12, -1, -1}, {11, 13, -1, -1}, {11, 14, -1, -1}, {11, 15, -1, -1}, {11, 16, -1, -1}, {11, 17, -1, -1}, {11, 18, -1, -1}, {12, 13, -1, -1}, {12, 14, -1, -1}, {12, 15, -1, -1}, {12, 16, -1, -1}, {12, 17, -1, -1}, {12, 18, -1, -1}, {13, 14, -1, -1}, {13, 15, -1, -1}, {13, 16, -1, -1}, {13, 17, -1, -1}, {13, 18, -1, -1}, {14, 15, -1, -1}, {14, 16, -1, -1}, {14, 17, -1, -1}, {14, 18, -1, -1}, {15, 16, -1, -1}, {15, 17, -1, -1}, {15, 18, -1, -1}, {16, 17, -1, -1}, {16, 18, -1, -1}, {17, 18, -1, -1}} ;
62 #define NUM_19_4_COMBS 1159
63 int failure_combs_19_4[NUM_19_4_COMBS][4] = {{0, -1, -1, -1}, {1, -1, -1, -1}, {2, -1, -1, -1}, {3, -1, -1, -1}, {4, -1, -1, -1}, {5, -1, -1, -1}, {6, -1, -1, -1}, {7, -1, -1, -1}, {8, -1, -1, -1}, {9, -1, -1, -1}, {10, -1, -1, -1}, {11, -1, -1, -1}, {12, -1, -1, -1}, {13, -1, -1, -1}, {14, -1, -1, -1}, {15, -1, -1, -1}, {16, -1, -1, -1}, {17, -1, -1, -1}, {18, -1, -1, -1}, {0, 1, -1, -1}, {0, 2, -1, -1}, {0, 3, -1, -1}, {0, 4, -1, -1}, {0, 5, -1, -1}, {0, 6, -1, -1}, {0, 7, -1, -1}, {0, 8, -1, -1}, {0, 9, -1, -1}, {0, 10, -1, -1}, {0, 11, -1, -1}, {0, 12, -1, -1}, {0, 13, -1, -1}, {0, 14, -1, -1}, {0, 15, -1, -1}, {0, 16, -1, -1}, {0, 17, -1, -1}, {0, 18, -1, -1}, {1, 2, -1, -1}, {1, 3, -1, -1}, {1, 4, -1, -1}, {1, 5, -1, -1}, {1, 6, -1, -1}, {1, 7, -1, -1}, {1, 8, -1, -1}, {1, 9, -1, -1}, {1, 10, -1, -1}, {1, 11, -1, -1}, {1, 12, -1, -1}, {1, 13, -1, -1}, {1, 14, -1, -1}, {1, 15, -1, -1}, {1, 16, -1, -1}, {1, 17, -1, -1}, {1, 18, -1, -1}, {2, 3, -1, -1}, {2, 4, -1, -1}, {2, 5, -1, -1}, {2, 6, -1, -1}, {2, 7, -1, -1}, {2, 8, -1, -1}, {2, 9, -1, -1}, {2, 10, -1, -1}, {2, 11, -1, -1}, {2, 12, -1, -1}, {2, 13, -1, -1}, {2, 14, -1, -1}, {2, 15, -1, -1}, {2, 16, -1, -1}, {2, 17, -1, -1}, {2, 18, -1, -1}, {3, 4, -1, -1}, {3, 5, -1, -1}, {3, 6, -1, -1}, {3, 7, -1, -1}, {3, 8, -1, -1}, {3, 9, -1, -1}, {3, 10, -1, -1}, {3, 11, -1, -1}, {3, 12, -1, -1}, {3, 13, -1, -1}, {3, 14, -1, -1}, {3, 15, -1, -1}, {3, 16, -1, -1}, {3, 17, -1, -1}, {3, 18, -1, -1}, {4, 5, -1, -1}, {4, 6, -1, -1}, {4, 7, -1, -1}, {4, 8, -1, -1}, {4, 9, -1, -1}, {4, 10, -1, -1}, {4, 11, -1, -1}, {4, 12, -1, -1}, {4, 13, -1, -1}, {4, 14, -1, -1}, {4, 15, -1, -1}, {4, 16, -1, -1}, {4, 17, -1, -1}, {4, 18, -1, -1}, {5, 6, -1, -1}, {5, 7, -1, -1}, {5, 8, -1, -1}, {5, 9, -1, -1}, {5, 10, -1, -1}, {5, 11, -1, -1}, {5, 12, -1, -1}, {5, 13, -1, -1}, {5, 14, -1, -1}, {5, 15, -1, -1}, {5, 16, -1, -1}, {5, 17, -1, -1}, {5, 18, -1, -1}, {6, 7, -1, -1}, {6, 8, -1, -1}, {6, 9, -1, -1}, {6, 10, -1, -1}, {6, 11, -1, -1}, {6, 12, -1, -1}, {6, 13, -1, -1}, {6, 14, -1, -1}, {6, 15, -1, -1}, {6, 16, -1, -1}, {6, 17, -1, -1}, {6, 18, -1, -1}, {7, 8, -1, -1}, {7, 9, -1, -1}, {7, 10, -1, -1}, {7, 11, -1, -1}, {7, 12, -1, -1}, {7, 13, -1, -1}, {7, 14, -1, -1}, {7, 15, -1, -1}, {7, 16, -1, -1}, {7, 17, -1, -1}, {7, 18, -1, -1}, {8, 9, -1, -1}, {8, 10, -1, -1}, {8, 11, -1, -1}, {8, 12, -1, -1}, {8, 13, -1, -1}, {8, 14, -1, -1}, {8, 15, -1, -1}, {8, 16, -1, -1}, {8, 17, -1, -1}, {8, 18, -1, -1}, {9, 10, -1, -1}, {9, 11, -1, -1}, {9, 12, -1, -1}, {9, 13, -1, -1}, {9, 14, -1, -1}, {9, 15, -1, -1}, {9, 16, -1, -1}, {9, 17, -1, -1}, {9, 18, -1, -1}, {10, 11, -1, -1}, {10, 12, -1, -1}, {10, 13, -1, -1}, {10, 14, -1, -1}, {10, 15, -1, -1}, {10, 16, -1, -1}, {10, 17, -1, -1}, {10, 18, -1, -1}, {11, 12, -1, -1}, {11, 13, -1, -1}, {11, 14, -1, -1}, {11, 15, -1, -1}, {11, 16, -1, -1}, {11, 17, -1, -1}, {11, 18, -1, -1}, {12, 13, -1, -1}, {12, 14, -1, -1}, {12, 15, -1, -1}, {12, 16, -1, -1}, {12, 17, -1, -1}, {12, 18, -1, -1}, {13, 14, -1, -1}, {13, 15, -1, -1}, {13, 16, -1, -1}, {13, 17, -1, -1}, {13, 18, -1, -1}, {14, 15, -1, -1}, {14, 16, -1, -1}, {14, 17, -1, -1}, {14, 18, -1, -1}, {15, 16, -1, -1}, {15, 17, -1, -1}, {15, 18, -1, -1}, {16, 17, -1, -1}, {16, 18, -1, -1}, {17, 18, -1, -1}, {0, 1, 2, -1}, {0, 1, 3, -1}, {0, 1, 4, -1}, {0, 1, 5, -1}, {0, 1, 6, -1}, {0, 1, 7, -1}, {0, 1, 8, -1}, {0, 1, 9, -1}, {0, 1, 10, -1}, {0, 1, 11, -1}, {0, 1, 12, -1}, {0, 1, 13, -1}, {0, 1, 14, -1}, {0, 1, 15, -1}, {0, 1, 16, -1}, {0, 1, 17, -1}, {0, 1, 18, -1}, {0, 2, 3, -1}, {0, 2, 4, -1}, {0, 2, 5, -1}, {0, 2, 6, -1}, {0, 2, 7, -1}, {0, 2, 8, -1}, {0, 2, 9, -1}, {0, 2, 10, -1}, {0, 2, 11, -1}, {0, 2, 12, -1}, {0, 2, 13, -1}, {0, 2, 14, -1}, {0, 2, 15, -1}, {0, 2, 16, -1}, {0, 2, 17, -1}, {0, 2, 18, -1}, {0, 3, 4, -1}, {0, 3, 5, -1}, {0, 3, 6, -1}, {0, 3, 7, -1}, {0, 3, 8, -1}, {0, 3, 9, -1}, {0, 3, 10, -1}, {0, 3, 11, -1}, {0, 3, 12, -1}, {0, 3, 13, -1}, {0, 3, 14, -1}, {0, 3, 15, -1}, {0, 3, 16, -1}, {0, 3, 17, -1}, {0, 3, 18, -1}, {0, 4, 5, -1}, {0, 4, 6, -1}, {0, 4, 7, -1}, {0, 4, 8, -1}, {0, 4, 9, -1}, {0, 4, 10, -1}, {0, 4, 11, -1}, {0, 4, 12, -1}, {0, 4, 13, -1}, {0, 4, 14, -1}, {0, 4, 15, -1}, {0, 4, 16, -1}, {0, 4, 17, -1}, {0, 4, 18, -1}, {0, 5, 6, -1}, {0, 5, 7, -1}, {0, 5, 8, -1}, {0, 5, 9, -1}, {0, 5, 10, -1}, {0, 5, 11, -1}, {0, 5, 12, -1}, {0, 5, 13, -1}, {0, 5, 14, -1}, {0, 5, 15, -1}, {0, 5, 16, -1}, {0, 5, 17, -1}, {0, 5, 18, -1}, {0, 6, 7, -1}, {0, 6, 8, -1}, {0, 6, 9, -1}, {0, 6, 10, -1}, {0, 6, 11, -1}, {0, 6, 12, -1}, {0, 6, 13, -1}, {0, 6, 14, -1}, {0, 6, 15, -1}, {0, 6, 16, -1}, {0, 6, 17, -1}, {0, 6, 18, -1}, {0, 7, 8, -1}, {0, 7, 9, -1}, {0, 7, 10, -1}, {0, 7, 11, -1}, {0, 7, 12, -1}, {0, 7, 13, -1}, {0, 7, 14, -1}, {0, 7, 15, -1}, {0, 7, 16, -1}, {0, 7, 17, -1}, {0, 7, 18, -1}, {0, 8, 9, -1}, {0, 8, 10, -1}, {0, 8, 11, -1}, {0, 8, 12, -1}, {0, 8, 13, -1}, {0, 8, 14, -1}, {0, 8, 15, -1}, {0, 8, 16, -1}, {0, 8, 17, -1}, {0, 8, 18, -1}, {0, 9, 10, -1}, {0, 9, 11, -1}, {0, 9, 12, -1}, {0, 9, 13, -1}, {0, 9, 14, -1}, {0, 9, 15, -1}, {0, 9, 16, -1}, {0, 9, 17, -1}, {0, 9, 18, -1}, {0, 10, 11, -1}, {0, 10, 12, -1}, {0, 10, 13, -1}, {0, 10, 14, -1}, {0, 10, 15, -1}, {0, 10, 16, -1}, {0, 10, 17, -1}, {0, 10, 18, -1}, {0, 11, 12, -1}, {0, 11, 13, -1}, {0, 11, 14, -1}, {0, 11, 15, -1}, {0, 11, 16, -1}, {0, 11, 17, -1}, {0, 11, 18, -1}, {0, 12, 13, -1}, {0, 12, 14, -1}, {0, 12, 15, -1}, {0, 12, 16, -1}, {0, 12, 17, -1}, {0, 12, 18, -1}, {0, 13, 14, -1}, {0, 13, 15, -1}, {0, 13, 16, -1}, {0, 13, 17, -1}, {0, 13, 18, -1}, {0, 14, 15, -1}, {0, 14, 16, -1}, {0, 14, 17, -1}, {0, 14, 18, -1}, {0, 15, 16, -1}, {0, 15, 17, -1}, {0, 15, 18, -1}, {0, 16, 17, -1}, {0, 16, 18, -1}, {0, 17, 18, -1}, {1, 2, 3, -1}, {1, 2, 4, -1}, {1, 2, 5, -1}, {1, 2, 6, -1}, {1, 2, 7, -1}, {1, 2, 8, -1}, {1, 2, 9, -1}, {1, 2, 10, -1}, {1, 2, 11, -1}, {1, 2, 12, -1}, {1, 2, 13, -1}, {1, 2, 14, -1}, {1, 2, 15, -1}, {1, 2, 16, -1}, {1, 2, 17, -1}, {1, 2, 18, -1}, {1, 3, 4, -1}, {1, 3, 5, -1}, {1, 3, 6, -1}, {1, 3, 7, -1}, {1, 3, 8, -1}, {1, 3, 9, -1}, {1, 3, 10, -1}, {1, 3, 11, -1}, {1, 3, 12, -1}, {1, 3, 13, -1}, {1, 3, 14, -1}, {1, 3, 15, -1}, {1, 3, 16, -1}, {1, 3, 17, -1}, {1, 3, 18, -1}, {1, 4, 5, -1}, {1, 4, 6, -1}, {1, 4, 7, -1}, {1, 4, 8, -1}, {1, 4, 9, -1}, {1, 4, 10, -1}, {1, 4, 11, -1}, {1, 4, 12, -1}, {1, 4, 13, -1}, {1, 4, 14, -1}, {1, 4, 15, -1}, {1, 4, 16, -1}, {1, 4, 17, -1}, {1, 4, 18, -1}, {1, 5, 6, -1}, {1, 5, 7, -1}, {1, 5, 8, -1}, {1, 5, 9, -1}, {1, 5, 10, -1}, {1, 5, 11, -1}, {1, 5, 12, -1}, {1, 5, 13, -1}, {1, 5, 14, -1}, {1, 5, 15, -1}, {1, 5, 16, -1}, {1, 5, 17, -1}, {1, 5, 18, -1}, {1, 6, 7, -1}, {1, 6, 8, -1}, {1, 6, 9, -1}, {1, 6, 10, -1}, {1, 6, 11, -1}, {1, 6, 12, -1}, {1, 6, 13, -1}, {1, 6, 14, -1}, {1, 6, 15, -1}, {1, 6, 16, -1}, {1, 6, 17, -1}, {1, 6, 18, -1}, {1, 7, 8, -1}, {1, 7, 9, -1}, {1, 7, 10, -1}, {1, 7, 11, -1}, {1, 7, 12, -1}, {1, 7, 13, -1}, {1, 7, 14, -1}, {1, 7, 15, -1}, {1, 7, 16, -1}, {1, 7, 17, -1}, {1, 7, 18, -1}, {1, 8, 9, -1}, {1, 8, 10, -1}, {1, 8, 11, -1}, {1, 8, 12, -1}, {1, 8, 13, -1}, {1, 8, 14, -1}, {1, 8, 15, -1}, {1, 8, 16, -1}, {1, 8, 17, -1}, {1, 8, 18, -1}, {1, 9, 10, -1}, {1, 9, 11, -1}, {1, 9, 12, -1}, {1, 9, 13, -1}, {1, 9, 14, -1}, {1, 9, 15, -1}, {1, 9, 16, -1}, {1, 9, 17, -1}, {1, 9, 18, -1}, {1, 10, 11, -1}, {1, 10, 12, -1}, {1, 10, 13, -1}, {1, 10, 14, -1}, {1, 10, 15, -1}, {1, 10, 16, -1}, {1, 10, 17, -1}, {1, 10, 18, -1}, {1, 11, 12, -1}, {1, 11, 13, -1}, {1, 11, 14, -1}, {1, 11, 15, -1}, {1, 11, 16, -1}, {1, 11, 17, -1}, {1, 11, 18, -1}, {1, 12, 13, -1}, {1, 12, 14, -1}, {1, 12, 15, -1}, {1, 12, 16, -1}, {1, 12, 17, -1}, {1, 12, 18, -1}, {1, 13, 14, -1}, {1, 13, 15, -1}, {1, 13, 16, -1}, {1, 13, 17, -1}, {1, 13, 18, -1}, {1, 14, 15, -1}, {1, 14, 16, -1}, {1, 14, 17, -1}, {1, 14, 18, -1}, {1, 15, 16, -1}, {1, 15, 17, -1}, {1, 15, 18, -1}, {1, 16, 17, -1}, {1, 16, 18, -1}, {1, 17, 18, -1}, {2, 3, 4, -1}, {2, 3, 5, -1}, {2, 3, 6, -1}, {2, 3, 7, -1}, {2, 3, 8, -1}, {2, 3, 9, -1}, {2, 3, 10, -1}, {2, 3, 11, -1}, {2, 3, 12, -1}, {2, 3, 13, -1}, {2, 3, 14, -1}, {2, 3, 15, -1}, {2, 3, 16, -1}, {2, 3, 17, -1}, {2, 3, 18, -1}, {2, 4, 5, -1}, {2, 4, 6, -1}, {2, 4, 7, -1}, {2, 4, 8, -1}, {2, 4, 9, -1}, {2, 4, 10, -1}, {2, 4, 11, -1}, {2, 4, 12, -1}, {2, 4, 13, -1}, {2, 4, 14, -1}, {2, 4, 15, -1}, {2, 4, 16, -1}, {2, 4, 17, -1}, {2, 4, 18, -1}, {2, 5, 6, -1}, {2, 5, 7, -1}, {2, 5, 8, -1}, {2, 5, 9, -1}, {2, 5, 10, -1}, {2, 5, 11, -1}, {2, 5, 12, -1}, {2, 5, 13, -1}, {2, 5, 14, -1}, {2, 5, 15, -1}, {2, 5, 16, -1}, {2, 5, 17, -1}, {2, 5, 18, -1}, {2, 6, 7, -1}, {2, 6, 8, -1}, {2, 6, 9, -1}, {2, 6, 10, -1}, {2, 6, 11, -1}, {2, 6, 12, -1}, {2, 6, 13, -1}, {2, 6, 14, -1}, {2, 6, 15, -1}, {2, 6, 16, -1}, {2, 6, 17, -1}, {2, 6, 18, -1}, {2, 7, 8, -1}, {2, 7, 9, -1}, {2, 7, 10, -1}, {2, 7, 11, -1}, {2, 7, 12, -1}, {2, 7, 13, -1}, {2, 7, 14, -1}, {2, 7, 15, -1}, {2, 7, 16, -1}, {2, 7, 17, -1}, {2, 7, 18, -1}, {2, 8, 9, -1}, {2, 8, 10, -1}, {2, 8, 11, -1}, {2, 8, 12, -1}, {2, 8, 13, -1}, {2, 8, 14, -1}, {2, 8, 15, -1}, {2, 8, 16, -1}, {2, 8, 17, -1}, {2, 8, 18, -1}, {2, 9, 10, -1}, {2, 9, 11, -1}, {2, 9, 12, -1}, {2, 9, 13, -1}, {2, 9, 14, -1}, {2, 9, 15, -1}, {2, 9, 16, -1}, {2, 9, 17, -1}, {2, 9, 18, -1}, {2, 10, 11, -1}, {2, 10, 12, -1}, {2, 10, 13, -1}, {2, 10, 14, -1}, {2, 10, 15, -1}, {2, 10, 16, -1}, {2, 10, 17, -1}, {2, 10, 18, -1}, {2, 11, 12, -1}, {2, 11, 13, -1}, {2, 11, 14, -1}, {2, 11, 15, -1}, {2, 11, 16, -1}, {2, 11, 17, -1}, {2, 11, 18, -1}, {2, 12, 13, -1}, {2, 12, 14, -1}, {2, 12, 15, -1}, {2, 12, 16, -1}, {2, 12, 17, -1}, {2, 12, 18, -1}, {2, 13, 14, -1}, {2, 13, 15, -1}, {2, 13, 16, -1}, {2, 13, 17, -1}, {2, 13, 18, -1}, {2, 14, 15, -1}, {2, 14, 16, -1}, {2, 14, 17, -1}, {2, 14, 18, -1}, {2, 15, 16, -1}, {2, 15, 17, -1}, {2, 15, 18, -1}, {2, 16, 17, -1}, {2, 16, 18, -1}, {2, 17, 18, -1}, {3, 4, 5, -1}, {3, 4, 6, -1}, {3, 4, 7, -1}, {3, 4, 8, -1}, {3, 4, 9, -1}, {3, 4, 10, -1}, {3, 4, 11, -1}, {3, 4, 12, -1}, {3, 4, 13, -1}, {3, 4, 14, -1}, {3, 4, 15, -1}, {3, 4, 16, -1}, {3, 4, 17, -1}, {3, 4, 18, -1}, {3, 5, 6, -1}, {3, 5, 7, -1}, {3, 5, 8, -1}, {3, 5, 9, -1}, {3, 5, 10, -1}, {3, 5, 11, -1}, {3, 5, 12, -1}, {3, 5, 13, -1}, {3, 5, 14, -1}, {3, 5, 15, -1}, {3, 5, 16, -1}, {3, 5, 17, -1}, {3, 5, 18, -1}, {3, 6, 7, -1}, {3, 6, 8, -1}, {3, 6, 9, -1}, {3, 6, 10, -1}, {3, 6, 11, -1}, {3, 6, 12, -1}, {3, 6, 13, -1}, {3, 6, 14, -1}, {3, 6, 15, -1}, {3, 6, 16, -1}, {3, 6, 17, -1}, {3, 6, 18, -1}, {3, 7, 8, -1}, {3, 7, 9, -1}, {3, 7, 10, -1}, {3, 7, 11, -1}, {3, 7, 12, -1}, {3, 7, 13, -1}, {3, 7, 14, -1}, {3, 7, 15, -1}, {3, 7, 16, -1}, {3, 7, 17, -1}, {3, 7, 18, -1}, {3, 8, 9, -1}, {3, 8, 10, -1}, {3, 8, 11, -1}, {3, 8, 12, -1}, {3, 8, 13, -1}, {3, 8, 14, -1}, {3, 8, 15, -1}, {3, 8, 16, -1}, {3, 8, 17, -1}, {3, 8, 18, -1}, {3, 9, 10, -1}, {3, 9, 11, -1}, {3, 9, 12, -1}, {3, 9, 13, -1}, {3, 9, 14, -1}, {3, 9, 15, -1}, {3, 9, 16, -1}, {3, 9, 17, -1}, {3, 9, 18, -1}, {3, 10, 11, -1}, {3, 10, 12, -1}, {3, 10, 13, -1}, {3, 10, 14, -1}, {3, 10, 15, -1}, {3, 10, 16, -1}, {3, 10, 17, -1}, {3, 10, 18, -1}, {3, 11, 12, -1}, {3, 11, 13, -1}, {3, 11, 14, -1}, {3, 11, 15, -1}, {3, 11, 16, -1}, {3, 11, 17, -1}, {3, 11, 18, -1}, {3, 12, 13, -1}, {3, 12, 14, -1}, {3, 12, 15, -1}, {3, 12, 16, -1}, {3, 12, 17, -1}, {3, 12, 18, -1}, {3, 13, 14, -1}, {3, 13, 15, -1}, {3, 13, 16, -1}, {3, 13, 17, -1}, {3, 13, 18, -1}, {3, 14, 15, -1}, {3, 14, 16, -1}, {3, 14, 17, -1}, {3, 14, 18, -1}, {3, 15, 16, -1}, {3, 15, 17, -1}, {3, 15, 18, -1}, {3, 16, 17, -1}, {3, 16, 18, -1}, {3, 17, 18, -1}, {4, 5, 6, -1}, {4, 5, 7, -1}, {4, 5, 8, -1}, {4, 5, 9, -1}, {4, 5, 10, -1}, {4, 5, 11, -1}, {4, 5, 12, -1}, {4, 5, 13, -1}, {4, 5, 14, -1}, {4, 5, 15, -1}, {4, 5, 16, -1}, {4, 5, 17, -1}, {4, 5, 18, -1}, {4, 6, 7, -1}, {4, 6, 8, -1}, {4, 6, 9, -1}, {4, 6, 10, -1}, {4, 6, 11, -1}, {4, 6, 12, -1}, {4, 6, 13, -1}, {4, 6, 14, -1}, {4, 6, 15, -1}, {4, 6, 16, -1}, {4, 6, 17, -1}, {4, 6, 18, -1}, {4, 7, 8, -1}, {4, 7, 9, -1}, {4, 7, 10, -1}, {4, 7, 11, -1}, {4, 7, 12, -1}, {4, 7, 13, -1}, {4, 7, 14, -1}, {4, 7, 15, -1}, {4, 7, 16, -1}, {4, 7, 17, -1}, {4, 7, 18, -1}, {4, 8, 9, -1}, {4, 8, 10, -1}, {4, 8, 11, -1}, {4, 8, 12, -1}, {4, 8, 13, -1}, {4, 8, 14, -1}, {4, 8, 15, -1}, {4, 8, 16, -1}, {4, 8, 17, -1}, {4, 8, 18, -1}, {4, 9, 10, -1}, {4, 9, 11, -1}, {4, 9, 12, -1}, {4, 9, 13, -1}, {4, 9, 14, -1}, {4, 9, 15, -1}, {4, 9, 16, -1}, {4, 9, 17, -1}, {4, 9, 18, -1}, {4, 10, 11, -1}, {4, 10, 12, -1}, {4, 10, 13, -1}, {4, 10, 14, -1}, {4, 10, 15, -1}, {4, 10, 16, -1}, {4, 10, 17, -1}, {4, 10, 18, -1}, {4, 11, 12, -1}, {4, 11, 13, -1}, {4, 11, 14, -1}, {4, 11, 15, -1}, {4, 11, 16, -1}, {4, 11, 17, -1}, {4, 11, 18, -1}, {4, 12, 13, -1}, {4, 12, 14, -1}, {4, 12, 15, -1}, {4, 12, 16, -1}, {4, 12, 17, -1}, {4, 12, 18, -1}, {4, 13, 14, -1}, {4, 13, 15, -1}, {4, 13, 16, -1}, {4, 13, 17, -1}, {4, 13, 18, -1}, {4, 14, 15, -1}, {4, 14, 16, -1}, {4, 14, 17, -1}, {4, 14, 18, -1}, {4, 15, 16, -1}, {4, 15, 17, -1}, {4, 15, 18, -1}, {4, 16, 17, -1}, {4, 16, 18, -1}, {4, 17, 18, -1}, {5, 6, 7, -1}, {5, 6, 8, -1}, {5, 6, 9, -1}, {5, 6, 10, -1}, {5, 6, 11, -1}, {5, 6, 12, -1}, {5, 6, 13, -1}, {5, 6, 14, -1}, {5, 6, 15, -1}, {5, 6, 16, -1}, {5, 6, 17, -1}, {5, 6, 18, -1}, {5, 7, 8, -1}, {5, 7, 9, -1}, {5, 7, 10, -1}, {5, 7, 11, -1}, {5, 7, 12, -1}, {5, 7, 13, -1}, {5, 7, 14, -1}, {5, 7, 15, -1}, {5, 7, 16, -1}, {5, 7, 17, -1}, {5, 7, 18, -1}, {5, 8, 9, -1}, {5, 8, 10, -1}, {5, 8, 11, -1}, {5, 8, 12, -1}, {5, 8, 13, -1}, {5, 8, 14, -1}, {5, 8, 15, -1}, {5, 8, 16, -1}, {5, 8, 17, -1}, {5, 8, 18, -1}, {5, 9, 10, -1}, {5, 9, 11, -1}, {5, 9, 12, -1}, {5, 9, 13, -1}, {5, 9, 14, -1}, {5, 9, 15, -1}, {5, 9, 16, -1}, {5, 9, 17, -1}, {5, 9, 18, -1}, {5, 10, 11, -1}, {5, 10, 12, -1}, {5, 10, 13, -1}, {5, 10, 14, -1}, {5, 10, 15, -1}, {5, 10, 16, -1}, {5, 10, 17, -1}, {5, 10, 18, -1}, {5, 11, 12, -1}, {5, 11, 13, -1}, {5, 11, 14, -1}, {5, 11, 15, -1}, {5, 11, 16, -1}, {5, 11, 17, -1}, {5, 11, 18, -1}, {5, 12, 13, -1}, {5, 12, 14, -1}, {5, 12, 15, -1}, {5, 12, 16, -1}, {5, 12, 17, -1}, {5, 12, 18, -1}, {5, 13, 14, -1}, {5, 13, 15, -1}, {5, 13, 16, -1}, {5, 13, 17, -1}, {5, 13, 18, -1}, {5, 14, 15, -1}, {5, 14, 16, -1}, {5, 14, 17, -1}, {5, 14, 18, -1}, {5, 15, 16, -1}, {5, 15, 17, -1}, {5, 15, 18, -1}, {5, 16, 17, -1}, {5, 16, 18, -1}, {5, 17, 18, -1}, {6, 7, 8, -1}, {6, 7, 9, -1}, {6, 7, 10, -1}, {6, 7, 11, -1}, {6, 7, 12, -1}, {6, 7, 13, -1}, {6, 7, 14, -1}, {6, 7, 15, -1}, {6, 7, 16, -1}, {6, 7, 17, -1}, {6, 7, 18, -1}, {6, 8, 9, -1}, {6, 8, 10, -1}, {6, 8, 11, -1}, {6, 8, 12, -1}, {6, 8, 13, -1}, {6, 8, 14, -1}, {6, 8, 15, -1}, {6, 8, 16, -1}, {6, 8, 17, -1}, {6, 8, 18, -1}, {6, 9, 10, -1}, {6, 9, 11, -1}, {6, 9, 12, -1}, {6, 9, 13, -1}, {6, 9, 14, -1}, {6, 9, 15, -1}, {6, 9, 16, -1}, {6, 9, 17, -1}, {6, 9, 18, -1}, {6, 10, 11, -1}, {6, 10, 12, -1}, {6, 10, 13, -1}, {6, 10, 14, -1}, {6, 10, 15, -1}, {6, 10, 16, -1}, {6, 10, 17, -1}, {6, 10, 18, -1}, {6, 11, 12, -1}, {6, 11, 13, -1}, {6, 11, 14, -1}, {6, 11, 15, -1}, {6, 11, 16, -1}, {6, 11, 17, -1}, {6, 11, 18, -1}, {6, 12, 13, -1}, {6, 12, 14, -1}, {6, 12, 15, -1}, {6, 12, 16, -1}, {6, 12, 17, -1}, {6, 12, 18, -1}, {6, 13, 14, -1}, {6, 13, 15, -1}, {6, 13, 16, -1}, {6, 13, 17, -1}, {6, 13, 18, -1}, {6, 14, 15, -1}, {6, 14, 16, -1}, {6, 14, 17, -1}, {6, 14, 18, -1}, {6, 15, 16, -1}, {6, 15, 17, -1}, {6, 15, 18, -1}, {6, 16, 17, -1}, {6, 16, 18, -1}, {6, 17, 18, -1}, {7, 8, 9, -1}, {7, 8, 10, -1}, {7, 8, 11, -1}, {7, 8, 12, -1}, {7, 8, 13, -1}, {7, 8, 14, -1}, {7, 8, 15, -1}, {7, 8, 16, -1}, {7, 8, 17, -1}, {7, 8, 18, -1}, {7, 9, 10, -1}, {7, 9, 11, -1}, {7, 9, 12, -1}, {7, 9, 13, -1}, {7, 9, 14, -1}, {7, 9, 15, -1}, {7, 9, 16, -1}, {7, 9, 17, -1}, {7, 9, 18, -1}, {7, 10, 11, -1}, {7, 10, 12, -1}, {7, 10, 13, -1}, {7, 10, 14, -1}, {7, 10, 15, -1}, {7, 10, 16, -1}, {7, 10, 17, -1}, {7, 10, 18, -1}, {7, 11, 12, -1}, {7, 11, 13, -1}, {7, 11, 14, -1}, {7, 11, 15, -1}, {7, 11, 16, -1}, {7, 11, 17, -1}, {7, 11, 18, -1}, {7, 12, 13, -1}, {7, 12, 14, -1}, {7, 12, 15, -1}, {7, 12, 16, -1}, {7, 12, 17, -1}, {7, 12, 18, -1}, {7, 13, 14, -1}, {7, 13, 15, -1}, {7, 13, 16, -1}, {7, 13, 17, -1}, {7, 13, 18, -1}, {7, 14, 15, -1}, {7, 14, 16, -1}, {7, 14, 17, -1}, {7, 14, 18, -1}, {7, 15, 16, -1}, {7, 15, 17, -1}, {7, 15, 18, -1}, {7, 16, 17, -1}, {7, 16, 18, -1}, {7, 17, 18, -1}, {8, 9, 10, -1}, {8, 9, 11, -1}, {8, 9, 12, -1}, {8, 9, 13, -1}, {8, 9, 14, -1}, {8, 9, 15, -1}, {8, 9, 16, -1}, {8, 9, 17, -1}, {8, 9, 18, -1}, {8, 10, 11, -1}, {8, 10, 12, -1}, {8, 10, 13, -1}, {8, 10, 14, -1}, {8, 10, 15, -1}, {8, 10, 16, -1}, {8, 10, 17, -1}, {8, 10, 18, -1}, {8, 11, 12, -1}, {8, 11, 13, -1}, {8, 11, 14, -1}, {8, 11, 15, -1}, {8, 11, 16, -1}, {8, 11, 17, -1}, {8, 11, 18, -1}, {8, 12, 13, -1}, {8, 12, 14, -1}, {8, 12, 15, -1}, {8, 12, 16, -1}, {8, 12, 17, -1}, {8, 12, 18, -1}, {8, 13, 14, -1}, {8, 13, 15, -1}, {8, 13, 16, -1}, {8, 13, 17, -1}, {8, 13, 18, -1}, {8, 14, 15, -1}, {8, 14, 16, -1}, {8, 14, 17, -1}, {8, 14, 18, -1}, {8, 15, 16, -1}, {8, 15, 17, -1}, {8, 15, 18, -1}, {8, 16, 17, -1}, {8, 16, 18, -1}, {8, 17, 18, -1}, {9, 10, 11, -1}, {9, 10, 12, -1}, {9, 10, 13, -1}, {9, 10, 14, -1}, {9, 10, 15, -1}, {9, 10, 16, -1}, {9, 10, 17, -1}, {9, 10, 18, -1}, {9, 11, 12, -1}, {9, 11, 13, -1}, {9, 11, 14, -1}, {9, 11, 15, -1}, {9, 11, 16, -1}, {9, 11, 17, -1}, {9, 11, 18, -1}, {9, 12, 13, -1}, {9, 12, 14, -1}, {9, 12, 15, -1}, {9, 12, 16, -1}, {9, 12, 17, -1}, {9, 12, 18, -1}, {9, 13, 14, -1}, {9, 13, 15, -1}, {9, 13, 16, -1}, {9, 13, 17, -1}, {9, 13, 18, -1}, {9, 14, 15, -1}, {9, 14, 16, -1}, {9, 14, 17, -1}, {9, 14, 18, -1}, {9, 15, 16, -1}, {9, 15, 17, -1}, {9, 15, 18, -1}, {9, 16, 17, -1}, {9, 16, 18, -1}, {9, 17, 18, -1}, {10, 11, 12, -1}, {10, 11, 13, -1}, {10, 11, 14, -1}, {10, 11, 15, -1}, {10, 11, 16, -1}, {10, 11, 17, -1}, {10, 11, 18, -1}, {10, 12, 13, -1}, {10, 12, 14, -1}, {10, 12, 15, -1}, {10, 12, 16, -1}, {10, 12, 17, -1}, {10, 12, 18, -1}, {10, 13, 14, -1}, {10, 13, 15, -1}, {10, 13, 16, -1}, {10, 13, 17, -1}, {10, 13, 18, -1}, {10, 14, 15, -1}, {10, 14, 16, -1}, {10, 14, 17, -1}, {10, 14, 18, -1}, {10, 15, 16, -1}, {10, 15, 17, -1}, {10, 15, 18, -1}, {10, 16, 17, -1}, {10, 16, 18, -1}, {10, 17, 18, -1}, {11, 12, 13, -1}, {11, 12, 14, -1}, {11, 12, 15, -1}, {11, 12, 16, -1}, {11, 12, 17, -1}, {11, 12, 18, -1}, {11, 13, 14, -1}, {11, 13, 15, -1}, {11, 13, 16, -1}, {11, 13, 17, -1}, {11, 13, 18, -1}, {11, 14, 15, -1}, {11, 14, 16, -1}, {11, 14, 17, -1}, {11, 14, 18, -1}, {11, 15, 16, -1}, {11, 15, 17, -1}, {11, 15, 18, -1}, {11, 16, 17, -1}, {11, 16, 18, -1}, {11, 17, 18, -1}, {12, 13, 14, -1}, {12, 13, 15, -1}, {12, 13, 16, -1}, {12, 13, 17, -1}, {12, 13, 18, -1}, {12, 14, 15, -1}, {12, 14, 16, -1}, {12, 14, 17, -1}, {12, 14, 18, -1}, {12, 15, 16, -1}, {12, 15, 17, -1}, {12, 15, 18, -1}, {12, 16, 17, -1}, {12, 16, 18, -1}, {12, 17, 18, -1}, {13, 14, 15, -1}, {13, 14, 16, -1}, {13, 14, 17, -1}, {13, 14, 18, -1}, {13, 15, 16, -1}, {13, 15, 17, -1}, {13, 15, 18, -1}, {13, 16, 17, -1}, {13, 16, 18, -1}, {13, 17, 18, -1}, {14, 15, 16, -1}, {14, 15, 17, -1}, {14, 15, 18, -1}, {14, 16, 17, -1}, {14, 16, 18, -1}, {14, 17, 18, -1}, {15, 16, 17, -1}, {15, 16, 18, -1}, {15, 17, 18, -1}, {16, 17, 18, -1}} ;
64 #define NUM_20_3_COMBS 210
65 int failure_combs_20_3[NUM_20_3_COMBS][4] = {{0, -1, -1, -1}, {1, -1, -1, -1}, {2, -1, -1, -1}, {3, -1, -1, -1}, {4, -1, -1, -1}, {5, -1, -1, -1}, {6, -1, -1, -1}, {7, -1, -1, -1}, {8, -1, -1, -1}, {9, -1, -1, -1}, {10, -1, -1, -1}, {11, -1, -1, -1}, {12, -1, -1, -1}, {13, -1, -1, -1}, {14, -1, -1, -1}, {15, -1, -1, -1}, {16, -1, -1, -1}, {17, -1, -1, -1}, {18, -1, -1, -1}, {19, -1, -1, -1}, {0, 1, -1, -1}, {0, 2, -1, -1}, {0, 3, -1, -1}, {0, 4, -1, -1}, {0, 5, -1, -1}, {0, 6, -1, -1}, {0, 7, -1, -1}, {0, 8, -1, -1}, {0, 9, -1, -1}, {0, 10, -1, -1}, {0, 11, -1, -1}, {0, 12, -1, -1}, {0, 13, -1, -1}, {0, 14, -1, -1}, {0, 15, -1, -1}, {0, 16, -1, -1}, {0, 17, -1, -1}, {0, 18, -1, -1}, {0, 19, -1, -1}, {1, 2, -1, -1}, {1, 3, -1, -1}, {1, 4, -1, -1}, {1, 5, -1, -1}, {1, 6, -1, -1}, {1, 7, -1, -1}, {1, 8, -1, -1}, {1, 9, -1, -1}, {1, 10, -1, -1}, {1, 11, -1, -1}, {1, 12, -1, -1}, {1, 13, -1, -1}, {1, 14, -1, -1}, {1, 15, -1, -1}, {1, 16, -1, -1}, {1, 17, -1, -1}, {1, 18, -1, -1}, {1, 19, -1, -1}, {2, 3, -1, -1}, {2, 4, -1, -1}, {2, 5, -1, -1}, {2, 6, -1, -1}, {2, 7, -1, -1}, {2, 8, -1, -1}, {2, 9, -1, -1}, {2, 10, -1, -1}, {2, 11, -1, -1}, {2, 12, -1, -1}, {2, 13, -1, -1}, {2, 14, -1, -1}, {2, 15, -1, -1}, {2, 16, -1, -1}, {2, 17, -1, -1}, {2, 18, -1, -1}, {2, 19, -1, -1}, {3, 4, -1, -1}, {3, 5, -1, -1}, {3, 6, -1, -1}, {3, 7, -1, -1}, {3, 8, -1, -1}, {3, 9, -1, -1}, {3, 10, -1, -1}, {3, 11, -1, -1}, {3, 12, -1, -1}, {3, 13, -1, -1}, {3, 14, -1, -1}, {3, 15, -1, -1}, {3, 16, -1, -1}, {3, 17, -1, -1}, {3, 18, -1, -1}, {3, 19, -1, -1}, {4, 5, -1, -1}, {4, 6, -1, -1}, {4, 7, -1, -1}, {4, 8, -1, -1}, {4, 9, -1, -1}, {4, 10, -1, -1}, {4, 11, -1, -1}, {4, 12, -1, -1}, {4, 13, -1, -1}, {4, 14, -1, -1}, {4, 15, -1, -1}, {4, 16, -1, -1}, {4, 17, -1, -1}, {4, 18, -1, -1}, {4, 19, -1, -1}, {5, 6, -1, -1}, {5, 7, -1, -1}, {5, 8, -1, -1}, {5, 9, -1, -1}, {5, 10, -1, -1}, {5, 11, -1, -1}, {5, 12, -1, -1}, {5, 13, -1, -1}, {5, 14, -1, -1}, {5, 15, -1, -1}, {5, 16, -1, -1}, {5, 17, -1, -1}, {5, 18, -1, -1}, {5, 19, -1, -1}, {6, 7, -1, -1}, {6, 8, -1, -1}, {6, 9, -1, -1}, {6, 10, -1, -1}, {6, 11, -1, -1}, {6, 12, -1, -1}, {6, 13, -1, -1}, {6, 14, -1, -1}, {6, 15, -1, -1}, {6, 16, -1, -1}, {6, 17, -1, -1}, {6, 18, -1, -1}, {6, 19, -1, -1}, {7, 8, -1, -1}, {7, 9, -1, -1}, {7, 10, -1, -1}, {7, 11, -1, -1}, {7, 12, -1, -1}, {7, 13, -1, -1}, {7, 14, -1, -1}, {7, 15, -1, -1}, {7, 16, -1, -1}, {7, 17, -1, -1}, {7, 18, -1, -1}, {7, 19, -1, -1}, {8, 9, -1, -1}, {8, 10, -1, -1}, {8, 11, -1, -1}, {8, 12, -1, -1}, {8, 13, -1, -1}, {8, 14, -1, -1}, {8, 15, -1, -1}, {8, 16, -1, -1}, {8, 17, -1, -1}, {8, 18, -1, -1}, {8, 19, -1, -1}, {9, 10, -1, -1}, {9, 11, -1, -1}, {9, 12, -1, -1}, {9, 13, -1, -1}, {9, 14, -1, -1}, {9, 15, -1, -1}, {9, 16, -1, -1}, {9, 17, -1, -1}, {9, 18, -1, -1}, {9, 19, -1, -1}, {10, 11, -1, -1}, {10, 12, -1, -1}, {10, 13, -1, -1}, {10, 14, -1, -1}, {10, 15, -1, -1}, {10, 16, -1, -1}, {10, 17, -1, -1}, {10, 18, -1, -1}, {10, 19, -1, -1}, {11, 12, -1, -1}, {11, 13, -1, -1}, {11, 14, -1, -1}, {11, 15, -1, -1}, {11, 16, -1, -1}, {11, 17, -1, -1}, {11, 18, -1, -1}, {11, 19, -1, -1}, {12, 13, -1, -1}, {12, 14, -1, -1}, {12, 15, -1, -1}, {12, 16, -1, -1}, {12, 17, -1, -1}, {12, 18, -1, -1}, {12, 19, -1, -1}, {13, 14, -1, -1}, {13, 15, -1, -1}, {13, 16, -1, -1}, {13, 17, -1, -1}, {13, 18, -1, -1}, {13, 19, -1, -1}, {14, 15, -1, -1}, {14, 16, -1, -1}, {14, 17, -1, -1}, {14, 18, -1, -1}, {14, 19, -1, -1}, {15, 16, -1, -1}, {15, 17, -1, -1}, {15, 18, -1, -1}, {15, 19, -1, -1}, {16, 17, -1, -1}, {16, 18, -1, -1}, {16, 19, -1, -1}, {17, 18, -1, -1}, {17, 19, -1, -1}, {18, 19, -1, -1}} ;
66 #define NUM_20_4_COMBS 1350
67 int failure_combs_20_4[NUM_20_4_COMBS][4] = {{0, -1, -1, -1}, {1, -1, -1, -1}, {2, -1, -1, -1}, {3, -1, -1, -1}, {4, -1, -1, -1}, {5, -1, -1, -1}, {6, -1, -1, -1}, {7, -1, -1, -1}, {8, -1, -1, -1}, {9, -1, -1, -1}, {10, -1, -1, -1}, {11, -1, -1, -1}, {12, -1, -1, -1}, {13, -1, -1, -1}, {14, -1, -1, -1}, {15, -1, -1, -1}, {16, -1, -1, -1}, {17, -1, -1, -1}, {18, -1, -1, -1}, {19, -1, -1, -1}, {0, 1, -1, -1}, {0, 2, -1, -1}, {0, 3, -1, -1}, {0, 4, -1, -1}, {0, 5, -1, -1}, {0, 6, -1, -1}, {0, 7, -1, -1}, {0, 8, -1, -1}, {0, 9, -1, -1}, {0, 10, -1, -1}, {0, 11, -1, -1}, {0, 12, -1, -1}, {0, 13, -1, -1}, {0, 14, -1, -1}, {0, 15, -1, -1}, {0, 16, -1, -1}, {0, 17, -1, -1}, {0, 18, -1, -1}, {0, 19, -1, -1}, {1, 2, -1, -1}, {1, 3, -1, -1}, {1, 4, -1, -1}, {1, 5, -1, -1}, {1, 6, -1, -1}, {1, 7, -1, -1}, {1, 8, -1, -1}, {1, 9, -1, -1}, {1, 10, -1, -1}, {1, 11, -1, -1}, {1, 12, -1, -1}, {1, 13, -1, -1}, {1, 14, -1, -1}, {1, 15, -1, -1}, {1, 16, -1, -1}, {1, 17, -1, -1}, {1, 18, -1, -1}, {1, 19, -1, -1}, {2, 3, -1, -1}, {2, 4, -1, -1}, {2, 5, -1, -1}, {2, 6, -1, -1}, {2, 7, -1, -1}, {2, 8, -1, -1}, {2, 9, -1, -1}, {2, 10, -1, -1}, {2, 11, -1, -1}, {2, 12, -1, -1}, {2, 13, -1, -1}, {2, 14, -1, -1}, {2, 15, -1, -1}, {2, 16, -1, -1}, {2, 17, -1, -1}, {2, 18, -1, -1}, {2, 19, -1, -1}, {3, 4, -1, -1}, {3, 5, -1, -1}, {3, 6, -1, -1}, {3, 7, -1, -1}, {3, 8, -1, -1}, {3, 9, -1, -1}, {3, 10, -1, -1}, {3, 11, -1, -1}, {3, 12, -1, -1}, {3, 13, -1, -1}, {3, 14, -1, -1}, {3, 15, -1, -1}, {3, 16, -1, -1}, {3, 17, -1, -1}, {3, 18, -1, -1}, {3, 19, -1, -1}, {4, 5, -1, -1}, {4, 6, -1, -1}, {4, 7, -1, -1}, {4, 8, -1, -1}, {4, 9, -1, -1}, {4, 10, -1, -1}, {4, 11, -1, -1}, {4, 12, -1, -1}, {4, 13, -1, -1}, {4, 14, -1, -1}, {4, 15, -1, -1}, {4, 16, -1, -1}, {4, 17, -1, -1}, {4, 18, -1, -1}, {4, 19, -1, -1}, {5, 6, -1, -1}, {5, 7, -1, -1}, {5, 8, -1, -1}, {5, 9, -1, -1}, {5, 10, -1, -1}, {5, 11, -1, -1}, {5, 12, -1, -1}, {5, 13, -1, -1}, {5, 14, -1, -1}, {5, 15, -1, -1}, {5, 16, -1, -1}, {5, 17, -1, -1}, {5, 18, -1, -1}, {5, 19, -1, -1}, {6, 7, -1, -1}, {6, 8, -1, -1}, {6, 9, -1, -1}, {6, 10, -1, -1}, {6, 11, -1, -1}, {6, 12, -1, -1}, {6, 13, -1, -1}, {6, 14, -1, -1}, {6, 15, -1, -1}, {6, 16, -1, -1}, {6, 17, -1, -1}, {6, 18, -1, -1}, {6, 19, -1, -1}, {7, 8, -1, -1}, {7, 9, -1, -1}, {7, 10, -1, -1}, {7, 11, -1, -1}, {7, 12, -1, -1}, {7, 13, -1, -1}, {7, 14, -1, -1}, {7, 15, -1, -1}, {7, 16, -1, -1}, {7, 17, -1, -1}, {7, 18, -1, -1}, {7, 19, -1, -1}, {8, 9, -1, -1}, {8, 10, -1, -1}, {8, 11, -1, -1}, {8, 12, -1, -1}, {8, 13, -1, -1}, {8, 14, -1, -1}, {8, 15, -1, -1}, {8, 16, -1, -1}, {8, 17, -1, -1}, {8, 18, -1, -1}, {8, 19, -1, -1}, {9, 10, -1, -1}, {9, 11, -1, -1}, {9, 12, -1, -1}, {9, 13, -1, -1}, {9, 14, -1, -1}, {9, 15, -1, -1}, {9, 16, -1, -1}, {9, 17, -1, -1}, {9, 18, -1, -1}, {9, 19, -1, -1}, {10, 11, -1, -1}, {10, 12, -1, -1}, {10, 13, -1, -1}, {10, 14, -1, -1}, {10, 15, -1, -1}, {10, 16, -1, -1}, {10, 17, -1, -1}, {10, 18, -1, -1}, {10, 19, -1, -1}, {11, 12, -1, -1}, {11, 13, -1, -1}, {11, 14, -1, -1}, {11, 15, -1, -1}, {11, 16, -1, -1}, {11, 17, -1, -1}, {11, 18, -1, -1}, {11, 19, -1, -1}, {12, 13, -1, -1}, {12, 14, -1, -1}, {12, 15, -1, -1}, {12, 16, -1, -1}, {12, 17, -1, -1}, {12, 18, -1, -1}, {12, 19, -1, -1}, {13, 14, -1, -1}, {13, 15, -1, -1}, {13, 16, -1, -1}, {13, 17, -1, -1}, {13, 18, -1, -1}, {13, 19, -1, -1}, {14, 15, -1, -1}, {14, 16, -1, -1}, {14, 17, -1, -1}, {14, 18, -1, -1}, {14, 19, -1, -1}, {15, 16, -1, -1}, {15, 17, -1, -1}, {15, 18, -1, -1}, {15, 19, -1, -1}, {16, 17, -1, -1}, {16, 18, -1, -1}, {16, 19, -1, -1}, {17, 18, -1, -1}, {17, 19, -1, -1}, {18, 19, -1, -1}, {0, 1, 2, -1}, {0, 1, 3, -1}, {0, 1, 4, -1}, {0, 1, 5, -1}, {0, 1, 6, -1}, {0, 1, 7, -1}, {0, 1, 8, -1}, {0, 1, 9, -1}, {0, 1, 10, -1}, {0, 1, 11, -1}, {0, 1, 12, -1}, {0, 1, 13, -1}, {0, 1, 14, -1}, {0, 1, 15, -1}, {0, 1, 16, -1}, {0, 1, 17, -1}, {0, 1, 18, -1}, {0, 1, 19, -1}, {0, 2, 3, -1}, {0, 2, 4, -1}, {0, 2, 5, -1}, {0, 2, 6, -1}, {0, 2, 7, -1}, {0, 2, 8, -1}, {0, 2, 9, -1}, {0, 2, 10, -1}, {0, 2, 11, -1}, {0, 2, 12, -1}, {0, 2, 13, -1}, {0, 2, 14, -1}, {0, 2, 15, -1}, {0, 2, 16, -1}, {0, 2, 17, -1}, {0, 2, 18, -1}, {0, 2, 19, -1}, {0, 3, 4, -1}, {0, 3, 5, -1}, {0, 3, 6, -1}, {0, 3, 7, -1}, {0, 3, 8, -1}, {0, 3, 9, -1}, {0, 3, 10, -1}, {0, 3, 11, -1}, {0, 3, 12, -1}, {0, 3, 13, -1}, {0, 3, 14, -1}, {0, 3, 15, -1}, {0, 3, 16, -1}, {0, 3, 17, -1}, {0, 3, 18, -1}, {0, 3, 19, -1}, {0, 4, 5, -1}, {0, 4, 6, -1}, {0, 4, 7, -1}, {0, 4, 8, -1}, {0, 4, 9, -1}, {0, 4, 10, -1}, {0, 4, 11, -1}, {0, 4, 12, -1}, {0, 4, 13, -1}, {0, 4, 14, -1}, {0, 4, 15, -1}, {0, 4, 16, -1}, {0, 4, 17, -1}, {0, 4, 18, -1}, {0, 4, 19, -1}, {0, 5, 6, -1}, {0, 5, 7, -1}, {0, 5, 8, -1}, {0, 5, 9, -1}, {0, 5, 10, -1}, {0, 5, 11, -1}, {0, 5, 12, -1}, {0, 5, 13, -1}, {0, 5, 14, -1}, {0, 5, 15, -1}, {0, 5, 16, -1}, {0, 5, 17, -1}, {0, 5, 18, -1}, {0, 5, 19, -1}, {0, 6, 7, -1}, {0, 6, 8, -1}, {0, 6, 9, -1}, {0, 6, 10, -1}, {0, 6, 11, -1}, {0, 6, 12, -1}, {0, 6, 13, -1}, {0, 6, 14, -1}, {0, 6, 15, -1}, {0, 6, 16, -1}, {0, 6, 17, -1}, {0, 6, 18, -1}, {0, 6, 19, -1}, {0, 7, 8, -1}, {0, 7, 9, -1}, {0, 7, 10, -1}, {0, 7, 11, -1}, {0, 7, 12, -1}, {0, 7, 13, -1}, {0, 7, 14, -1}, {0, 7, 15, -1}, {0, 7, 16, -1}, {0, 7, 17, -1}, {0, 7, 18, -1}, {0, 7, 19, -1}, {0, 8, 9, -1}, {0, 8, 10, -1}, {0, 8, 11, -1}, {0, 8, 12, -1}, {0, 8, 13, -1}, {0, 8, 14, -1}, {0, 8, 15, -1}, {0, 8, 16, -1}, {0, 8, 17, -1}, {0, 8, 18, -1}, {0, 8, 19, -1}, {0, 9, 10, -1}, {0, 9, 11, -1}, {0, 9, 12, -1}, {0, 9, 13, -1}, {0, 9, 14, -1}, {0, 9, 15, -1}, {0, 9, 16, -1}, {0, 9, 17, -1}, {0, 9, 18, -1}, {0, 9, 19, -1}, {0, 10, 11, -1}, {0, 10, 12, -1}, {0, 10, 13, -1}, {0, 10, 14, -1}, {0, 10, 15, -1}, {0, 10, 16, -1}, {0, 10, 17, -1}, {0, 10, 18, -1}, {0, 10, 19, -1}, {0, 11, 12, -1}, {0, 11, 13, -1}, {0, 11, 14, -1}, {0, 11, 15, -1}, {0, 11, 16, -1}, {0, 11, 17, -1}, {0, 11, 18, -1}, {0, 11, 19, -1}, {0, 12, 13, -1}, {0, 12, 14, -1}, {0, 12, 15, -1}, {0, 12, 16, -1}, {0, 12, 17, -1}, {0, 12, 18, -1}, {0, 12, 19, -1}, {0, 13, 14, -1}, {0, 13, 15, -1}, {0, 13, 16, -1}, {0, 13, 17, -1}, {0, 13, 18, -1}, {0, 13, 19, -1}, {0, 14, 15, -1}, {0, 14, 16, -1}, {0, 14, 17, -1}, {0, 14, 18, -1}, {0, 14, 19, -1}, {0, 15, 16, -1}, {0, 15, 17, -1}, {0, 15, 18, -1}, {0, 15, 19, -1}, {0, 16, 17, -1}, {0, 16, 18, -1}, {0, 16, 19, -1}, {0, 17, 18, -1}, {0, 17, 19, -1}, {0, 18, 19, -1}, {1, 2, 3, -1}, {1, 2, 4, -1}, {1, 2, 5, -1}, {1, 2, 6, -1}, {1, 2, 7, -1}, {1, 2, 8, -1}, {1, 2, 9, -1}, {1, 2, 10, -1}, {1, 2, 11, -1}, {1, 2, 12, -1}, {1, 2, 13, -1}, {1, 2, 14, -1}, {1, 2, 15, -1}, {1, 2, 16, -1}, {1, 2, 17, -1}, {1, 2, 18, -1}, {1, 2, 19, -1}, {1, 3, 4, -1}, {1, 3, 5, -1}, {1, 3, 6, -1}, {1, 3, 7, -1}, {1, 3, 8, -1}, {1, 3, 9, -1}, {1, 3, 10, -1}, {1, 3, 11, -1}, {1, 3, 12, -1}, {1, 3, 13, -1}, {1, 3, 14, -1}, {1, 3, 15, -1}, {1, 3, 16, -1}, {1, 3, 17, -1}, {1, 3, 18, -1}, {1, 3, 19, -1}, {1, 4, 5, -1}, {1, 4, 6, -1}, {1, 4, 7, -1}, {1, 4, 8, -1}, {1, 4, 9, -1}, {1, 4, 10, -1}, {1, 4, 11, -1}, {1, 4, 12, -1}, {1, 4, 13, -1}, {1, 4, 14, -1}, {1, 4, 15, -1}, {1, 4, 16, -1}, {1, 4, 17, -1}, {1, 4, 18, -1}, {1, 4, 19, -1}, {1, 5, 6, -1}, {1, 5, 7, -1}, {1, 5, 8, -1}, {1, 5, 9, -1}, {1, 5, 10, -1}, {1, 5, 11, -1}, {1, 5, 12, -1}, {1, 5, 13, -1}, {1, 5, 14, -1}, {1, 5, 15, -1}, {1, 5, 16, -1}, {1, 5, 17, -1}, {1, 5, 18, -1}, {1, 5, 19, -1}, {1, 6, 7, -1}, {1, 6, 8, -1}, {1, 6, 9, -1}, {1, 6, 10, -1}, {1, 6, 11, -1}, {1, 6, 12, -1}, {1, 6, 13, -1}, {1, 6, 14, -1}, {1, 6, 15, -1}, {1, 6, 16, -1}, {1, 6, 17, -1}, {1, 6, 18, -1}, {1, 6, 19, -1}, {1, 7, 8, -1}, {1, 7, 9, -1}, {1, 7, 10, -1}, {1, 7, 11, -1}, {1, 7, 12, -1}, {1, 7, 13, -1}, {1, 7, 14, -1}, {1, 7, 15, -1}, {1, 7, 16, -1}, {1, 7, 17, -1}, {1, 7, 18, -1}, {1, 7, 19, -1}, {1, 8, 9, -1}, {1, 8, 10, -1}, {1, 8, 11, -1}, {1, 8, 12, -1}, {1, 8, 13, -1}, {1, 8, 14, -1}, {1, 8, 15, -1}, {1, 8, 16, -1}, {1, 8, 17, -1}, {1, 8, 18, -1}, {1, 8, 19, -1}, {1, 9, 10, -1}, {1, 9, 11, -1}, {1, 9, 12, -1}, {1, 9, 13, -1}, {1, 9, 14, -1}, {1, 9, 15, -1}, {1, 9, 16, -1}, {1, 9, 17, -1}, {1, 9, 18, -1}, {1, 9, 19, -1}, {1, 10, 11, -1}, {1, 10, 12, -1}, {1, 10, 13, -1}, {1, 10, 14, -1}, {1, 10, 15, -1}, {1, 10, 16, -1}, {1, 10, 17, -1}, {1, 10, 18, -1}, {1, 10, 19, -1}, {1, 11, 12, -1}, {1, 11, 13, -1}, {1, 11, 14, -1}, {1, 11, 15, -1}, {1, 11, 16, -1}, {1, 11, 17, -1}, {1, 11, 18, -1}, {1, 11, 19, -1}, {1, 12, 13, -1}, {1, 12, 14, -1}, {1, 12, 15, -1}, {1, 12, 16, -1}, {1, 12, 17, -1}, {1, 12, 18, -1}, {1, 12, 19, -1}, {1, 13, 14, -1}, {1, 13, 15, -1}, {1, 13, 16, -1}, {1, 13, 17, -1}, {1, 13, 18, -1}, {1, 13, 19, -1}, {1, 14, 15, -1}, {1, 14, 16, -1}, {1, 14, 17, -1}, {1, 14, 18, -1}, {1, 14, 19, -1}, {1, 15, 16, -1}, {1, 15, 17, -1}, {1, 15, 18, -1}, {1, 15, 19, -1}, {1, 16, 17, -1}, {1, 16, 18, -1}, {1, 16, 19, -1}, {1, 17, 18, -1}, {1, 17, 19, -1}, {1, 18, 19, -1}, {2, 3, 4, -1}, {2, 3, 5, -1}, {2, 3, 6, -1}, {2, 3, 7, -1}, {2, 3, 8, -1}, {2, 3, 9, -1}, {2, 3, 10, -1}, {2, 3, 11, -1}, {2, 3, 12, -1}, {2, 3, 13, -1}, {2, 3, 14, -1}, {2, 3, 15, -1}, {2, 3, 16, -1}, {2, 3, 17, -1}, {2, 3, 18, -1}, {2, 3, 19, -1}, {2, 4, 5, -1}, {2, 4, 6, -1}, {2, 4, 7, -1}, {2, 4, 8, -1}, {2, 4, 9, -1}, {2, 4, 10, -1}, {2, 4, 11, -1}, {2, 4, 12, -1}, {2, 4, 13, -1}, {2, 4, 14, -1}, {2, 4, 15, -1}, {2, 4, 16, -1}, {2, 4, 17, -1}, {2, 4, 18, -1}, {2, 4, 19, -1}, {2, 5, 6, -1}, {2, 5, 7, -1}, {2, 5, 8, -1}, {2, 5, 9, -1}, {2, 5, 10, -1}, {2, 5, 11, -1}, {2, 5, 12, -1}, {2, 5, 13, -1}, {2, 5, 14, -1}, {2, 5, 15, -1}, {2, 5, 16, -1}, {2, 5, 17, -1}, {2, 5, 18, -1}, {2, 5, 19, -1}, {2, 6, 7, -1}, {2, 6, 8, -1}, {2, 6, 9, -1}, {2, 6, 10, -1}, {2, 6, 11, -1}, {2, 6, 12, -1}, {2, 6, 13, -1}, {2, 6, 14, -1}, {2, 6, 15, -1}, {2, 6, 16, -1}, {2, 6, 17, -1}, {2, 6, 18, -1}, {2, 6, 19, -1}, {2, 7, 8, -1}, {2, 7, 9, -1}, {2, 7, 10, -1}, {2, 7, 11, -1}, {2, 7, 12, -1}, {2, 7, 13, -1}, {2, 7, 14, -1}, {2, 7, 15, -1}, {2, 7, 16, -1}, {2, 7, 17, -1}, {2, 7, 18, -1}, {2, 7, 19, -1}, {2, 8, 9, -1}, {2, 8, 10, -1}, {2, 8, 11, -1}, {2, 8, 12, -1}, {2, 8, 13, -1}, {2, 8, 14, -1}, {2, 8, 15, -1}, {2, 8, 16, -1}, {2, 8, 17, -1}, {2, 8, 18, -1}, {2, 8, 19, -1}, {2, 9, 10, -1}, {2, 9, 11, -1}, {2, 9, 12, -1}, {2, 9, 13, -1}, {2, 9, 14, -1}, {2, 9, 15, -1}, {2, 9, 16, -1}, {2, 9, 17, -1}, {2, 9, 18, -1}, {2, 9, 19, -1}, {2, 10, 11, -1}, {2, 10, 12, -1}, {2, 10, 13, -1}, {2, 10, 14, -1}, {2, 10, 15, -1}, {2, 10, 16, -1}, {2, 10, 17, -1}, {2, 10, 18, -1}, {2, 10, 19, -1}, {2, 11, 12, -1}, {2, 11, 13, -1}, {2, 11, 14, -1}, {2, 11, 15, -1}, {2, 11, 16, -1}, {2, 11, 17, -1}, {2, 11, 18, -1}, {2, 11, 19, -1}, {2, 12, 13, -1}, {2, 12, 14, -1}, {2, 12, 15, -1}, {2, 12, 16, -1}, {2, 12, 17, -1}, {2, 12, 18, -1}, {2, 12, 19, -1}, {2, 13, 14, -1}, {2, 13, 15, -1}, {2, 13, 16, -1}, {2, 13, 17, -1}, {2, 13, 18, -1}, {2, 13, 19, -1}, {2, 14, 15, -1}, {2, 14, 16, -1}, {2, 14, 17, -1}, {2, 14, 18, -1}, {2, 14, 19, -1}, {2, 15, 16, -1}, {2, 15, 17, -1}, {2, 15, 18, -1}, {2, 15, 19, -1}, {2, 16, 17, -1}, {2, 16, 18, -1}, {2, 16, 19, -1}, {2, 17, 18, -1}, {2, 17, 19, -1}, {2, 18, 19, -1}, {3, 4, 5, -1}, {3, 4, 6, -1}, {3, 4, 7, -1}, {3, 4, 8, -1}, {3, 4, 9, -1}, {3, 4, 10, -1}, {3, 4, 11, -1}, {3, 4, 12, -1}, {3, 4, 13, -1}, {3, 4, 14, -1}, {3, 4, 15, -1}, {3, 4, 16, -1}, {3, 4, 17, -1}, {3, 4, 18, -1}, {3, 4, 19, -1}, {3, 5, 6, -1}, {3, 5, 7, -1}, {3, 5, 8, -1}, {3, 5, 9, -1}, {3, 5, 10, -1}, {3, 5, 11, -1}, {3, 5, 12, -1}, {3, 5, 13, -1}, {3, 5, 14, -1}, {3, 5, 15, -1}, {3, 5, 16, -1}, {3, 5, 17, -1}, {3, 5, 18, -1}, {3, 5, 19, -1}, {3, 6, 7, -1}, {3, 6, 8, -1}, {3, 6, 9, -1}, {3, 6, 10, -1}, {3, 6, 11, -1}, {3, 6, 12, -1}, {3, 6, 13, -1}, {3, 6, 14, -1}, {3, 6, 15, -1}, {3, 6, 16, -1}, {3, 6, 17, -1}, {3, 6, 18, -1}, {3, 6, 19, -1}, {3, 7, 8, -1}, {3, 7, 9, -1}, {3, 7, 10, -1}, {3, 7, 11, -1}, {3, 7, 12, -1}, {3, 7, 13, -1}, {3, 7, 14, -1}, {3, 7, 15, -1}, {3, 7, 16, -1}, {3, 7, 17, -1}, {3, 7, 18, -1}, {3, 7, 19, -1}, {3, 8, 9, -1}, {3, 8, 10, -1}, {3, 8, 11, -1}, {3, 8, 12, -1}, {3, 8, 13, -1}, {3, 8, 14, -1}, {3, 8, 15, -1}, {3, 8, 16, -1}, {3, 8, 17, -1}, {3, 8, 18, -1}, {3, 8, 19, -1}, {3, 9, 10, -1}, {3, 9, 11, -1}, {3, 9, 12, -1}, {3, 9, 13, -1}, {3, 9, 14, -1}, {3, 9, 15, -1}, {3, 9, 16, -1}, {3, 9, 17, -1}, {3, 9, 18, -1}, {3, 9, 19, -1}, {3, 10, 11, -1}, {3, 10, 12, -1}, {3, 10, 13, -1}, {3, 10, 14, -1}, {3, 10, 15, -1}, {3, 10, 16, -1}, {3, 10, 17, -1}, {3, 10, 18, -1}, {3, 10, 19, -1}, {3, 11, 12, -1}, {3, 11, 13, -1}, {3, 11, 14, -1}, {3, 11, 15, -1}, {3, 11, 16, -1}, {3, 11, 17, -1}, {3, 11, 18, -1}, {3, 11, 19, -1}, {3, 12, 13, -1}, {3, 12, 14, -1}, {3, 12, 15, -1}, {3, 12, 16, -1}, {3, 12, 17, -1}, {3, 12, 18, -1}, {3, 12, 19, -1}, {3, 13, 14, -1}, {3, 13, 15, -1}, {3, 13, 16, -1}, {3, 13, 17, -1}, {3, 13, 18, -1}, {3, 13, 19, -1}, {3, 14, 15, -1}, {3, 14, 16, -1}, {3, 14, 17, -1}, {3, 14, 18, -1}, {3, 14, 19, -1}, {3, 15, 16, -1}, {3, 15, 17, -1}, {3, 15, 18, -1}, {3, 15, 19, -1}, {3, 16, 17, -1}, {3, 16, 18, -1}, {3, 16, 19, -1}, {3, 17, 18, -1}, {3, 17, 19, -1}, {3, 18, 19, -1}, {4, 5, 6, -1}, {4, 5, 7, -1}, {4, 5, 8, -1}, {4, 5, 9, -1}, {4, 5, 10, -1}, {4, 5, 11, -1}, {4, 5, 12, -1}, {4, 5, 13, -1}, {4, 5, 14, -1}, {4, 5, 15, -1}, {4, 5, 16, -1}, {4, 5, 17, -1}, {4, 5, 18, -1}, {4, 5, 19, -1}, {4, 6, 7, -1}, {4, 6, 8, -1}, {4, 6, 9, -1}, {4, 6, 10, -1}, {4, 6, 11, -1}, {4, 6, 12, -1}, {4, 6, 13, -1}, {4, 6, 14, -1}, {4, 6, 15, -1}, {4, 6, 16, -1}, {4, 6, 17, -1}, {4, 6, 18, -1}, {4, 6, 19, -1}, {4, 7, 8, -1}, {4, 7, 9, -1}, {4, 7, 10, -1}, {4, 7, 11, -1}, {4, 7, 12, -1}, {4, 7, 13, -1}, {4, 7, 14, -1}, {4, 7, 15, -1}, {4, 7, 16, -1}, {4, 7, 17, -1}, {4, 7, 18, -1}, {4, 7, 19, -1}, {4, 8, 9, -1}, {4, 8, 10, -1}, {4, 8, 11, -1}, {4, 8, 12, -1}, {4, 8, 13, -1}, {4, 8, 14, -1}, {4, 8, 15, -1}, {4, 8, 16, -1}, {4, 8, 17, -1}, {4, 8, 18, -1}, {4, 8, 19, -1}, {4, 9, 10, -1}, {4, 9, 11, -1}, {4, 9, 12, -1}, {4, 9, 13, -1}, {4, 9, 14, -1}, {4, 9, 15, -1}, {4, 9, 16, -1}, {4, 9, 17, -1}, {4, 9, 18, -1}, {4, 9, 19, -1}, {4, 10, 11, -1}, {4, 10, 12, -1}, {4, 10, 13, -1}, {4, 10, 14, -1}, {4, 10, 15, -1}, {4, 10, 16, -1}, {4, 10, 17, -1}, {4, 10, 18, -1}, {4, 10, 19, -1}, {4, 11, 12, -1}, {4, 11, 13, -1}, {4, 11, 14, -1}, {4, 11, 15, -1}, {4, 11, 16, -1}, {4, 11, 17, -1}, {4, 11, 18, -1}, {4, 11, 19, -1}, {4, 12, 13, -1}, {4, 12, 14, -1}, {4, 12, 15, -1}, {4, 12, 16, -1}, {4, 12, 17, -1}, {4, 12, 18, -1}, {4, 12, 19, -1}, {4, 13, 14, -1}, {4, 13, 15, -1}, {4, 13, 16, -1}, {4, 13, 17, -1}, {4, 13, 18, -1}, {4, 13, 19, -1}, {4, 14, 15, -1}, {4, 14, 16, -1}, {4, 14, 17, -1}, {4, 14, 18, -1}, {4, 14, 19, -1}, {4, 15, 16, -1}, {4, 15, 17, -1}, {4, 15, 18, -1}, {4, 15, 19, -1}, {4, 16, 17, -1}, {4, 16, 18, -1}, {4, 16, 19, -1}, {4, 17, 18, -1}, {4, 17, 19, -1}, {4, 18, 19, -1}, {5, 6, 7, -1}, {5, 6, 8, -1}, {5, 6, 9, -1}, {5, 6, 10, -1}, {5, 6, 11, -1}, {5, 6, 12, -1}, {5, 6, 13, -1}, {5, 6, 14, -1}, {5, 6, 15, -1}, {5, 6, 16, -1}, {5, 6, 17, -1}, {5, 6, 18, -1}, {5, 6, 19, -1}, {5, 7, 8, -1}, {5, 7, 9, -1}, {5, 7, 10, -1}, {5, 7, 11, -1}, {5, 7, 12, -1}, {5, 7, 13, -1}, {5, 7, 14, -1}, {5, 7, 15, -1}, {5, 7, 16, -1}, {5, 7, 17, -1}, {5, 7, 18, -1}, {5, 7, 19, -1}, {5, 8, 9, -1}, {5, 8, 10, -1}, {5, 8, 11, -1}, {5, 8, 12, -1}, {5, 8, 13, -1}, {5, 8, 14, -1}, {5, 8, 15, -1}, {5, 8, 16, -1}, {5, 8, 17, -1}, {5, 8, 18, -1}, {5, 8, 19, -1}, {5, 9, 10, -1}, {5, 9, 11, -1}, {5, 9, 12, -1}, {5, 9, 13, -1}, {5, 9, 14, -1}, {5, 9, 15, -1}, {5, 9, 16, -1}, {5, 9, 17, -1}, {5, 9, 18, -1}, {5, 9, 19, -1}, {5, 10, 11, -1}, {5, 10, 12, -1}, {5, 10, 13, -1}, {5, 10, 14, -1}, {5, 10, 15, -1}, {5, 10, 16, -1}, {5, 10, 17, -1}, {5, 10, 18, -1}, {5, 10, 19, -1}, {5, 11, 12, -1}, {5, 11, 13, -1}, {5, 11, 14, -1}, {5, 11, 15, -1}, {5, 11, 16, -1}, {5, 11, 17, -1}, {5, 11, 18, -1}, {5, 11, 19, -1}, {5, 12, 13, -1}, {5, 12, 14, -1}, {5, 12, 15, -1}, {5, 12, 16, -1}, {5, 12, 17, -1}, {5, 12, 18, -1}, {5, 12, 19, -1}, {5, 13, 14, -1}, {5, 13, 15, -1}, {5, 13, 16, -1}, {5, 13, 17, -1}, {5, 13, 18, -1}, {5, 13, 19, -1}, {5, 14, 15, -1}, {5, 14, 16, -1}, {5, 14, 17, -1}, {5, 14, 18, -1}, {5, 14, 19, -1}, {5, 15, 16, -1}, {5, 15, 17, -1}, {5, 15, 18, -1}, {5, 15, 19, -1}, {5, 16, 17, -1}, {5, 16, 18, -1}, {5, 16, 19, -1}, {5, 17, 18, -1}, {5, 17, 19, -1}, {5, 18, 19, -1}, {6, 7, 8, -1}, {6, 7, 9, -1}, {6, 7, 10, -1}, {6, 7, 11, -1}, {6, 7, 12, -1}, {6, 7, 13, -1}, {6, 7, 14, -1}, {6, 7, 15, -1}, {6, 7, 16, -1}, {6, 7, 17, -1}, {6, 7, 18, -1}, {6, 7, 19, -1}, {6, 8, 9, -1}, {6, 8, 10, -1}, {6, 8, 11, -1}, {6, 8, 12, -1}, {6, 8, 13, -1}, {6, 8, 14, -1}, {6, 8, 15, -1}, {6, 8, 16, -1}, {6, 8, 17, -1}, {6, 8, 18, -1}, {6, 8, 19, -1}, {6, 9, 10, -1}, {6, 9, 11, -1}, {6, 9, 12, -1}, {6, 9, 13, -1}, {6, 9, 14, -1}, {6, 9, 15, -1}, {6, 9, 16, -1}, {6, 9, 17, -1}, {6, 9, 18, -1}, {6, 9, 19, -1}, {6, 10, 11, -1}, {6, 10, 12, -1}, {6, 10, 13, -1}, {6, 10, 14, -1}, {6, 10, 15, -1}, {6, 10, 16, -1}, {6, 10, 17, -1}, {6, 10, 18, -1}, {6, 10, 19, -1}, {6, 11, 12, -1}, {6, 11, 13, -1}, {6, 11, 14, -1}, {6, 11, 15, -1}, {6, 11, 16, -1}, {6, 11, 17, -1}, {6, 11, 18, -1}, {6, 11, 19, -1}, {6, 12, 13, -1}, {6, 12, 14, -1}, {6, 12, 15, -1}, {6, 12, 16, -1}, {6, 12, 17, -1}, {6, 12, 18, -1}, {6, 12, 19, -1}, {6, 13, 14, -1}, {6, 13, 15, -1}, {6, 13, 16, -1}, {6, 13, 17, -1}, {6, 13, 18, -1}, {6, 13, 19, -1}, {6, 14, 15, -1}, {6, 14, 16, -1}, {6, 14, 17, -1}, {6, 14, 18, -1}, {6, 14, 19, -1}, {6, 15, 16, -1}, {6, 15, 17, -1}, {6, 15, 18, -1}, {6, 15, 19, -1}, {6, 16, 17, -1}, {6, 16, 18, -1}, {6, 16, 19, -1}, {6, 17, 18, -1}, {6, 17, 19, -1}, {6, 18, 19, -1}, {7, 8, 9, -1}, {7, 8, 10, -1}, {7, 8, 11, -1}, {7, 8, 12, -1}, {7, 8, 13, -1}, {7, 8, 14, -1}, {7, 8, 15, -1}, {7, 8, 16, -1}, {7, 8, 17, -1}, {7, 8, 18, -1}, {7, 8, 19, -1}, {7, 9, 10, -1}, {7, 9, 11, -1}, {7, 9, 12, -1}, {7, 9, 13, -1}, {7, 9, 14, -1}, {7, 9, 15, -1}, {7, 9, 16, -1}, {7, 9, 17, -1}, {7, 9, 18, -1}, {7, 9, 19, -1}, {7, 10, 11, -1}, {7, 10, 12, -1}, {7, 10, 13, -1}, {7, 10, 14, -1}, {7, 10, 15, -1}, {7, 10, 16, -1}, {7, 10, 17, -1}, {7, 10, 18, -1}, {7, 10, 19, -1}, {7, 11, 12, -1}, {7, 11, 13, -1}, {7, 11, 14, -1}, {7, 11, 15, -1}, {7, 11, 16, -1}, {7, 11, 17, -1}, {7, 11, 18, -1}, {7, 11, 19, -1}, {7, 12, 13, -1}, {7, 12, 14, -1}, {7, 12, 15, -1}, {7, 12, 16, -1}, {7, 12, 17, -1}, {7, 12, 18, -1}, {7, 12, 19, -1}, {7, 13, 14, -1}, {7, 13, 15, -1}, {7, 13, 16, -1}, {7, 13, 17, -1}, {7, 13, 18, -1}, {7, 13, 19, -1}, {7, 14, 15, -1}, {7, 14, 16, -1}, {7, 14, 17, -1}, {7, 14, 18, -1}, {7, 14, 19, -1}, {7, 15, 16, -1}, {7, 15, 17, -1}, {7, 15, 18, -1}, {7, 15, 19, -1}, {7, 16, 17, -1}, {7, 16, 18, -1}, {7, 16, 19, -1}, {7, 17, 18, -1}, {7, 17, 19, -1}, {7, 18, 19, -1}, {8, 9, 10, -1}, {8, 9, 11, -1}, {8, 9, 12, -1}, {8, 9, 13, -1}, {8, 9, 14, -1}, {8, 9, 15, -1}, {8, 9, 16, -1}, {8, 9, 17, -1}, {8, 9, 18, -1}, {8, 9, 19, -1}, {8, 10, 11, -1}, {8, 10, 12, -1}, {8, 10, 13, -1}, {8, 10, 14, -1}, {8, 10, 15, -1}, {8, 10, 16, -1}, {8, 10, 17, -1}, {8, 10, 18, -1}, {8, 10, 19, -1}, {8, 11, 12, -1}, {8, 11, 13, -1}, {8, 11, 14, -1}, {8, 11, 15, -1}, {8, 11, 16, -1}, {8, 11, 17, -1}, {8, 11, 18, -1}, {8, 11, 19, -1}, {8, 12, 13, -1}, {8, 12, 14, -1}, {8, 12, 15, -1}, {8, 12, 16, -1}, {8, 12, 17, -1}, {8, 12, 18, -1}, {8, 12, 19, -1}, {8, 13, 14, -1}, {8, 13, 15, -1}, {8, 13, 16, -1}, {8, 13, 17, -1}, {8, 13, 18, -1}, {8, 13, 19, -1}, {8, 14, 15, -1}, {8, 14, 16, -1}, {8, 14, 17, -1}, {8, 14, 18, -1}, {8, 14, 19, -1}, {8, 15, 16, -1}, {8, 15, 17, -1}, {8, 15, 18, -1}, {8, 15, 19, -1}, {8, 16, 17, -1}, {8, 16, 18, -1}, {8, 16, 19, -1}, {8, 17, 18, -1}, {8, 17, 19, -1}, {8, 18, 19, -1}, {9, 10, 11, -1}, {9, 10, 12, -1}, {9, 10, 13, -1}, {9, 10, 14, -1}, {9, 10, 15, -1}, {9, 10, 16, -1}, {9, 10, 17, -1}, {9, 10, 18, -1}, {9, 10, 19, -1}, {9, 11, 12, -1}, {9, 11, 13, -1}, {9, 11, 14, -1}, {9, 11, 15, -1}, {9, 11, 16, -1}, {9, 11, 17, -1}, {9, 11, 18, -1}, {9, 11, 19, -1}, {9, 12, 13, -1}, {9, 12, 14, -1}, {9, 12, 15, -1}, {9, 12, 16, -1}, {9, 12, 17, -1}, {9, 12, 18, -1}, {9, 12, 19, -1}, {9, 13, 14, -1}, {9, 13, 15, -1}, {9, 13, 16, -1}, {9, 13, 17, -1}, {9, 13, 18, -1}, {9, 13, 19, -1}, {9, 14, 15, -1}, {9, 14, 16, -1}, {9, 14, 17, -1}, {9, 14, 18, -1}, {9, 14, 19, -1}, {9, 15, 16, -1}, {9, 15, 17, -1}, {9, 15, 18, -1}, {9, 15, 19, -1}, {9, 16, 17, -1}, {9, 16, 18, -1}, {9, 16, 19, -1}, {9, 17, 18, -1}, {9, 17, 19, -1}, {9, 18, 19, -1}, {10, 11, 12, -1}, {10, 11, 13, -1}, {10, 11, 14, -1}, {10, 11, 15, -1}, {10, 11, 16, -1}, {10, 11, 17, -1}, {10, 11, 18, -1}, {10, 11, 19, -1}, {10, 12, 13, -1}, {10, 12, 14, -1}, {10, 12, 15, -1}, {10, 12, 16, -1}, {10, 12, 17, -1}, {10, 12, 18, -1}, {10, 12, 19, -1}, {10, 13, 14, -1}, {10, 13, 15, -1}, {10, 13, 16, -1}, {10, 13, 17, -1}, {10, 13, 18, -1}, {10, 13, 19, -1}, {10, 14, 15, -1}, {10, 14, 16, -1}, {10, 14, 17, -1}, {10, 14, 18, -1}, {10, 14, 19, -1}, {10, 15, 16, -1}, {10, 15, 17, -1}, {10, 15, 18, -1}, {10, 15, 19, -1}, {10, 16, 17, -1}, {10, 16, 18, -1}, {10, 16, 19, -1}, {10, 17, 18, -1}, {10, 17, 19, -1}, {10, 18, 19, -1}, {11, 12, 13, -1}, {11, 12, 14, -1}, {11, 12, 15, -1}, {11, 12, 16, -1}, {11, 12, 17, -1}, {11, 12, 18, -1}, {11, 12, 19, -1}, {11, 13, 14, -1}, {11, 13, 15, -1}, {11, 13, 16, -1}, {11, 13, 17, -1}, {11, 13, 18, -1}, {11, 13, 19, -1}, {11, 14, 15, -1}, {11, 14, 16, -1}, {11, 14, 17, -1}, {11, 14, 18, -1}, {11, 14, 19, -1}, {11, 15, 16, -1}, {11, 15, 17, -1}, {11, 15, 18, -1}, {11, 15, 19, -1}, {11, 16, 17, -1}, {11, 16, 18, -1}, {11, 16, 19, -1}, {11, 17, 18, -1}, {11, 17, 19, -1}, {11, 18, 19, -1}, {12, 13, 14, -1}, {12, 13, 15, -1}, {12, 13, 16, -1}, {12, 13, 17, -1}, {12, 13, 18, -1}, {12, 13, 19, -1}, {12, 14, 15, -1}, {12, 14, 16, -1}, {12, 14, 17, -1}, {12, 14, 18, -1}, {12, 14, 19, -1}, {12, 15, 16, -1}, {12, 15, 17, -1}, {12, 15, 18, -1}, {12, 15, 19, -1}, {12, 16, 17, -1}, {12, 16, 18, -1}, {12, 16, 19, -1}, {12, 17, 18, -1}, {12, 17, 19, -1}, {12, 18, 19, -1}, {13, 14, 15, -1}, {13, 14, 16, -1}, {13, 14, 17, -1}, {13, 14, 18, -1}, {13, 14, 19, -1}, {13, 15, 16, -1}, {13, 15, 17, -1}, {13, 15, 18, -1}, {13, 15, 19, -1}, {13, 16, 17, -1}, {13, 16, 18, -1}, {13, 16, 19, -1}, {13, 17, 18, -1}, {13, 17, 19, -1}, {13, 18, 19, -1}, {14, 15, 16, -1}, {14, 15, 17, -1}, {14, 15, 18, -1}, {14, 15, 19, -1}, {14, 16, 17, -1}, {14, 16, 18, -1}, {14, 16, 19, -1}, {14, 17, 18, -1}, {14, 17, 19, -1}, {14, 18, 19, -1}, {15, 16, 17, -1}, {15, 16, 18, -1}, {15, 16, 19, -1}, {15, 17, 18, -1}, {15, 17, 19, -1}, {15, 18, 19, -1}, {16, 17, 18, -1}, {16, 17, 19, -1}, {16, 18, 19, -1}, {17, 18, 19, -1}} ;
68 #define NUM_21_3_COMBS 231
69 int failure_combs_21_3[NUM_21_3_COMBS][4] = {{0, -1, -1, -1}, {1, -1, -1, -1}, {2, -1, -1, -1}, {3, -1, -1, -1}, {4, -1, -1, -1}, {5, -1, -1, -1}, {6, -1, -1, -1}, {7, -1, -1, -1}, {8, -1, -1, -1}, {9, -1, -1, -1}, {10, -1, -1, -1}, {11, -1, -1, -1}, {12, -1, -1, -1}, {13, -1, -1, -1}, {14, -1, -1, -1}, {15, -1, -1, -1}, {16, -1, -1, -1}, {17, -1, -1, -1}, {18, -1, -1, -1}, {19, -1, -1, -1}, {20, -1, -1, -1}, {0, 1, -1, -1}, {0, 2, -1, -1}, {0, 3, -1, -1}, {0, 4, -1, -1}, {0, 5, -1, -1}, {0, 6, -1, -1}, {0, 7, -1, -1}, {0, 8, -1, -1}, {0, 9, -1, -1}, {0, 10, -1, -1}, {0, 11, -1, -1}, {0, 12, -1, -1}, {0, 13, -1, -1}, {0, 14, -1, -1}, {0, 15, -1, -1}, {0, 16, -1, -1}, {0, 17, -1, -1}, {0, 18, -1, -1}, {0, 19, -1, -1}, {0, 20, -1, -1}, {1, 2, -1, -1}, {1, 3, -1, -1}, {1, 4, -1, -1}, {1, 5, -1, -1}, {1, 6, -1, -1}, {1, 7, -1, -1}, {1, 8, -1, -1}, {1, 9, -1, -1}, {1, 10, -1, -1}, {1, 11, -1, -1}, {1, 12, -1, -1}, {1, 13, -1, -1}, {1, 14, -1, -1}, {1, 15, -1, -1}, {1, 16, -1, -1}, {1, 17, -1, -1}, {1, 18, -1, -1}, {1, 19, -1, -1}, {1, 20, -1, -1}, {2, 3, -1, -1}, {2, 4, -1, -1}, {2, 5, -1, -1}, {2, 6, -1, -1}, {2, 7, -1, -1}, {2, 8, -1, -1}, {2, 9, -1, -1}, {2, 10, -1, -1}, {2, 11, -1, -1}, {2, 12, -1, -1}, {2, 13, -1, -1}, {2, 14, -1, -1}, {2, 15, -1, -1}, {2, 16, -1, -1}, {2, 17, -1, -1}, {2, 18, -1, -1}, {2, 19, -1, -1}, {2, 20, -1, -1}, {3, 4, -1, -1}, {3, 5, -1, -1}, {3, 6, -1, -1}, {3, 7, -1, -1}, {3, 8, -1, -1}, {3, 9, -1, -1}, {3, 10, -1, -1}, {3, 11, -1, -1}, {3, 12, -1, -1}, {3, 13, -1, -1}, {3, 14, -1, -1}, {3, 15, -1, -1}, {3, 16, -1, -1}, {3, 17, -1, -1}, {3, 18, -1, -1}, {3, 19, -1, -1}, {3, 20, -1, -1}, {4, 5, -1, -1}, {4, 6, -1, -1}, {4, 7, -1, -1}, {4, 8, -1, -1}, {4, 9, -1, -1}, {4, 10, -1, -1}, {4, 11, -1, -1}, {4, 12, -1, -1}, {4, 13, -1, -1}, {4, 14, -1, -1}, {4, 15, -1, -1}, {4, 16, -1, -1}, {4, 17, -1, -1}, {4, 18, -1, -1}, {4, 19, -1, -1}, {4, 20, -1, -1}, {5, 6, -1, -1}, {5, 7, -1, -1}, {5, 8, -1, -1}, {5, 9, -1, -1}, {5, 10, -1, -1}, {5, 11, -1, -1}, {5, 12, -1, -1}, {5, 13, -1, -1}, {5, 14, -1, -1}, {5, 15, -1, -1}, {5, 16, -1, -1}, {5, 17, -1, -1}, {5, 18, -1, -1}, {5, 19, -1, -1}, {5, 20, -1, -1}, {6, 7, -1, -1}, {6, 8, -1, -1}, {6, 9, -1, -1}, {6, 10, -1, -1}, {6, 11, -1, -1}, {6, 12, -1, -1}, {6, 13, -1, -1}, {6, 14, -1, -1}, {6, 15, -1, -1}, {6, 16, -1, -1}, {6, 17, -1, -1}, {6, 18, -1, -1}, {6, 19, -1, -1}, {6, 20, -1, -1}, {7, 8, -1, -1}, {7, 9, -1, -1}, {7, 10, -1, -1}, {7, 11, -1, -1}, {7, 12, -1, -1}, {7, 13, -1, -1}, {7, 14, -1, -1}, {7, 15, -1, -1}, {7, 16, -1, -1}, {7, 17, -1, -1}, {7, 18, -1, -1}, {7, 19, -1, -1}, {7, 20, -1, -1}, {8, 9, -1, -1}, {8, 10, -1, -1}, {8, 11, -1, -1}, {8, 12, -1, -1}, {8, 13, -1, -1}, {8, 14, -1, -1}, {8, 15, -1, -1}, {8, 16, -1, -1}, {8, 17, -1, -1}, {8, 18, -1, -1}, {8, 19, -1, -1}, {8, 20, -1, -1}, {9, 10, -1, -1}, {9, 11, -1, -1}, {9, 12, -1, -1}, {9, 13, -1, -1}, {9, 14, -1, -1}, {9, 15, -1, -1}, {9, 16, -1, -1}, {9, 17, -1, -1}, {9, 18, -1, -1}, {9, 19, -1, -1}, {9, 20, -1, -1}, {10, 11, -1, -1}, {10, 12, -1, -1}, {10, 13, -1, -1}, {10, 14, -1, -1}, {10, 15, -1, -1}, {10, 16, -1, -1}, {10, 17, -1, -1}, {10, 18, -1, -1}, {10, 19, -1, -1}, {10, 20, -1, -1}, {11, 12, -1, -1}, {11, 13, -1, -1}, {11, 14, -1, -1}, {11, 15, -1, -1}, {11, 16, -1, -1}, {11, 17, -1, -1}, {11, 18, -1, -1}, {11, 19, -1, -1}, {11, 20, -1, -1}, {12, 13, -1, -1}, {12, 14, -1, -1}, {12, 15, -1, -1}, {12, 16, -1, -1}, {12, 17, -1, -1}, {12, 18, -1, -1}, {12, 19, -1, -1}, {12, 20, -1, -1}, {13, 14, -1, -1}, {13, 15, -1, -1}, {13, 16, -1, -1}, {13, 17, -1, -1}, {13, 18, -1, -1}, {13, 19, -1, -1}, {13, 20, -1, -1}, {14, 15, -1, -1}, {14, 16, -1, -1}, {14, 17, -1, -1}, {14, 18, -1, -1}, {14, 19, -1, -1}, {14, 20, -1, -1}, {15, 16, -1, -1}, {15, 17, -1, -1}, {15, 18, -1, -1}, {15, 19, -1, -1}, {15, 20, -1, -1}, {16, 17, -1, -1}, {16, 18, -1, -1}, {16, 19, -1, -1}, {16, 20, -1, -1}, {17, 18, -1, -1}, {17, 19, -1, -1}, {17, 20, -1, -1}, {18, 19, -1, -1}, {18, 20, -1, -1}, {19, 20, -1, -1}} ;
70 #define NUM_21_4_COMBS 1561
71 int failure_combs_21_4[NUM_21_4_COMBS][4] = {{0, -1, -1, -1}, {1, -1, -1, -1}, {2, -1, -1, -1}, {3, -1, -1, -1}, {4, -1, -1, -1}, {5, -1, -1, -1}, {6, -1, -1, -1}, {7, -1, -1, -1}, {8, -1, -1, -1}, {9, -1, -1, -1}, {10, -1, -1, -1}, {11, -1, -1, -1}, {12, -1, -1, -1}, {13, -1, -1, -1}, {14, -1, -1, -1}, {15, -1, -1, -1}, {16, -1, -1, -1}, {17, -1, -1, -1}, {18, -1, -1, -1}, {19, -1, -1, -1}, {20, -1, -1, -1}, {0, 1, -1, -1}, {0, 2, -1, -1}, {0, 3, -1, -1}, {0, 4, -1, -1}, {0, 5, -1, -1}, {0, 6, -1, -1}, {0, 7, -1, -1}, {0, 8, -1, -1}, {0, 9, -1, -1}, {0, 10, -1, -1}, {0, 11, -1, -1}, {0, 12, -1, -1}, {0, 13, -1, -1}, {0, 14, -1, -1}, {0, 15, -1, -1}, {0, 16, -1, -1}, {0, 17, -1, -1}, {0, 18, -1, -1}, {0, 19, -1, -1}, {0, 20, -1, -1}, {1, 2, -1, -1}, {1, 3, -1, -1}, {1, 4, -1, -1}, {1, 5, -1, -1}, {1, 6, -1, -1}, {1, 7, -1, -1}, {1, 8, -1, -1}, {1, 9, -1, -1}, {1, 10, -1, -1}, {1, 11, -1, -1}, {1, 12, -1, -1}, {1, 13, -1, -1}, {1, 14, -1, -1}, {1, 15, -1, -1}, {1, 16, -1, -1}, {1, 17, -1, -1}, {1, 18, -1, -1}, {1, 19, -1, -1}, {1, 20, -1, -1}, {2, 3, -1, -1}, {2, 4, -1, -1}, {2, 5, -1, -1}, {2, 6, -1, -1}, {2, 7, -1, -1}, {2, 8, -1, -1}, {2, 9, -1, -1}, {2, 10, -1, -1}, {2, 11, -1, -1}, {2, 12, -1, -1}, {2, 13, -1, -1}, {2, 14, -1, -1}, {2, 15, -1, -1}, {2, 16, -1, -1}, {2, 17, -1, -1}, {2, 18, -1, -1}, {2, 19, -1, -1}, {2, 20, -1, -1}, {3, 4, -1, -1}, {3, 5, -1, -1}, {3, 6, -1, -1}, {3, 7, -1, -1}, {3, 8, -1, -1}, {3, 9, -1, -1}, {3, 10, -1, -1}, {3, 11, -1, -1}, {3, 12, -1, -1}, {3, 13, -1, -1}, {3, 14, -1, -1}, {3, 15, -1, -1}, {3, 16, -1, -1}, {3, 17, -1, -1}, {3, 18, -1, -1}, {3, 19, -1, -1}, {3, 20, -1, -1}, {4, 5, -1, -1}, {4, 6, -1, -1}, {4, 7, -1, -1}, {4, 8, -1, -1}, {4, 9, -1, -1}, {4, 10, -1, -1}, {4, 11, -1, -1}, {4, 12, -1, -1}, {4, 13, -1, -1}, {4, 14, -1, -1}, {4, 15, -1, -1}, {4, 16, -1, -1}, {4, 17, -1, -1}, {4, 18, -1, -1}, {4, 19, -1, -1}, {4, 20, -1, -1}, {5, 6, -1, -1}, {5, 7, -1, -1}, {5, 8, -1, -1}, {5, 9, -1, -1}, {5, 10, -1, -1}, {5, 11, -1, -1}, {5, 12, -1, -1}, {5, 13, -1, -1}, {5, 14, -1, -1}, {5, 15, -1, -1}, {5, 16, -1, -1}, {5, 17, -1, -1}, {5, 18, -1, -1}, {5, 19, -1, -1}, {5, 20, -1, -1}, {6, 7, -1, -1}, {6, 8, -1, -1}, {6, 9, -1, -1}, {6, 10, -1, -1}, {6, 11, -1, -1}, {6, 12, -1, -1}, {6, 13, -1, -1}, {6, 14, -1, -1}, {6, 15, -1, -1}, {6, 16, -1, -1}, {6, 17, -1, -1}, {6, 18, -1, -1}, {6, 19, -1, -1}, {6, 20, -1, -1}, {7, 8, -1, -1}, {7, 9, -1, -1}, {7, 10, -1, -1}, {7, 11, -1, -1}, {7, 12, -1, -1}, {7, 13, -1, -1}, {7, 14, -1, -1}, {7, 15, -1, -1}, {7, 16, -1, -1}, {7, 17, -1, -1}, {7, 18, -1, -1}, {7, 19, -1, -1}, {7, 20, -1, -1}, {8, 9, -1, -1}, {8, 10, -1, -1}, {8, 11, -1, -1}, {8, 12, -1, -1}, {8, 13, -1, -1}, {8, 14, -1, -1}, {8, 15, -1, -1}, {8, 16, -1, -1}, {8, 17, -1, -1}, {8, 18, -1, -1}, {8, 19, -1, -1}, {8, 20, -1, -1}, {9, 10, -1, -1}, {9, 11, -1, -1}, {9, 12, -1, -1}, {9, 13, -1, -1}, {9, 14, -1, -1}, {9, 15, -1, -1}, {9, 16, -1, -1}, {9, 17, -1, -1}, {9, 18, -1, -1}, {9, 19, -1, -1}, {9, 20, -1, -1}, {10, 11, -1, -1}, {10, 12, -1, -1}, {10, 13, -1, -1}, {10, 14, -1, -1}, {10, 15, -1, -1}, {10, 16, -1, -1}, {10, 17, -1, -1}, {10, 18, -1, -1}, {10, 19, -1, -1}, {10, 20, -1, -1}, {11, 12, -1, -1}, {11, 13, -1, -1}, {11, 14, -1, -1}, {11, 15, -1, -1}, {11, 16, -1, -1}, {11, 17, -1, -1}, {11, 18, -1, -1}, {11, 19, -1, -1}, {11, 20, -1, -1}, {12, 13, -1, -1}, {12, 14, -1, -1}, {12, 15, -1, -1}, {12, 16, -1, -1}, {12, 17, -1, -1}, {12, 18, -1, -1}, {12, 19, -1, -1}, {12, 20, -1, -1}, {13, 14, -1, -1}, {13, 15, -1, -1}, {13, 16, -1, -1}, {13, 17, -1, -1}, {13, 18, -1, -1}, {13, 19, -1, -1}, {13, 20, -1, -1}, {14, 15, -1, -1}, {14, 16, -1, -1}, {14, 17, -1, -1}, {14, 18, -1, -1}, {14, 19, -1, -1}, {14, 20, -1, -1}, {15, 16, -1, -1}, {15, 17, -1, -1}, {15, 18, -1, -1}, {15, 19, -1, -1}, {15, 20, -1, -1}, {16, 17, -1, -1}, {16, 18, -1, -1}, {16, 19, -1, -1}, {16, 20, -1, -1}, {17, 18, -1, -1}, {17, 19, -1, -1}, {17, 20, -1, -1}, {18, 19, -1, -1}, {18, 20, -1, -1}, {19, 20, -1, -1}, {0, 1, 2, -1}, {0, 1, 3, -1}, {0, 1, 4, -1}, {0, 1, 5, -1}, {0, 1, 6, -1}, {0, 1, 7, -1}, {0, 1, 8, -1}, {0, 1, 9, -1}, {0, 1, 10, -1}, {0, 1, 11, -1}, {0, 1, 12, -1}, {0, 1, 13, -1}, {0, 1, 14, -1}, {0, 1, 15, -1}, {0, 1, 16, -1}, {0, 1, 17, -1}, {0, 1, 18, -1}, {0, 1, 19, -1}, {0, 1, 20, -1}, {0, 2, 3, -1}, {0, 2, 4, -1}, {0, 2, 5, -1}, {0, 2, 6, -1}, {0, 2, 7, -1}, {0, 2, 8, -1}, {0, 2, 9, -1}, {0, 2, 10, -1}, {0, 2, 11, -1}, {0, 2, 12, -1}, {0, 2, 13, -1}, {0, 2, 14, -1}, {0, 2, 15, -1}, {0, 2, 16, -1}, {0, 2, 17, -1}, {0, 2, 18, -1}, {0, 2, 19, -1}, {0, 2, 20, -1}, {0, 3, 4, -1}, {0, 3, 5, -1}, {0, 3, 6, -1}, {0, 3, 7, -1}, {0, 3, 8, -1}, {0, 3, 9, -1}, {0, 3, 10, -1}, {0, 3, 11, -1}, {0, 3, 12, -1}, {0, 3, 13, -1}, {0, 3, 14, -1}, {0, 3, 15, -1}, {0, 3, 16, -1}, {0, 3, 17, -1}, {0, 3, 18, -1}, {0, 3, 19, -1}, {0, 3, 20, -1}, {0, 4, 5, -1}, {0, 4, 6, -1}, {0, 4, 7, -1}, {0, 4, 8, -1}, {0, 4, 9, -1}, {0, 4, 10, -1}, {0, 4, 11, -1}, {0, 4, 12, -1}, {0, 4, 13, -1}, {0, 4, 14, -1}, {0, 4, 15, -1}, {0, 4, 16, -1}, {0, 4, 17, -1}, {0, 4, 18, -1}, {0, 4, 19, -1}, {0, 4, 20, -1}, {0, 5, 6, -1}, {0, 5, 7, -1}, {0, 5, 8, -1}, {0, 5, 9, -1}, {0, 5, 10, -1}, {0, 5, 11, -1}, {0, 5, 12, -1}, {0, 5, 13, -1}, {0, 5, 14, -1}, {0, 5, 15, -1}, {0, 5, 16, -1}, {0, 5, 17, -1}, {0, 5, 18, -1}, {0, 5, 19, -1}, {0, 5, 20, -1}, {0, 6, 7, -1}, {0, 6, 8, -1}, {0, 6, 9, -1}, {0, 6, 10, -1}, {0, 6, 11, -1}, {0, 6, 12, -1}, {0, 6, 13, -1}, {0, 6, 14, -1}, {0, 6, 15, -1}, {0, 6, 16, -1}, {0, 6, 17, -1}, {0, 6, 18, -1}, {0, 6, 19, -1}, {0, 6, 20, -1}, {0, 7, 8, -1}, {0, 7, 9, -1}, {0, 7, 10, -1}, {0, 7, 11, -1}, {0, 7, 12, -1}, {0, 7, 13, -1}, {0, 7, 14, -1}, {0, 7, 15, -1}, {0, 7, 16, -1}, {0, 7, 17, -1}, {0, 7, 18, -1}, {0, 7, 19, -1}, {0, 7, 20, -1}, {0, 8, 9, -1}, {0, 8, 10, -1}, {0, 8, 11, -1}, {0, 8, 12, -1}, {0, 8, 13, -1}, {0, 8, 14, -1}, {0, 8, 15, -1}, {0, 8, 16, -1}, {0, 8, 17, -1}, {0, 8, 18, -1}, {0, 8, 19, -1}, {0, 8, 20, -1}, {0, 9, 10, -1}, {0, 9, 11, -1}, {0, 9, 12, -1}, {0, 9, 13, -1}, {0, 9, 14, -1}, {0, 9, 15, -1}, {0, 9, 16, -1}, {0, 9, 17, -1}, {0, 9, 18, -1}, {0, 9, 19, -1}, {0, 9, 20, -1}, {0, 10, 11, -1}, {0, 10, 12, -1}, {0, 10, 13, -1}, {0, 10, 14, -1}, {0, 10, 15, -1}, {0, 10, 16, -1}, {0, 10, 17, -1}, {0, 10, 18, -1}, {0, 10, 19, -1}, {0, 10, 20, -1}, {0, 11, 12, -1}, {0, 11, 13, -1}, {0, 11, 14, -1}, {0, 11, 15, -1}, {0, 11, 16, -1}, {0, 11, 17, -1}, {0, 11, 18, -1}, {0, 11, 19, -1}, {0, 11, 20, -1}, {0, 12, 13, -1}, {0, 12, 14, -1}, {0, 12, 15, -1}, {0, 12, 16, -1}, {0, 12, 17, -1}, {0, 12, 18, -1}, {0, 12, 19, -1}, {0, 12, 20, -1}, {0, 13, 14, -1}, {0, 13, 15, -1}, {0, 13, 16, -1}, {0, 13, 17, -1}, {0, 13, 18, -1}, {0, 13, 19, -1}, {0, 13, 20, -1}, {0, 14, 15, -1}, {0, 14, 16, -1}, {0, 14, 17, -1}, {0, 14, 18, -1}, {0, 14, 19, -1}, {0, 14, 20, -1}, {0, 15, 16, -1}, {0, 15, 17, -1}, {0, 15, 18, -1}, {0, 15, 19, -1}, {0, 15, 20, -1}, {0, 16, 17, -1}, {0, 16, 18, -1}, {0, 16, 19, -1}, {0, 16, 20, -1}, {0, 17, 18, -1}, {0, 17, 19, -1}, {0, 17, 20, -1}, {0, 18, 19, -1}, {0, 18, 20, -1}, {0, 19, 20, -1}, {1, 2, 3, -1}, {1, 2, 4, -1}, {1, 2, 5, -1}, {1, 2, 6, -1}, {1, 2, 7, -1}, {1, 2, 8, -1}, {1, 2, 9, -1}, {1, 2, 10, -1}, {1, 2, 11, -1}, {1, 2, 12, -1}, {1, 2, 13, -1}, {1, 2, 14, -1}, {1, 2, 15, -1}, {1, 2, 16, -1}, {1, 2, 17, -1}, {1, 2, 18, -1}, {1, 2, 19, -1}, {1, 2, 20, -1}, {1, 3, 4, -1}, {1, 3, 5, -1}, {1, 3, 6, -1}, {1, 3, 7, -1}, {1, 3, 8, -1}, {1, 3, 9, -1}, {1, 3, 10, -1}, {1, 3, 11, -1}, {1, 3, 12, -1}, {1, 3, 13, -1}, {1, 3, 14, -1}, {1, 3, 15, -1}, {1, 3, 16, -1}, {1, 3, 17, -1}, {1, 3, 18, -1}, {1, 3, 19, -1}, {1, 3, 20, -1}, {1, 4, 5, -1}, {1, 4, 6, -1}, {1, 4, 7, -1}, {1, 4, 8, -1}, {1, 4, 9, -1}, {1, 4, 10, -1}, {1, 4, 11, -1}, {1, 4, 12, -1}, {1, 4, 13, -1}, {1, 4, 14, -1}, {1, 4, 15, -1}, {1, 4, 16, -1}, {1, 4, 17, -1}, {1, 4, 18, -1}, {1, 4, 19, -1}, {1, 4, 20, -1}, {1, 5, 6, -1}, {1, 5, 7, -1}, {1, 5, 8, -1}, {1, 5, 9, -1}, {1, 5, 10, -1}, {1, 5, 11, -1}, {1, 5, 12, -1}, {1, 5, 13, -1}, {1, 5, 14, -1}, {1, 5, 15, -1}, {1, 5, 16, -1}, {1, 5, 17, -1}, {1, 5, 18, -1}, {1, 5, 19, -1}, {1, 5, 20, -1}, {1, 6, 7, -1}, {1, 6, 8, -1}, {1, 6, 9, -1}, {1, 6, 10, -1}, {1, 6, 11, -1}, {1, 6, 12, -1}, {1, 6, 13, -1}, {1, 6, 14, -1}, {1, 6, 15, -1}, {1, 6, 16, -1}, {1, 6, 17, -1}, {1, 6, 18, -1}, {1, 6, 19, -1}, {1, 6, 20, -1}, {1, 7, 8, -1}, {1, 7, 9, -1}, {1, 7, 10, -1}, {1, 7, 11, -1}, {1, 7, 12, -1}, {1, 7, 13, -1}, {1, 7, 14, -1}, {1, 7, 15, -1}, {1, 7, 16, -1}, {1, 7, 17, -1}, {1, 7, 18, -1}, {1, 7, 19, -1}, {1, 7, 20, -1}, {1, 8, 9, -1}, {1, 8, 10, -1}, {1, 8, 11, -1}, {1, 8, 12, -1}, {1, 8, 13, -1}, {1, 8, 14, -1}, {1, 8, 15, -1}, {1, 8, 16, -1}, {1, 8, 17, -1}, {1, 8, 18, -1}, {1, 8, 19, -1}, {1, 8, 20, -1}, {1, 9, 10, -1}, {1, 9, 11, -1}, {1, 9, 12, -1}, {1, 9, 13, -1}, {1, 9, 14, -1}, {1, 9, 15, -1}, {1, 9, 16, -1}, {1, 9, 17, -1}, {1, 9, 18, -1}, {1, 9, 19, -1}, {1, 9, 20, -1}, {1, 10, 11, -1}, {1, 10, 12, -1}, {1, 10, 13, -1}, {1, 10, 14, -1}, {1, 10, 15, -1}, {1, 10, 16, -1}, {1, 10, 17, -1}, {1, 10, 18, -1}, {1, 10, 19, -1}, {1, 10, 20, -1}, {1, 11, 12, -1}, {1, 11, 13, -1}, {1, 11, 14, -1}, {1, 11, 15, -1}, {1, 11, 16, -1}, {1, 11, 17, -1}, {1, 11, 18, -1}, {1, 11, 19, -1}, {1, 11, 20, -1}, {1, 12, 13, -1}, {1, 12, 14, -1}, {1, 12, 15, -1}, {1, 12, 16, -1}, {1, 12, 17, -1}, {1, 12, 18, -1}, {1, 12, 19, -1}, {1, 12, 20, -1}, {1, 13, 14, -1}, {1, 13, 15, -1}, {1, 13, 16, -1}, {1, 13, 17, -1}, {1, 13, 18, -1}, {1, 13, 19, -1}, {1, 13, 20, -1}, {1, 14, 15, -1}, {1, 14, 16, -1}, {1, 14, 17, -1}, {1, 14, 18, -1}, {1, 14, 19, -1}, {1, 14, 20, -1}, {1, 15, 16, -1}, {1, 15, 17, -1}, {1, 15, 18, -1}, {1, 15, 19, -1}, {1, 15, 20, -1}, {1, 16, 17, -1}, {1, 16, 18, -1}, {1, 16, 19, -1}, {1, 16, 20, -1}, {1, 17, 18, -1}, {1, 17, 19, -1}, {1, 17, 20, -1}, {1, 18, 19, -1}, {1, 18, 20, -1}, {1, 19, 20, -1}, {2, 3, 4, -1}, {2, 3, 5, -1}, {2, 3, 6, -1}, {2, 3, 7, -1}, {2, 3, 8, -1}, {2, 3, 9, -1}, {2, 3, 10, -1}, {2, 3, 11, -1}, {2, 3, 12, -1}, {2, 3, 13, -1}, {2, 3, 14, -1}, {2, 3, 15, -1}, {2, 3, 16, -1}, {2, 3, 17, -1}, {2, 3, 18, -1}, {2, 3, 19, -1}, {2, 3, 20, -1}, {2, 4, 5, -1}, {2, 4, 6, -1}, {2, 4, 7, -1}, {2, 4, 8, -1}, {2, 4, 9, -1}, {2, 4, 10, -1}, {2, 4, 11, -1}, {2, 4, 12, -1}, {2, 4, 13, -1}, {2, 4, 14, -1}, {2, 4, 15, -1}, {2, 4, 16, -1}, {2, 4, 17, -1}, {2, 4, 18, -1}, {2, 4, 19, -1}, {2, 4, 20, -1}, {2, 5, 6, -1}, {2, 5, 7, -1}, {2, 5, 8, -1}, {2, 5, 9, -1}, {2, 5, 10, -1}, {2, 5, 11, -1}, {2, 5, 12, -1}, {2, 5, 13, -1}, {2, 5, 14, -1}, {2, 5, 15, -1}, {2, 5, 16, -1}, {2, 5, 17, -1}, {2, 5, 18, -1}, {2, 5, 19, -1}, {2, 5, 20, -1}, {2, 6, 7, -1}, {2, 6, 8, -1}, {2, 6, 9, -1}, {2, 6, 10, -1}, {2, 6, 11, -1}, {2, 6, 12, -1}, {2, 6, 13, -1}, {2, 6, 14, -1}, {2, 6, 15, -1}, {2, 6, 16, -1}, {2, 6, 17, -1}, {2, 6, 18, -1}, {2, 6, 19, -1}, {2, 6, 20, -1}, {2, 7, 8, -1}, {2, 7, 9, -1}, {2, 7, 10, -1}, {2, 7, 11, -1}, {2, 7, 12, -1}, {2, 7, 13, -1}, {2, 7, 14, -1}, {2, 7, 15, -1}, {2, 7, 16, -1}, {2, 7, 17, -1}, {2, 7, 18, -1}, {2, 7, 19, -1}, {2, 7, 20, -1}, {2, 8, 9, -1}, {2, 8, 10, -1}, {2, 8, 11, -1}, {2, 8, 12, -1}, {2, 8, 13, -1}, {2, 8, 14, -1}, {2, 8, 15, -1}, {2, 8, 16, -1}, {2, 8, 17, -1}, {2, 8, 18, -1}, {2, 8, 19, -1}, {2, 8, 20, -1}, {2, 9, 10, -1}, {2, 9, 11, -1}, {2, 9, 12, -1}, {2, 9, 13, -1}, {2, 9, 14, -1}, {2, 9, 15, -1}, {2, 9, 16, -1}, {2, 9, 17, -1}, {2, 9, 18, -1}, {2, 9, 19, -1}, {2, 9, 20, -1}, {2, 10, 11, -1}, {2, 10, 12, -1}, {2, 10, 13, -1}, {2, 10, 14, -1}, {2, 10, 15, -1}, {2, 10, 16, -1}, {2, 10, 17, -1}, {2, 10, 18, -1}, {2, 10, 19, -1}, {2, 10, 20, -1}, {2, 11, 12, -1}, {2, 11, 13, -1}, {2, 11, 14, -1}, {2, 11, 15, -1}, {2, 11, 16, -1}, {2, 11, 17, -1}, {2, 11, 18, -1}, {2, 11, 19, -1}, {2, 11, 20, -1}, {2, 12, 13, -1}, {2, 12, 14, -1}, {2, 12, 15, -1}, {2, 12, 16, -1}, {2, 12, 17, -1}, {2, 12, 18, -1}, {2, 12, 19, -1}, {2, 12, 20, -1}, {2, 13, 14, -1}, {2, 13, 15, -1}, {2, 13, 16, -1}, {2, 13, 17, -1}, {2, 13, 18, -1}, {2, 13, 19, -1}, {2, 13, 20, -1}, {2, 14, 15, -1}, {2, 14, 16, -1}, {2, 14, 17, -1}, {2, 14, 18, -1}, {2, 14, 19, -1}, {2, 14, 20, -1}, {2, 15, 16, -1}, {2, 15, 17, -1}, {2, 15, 18, -1}, {2, 15, 19, -1}, {2, 15, 20, -1}, {2, 16, 17, -1}, {2, 16, 18, -1}, {2, 16, 19, -1}, {2, 16, 20, -1}, {2, 17, 18, -1}, {2, 17, 19, -1}, {2, 17, 20, -1}, {2, 18, 19, -1}, {2, 18, 20, -1}, {2, 19, 20, -1}, {3, 4, 5, -1}, {3, 4, 6, -1}, {3, 4, 7, -1}, {3, 4, 8, -1}, {3, 4, 9, -1}, {3, 4, 10, -1}, {3, 4, 11, -1}, {3, 4, 12, -1}, {3, 4, 13, -1}, {3, 4, 14, -1}, {3, 4, 15, -1}, {3, 4, 16, -1}, {3, 4, 17, -1}, {3, 4, 18, -1}, {3, 4, 19, -1}, {3, 4, 20, -1}, {3, 5, 6, -1}, {3, 5, 7, -1}, {3, 5, 8, -1}, {3, 5, 9, -1}, {3, 5, 10, -1}, {3, 5, 11, -1}, {3, 5, 12, -1}, {3, 5, 13, -1}, {3, 5, 14, -1}, {3, 5, 15, -1}, {3, 5, 16, -1}, {3, 5, 17, -1}, {3, 5, 18, -1}, {3, 5, 19, -1}, {3, 5, 20, -1}, {3, 6, 7, -1}, {3, 6, 8, -1}, {3, 6, 9, -1}, {3, 6, 10, -1}, {3, 6, 11, -1}, {3, 6, 12, -1}, {3, 6, 13, -1}, {3, 6, 14, -1}, {3, 6, 15, -1}, {3, 6, 16, -1}, {3, 6, 17, -1}, {3, 6, 18, -1}, {3, 6, 19, -1}, {3, 6, 20, -1}, {3, 7, 8, -1}, {3, 7, 9, -1}, {3, 7, 10, -1}, {3, 7, 11, -1}, {3, 7, 12, -1}, {3, 7, 13, -1}, {3, 7, 14, -1}, {3, 7, 15, -1}, {3, 7, 16, -1}, {3, 7, 17, -1}, {3, 7, 18, -1}, {3, 7, 19, -1}, {3, 7, 20, -1}, {3, 8, 9, -1}, {3, 8, 10, -1}, {3, 8, 11, -1}, {3, 8, 12, -1}, {3, 8, 13, -1}, {3, 8, 14, -1}, {3, 8, 15, -1}, {3, 8, 16, -1}, {3, 8, 17, -1}, {3, 8, 18, -1}, {3, 8, 19, -1}, {3, 8, 20, -1}, {3, 9, 10, -1}, {3, 9, 11, -1}, {3, 9, 12, -1}, {3, 9, 13, -1}, {3, 9, 14, -1}, {3, 9, 15, -1}, {3, 9, 16, -1}, {3, 9, 17, -1}, {3, 9, 18, -1}, {3, 9, 19, -1}, {3, 9, 20, -1}, {3, 10, 11, -1}, {3, 10, 12, -1}, {3, 10, 13, -1}, {3, 10, 14, -1}, {3, 10, 15, -1}, {3, 10, 16, -1}, {3, 10, 17, -1}, {3, 10, 18, -1}, {3, 10, 19, -1}, {3, 10, 20, -1}, {3, 11, 12, -1}, {3, 11, 13, -1}, {3, 11, 14, -1}, {3, 11, 15, -1}, {3, 11, 16, -1}, {3, 11, 17, -1}, {3, 11, 18, -1}, {3, 11, 19, -1}, {3, 11, 20, -1}, {3, 12, 13, -1}, {3, 12, 14, -1}, {3, 12, 15, -1}, {3, 12, 16, -1}, {3, 12, 17, -1}, {3, 12, 18, -1}, {3, 12, 19, -1}, {3, 12, 20, -1}, {3, 13, 14, -1}, {3, 13, 15, -1}, {3, 13, 16, -1}, {3, 13, 17, -1}, {3, 13, 18, -1}, {3, 13, 19, -1}, {3, 13, 20, -1}, {3, 14, 15, -1}, {3, 14, 16, -1}, {3, 14, 17, -1}, {3, 14, 18, -1}, {3, 14, 19, -1}, {3, 14, 20, -1}, {3, 15, 16, -1}, {3, 15, 17, -1}, {3, 15, 18, -1}, {3, 15, 19, -1}, {3, 15, 20, -1}, {3, 16, 17, -1}, {3, 16, 18, -1}, {3, 16, 19, -1}, {3, 16, 20, -1}, {3, 17, 18, -1}, {3, 17, 19, -1}, {3, 17, 20, -1}, {3, 18, 19, -1}, {3, 18, 20, -1}, {3, 19, 20, -1}, {4, 5, 6, -1}, {4, 5, 7, -1}, {4, 5, 8, -1}, {4, 5, 9, -1}, {4, 5, 10, -1}, {4, 5, 11, -1}, {4, 5, 12, -1}, {4, 5, 13, -1}, {4, 5, 14, -1}, {4, 5, 15, -1}, {4, 5, 16, -1}, {4, 5, 17, -1}, {4, 5, 18, -1}, {4, 5, 19, -1}, {4, 5, 20, -1}, {4, 6, 7, -1}, {4, 6, 8, -1}, {4, 6, 9, -1}, {4, 6, 10, -1}, {4, 6, 11, -1}, {4, 6, 12, -1}, {4, 6, 13, -1}, {4, 6, 14, -1}, {4, 6, 15, -1}, {4, 6, 16, -1}, {4, 6, 17, -1}, {4, 6, 18, -1}, {4, 6, 19, -1}, {4, 6, 20, -1}, {4, 7, 8, -1}, {4, 7, 9, -1}, {4, 7, 10, -1}, {4, 7, 11, -1}, {4, 7, 12, -1}, {4, 7, 13, -1}, {4, 7, 14, -1}, {4, 7, 15, -1}, {4, 7, 16, -1}, {4, 7, 17, -1}, {4, 7, 18, -1}, {4, 7, 19, -1}, {4, 7, 20, -1}, {4, 8, 9, -1}, {4, 8, 10, -1}, {4, 8, 11, -1}, {4, 8, 12, -1}, {4, 8, 13, -1}, {4, 8, 14, -1}, {4, 8, 15, -1}, {4, 8, 16, -1}, {4, 8, 17, -1}, {4, 8, 18, -1}, {4, 8, 19, -1}, {4, 8, 20, -1}, {4, 9, 10, -1}, {4, 9, 11, -1}, {4, 9, 12, -1}, {4, 9, 13, -1}, {4, 9, 14, -1}, {4, 9, 15, -1}, {4, 9, 16, -1}, {4, 9, 17, -1}, {4, 9, 18, -1}, {4, 9, 19, -1}, {4, 9, 20, -1}, {4, 10, 11, -1}, {4, 10, 12, -1}, {4, 10, 13, -1}, {4, 10, 14, -1}, {4, 10, 15, -1}, {4, 10, 16, -1}, {4, 10, 17, -1}, {4, 10, 18, -1}, {4, 10, 19, -1}, {4, 10, 20, -1}, {4, 11, 12, -1}, {4, 11, 13, -1}, {4, 11, 14, -1}, {4, 11, 15, -1}, {4, 11, 16, -1}, {4, 11, 17, -1}, {4, 11, 18, -1}, {4, 11, 19, -1}, {4, 11, 20, -1}, {4, 12, 13, -1}, {4, 12, 14, -1}, {4, 12, 15, -1}, {4, 12, 16, -1}, {4, 12, 17, -1}, {4, 12, 18, -1}, {4, 12, 19, -1}, {4, 12, 20, -1}, {4, 13, 14, -1}, {4, 13, 15, -1}, {4, 13, 16, -1}, {4, 13, 17, -1}, {4, 13, 18, -1}, {4, 13, 19, -1}, {4, 13, 20, -1}, {4, 14, 15, -1}, {4, 14, 16, -1}, {4, 14, 17, -1}, {4, 14, 18, -1}, {4, 14, 19, -1}, {4, 14, 20, -1}, {4, 15, 16, -1}, {4, 15, 17, -1}, {4, 15, 18, -1}, {4, 15, 19, -1}, {4, 15, 20, -1}, {4, 16, 17, -1}, {4, 16, 18, -1}, {4, 16, 19, -1}, {4, 16, 20, -1}, {4, 17, 18, -1}, {4, 17, 19, -1}, {4, 17, 20, -1}, {4, 18, 19, -1}, {4, 18, 20, -1}, {4, 19, 20, -1}, {5, 6, 7, -1}, {5, 6, 8, -1}, {5, 6, 9, -1}, {5, 6, 10, -1}, {5, 6, 11, -1}, {5, 6, 12, -1}, {5, 6, 13, -1}, {5, 6, 14, -1}, {5, 6, 15, -1}, {5, 6, 16, -1}, {5, 6, 17, -1}, {5, 6, 18, -1}, {5, 6, 19, -1}, {5, 6, 20, -1}, {5, 7, 8, -1}, {5, 7, 9, -1}, {5, 7, 10, -1}, {5, 7, 11, -1}, {5, 7, 12, -1}, {5, 7, 13, -1}, {5, 7, 14, -1}, {5, 7, 15, -1}, {5, 7, 16, -1}, {5, 7, 17, -1}, {5, 7, 18, -1}, {5, 7, 19, -1}, {5, 7, 20, -1}, {5, 8, 9, -1}, {5, 8, 10, -1}, {5, 8, 11, -1}, {5, 8, 12, -1}, {5, 8, 13, -1}, {5, 8, 14, -1}, {5, 8, 15, -1}, {5, 8, 16, -1}, {5, 8, 17, -1}, {5, 8, 18, -1}, {5, 8, 19, -1}, {5, 8, 20, -1}, {5, 9, 10, -1}, {5, 9, 11, -1}, {5, 9, 12, -1}, {5, 9, 13, -1}, {5, 9, 14, -1}, {5, 9, 15, -1}, {5, 9, 16, -1}, {5, 9, 17, -1}, {5, 9, 18, -1}, {5, 9, 19, -1}, {5, 9, 20, -1}, {5, 10, 11, -1}, {5, 10, 12, -1}, {5, 10, 13, -1}, {5, 10, 14, -1}, {5, 10, 15, -1}, {5, 10, 16, -1}, {5, 10, 17, -1}, {5, 10, 18, -1}, {5, 10, 19, -1}, {5, 10, 20, -1}, {5, 11, 12, -1}, {5, 11, 13, -1}, {5, 11, 14, -1}, {5, 11, 15, -1}, {5, 11, 16, -1}, {5, 11, 17, -1}, {5, 11, 18, -1}, {5, 11, 19, -1}, {5, 11, 20, -1}, {5, 12, 13, -1}, {5, 12, 14, -1}, {5, 12, 15, -1}, {5, 12, 16, -1}, {5, 12, 17, -1}, {5, 12, 18, -1}, {5, 12, 19, -1}, {5, 12, 20, -1}, {5, 13, 14, -1}, {5, 13, 15, -1}, {5, 13, 16, -1}, {5, 13, 17, -1}, {5, 13, 18, -1}, {5, 13, 19, -1}, {5, 13, 20, -1}, {5, 14, 15, -1}, {5, 14, 16, -1}, {5, 14, 17, -1}, {5, 14, 18, -1}, {5, 14, 19, -1}, {5, 14, 20, -1}, {5, 15, 16, -1}, {5, 15, 17, -1}, {5, 15, 18, -1}, {5, 15, 19, -1}, {5, 15, 20, -1}, {5, 16, 17, -1}, {5, 16, 18, -1}, {5, 16, 19, -1}, {5, 16, 20, -1}, {5, 17, 18, -1}, {5, 17, 19, -1}, {5, 17, 20, -1}, {5, 18, 19, -1}, {5, 18, 20, -1}, {5, 19, 20, -1}, {6, 7, 8, -1}, {6, 7, 9, -1}, {6, 7, 10, -1}, {6, 7, 11, -1}, {6, 7, 12, -1}, {6, 7, 13, -1}, {6, 7, 14, -1}, {6, 7, 15, -1}, {6, 7, 16, -1}, {6, 7, 17, -1}, {6, 7, 18, -1}, {6, 7, 19, -1}, {6, 7, 20, -1}, {6, 8, 9, -1}, {6, 8, 10, -1}, {6, 8, 11, -1}, {6, 8, 12, -1}, {6, 8, 13, -1}, {6, 8, 14, -1}, {6, 8, 15, -1}, {6, 8, 16, -1}, {6, 8, 17, -1}, {6, 8, 18, -1}, {6, 8, 19, -1}, {6, 8, 20, -1}, {6, 9, 10, -1}, {6, 9, 11, -1}, {6, 9, 12, -1}, {6, 9, 13, -1}, {6, 9, 14, -1}, {6, 9, 15, -1}, {6, 9, 16, -1}, {6, 9, 17, -1}, {6, 9, 18, -1}, {6, 9, 19, -1}, {6, 9, 20, -1}, {6, 10, 11, -1}, {6, 10, 12, -1}, {6, 10, 13, -1}, {6, 10, 14, -1}, {6, 10, 15, -1}, {6, 10, 16, -1}, {6, 10, 17, -1}, {6, 10, 18, -1}, {6, 10, 19, -1}, {6, 10, 20, -1}, {6, 11, 12, -1}, {6, 11, 13, -1}, {6, 11, 14, -1}, {6, 11, 15, -1}, {6, 11, 16, -1}, {6, 11, 17, -1}, {6, 11, 18, -1}, {6, 11, 19, -1}, {6, 11, 20, -1}, {6, 12, 13, -1}, {6, 12, 14, -1}, {6, 12, 15, -1}, {6, 12, 16, -1}, {6, 12, 17, -1}, {6, 12, 18, -1}, {6, 12, 19, -1}, {6, 12, 20, -1}, {6, 13, 14, -1}, {6, 13, 15, -1}, {6, 13, 16, -1}, {6, 13, 17, -1}, {6, 13, 18, -1}, {6, 13, 19, -1}, {6, 13, 20, -1}, {6, 14, 15, -1}, {6, 14, 16, -1}, {6, 14, 17, -1}, {6, 14, 18, -1}, {6, 14, 19, -1}, {6, 14, 20, -1}, {6, 15, 16, -1}, {6, 15, 17, -1}, {6, 15, 18, -1}, {6, 15, 19, -1}, {6, 15, 20, -1}, {6, 16, 17, -1}, {6, 16, 18, -1}, {6, 16, 19, -1}, {6, 16, 20, -1}, {6, 17, 18, -1}, {6, 17, 19, -1}, {6, 17, 20, -1}, {6, 18, 19, -1}, {6, 18, 20, -1}, {6, 19, 20, -1}, {7, 8, 9, -1}, {7, 8, 10, -1}, {7, 8, 11, -1}, {7, 8, 12, -1}, {7, 8, 13, -1}, {7, 8, 14, -1}, {7, 8, 15, -1}, {7, 8, 16, -1}, {7, 8, 17, -1}, {7, 8, 18, -1}, {7, 8, 19, -1}, {7, 8, 20, -1}, {7, 9, 10, -1}, {7, 9, 11, -1}, {7, 9, 12, -1}, {7, 9, 13, -1}, {7, 9, 14, -1}, {7, 9, 15, -1}, {7, 9, 16, -1}, {7, 9, 17, -1}, {7, 9, 18, -1}, {7, 9, 19, -1}, {7, 9, 20, -1}, {7, 10, 11, -1}, {7, 10, 12, -1}, {7, 10, 13, -1}, {7, 10, 14, -1}, {7, 10, 15, -1}, {7, 10, 16, -1}, {7, 10, 17, -1}, {7, 10, 18, -1}, {7, 10, 19, -1}, {7, 10, 20, -1}, {7, 11, 12, -1}, {7, 11, 13, -1}, {7, 11, 14, -1}, {7, 11, 15, -1}, {7, 11, 16, -1}, {7, 11, 17, -1}, {7, 11, 18, -1}, {7, 11, 19, -1}, {7, 11, 20, -1}, {7, 12, 13, -1}, {7, 12, 14, -1}, {7, 12, 15, -1}, {7, 12, 16, -1}, {7, 12, 17, -1}, {7, 12, 18, -1}, {7, 12, 19, -1}, {7, 12, 20, -1}, {7, 13, 14, -1}, {7, 13, 15, -1}, {7, 13, 16, -1}, {7, 13, 17, -1}, {7, 13, 18, -1}, {7, 13, 19, -1}, {7, 13, 20, -1}, {7, 14, 15, -1}, {7, 14, 16, -1}, {7, 14, 17, -1}, {7, 14, 18, -1}, {7, 14, 19, -1}, {7, 14, 20, -1}, {7, 15, 16, -1}, {7, 15, 17, -1}, {7, 15, 18, -1}, {7, 15, 19, -1}, {7, 15, 20, -1}, {7, 16, 17, -1}, {7, 16, 18, -1}, {7, 16, 19, -1}, {7, 16, 20, -1}, {7, 17, 18, -1}, {7, 17, 19, -1}, {7, 17, 20, -1}, {7, 18, 19, -1}, {7, 18, 20, -1}, {7, 19, 20, -1}, {8, 9, 10, -1}, {8, 9, 11, -1}, {8, 9, 12, -1}, {8, 9, 13, -1}, {8, 9, 14, -1}, {8, 9, 15, -1}, {8, 9, 16, -1}, {8, 9, 17, -1}, {8, 9, 18, -1}, {8, 9, 19, -1}, {8, 9, 20, -1}, {8, 10, 11, -1}, {8, 10, 12, -1}, {8, 10, 13, -1}, {8, 10, 14, -1}, {8, 10, 15, -1}, {8, 10, 16, -1}, {8, 10, 17, -1}, {8, 10, 18, -1}, {8, 10, 19, -1}, {8, 10, 20, -1}, {8, 11, 12, -1}, {8, 11, 13, -1}, {8, 11, 14, -1}, {8, 11, 15, -1}, {8, 11, 16, -1}, {8, 11, 17, -1}, {8, 11, 18, -1}, {8, 11, 19, -1}, {8, 11, 20, -1}, {8, 12, 13, -1}, {8, 12, 14, -1}, {8, 12, 15, -1}, {8, 12, 16, -1}, {8, 12, 17, -1}, {8, 12, 18, -1}, {8, 12, 19, -1}, {8, 12, 20, -1}, {8, 13, 14, -1}, {8, 13, 15, -1}, {8, 13, 16, -1}, {8, 13, 17, -1}, {8, 13, 18, -1}, {8, 13, 19, -1}, {8, 13, 20, -1}, {8, 14, 15, -1}, {8, 14, 16, -1}, {8, 14, 17, -1}, {8, 14, 18, -1}, {8, 14, 19, -1}, {8, 14, 20, -1}, {8, 15, 16, -1}, {8, 15, 17, -1}, {8, 15, 18, -1}, {8, 15, 19, -1}, {8, 15, 20, -1}, {8, 16, 17, -1}, {8, 16, 18, -1}, {8, 16, 19, -1}, {8, 16, 20, -1}, {8, 17, 18, -1}, {8, 17, 19, -1}, {8, 17, 20, -1}, {8, 18, 19, -1}, {8, 18, 20, -1}, {8, 19, 20, -1}, {9, 10, 11, -1}, {9, 10, 12, -1}, {9, 10, 13, -1}, {9, 10, 14, -1}, {9, 10, 15, -1}, {9, 10, 16, -1}, {9, 10, 17, -1}, {9, 10, 18, -1}, {9, 10, 19, -1}, {9, 10, 20, -1}, {9, 11, 12, -1}, {9, 11, 13, -1}, {9, 11, 14, -1}, {9, 11, 15, -1}, {9, 11, 16, -1}, {9, 11, 17, -1}, {9, 11, 18, -1}, {9, 11, 19, -1}, {9, 11, 20, -1}, {9, 12, 13, -1}, {9, 12, 14, -1}, {9, 12, 15, -1}, {9, 12, 16, -1}, {9, 12, 17, -1}, {9, 12, 18, -1}, {9, 12, 19, -1}, {9, 12, 20, -1}, {9, 13, 14, -1}, {9, 13, 15, -1}, {9, 13, 16, -1}, {9, 13, 17, -1}, {9, 13, 18, -1}, {9, 13, 19, -1}, {9, 13, 20, -1}, {9, 14, 15, -1}, {9, 14, 16, -1}, {9, 14, 17, -1}, {9, 14, 18, -1}, {9, 14, 19, -1}, {9, 14, 20, -1}, {9, 15, 16, -1}, {9, 15, 17, -1}, {9, 15, 18, -1}, {9, 15, 19, -1}, {9, 15, 20, -1}, {9, 16, 17, -1}, {9, 16, 18, -1}, {9, 16, 19, -1}, {9, 16, 20, -1}, {9, 17, 18, -1}, {9, 17, 19, -1}, {9, 17, 20, -1}, {9, 18, 19, -1}, {9, 18, 20, -1}, {9, 19, 20, -1}, {10, 11, 12, -1}, {10, 11, 13, -1}, {10, 11, 14, -1}, {10, 11, 15, -1}, {10, 11, 16, -1}, {10, 11, 17, -1}, {10, 11, 18, -1}, {10, 11, 19, -1}, {10, 11, 20, -1}, {10, 12, 13, -1}, {10, 12, 14, -1}, {10, 12, 15, -1}, {10, 12, 16, -1}, {10, 12, 17, -1}, {10, 12, 18, -1}, {10, 12, 19, -1}, {10, 12, 20, -1}, {10, 13, 14, -1}, {10, 13, 15, -1}, {10, 13, 16, -1}, {10, 13, 17, -1}, {10, 13, 18, -1}, {10, 13, 19, -1}, {10, 13, 20, -1}, {10, 14, 15, -1}, {10, 14, 16, -1}, {10, 14, 17, -1}, {10, 14, 18, -1}, {10, 14, 19, -1}, {10, 14, 20, -1}, {10, 15, 16, -1}, {10, 15, 17, -1}, {10, 15, 18, -1}, {10, 15, 19, -1}, {10, 15, 20, -1}, {10, 16, 17, -1}, {10, 16, 18, -1}, {10, 16, 19, -1}, {10, 16, 20, -1}, {10, 17, 18, -1}, {10, 17, 19, -1}, {10, 17, 20, -1}, {10, 18, 19, -1}, {10, 18, 20, -1}, {10, 19, 20, -1}, {11, 12, 13, -1}, {11, 12, 14, -1}, {11, 12, 15, -1}, {11, 12, 16, -1}, {11, 12, 17, -1}, {11, 12, 18, -1}, {11, 12, 19, -1}, {11, 12, 20, -1}, {11, 13, 14, -1}, {11, 13, 15, -1}, {11, 13, 16, -1}, {11, 13, 17, -1}, {11, 13, 18, -1}, {11, 13, 19, -1}, {11, 13, 20, -1}, {11, 14, 15, -1}, {11, 14, 16, -1}, {11, 14, 17, -1}, {11, 14, 18, -1}, {11, 14, 19, -1}, {11, 14, 20, -1}, {11, 15, 16, -1}, {11, 15, 17, -1}, {11, 15, 18, -1}, {11, 15, 19, -1}, {11, 15, 20, -1}, {11, 16, 17, -1}, {11, 16, 18, -1}, {11, 16, 19, -1}, {11, 16, 20, -1}, {11, 17, 18, -1}, {11, 17, 19, -1}, {11, 17, 20, -1}, {11, 18, 19, -1}, {11, 18, 20, -1}, {11, 19, 20, -1}, {12, 13, 14, -1}, {12, 13, 15, -1}, {12, 13, 16, -1}, {12, 13, 17, -1}, {12, 13, 18, -1}, {12, 13, 19, -1}, {12, 13, 20, -1}, {12, 14, 15, -1}, {12, 14, 16, -1}, {12, 14, 17, -1}, {12, 14, 18, -1}, {12, 14, 19, -1}, {12, 14, 20, -1}, {12, 15, 16, -1}, {12, 15, 17, -1}, {12, 15, 18, -1}, {12, 15, 19, -1}, {12, 15, 20, -1}, {12, 16, 17, -1}, {12, 16, 18, -1}, {12, 16, 19, -1}, {12, 16, 20, -1}, {12, 17, 18, -1}, {12, 17, 19, -1}, {12, 17, 20, -1}, {12, 18, 19, -1}, {12, 18, 20, -1}, {12, 19, 20, -1}, {13, 14, 15, -1}, {13, 14, 16, -1}, {13, 14, 17, -1}, {13, 14, 18, -1}, {13, 14, 19, -1}, {13, 14, 20, -1}, {13, 15, 16, -1}, {13, 15, 17, -1}, {13, 15, 18, -1}, {13, 15, 19, -1}, {13, 15, 20, -1}, {13, 16, 17, -1}, {13, 16, 18, -1}, {13, 16, 19, -1}, {13, 16, 20, -1}, {13, 17, 18, -1}, {13, 17, 19, -1}, {13, 17, 20, -1}, {13, 18, 19, -1}, {13, 18, 20, -1}, {13, 19, 20, -1}, {14, 15, 16, -1}, {14, 15, 17, -1}, {14, 15, 18, -1}, {14, 15, 19, -1}, {14, 15, 20, -1}, {14, 16, 17, -1}, {14, 16, 18, -1}, {14, 16, 19, -1}, {14, 16, 20, -1}, {14, 17, 18, -1}, {14, 17, 19, -1}, {14, 17, 20, -1}, {14, 18, 19, -1}, {14, 18, 20, -1}, {14, 19, 20, -1}, {15, 16, 17, -1}, {15, 16, 18, -1}, {15, 16, 19, -1}, {15, 16, 20, -1}, {15, 17, 18, -1}, {15, 17, 19, -1}, {15, 17, 20, -1}, {15, 18, 19, -1}, {15, 18, 20, -1}, {15, 19, 20, -1}, {16, 17, 18, -1}, {16, 17, 19, -1}, {16, 17, 20, -1}, {16, 18, 19, -1}, {16, 18, 20, -1}, {16, 19, 20, -1}, {17, 18, 19, -1}, {17, 18, 20, -1}, {17, 19, 20, -1}, {18, 19, 20, -1}} ;
72 #define NUM_22_3_COMBS 253
73 int failure_combs_22_3[NUM_22_3_COMBS][4] = {{0, -1, -1, -1}, {1, -1, -1, -1}, {2, -1, -1, -1}, {3, -1, -1, -1}, {4, -1, -1, -1}, {5, -1, -1, -1}, {6, -1, -1, -1}, {7, -1, -1, -1}, {8, -1, -1, -1}, {9, -1, -1, -1}, {10, -1, -1, -1}, {11, -1, -1, -1}, {12, -1, -1, -1}, {13, -1, -1, -1}, {14, -1, -1, -1}, {15, -1, -1, -1}, {16, -1, -1, -1}, {17, -1, -1, -1}, {18, -1, -1, -1}, {19, -1, -1, -1}, {20, -1, -1, -1}, {21, -1, -1, -1}, {0, 1, -1, -1}, {0, 2, -1, -1}, {0, 3, -1, -1}, {0, 4, -1, -1}, {0, 5, -1, -1}, {0, 6, -1, -1}, {0, 7, -1, -1}, {0, 8, -1, -1}, {0, 9, -1, -1}, {0, 10, -1, -1}, {0, 11, -1, -1}, {0, 12, -1, -1}, {0, 13, -1, -1}, {0, 14, -1, -1}, {0, 15, -1, -1}, {0, 16, -1, -1}, {0, 17, -1, -1}, {0, 18, -1, -1}, {0, 19, -1, -1}, {0, 20, -1, -1}, {0, 21, -1, -1}, {1, 2, -1, -1}, {1, 3, -1, -1}, {1, 4, -1, -1}, {1, 5, -1, -1}, {1, 6, -1, -1}, {1, 7, -1, -1}, {1, 8, -1, -1}, {1, 9, -1, -1}, {1, 10, -1, -1}, {1, 11, -1, -1}, {1, 12, -1, -1}, {1, 13, -1, -1}, {1, 14, -1, -1}, {1, 15, -1, -1}, {1, 16, -1, -1}, {1, 17, -1, -1}, {1, 18, -1, -1}, {1, 19, -1, -1}, {1, 20, -1, -1}, {1, 21, -1, -1}, {2, 3, -1, -1}, {2, 4, -1, -1}, {2, 5, -1, -1}, {2, 6, -1, -1}, {2, 7, -1, -1}, {2, 8, -1, -1}, {2, 9, -1, -1}, {2, 10, -1, -1}, {2, 11, -1, -1}, {2, 12, -1, -1}, {2, 13, -1, -1}, {2, 14, -1, -1}, {2, 15, -1, -1}, {2, 16, -1, -1}, {2, 17, -1, -1}, {2, 18, -1, -1}, {2, 19, -1, -1}, {2, 20, -1, -1}, {2, 21, -1, -1}, {3, 4, -1, -1}, {3, 5, -1, -1}, {3, 6, -1, -1}, {3, 7, -1, -1}, {3, 8, -1, -1}, {3, 9, -1, -1}, {3, 10, -1, -1}, {3, 11, -1, -1}, {3, 12, -1, -1}, {3, 13, -1, -1}, {3, 14, -1, -1}, {3, 15, -1, -1}, {3, 16, -1, -1}, {3, 17, -1, -1}, {3, 18, -1, -1}, {3, 19, -1, -1}, {3, 20, -1, -1}, {3, 21, -1, -1}, {4, 5, -1, -1}, {4, 6, -1, -1}, {4, 7, -1, -1}, {4, 8, -1, -1}, {4, 9, -1, -1}, {4, 10, -1, -1}, {4, 11, -1, -1}, {4, 12, -1, -1}, {4, 13, -1, -1}, {4, 14, -1, -1}, {4, 15, -1, -1}, {4, 16, -1, -1}, {4, 17, -1, -1}, {4, 18, -1, -1}, {4, 19, -1, -1}, {4, 20, -1, -1}, {4, 21, -1, -1}, {5, 6, -1, -1}, {5, 7, -1, -1}, {5, 8, -1, -1}, {5, 9, -1, -1}, {5, 10, -1, -1}, {5, 11, -1, -1}, {5, 12, -1, -1}, {5, 13, -1, -1}, {5, 14, -1, -1}, {5, 15, -1, -1}, {5, 16, -1, -1}, {5, 17, -1, -1}, {5, 18, -1, -1}, {5, 19, -1, -1}, {5, 20, -1, -1}, {5, 21, -1, -1}, {6, 7, -1, -1}, {6, 8, -1, -1}, {6, 9, -1, -1}, {6, 10, -1, -1}, {6, 11, -1, -1}, {6, 12, -1, -1}, {6, 13, -1, -1}, {6, 14, -1, -1}, {6, 15, -1, -1}, {6, 16, -1, -1}, {6, 17, -1, -1}, {6, 18, -1, -1}, {6, 19, -1, -1}, {6, 20, -1, -1}, {6, 21, -1, -1}, {7, 8, -1, -1}, {7, 9, -1, -1}, {7, 10, -1, -1}, {7, 11, -1, -1}, {7, 12, -1, -1}, {7, 13, -1, -1}, {7, 14, -1, -1}, {7, 15, -1, -1}, {7, 16, -1, -1}, {7, 17, -1, -1}, {7, 18, -1, -1}, {7, 19, -1, -1}, {7, 20, -1, -1}, {7, 21, -1, -1}, {8, 9, -1, -1}, {8, 10, -1, -1}, {8, 11, -1, -1}, {8, 12, -1, -1}, {8, 13, -1, -1}, {8, 14, -1, -1}, {8, 15, -1, -1}, {8, 16, -1, -1}, {8, 17, -1, -1}, {8, 18, -1, -1}, {8, 19, -1, -1}, {8, 20, -1, -1}, {8, 21, -1, -1}, {9, 10, -1, -1}, {9, 11, -1, -1}, {9, 12, -1, -1}, {9, 13, -1, -1}, {9, 14, -1, -1}, {9, 15, -1, -1}, {9, 16, -1, -1}, {9, 17, -1, -1}, {9, 18, -1, -1}, {9, 19, -1, -1}, {9, 20, -1, -1}, {9, 21, -1, -1}, {10, 11, -1, -1}, {10, 12, -1, -1}, {10, 13, -1, -1}, {10, 14, -1, -1}, {10, 15, -1, -1}, {10, 16, -1, -1}, {10, 17, -1, -1}, {10, 18, -1, -1}, {10, 19, -1, -1}, {10, 20, -1, -1}, {10, 21, -1, -1}, {11, 12, -1, -1}, {11, 13, -1, -1}, {11, 14, -1, -1}, {11, 15, -1, -1}, {11, 16, -1, -1}, {11, 17, -1, -1}, {11, 18, -1, -1}, {11, 19, -1, -1}, {11, 20, -1, -1}, {11, 21, -1, -1}, {12, 13, -1, -1}, {12, 14, -1, -1}, {12, 15, -1, -1}, {12, 16, -1, -1}, {12, 17, -1, -1}, {12, 18, -1, -1}, {12, 19, -1, -1}, {12, 20, -1, -1}, {12, 21, -1, -1}, {13, 14, -1, -1}, {13, 15, -1, -1}, {13, 16, -1, -1}, {13, 17, -1, -1}, {13, 18, -1, -1}, {13, 19, -1, -1}, {13, 20, -1, -1}, {13, 21, -1, -1}, {14, 15, -1, -1}, {14, 16, -1, -1}, {14, 17, -1, -1}, {14, 18, -1, -1}, {14, 19, -1, -1}, {14, 20, -1, -1}, {14, 21, -1, -1}, {15, 16, -1, -1}, {15, 17, -1, -1}, {15, 18, -1, -1}, {15, 19, -1, -1}, {15, 20, -1, -1}, {15, 21, -1, -1}, {16, 17, -1, -1}, {16, 18, -1, -1}, {16, 19, -1, -1}, {16, 20, -1, -1}, {16, 21, -1, -1}, {17, 18, -1, -1}, {17, 19, -1, -1}, {17, 20, -1, -1}, {17, 21, -1, -1}, {18, 19, -1, -1}, {18, 20, -1, -1}, {18, 21, -1, -1}, {19, 20, -1, -1}, {19, 21, -1, -1}, {20, 21, -1, -1}} ;
74 #define NUM_22_4_COMBS 1793
75 int failure_combs_22_4[NUM_22_4_COMBS][4] = {{0, -1, -1, -1}, {1, -1, -1, -1}, {2, -1, -1, -1}, {3, -1, -1, -1}, {4, -1, -1, -1}, {5, -1, -1, -1}, {6, -1, -1, -1}, {7, -1, -1, -1}, {8, -1, -1, -1}, {9, -1, -1, -1}, {10, -1, -1, -1}, {11, -1, -1, -1}, {12, -1, -1, -1}, {13, -1, -1, -1}, {14, -1, -1, -1}, {15, -1, -1, -1}, {16, -1, -1, -1}, {17, -1, -1, -1}, {18, -1, -1, -1}, {19, -1, -1, -1}, {20, -1, -1, -1}, {21, -1, -1, -1}, {0, 1, -1, -1}, {0, 2, -1, -1}, {0, 3, -1, -1}, {0, 4, -1, -1}, {0, 5, -1, -1}, {0, 6, -1, -1}, {0, 7, -1, -1}, {0, 8, -1, -1}, {0, 9, -1, -1}, {0, 10, -1, -1}, {0, 11, -1, -1}, {0, 12, -1, -1}, {0, 13, -1, -1}, {0, 14, -1, -1}, {0, 15, -1, -1}, {0, 16, -1, -1}, {0, 17, -1, -1}, {0, 18, -1, -1}, {0, 19, -1, -1}, {0, 20, -1, -1}, {0, 21, -1, -1}, {1, 2, -1, -1}, {1, 3, -1, -1}, {1, 4, -1, -1}, {1, 5, -1, -1}, {1, 6, -1, -1}, {1, 7, -1, -1}, {1, 8, -1, -1}, {1, 9, -1, -1}, {1, 10, -1, -1}, {1, 11, -1, -1}, {1, 12, -1, -1}, {1, 13, -1, -1}, {1, 14, -1, -1}, {1, 15, -1, -1}, {1, 16, -1, -1}, {1, 17, -1, -1}, {1, 18, -1, -1}, {1, 19, -1, -1}, {1, 20, -1, -1}, {1, 21, -1, -1}, {2, 3, -1, -1}, {2, 4, -1, -1}, {2, 5, -1, -1}, {2, 6, -1, -1}, {2, 7, -1, -1}, {2, 8, -1, -1}, {2, 9, -1, -1}, {2, 10, -1, -1}, {2, 11, -1, -1}, {2, 12, -1, -1}, {2, 13, -1, -1}, {2, 14, -1, -1}, {2, 15, -1, -1}, {2, 16, -1, -1}, {2, 17, -1, -1}, {2, 18, -1, -1}, {2, 19, -1, -1}, {2, 20, -1, -1}, {2, 21, -1, -1}, {3, 4, -1, -1}, {3, 5, -1, -1}, {3, 6, -1, -1}, {3, 7, -1, -1}, {3, 8, -1, -1}, {3, 9, -1, -1}, {3, 10, -1, -1}, {3, 11, -1, -1}, {3, 12, -1, -1}, {3, 13, -1, -1}, {3, 14, -1, -1}, {3, 15, -1, -1}, {3, 16, -1, -1}, {3, 17, -1, -1}, {3, 18, -1, -1}, {3, 19, -1, -1}, {3, 20, -1, -1}, {3, 21, -1, -1}, {4, 5, -1, -1}, {4, 6, -1, -1}, {4, 7, -1, -1}, {4, 8, -1, -1}, {4, 9, -1, -1}, {4, 10, -1, -1}, {4, 11, -1, -1}, {4, 12, -1, -1}, {4, 13, -1, -1}, {4, 14, -1, -1}, {4, 15, -1, -1}, {4, 16, -1, -1}, {4, 17, -1, -1}, {4, 18, -1, -1}, {4, 19, -1, -1}, {4, 20, -1, -1}, {4, 21, -1, -1}, {5, 6, -1, -1}, {5, 7, -1, -1}, {5, 8, -1, -1}, {5, 9, -1, -1}, {5, 10, -1, -1}, {5, 11, -1, -1}, {5, 12, -1, -1}, {5, 13, -1, -1}, {5, 14, -1, -1}, {5, 15, -1, -1}, {5, 16, -1, -1}, {5, 17, -1, -1}, {5, 18, -1, -1}, {5, 19, -1, -1}, {5, 20, -1, -1}, {5, 21, -1, -1}, {6, 7, -1, -1}, {6, 8, -1, -1}, {6, 9, -1, -1}, {6, 10, -1, -1}, {6, 11, -1, -1}, {6, 12, -1, -1}, {6, 13, -1, -1}, {6, 14, -1, -1}, {6, 15, -1, -1}, {6, 16, -1, -1}, {6, 17, -1, -1}, {6, 18, -1, -1}, {6, 19, -1, -1}, {6, 20, -1, -1}, {6, 21, -1, -1}, {7, 8, -1, -1}, {7, 9, -1, -1}, {7, 10, -1, -1}, {7, 11, -1, -1}, {7, 12, -1, -1}, {7, 13, -1, -1}, {7, 14, -1, -1}, {7, 15, -1, -1}, {7, 16, -1, -1}, {7, 17, -1, -1}, {7, 18, -1, -1}, {7, 19, -1, -1}, {7, 20, -1, -1}, {7, 21, -1, -1}, {8, 9, -1, -1}, {8, 10, -1, -1}, {8, 11, -1, -1}, {8, 12, -1, -1}, {8, 13, -1, -1}, {8, 14, -1, -1}, {8, 15, -1, -1}, {8, 16, -1, -1}, {8, 17, -1, -1}, {8, 18, -1, -1}, {8, 19, -1, -1}, {8, 20, -1, -1}, {8, 21, -1, -1}, {9, 10, -1, -1}, {9, 11, -1, -1}, {9, 12, -1, -1}, {9, 13, -1, -1}, {9, 14, -1, -1}, {9, 15, -1, -1}, {9, 16, -1, -1}, {9, 17, -1, -1}, {9, 18, -1, -1}, {9, 19, -1, -1}, {9, 20, -1, -1}, {9, 21, -1, -1}, {10, 11, -1, -1}, {10, 12, -1, -1}, {10, 13, -1, -1}, {10, 14, -1, -1}, {10, 15, -1, -1}, {10, 16, -1, -1}, {10, 17, -1, -1}, {10, 18, -1, -1}, {10, 19, -1, -1}, {10, 20, -1, -1}, {10, 21, -1, -1}, {11, 12, -1, -1}, {11, 13, -1, -1}, {11, 14, -1, -1}, {11, 15, -1, -1}, {11, 16, -1, -1}, {11, 17, -1, -1}, {11, 18, -1, -1}, {11, 19, -1, -1}, {11, 20, -1, -1}, {11, 21, -1, -1}, {12, 13, -1, -1}, {12, 14, -1, -1}, {12, 15, -1, -1}, {12, 16, -1, -1}, {12, 17, -1, -1}, {12, 18, -1, -1}, {12, 19, -1, -1}, {12, 20, -1, -1}, {12, 21, -1, -1}, {13, 14, -1, -1}, {13, 15, -1, -1}, {13, 16, -1, -1}, {13, 17, -1, -1}, {13, 18, -1, -1}, {13, 19, -1, -1}, {13, 20, -1, -1}, {13, 21, -1, -1}, {14, 15, -1, -1}, {14, 16, -1, -1}, {14, 17, -1, -1}, {14, 18, -1, -1}, {14, 19, -1, -1}, {14, 20, -1, -1}, {14, 21, -1, -1}, {15, 16, -1, -1}, {15, 17, -1, -1}, {15, 18, -1, -1}, {15, 19, -1, -1}, {15, 20, -1, -1}, {15, 21, -1, -1}, {16, 17, -1, -1}, {16, 18, -1, -1}, {16, 19, -1, -1}, {16, 20, -1, -1}, {16, 21, -1, -1}, {17, 18, -1, -1}, {17, 19, -1, -1}, {17, 20, -1, -1}, {17, 21, -1, -1}, {18, 19, -1, -1}, {18, 20, -1, -1}, {18, 21, -1, -1}, {19, 20, -1, -1}, {19, 21, -1, -1}, {20, 21, -1, -1}, {0, 1, 2, -1}, {0, 1, 3, -1}, {0, 1, 4, -1}, {0, 1, 5, -1}, {0, 1, 6, -1}, {0, 1, 7, -1}, {0, 1, 8, -1}, {0, 1, 9, -1}, {0, 1, 10, -1}, {0, 1, 11, -1}, {0, 1, 12, -1}, {0, 1, 13, -1}, {0, 1, 14, -1}, {0, 1, 15, -1}, {0, 1, 16, -1}, {0, 1, 17, -1}, {0, 1, 18, -1}, {0, 1, 19, -1}, {0, 1, 20, -1}, {0, 1, 21, -1}, {0, 2, 3, -1}, {0, 2, 4, -1}, {0, 2, 5, -1}, {0, 2, 6, -1}, {0, 2, 7, -1}, {0, 2, 8, -1}, {0, 2, 9, -1}, {0, 2, 10, -1}, {0, 2, 11, -1}, {0, 2, 12, -1}, {0, 2, 13, -1}, {0, 2, 14, -1}, {0, 2, 15, -1}, {0, 2, 16, -1}, {0, 2, 17, -1}, {0, 2, 18, -1}, {0, 2, 19, -1}, {0, 2, 20, -1}, {0, 2, 21, -1}, {0, 3, 4, -1}, {0, 3, 5, -1}, {0, 3, 6, -1}, {0, 3, 7, -1}, {0, 3, 8, -1}, {0, 3, 9, -1}, {0, 3, 10, -1}, {0, 3, 11, -1}, {0, 3, 12, -1}, {0, 3, 13, -1}, {0, 3, 14, -1}, {0, 3, 15, -1}, {0, 3, 16, -1}, {0, 3, 17, -1}, {0, 3, 18, -1}, {0, 3, 19, -1}, {0, 3, 20, -1}, {0, 3, 21, -1}, {0, 4, 5, -1}, {0, 4, 6, -1}, {0, 4, 7, -1}, {0, 4, 8, -1}, {0, 4, 9, -1}, {0, 4, 10, -1}, {0, 4, 11, -1}, {0, 4, 12, -1}, {0, 4, 13, -1}, {0, 4, 14, -1}, {0, 4, 15, -1}, {0, 4, 16, -1}, {0, 4, 17, -1}, {0, 4, 18, -1}, {0, 4, 19, -1}, {0, 4, 20, -1}, {0, 4, 21, -1}, {0, 5, 6, -1}, {0, 5, 7, -1}, {0, 5, 8, -1}, {0, 5, 9, -1}, {0, 5, 10, -1}, {0, 5, 11, -1}, {0, 5, 12, -1}, {0, 5, 13, -1}, {0, 5, 14, -1}, {0, 5, 15, -1}, {0, 5, 16, -1}, {0, 5, 17, -1}, {0, 5, 18, -1}, {0, 5, 19, -1}, {0, 5, 20, -1}, {0, 5, 21, -1}, {0, 6, 7, -1}, {0, 6, 8, -1}, {0, 6, 9, -1}, {0, 6, 10, -1}, {0, 6, 11, -1}, {0, 6, 12, -1}, {0, 6, 13, -1}, {0, 6, 14, -1}, {0, 6, 15, -1}, {0, 6, 16, -1}, {0, 6, 17, -1}, {0, 6, 18, -1}, {0, 6, 19, -1}, {0, 6, 20, -1}, {0, 6, 21, -1}, {0, 7, 8, -1}, {0, 7, 9, -1}, {0, 7, 10, -1}, {0, 7, 11, -1}, {0, 7, 12, -1}, {0, 7, 13, -1}, {0, 7, 14, -1}, {0, 7, 15, -1}, {0, 7, 16, -1}, {0, 7, 17, -1}, {0, 7, 18, -1}, {0, 7, 19, -1}, {0, 7, 20, -1}, {0, 7, 21, -1}, {0, 8, 9, -1}, {0, 8, 10, -1}, {0, 8, 11, -1}, {0, 8, 12, -1}, {0, 8, 13, -1}, {0, 8, 14, -1}, {0, 8, 15, -1}, {0, 8, 16, -1}, {0, 8, 17, -1}, {0, 8, 18, -1}, {0, 8, 19, -1}, {0, 8, 20, -1}, {0, 8, 21, -1}, {0, 9, 10, -1}, {0, 9, 11, -1}, {0, 9, 12, -1}, {0, 9, 13, -1}, {0, 9, 14, -1}, {0, 9, 15, -1}, {0, 9, 16, -1}, {0, 9, 17, -1}, {0, 9, 18, -1}, {0, 9, 19, -1}, {0, 9, 20, -1}, {0, 9, 21, -1}, {0, 10, 11, -1}, {0, 10, 12, -1}, {0, 10, 13, -1}, {0, 10, 14, -1}, {0, 10, 15, -1}, {0, 10, 16, -1}, {0, 10, 17, -1}, {0, 10, 18, -1}, {0, 10, 19, -1}, {0, 10, 20, -1}, {0, 10, 21, -1}, {0, 11, 12, -1}, {0, 11, 13, -1}, {0, 11, 14, -1}, {0, 11, 15, -1}, {0, 11, 16, -1}, {0, 11, 17, -1}, {0, 11, 18, -1}, {0, 11, 19, -1}, {0, 11, 20, -1}, {0, 11, 21, -1}, {0, 12, 13, -1}, {0, 12, 14, -1}, {0, 12, 15, -1}, {0, 12, 16, -1}, {0, 12, 17, -1}, {0, 12, 18, -1}, {0, 12, 19, -1}, {0, 12, 20, -1}, {0, 12, 21, -1}, {0, 13, 14, -1}, {0, 13, 15, -1}, {0, 13, 16, -1}, {0, 13, 17, -1}, {0, 13, 18, -1}, {0, 13, 19, -1}, {0, 13, 20, -1}, {0, 13, 21, -1}, {0, 14, 15, -1}, {0, 14, 16, -1}, {0, 14, 17, -1}, {0, 14, 18, -1}, {0, 14, 19, -1}, {0, 14, 20, -1}, {0, 14, 21, -1}, {0, 15, 16, -1}, {0, 15, 17, -1}, {0, 15, 18, -1}, {0, 15, 19, -1}, {0, 15, 20, -1}, {0, 15, 21, -1}, {0, 16, 17, -1}, {0, 16, 18, -1}, {0, 16, 19, -1}, {0, 16, 20, -1}, {0, 16, 21, -1}, {0, 17, 18, -1}, {0, 17, 19, -1}, {0, 17, 20, -1}, {0, 17, 21, -1}, {0, 18, 19, -1}, {0, 18, 20, -1}, {0, 18, 21, -1}, {0, 19, 20, -1}, {0, 19, 21, -1}, {0, 20, 21, -1}, {1, 2, 3, -1}, {1, 2, 4, -1}, {1, 2, 5, -1}, {1, 2, 6, -1}, {1, 2, 7, -1}, {1, 2, 8, -1}, {1, 2, 9, -1}, {1, 2, 10, -1}, {1, 2, 11, -1}, {1, 2, 12, -1}, {1, 2, 13, -1}, {1, 2, 14, -1}, {1, 2, 15, -1}, {1, 2, 16, -1}, {1, 2, 17, -1}, {1, 2, 18, -1}, {1, 2, 19, -1}, {1, 2, 20, -1}, {1, 2, 21, -1}, {1, 3, 4, -1}, {1, 3, 5, -1}, {1, 3, 6, -1}, {1, 3, 7, -1}, {1, 3, 8, -1}, {1, 3, 9, -1}, {1, 3, 10, -1}, {1, 3, 11, -1}, {1, 3, 12, -1}, {1, 3, 13, -1}, {1, 3, 14, -1}, {1, 3, 15, -1}, {1, 3, 16, -1}, {1, 3, 17, -1}, {1, 3, 18, -1}, {1, 3, 19, -1}, {1, 3, 20, -1}, {1, 3, 21, -1}, {1, 4, 5, -1}, {1, 4, 6, -1}, {1, 4, 7, -1}, {1, 4, 8, -1}, {1, 4, 9, -1}, {1, 4, 10, -1}, {1, 4, 11, -1}, {1, 4, 12, -1}, {1, 4, 13, -1}, {1, 4, 14, -1}, {1, 4, 15, -1}, {1, 4, 16, -1}, {1, 4, 17, -1}, {1, 4, 18, -1}, {1, 4, 19, -1}, {1, 4, 20, -1}, {1, 4, 21, -1}, {1, 5, 6, -1}, {1, 5, 7, -1}, {1, 5, 8, -1}, {1, 5, 9, -1}, {1, 5, 10, -1}, {1, 5, 11, -1}, {1, 5, 12, -1}, {1, 5, 13, -1}, {1, 5, 14, -1}, {1, 5, 15, -1}, {1, 5, 16, -1}, {1, 5, 17, -1}, {1, 5, 18, -1}, {1, 5, 19, -1}, {1, 5, 20, -1}, {1, 5, 21, -1}, {1, 6, 7, -1}, {1, 6, 8, -1}, {1, 6, 9, -1}, {1, 6, 10, -1}, {1, 6, 11, -1}, {1, 6, 12, -1}, {1, 6, 13, -1}, {1, 6, 14, -1}, {1, 6, 15, -1}, {1, 6, 16, -1}, {1, 6, 17, -1}, {1, 6, 18, -1}, {1, 6, 19, -1}, {1, 6, 20, -1}, {1, 6, 21, -1}, {1, 7, 8, -1}, {1, 7, 9, -1}, {1, 7, 10, -1}, {1, 7, 11, -1}, {1, 7, 12, -1}, {1, 7, 13, -1}, {1, 7, 14, -1}, {1, 7, 15, -1}, {1, 7, 16, -1}, {1, 7, 17, -1}, {1, 7, 18, -1}, {1, 7, 19, -1}, {1, 7, 20, -1}, {1, 7, 21, -1}, {1, 8, 9, -1}, {1, 8, 10, -1}, {1, 8, 11, -1}, {1, 8, 12, -1}, {1, 8, 13, -1}, {1, 8, 14, -1}, {1, 8, 15, -1}, {1, 8, 16, -1}, {1, 8, 17, -1}, {1, 8, 18, -1}, {1, 8, 19, -1}, {1, 8, 20, -1}, {1, 8, 21, -1}, {1, 9, 10, -1}, {1, 9, 11, -1}, {1, 9, 12, -1}, {1, 9, 13, -1}, {1, 9, 14, -1}, {1, 9, 15, -1}, {1, 9, 16, -1}, {1, 9, 17, -1}, {1, 9, 18, -1}, {1, 9, 19, -1}, {1, 9, 20, -1}, {1, 9, 21, -1}, {1, 10, 11, -1}, {1, 10, 12, -1}, {1, 10, 13, -1}, {1, 10, 14, -1}, {1, 10, 15, -1}, {1, 10, 16, -1}, {1, 10, 17, -1}, {1, 10, 18, -1}, {1, 10, 19, -1}, {1, 10, 20, -1}, {1, 10, 21, -1}, {1, 11, 12, -1}, {1, 11, 13, -1}, {1, 11, 14, -1}, {1, 11, 15, -1}, {1, 11, 16, -1}, {1, 11, 17, -1}, {1, 11, 18, -1}, {1, 11, 19, -1}, {1, 11, 20, -1}, {1, 11, 21, -1}, {1, 12, 13, -1}, {1, 12, 14, -1}, {1, 12, 15, -1}, {1, 12, 16, -1}, {1, 12, 17, -1}, {1, 12, 18, -1}, {1, 12, 19, -1}, {1, 12, 20, -1}, {1, 12, 21, -1}, {1, 13, 14, -1}, {1, 13, 15, -1}, {1, 13, 16, -1}, {1, 13, 17, -1}, {1, 13, 18, -1}, {1, 13, 19, -1}, {1, 13, 20, -1}, {1, 13, 21, -1}, {1, 14, 15, -1}, {1, 14, 16, -1}, {1, 14, 17, -1}, {1, 14, 18, -1}, {1, 14, 19, -1}, {1, 14, 20, -1}, {1, 14, 21, -1}, {1, 15, 16, -1}, {1, 15, 17, -1}, {1, 15, 18, -1}, {1, 15, 19, -1}, {1, 15, 20, -1}, {1, 15, 21, -1}, {1, 16, 17, -1}, {1, 16, 18, -1}, {1, 16, 19, -1}, {1, 16, 20, -1}, {1, 16, 21, -1}, {1, 17, 18, -1}, {1, 17, 19, -1}, {1, 17, 20, -1}, {1, 17, 21, -1}, {1, 18, 19, -1}, {1, 18, 20, -1}, {1, 18, 21, -1}, {1, 19, 20, -1}, {1, 19, 21, -1}, {1, 20, 21, -1}, {2, 3, 4, -1}, {2, 3, 5, -1}, {2, 3, 6, -1}, {2, 3, 7, -1}, {2, 3, 8, -1}, {2, 3, 9, -1}, {2, 3, 10, -1}, {2, 3, 11, -1}, {2, 3, 12, -1}, {2, 3, 13, -1}, {2, 3, 14, -1}, {2, 3, 15, -1}, {2, 3, 16, -1}, {2, 3, 17, -1}, {2, 3, 18, -1}, {2, 3, 19, -1}, {2, 3, 20, -1}, {2, 3, 21, -1}, {2, 4, 5, -1}, {2, 4, 6, -1}, {2, 4, 7, -1}, {2, 4, 8, -1}, {2, 4, 9, -1}, {2, 4, 10, -1}, {2, 4, 11, -1}, {2, 4, 12, -1}, {2, 4, 13, -1}, {2, 4, 14, -1}, {2, 4, 15, -1}, {2, 4, 16, -1}, {2, 4, 17, -1}, {2, 4, 18, -1}, {2, 4, 19, -1}, {2, 4, 20, -1}, {2, 4, 21, -1}, {2, 5, 6, -1}, {2, 5, 7, -1}, {2, 5, 8, -1}, {2, 5, 9, -1}, {2, 5, 10, -1}, {2, 5, 11, -1}, {2, 5, 12, -1}, {2, 5, 13, -1}, {2, 5, 14, -1}, {2, 5, 15, -1}, {2, 5, 16, -1}, {2, 5, 17, -1}, {2, 5, 18, -1}, {2, 5, 19, -1}, {2, 5, 20, -1}, {2, 5, 21, -1}, {2, 6, 7, -1}, {2, 6, 8, -1}, {2, 6, 9, -1}, {2, 6, 10, -1}, {2, 6, 11, -1}, {2, 6, 12, -1}, {2, 6, 13, -1}, {2, 6, 14, -1}, {2, 6, 15, -1}, {2, 6, 16, -1}, {2, 6, 17, -1}, {2, 6, 18, -1}, {2, 6, 19, -1}, {2, 6, 20, -1}, {2, 6, 21, -1}, {2, 7, 8, -1}, {2, 7, 9, -1}, {2, 7, 10, -1}, {2, 7, 11, -1}, {2, 7, 12, -1}, {2, 7, 13, -1}, {2, 7, 14, -1}, {2, 7, 15, -1}, {2, 7, 16, -1}, {2, 7, 17, -1}, {2, 7, 18, -1}, {2, 7, 19, -1}, {2, 7, 20, -1}, {2, 7, 21, -1}, {2, 8, 9, -1}, {2, 8, 10, -1}, {2, 8, 11, -1}, {2, 8, 12, -1}, {2, 8, 13, -1}, {2, 8, 14, -1}, {2, 8, 15, -1}, {2, 8, 16, -1}, {2, 8, 17, -1}, {2, 8, 18, -1}, {2, 8, 19, -1}, {2, 8, 20, -1}, {2, 8, 21, -1}, {2, 9, 10, -1}, {2, 9, 11, -1}, {2, 9, 12, -1}, {2, 9, 13, -1}, {2, 9, 14, -1}, {2, 9, 15, -1}, {2, 9, 16, -1}, {2, 9, 17, -1}, {2, 9, 18, -1}, {2, 9, 19, -1}, {2, 9, 20, -1}, {2, 9, 21, -1}, {2, 10, 11, -1}, {2, 10, 12, -1}, {2, 10, 13, -1}, {2, 10, 14, -1}, {2, 10, 15, -1}, {2, 10, 16, -1}, {2, 10, 17, -1}, {2, 10, 18, -1}, {2, 10, 19, -1}, {2, 10, 20, -1}, {2, 10, 21, -1}, {2, 11, 12, -1}, {2, 11, 13, -1}, {2, 11, 14, -1}, {2, 11, 15, -1}, {2, 11, 16, -1}, {2, 11, 17, -1}, {2, 11, 18, -1}, {2, 11, 19, -1}, {2, 11, 20, -1}, {2, 11, 21, -1}, {2, 12, 13, -1}, {2, 12, 14, -1}, {2, 12, 15, -1}, {2, 12, 16, -1}, {2, 12, 17, -1}, {2, 12, 18, -1}, {2, 12, 19, -1}, {2, 12, 20, -1}, {2, 12, 21, -1}, {2, 13, 14, -1}, {2, 13, 15, -1}, {2, 13, 16, -1}, {2, 13, 17, -1}, {2, 13, 18, -1}, {2, 13, 19, -1}, {2, 13, 20, -1}, {2, 13, 21, -1}, {2, 14, 15, -1}, {2, 14, 16, -1}, {2, 14, 17, -1}, {2, 14, 18, -1}, {2, 14, 19, -1}, {2, 14, 20, -1}, {2, 14, 21, -1}, {2, 15, 16, -1}, {2, 15, 17, -1}, {2, 15, 18, -1}, {2, 15, 19, -1}, {2, 15, 20, -1}, {2, 15, 21, -1}, {2, 16, 17, -1}, {2, 16, 18, -1}, {2, 16, 19, -1}, {2, 16, 20, -1}, {2, 16, 21, -1}, {2, 17, 18, -1}, {2, 17, 19, -1}, {2, 17, 20, -1}, {2, 17, 21, -1}, {2, 18, 19, -1}, {2, 18, 20, -1}, {2, 18, 21, -1}, {2, 19, 20, -1}, {2, 19, 21, -1}, {2, 20, 21, -1}, {3, 4, 5, -1}, {3, 4, 6, -1}, {3, 4, 7, -1}, {3, 4, 8, -1}, {3, 4, 9, -1}, {3, 4, 10, -1}, {3, 4, 11, -1}, {3, 4, 12, -1}, {3, 4, 13, -1}, {3, 4, 14, -1}, {3, 4, 15, -1}, {3, 4, 16, -1}, {3, 4, 17, -1}, {3, 4, 18, -1}, {3, 4, 19, -1}, {3, 4, 20, -1}, {3, 4, 21, -1}, {3, 5, 6, -1}, {3, 5, 7, -1}, {3, 5, 8, -1}, {3, 5, 9, -1}, {3, 5, 10, -1}, {3, 5, 11, -1}, {3, 5, 12, -1}, {3, 5, 13, -1}, {3, 5, 14, -1}, {3, 5, 15, -1}, {3, 5, 16, -1}, {3, 5, 17, -1}, {3, 5, 18, -1}, {3, 5, 19, -1}, {3, 5, 20, -1}, {3, 5, 21, -1}, {3, 6, 7, -1}, {3, 6, 8, -1}, {3, 6, 9, -1}, {3, 6, 10, -1}, {3, 6, 11, -1}, {3, 6, 12, -1}, {3, 6, 13, -1}, {3, 6, 14, -1}, {3, 6, 15, -1}, {3, 6, 16, -1}, {3, 6, 17, -1}, {3, 6, 18, -1}, {3, 6, 19, -1}, {3, 6, 20, -1}, {3, 6, 21, -1}, {3, 7, 8, -1}, {3, 7, 9, -1}, {3, 7, 10, -1}, {3, 7, 11, -1}, {3, 7, 12, -1}, {3, 7, 13, -1}, {3, 7, 14, -1}, {3, 7, 15, -1}, {3, 7, 16, -1}, {3, 7, 17, -1}, {3, 7, 18, -1}, {3, 7, 19, -1}, {3, 7, 20, -1}, {3, 7, 21, -1}, {3, 8, 9, -1}, {3, 8, 10, -1}, {3, 8, 11, -1}, {3, 8, 12, -1}, {3, 8, 13, -1}, {3, 8, 14, -1}, {3, 8, 15, -1}, {3, 8, 16, -1}, {3, 8, 17, -1}, {3, 8, 18, -1}, {3, 8, 19, -1}, {3, 8, 20, -1}, {3, 8, 21, -1}, {3, 9, 10, -1}, {3, 9, 11, -1}, {3, 9, 12, -1}, {3, 9, 13, -1}, {3, 9, 14, -1}, {3, 9, 15, -1}, {3, 9, 16, -1}, {3, 9, 17, -1}, {3, 9, 18, -1}, {3, 9, 19, -1}, {3, 9, 20, -1}, {3, 9, 21, -1}, {3, 10, 11, -1}, {3, 10, 12, -1}, {3, 10, 13, -1}, {3, 10, 14, -1}, {3, 10, 15, -1}, {3, 10, 16, -1}, {3, 10, 17, -1}, {3, 10, 18, -1}, {3, 10, 19, -1}, {3, 10, 20, -1}, {3, 10, 21, -1}, {3, 11, 12, -1}, {3, 11, 13, -1}, {3, 11, 14, -1}, {3, 11, 15, -1}, {3, 11, 16, -1}, {3, 11, 17, -1}, {3, 11, 18, -1}, {3, 11, 19, -1}, {3, 11, 20, -1}, {3, 11, 21, -1}, {3, 12, 13, -1}, {3, 12, 14, -1}, {3, 12, 15, -1}, {3, 12, 16, -1}, {3, 12, 17, -1}, {3, 12, 18, -1}, {3, 12, 19, -1}, {3, 12, 20, -1}, {3, 12, 21, -1}, {3, 13, 14, -1}, {3, 13, 15, -1}, {3, 13, 16, -1}, {3, 13, 17, -1}, {3, 13, 18, -1}, {3, 13, 19, -1}, {3, 13, 20, -1}, {3, 13, 21, -1}, {3, 14, 15, -1}, {3, 14, 16, -1}, {3, 14, 17, -1}, {3, 14, 18, -1}, {3, 14, 19, -1}, {3, 14, 20, -1}, {3, 14, 21, -1}, {3, 15, 16, -1}, {3, 15, 17, -1}, {3, 15, 18, -1}, {3, 15, 19, -1}, {3, 15, 20, -1}, {3, 15, 21, -1}, {3, 16, 17, -1}, {3, 16, 18, -1}, {3, 16, 19, -1}, {3, 16, 20, -1}, {3, 16, 21, -1}, {3, 17, 18, -1}, {3, 17, 19, -1}, {3, 17, 20, -1}, {3, 17, 21, -1}, {3, 18, 19, -1}, {3, 18, 20, -1}, {3, 18, 21, -1}, {3, 19, 20, -1}, {3, 19, 21, -1}, {3, 20, 21, -1}, {4, 5, 6, -1}, {4, 5, 7, -1}, {4, 5, 8, -1}, {4, 5, 9, -1}, {4, 5, 10, -1}, {4, 5, 11, -1}, {4, 5, 12, -1}, {4, 5, 13, -1}, {4, 5, 14, -1}, {4, 5, 15, -1}, {4, 5, 16, -1}, {4, 5, 17, -1}, {4, 5, 18, -1}, {4, 5, 19, -1}, {4, 5, 20, -1}, {4, 5, 21, -1}, {4, 6, 7, -1}, {4, 6, 8, -1}, {4, 6, 9, -1}, {4, 6, 10, -1}, {4, 6, 11, -1}, {4, 6, 12, -1}, {4, 6, 13, -1}, {4, 6, 14, -1}, {4, 6, 15, -1}, {4, 6, 16, -1}, {4, 6, 17, -1}, {4, 6, 18, -1}, {4, 6, 19, -1}, {4, 6, 20, -1}, {4, 6, 21, -1}, {4, 7, 8, -1}, {4, 7, 9, -1}, {4, 7, 10, -1}, {4, 7, 11, -1}, {4, 7, 12, -1}, {4, 7, 13, -1}, {4, 7, 14, -1}, {4, 7, 15, -1}, {4, 7, 16, -1}, {4, 7, 17, -1}, {4, 7, 18, -1}, {4, 7, 19, -1}, {4, 7, 20, -1}, {4, 7, 21, -1}, {4, 8, 9, -1}, {4, 8, 10, -1}, {4, 8, 11, -1}, {4, 8, 12, -1}, {4, 8, 13, -1}, {4, 8, 14, -1}, {4, 8, 15, -1}, {4, 8, 16, -1}, {4, 8, 17, -1}, {4, 8, 18, -1}, {4, 8, 19, -1}, {4, 8, 20, -1}, {4, 8, 21, -1}, {4, 9, 10, -1}, {4, 9, 11, -1}, {4, 9, 12, -1}, {4, 9, 13, -1}, {4, 9, 14, -1}, {4, 9, 15, -1}, {4, 9, 16, -1}, {4, 9, 17, -1}, {4, 9, 18, -1}, {4, 9, 19, -1}, {4, 9, 20, -1}, {4, 9, 21, -1}, {4, 10, 11, -1}, {4, 10, 12, -1}, {4, 10, 13, -1}, {4, 10, 14, -1}, {4, 10, 15, -1}, {4, 10, 16, -1}, {4, 10, 17, -1}, {4, 10, 18, -1}, {4, 10, 19, -1}, {4, 10, 20, -1}, {4, 10, 21, -1}, {4, 11, 12, -1}, {4, 11, 13, -1}, {4, 11, 14, -1}, {4, 11, 15, -1}, {4, 11, 16, -1}, {4, 11, 17, -1}, {4, 11, 18, -1}, {4, 11, 19, -1}, {4, 11, 20, -1}, {4, 11, 21, -1}, {4, 12, 13, -1}, {4, 12, 14, -1}, {4, 12, 15, -1}, {4, 12, 16, -1}, {4, 12, 17, -1}, {4, 12, 18, -1}, {4, 12, 19, -1}, {4, 12, 20, -1}, {4, 12, 21, -1}, {4, 13, 14, -1}, {4, 13, 15, -1}, {4, 13, 16, -1}, {4, 13, 17, -1}, {4, 13, 18, -1}, {4, 13, 19, -1}, {4, 13, 20, -1}, {4, 13, 21, -1}, {4, 14, 15, -1}, {4, 14, 16, -1}, {4, 14, 17, -1}, {4, 14, 18, -1}, {4, 14, 19, -1}, {4, 14, 20, -1}, {4, 14, 21, -1}, {4, 15, 16, -1}, {4, 15, 17, -1}, {4, 15, 18, -1}, {4, 15, 19, -1}, {4, 15, 20, -1}, {4, 15, 21, -1}, {4, 16, 17, -1}, {4, 16, 18, -1}, {4, 16, 19, -1}, {4, 16, 20, -1}, {4, 16, 21, -1}, {4, 17, 18, -1}, {4, 17, 19, -1}, {4, 17, 20, -1}, {4, 17, 21, -1}, {4, 18, 19, -1}, {4, 18, 20, -1}, {4, 18, 21, -1}, {4, 19, 20, -1}, {4, 19, 21, -1}, {4, 20, 21, -1}, {5, 6, 7, -1}, {5, 6, 8, -1}, {5, 6, 9, -1}, {5, 6, 10, -1}, {5, 6, 11, -1}, {5, 6, 12, -1}, {5, 6, 13, -1}, {5, 6, 14, -1}, {5, 6, 15, -1}, {5, 6, 16, -1}, {5, 6, 17, -1}, {5, 6, 18, -1}, {5, 6, 19, -1}, {5, 6, 20, -1}, {5, 6, 21, -1}, {5, 7, 8, -1}, {5, 7, 9, -1}, {5, 7, 10, -1}, {5, 7, 11, -1}, {5, 7, 12, -1}, {5, 7, 13, -1}, {5, 7, 14, -1}, {5, 7, 15, -1}, {5, 7, 16, -1}, {5, 7, 17, -1}, {5, 7, 18, -1}, {5, 7, 19, -1}, {5, 7, 20, -1}, {5, 7, 21, -1}, {5, 8, 9, -1}, {5, 8, 10, -1}, {5, 8, 11, -1}, {5, 8, 12, -1}, {5, 8, 13, -1}, {5, 8, 14, -1}, {5, 8, 15, -1}, {5, 8, 16, -1}, {5, 8, 17, -1}, {5, 8, 18, -1}, {5, 8, 19, -1}, {5, 8, 20, -1}, {5, 8, 21, -1}, {5, 9, 10, -1}, {5, 9, 11, -1}, {5, 9, 12, -1}, {5, 9, 13, -1}, {5, 9, 14, -1}, {5, 9, 15, -1}, {5, 9, 16, -1}, {5, 9, 17, -1}, {5, 9, 18, -1}, {5, 9, 19, -1}, {5, 9, 20, -1}, {5, 9, 21, -1}, {5, 10, 11, -1}, {5, 10, 12, -1}, {5, 10, 13, -1}, {5, 10, 14, -1}, {5, 10, 15, -1}, {5, 10, 16, -1}, {5, 10, 17, -1}, {5, 10, 18, -1}, {5, 10, 19, -1}, {5, 10, 20, -1}, {5, 10, 21, -1}, {5, 11, 12, -1}, {5, 11, 13, -1}, {5, 11, 14, -1}, {5, 11, 15, -1}, {5, 11, 16, -1}, {5, 11, 17, -1}, {5, 11, 18, -1}, {5, 11, 19, -1}, {5, 11, 20, -1}, {5, 11, 21, -1}, {5, 12, 13, -1}, {5, 12, 14, -1}, {5, 12, 15, -1}, {5, 12, 16, -1}, {5, 12, 17, -1}, {5, 12, 18, -1}, {5, 12, 19, -1}, {5, 12, 20, -1}, {5, 12, 21, -1}, {5, 13, 14, -1}, {5, 13, 15, -1}, {5, 13, 16, -1}, {5, 13, 17, -1}, {5, 13, 18, -1}, {5, 13, 19, -1}, {5, 13, 20, -1}, {5, 13, 21, -1}, {5, 14, 15, -1}, {5, 14, 16, -1}, {5, 14, 17, -1}, {5, 14, 18, -1}, {5, 14, 19, -1}, {5, 14, 20, -1}, {5, 14, 21, -1}, {5, 15, 16, -1}, {5, 15, 17, -1}, {5, 15, 18, -1}, {5, 15, 19, -1}, {5, 15, 20, -1}, {5, 15, 21, -1}, {5, 16, 17, -1}, {5, 16, 18, -1}, {5, 16, 19, -1}, {5, 16, 20, -1}, {5, 16, 21, -1}, {5, 17, 18, -1}, {5, 17, 19, -1}, {5, 17, 20, -1}, {5, 17, 21, -1}, {5, 18, 19, -1}, {5, 18, 20, -1}, {5, 18, 21, -1}, {5, 19, 20, -1}, {5, 19, 21, -1}, {5, 20, 21, -1}, {6, 7, 8, -1}, {6, 7, 9, -1}, {6, 7, 10, -1}, {6, 7, 11, -1}, {6, 7, 12, -1}, {6, 7, 13, -1}, {6, 7, 14, -1}, {6, 7, 15, -1}, {6, 7, 16, -1}, {6, 7, 17, -1}, {6, 7, 18, -1}, {6, 7, 19, -1}, {6, 7, 20, -1}, {6, 7, 21, -1}, {6, 8, 9, -1}, {6, 8, 10, -1}, {6, 8, 11, -1}, {6, 8, 12, -1}, {6, 8, 13, -1}, {6, 8, 14, -1}, {6, 8, 15, -1}, {6, 8, 16, -1}, {6, 8, 17, -1}, {6, 8, 18, -1}, {6, 8, 19, -1}, {6, 8, 20, -1}, {6, 8, 21, -1}, {6, 9, 10, -1}, {6, 9, 11, -1}, {6, 9, 12, -1}, {6, 9, 13, -1}, {6, 9, 14, -1}, {6, 9, 15, -1}, {6, 9, 16, -1}, {6, 9, 17, -1}, {6, 9, 18, -1}, {6, 9, 19, -1}, {6, 9, 20, -1}, {6, 9, 21, -1}, {6, 10, 11, -1}, {6, 10, 12, -1}, {6, 10, 13, -1}, {6, 10, 14, -1}, {6, 10, 15, -1}, {6, 10, 16, -1}, {6, 10, 17, -1}, {6, 10, 18, -1}, {6, 10, 19, -1}, {6, 10, 20, -1}, {6, 10, 21, -1}, {6, 11, 12, -1}, {6, 11, 13, -1}, {6, 11, 14, -1}, {6, 11, 15, -1}, {6, 11, 16, -1}, {6, 11, 17, -1}, {6, 11, 18, -1}, {6, 11, 19, -1}, {6, 11, 20, -1}, {6, 11, 21, -1}, {6, 12, 13, -1}, {6, 12, 14, -1}, {6, 12, 15, -1}, {6, 12, 16, -1}, {6, 12, 17, -1}, {6, 12, 18, -1}, {6, 12, 19, -1}, {6, 12, 20, -1}, {6, 12, 21, -1}, {6, 13, 14, -1}, {6, 13, 15, -1}, {6, 13, 16, -1}, {6, 13, 17, -1}, {6, 13, 18, -1}, {6, 13, 19, -1}, {6, 13, 20, -1}, {6, 13, 21, -1}, {6, 14, 15, -1}, {6, 14, 16, -1}, {6, 14, 17, -1}, {6, 14, 18, -1}, {6, 14, 19, -1}, {6, 14, 20, -1}, {6, 14, 21, -1}, {6, 15, 16, -1}, {6, 15, 17, -1}, {6, 15, 18, -1}, {6, 15, 19, -1}, {6, 15, 20, -1}, {6, 15, 21, -1}, {6, 16, 17, -1}, {6, 16, 18, -1}, {6, 16, 19, -1}, {6, 16, 20, -1}, {6, 16, 21, -1}, {6, 17, 18, -1}, {6, 17, 19, -1}, {6, 17, 20, -1}, {6, 17, 21, -1}, {6, 18, 19, -1}, {6, 18, 20, -1}, {6, 18, 21, -1}, {6, 19, 20, -1}, {6, 19, 21, -1}, {6, 20, 21, -1}, {7, 8, 9, -1}, {7, 8, 10, -1}, {7, 8, 11, -1}, {7, 8, 12, -1}, {7, 8, 13, -1}, {7, 8, 14, -1}, {7, 8, 15, -1}, {7, 8, 16, -1}, {7, 8, 17, -1}, {7, 8, 18, -1}, {7, 8, 19, -1}, {7, 8, 20, -1}, {7, 8, 21, -1}, {7, 9, 10, -1}, {7, 9, 11, -1}, {7, 9, 12, -1}, {7, 9, 13, -1}, {7, 9, 14, -1}, {7, 9, 15, -1}, {7, 9, 16, -1}, {7, 9, 17, -1}, {7, 9, 18, -1}, {7, 9, 19, -1}, {7, 9, 20, -1}, {7, 9, 21, -1}, {7, 10, 11, -1}, {7, 10, 12, -1}, {7, 10, 13, -1}, {7, 10, 14, -1}, {7, 10, 15, -1}, {7, 10, 16, -1}, {7, 10, 17, -1}, {7, 10, 18, -1}, {7, 10, 19, -1}, {7, 10, 20, -1}, {7, 10, 21, -1}, {7, 11, 12, -1}, {7, 11, 13, -1}, {7, 11, 14, -1}, {7, 11, 15, -1}, {7, 11, 16, -1}, {7, 11, 17, -1}, {7, 11, 18, -1}, {7, 11, 19, -1}, {7, 11, 20, -1}, {7, 11, 21, -1}, {7, 12, 13, -1}, {7, 12, 14, -1}, {7, 12, 15, -1}, {7, 12, 16, -1}, {7, 12, 17, -1}, {7, 12, 18, -1}, {7, 12, 19, -1}, {7, 12, 20, -1}, {7, 12, 21, -1}, {7, 13, 14, -1}, {7, 13, 15, -1}, {7, 13, 16, -1}, {7, 13, 17, -1}, {7, 13, 18, -1}, {7, 13, 19, -1}, {7, 13, 20, -1}, {7, 13, 21, -1}, {7, 14, 15, -1}, {7, 14, 16, -1}, {7, 14, 17, -1}, {7, 14, 18, -1}, {7, 14, 19, -1}, {7, 14, 20, -1}, {7, 14, 21, -1}, {7, 15, 16, -1}, {7, 15, 17, -1}, {7, 15, 18, -1}, {7, 15, 19, -1}, {7, 15, 20, -1}, {7, 15, 21, -1}, {7, 16, 17, -1}, {7, 16, 18, -1}, {7, 16, 19, -1}, {7, 16, 20, -1}, {7, 16, 21, -1}, {7, 17, 18, -1}, {7, 17, 19, -1}, {7, 17, 20, -1}, {7, 17, 21, -1}, {7, 18, 19, -1}, {7, 18, 20, -1}, {7, 18, 21, -1}, {7, 19, 20, -1}, {7, 19, 21, -1}, {7, 20, 21, -1}, {8, 9, 10, -1}, {8, 9, 11, -1}, {8, 9, 12, -1}, {8, 9, 13, -1}, {8, 9, 14, -1}, {8, 9, 15, -1}, {8, 9, 16, -1}, {8, 9, 17, -1}, {8, 9, 18, -1}, {8, 9, 19, -1}, {8, 9, 20, -1}, {8, 9, 21, -1}, {8, 10, 11, -1}, {8, 10, 12, -1}, {8, 10, 13, -1}, {8, 10, 14, -1}, {8, 10, 15, -1}, {8, 10, 16, -1}, {8, 10, 17, -1}, {8, 10, 18, -1}, {8, 10, 19, -1}, {8, 10, 20, -1}, {8, 10, 21, -1}, {8, 11, 12, -1}, {8, 11, 13, -1}, {8, 11, 14, -1}, {8, 11, 15, -1}, {8, 11, 16, -1}, {8, 11, 17, -1}, {8, 11, 18, -1}, {8, 11, 19, -1}, {8, 11, 20, -1}, {8, 11, 21, -1}, {8, 12, 13, -1}, {8, 12, 14, -1}, {8, 12, 15, -1}, {8, 12, 16, -1}, {8, 12, 17, -1}, {8, 12, 18, -1}, {8, 12, 19, -1}, {8, 12, 20, -1}, {8, 12, 21, -1}, {8, 13, 14, -1}, {8, 13, 15, -1}, {8, 13, 16, -1}, {8, 13, 17, -1}, {8, 13, 18, -1}, {8, 13, 19, -1}, {8, 13, 20, -1}, {8, 13, 21, -1}, {8, 14, 15, -1}, {8, 14, 16, -1}, {8, 14, 17, -1}, {8, 14, 18, -1}, {8, 14, 19, -1}, {8, 14, 20, -1}, {8, 14, 21, -1}, {8, 15, 16, -1}, {8, 15, 17, -1}, {8, 15, 18, -1}, {8, 15, 19, -1}, {8, 15, 20, -1}, {8, 15, 21, -1}, {8, 16, 17, -1}, {8, 16, 18, -1}, {8, 16, 19, -1}, {8, 16, 20, -1}, {8, 16, 21, -1}, {8, 17, 18, -1}, {8, 17, 19, -1}, {8, 17, 20, -1}, {8, 17, 21, -1}, {8, 18, 19, -1}, {8, 18, 20, -1}, {8, 18, 21, -1}, {8, 19, 20, -1}, {8, 19, 21, -1}, {8, 20, 21, -1}, {9, 10, 11, -1}, {9, 10, 12, -1}, {9, 10, 13, -1}, {9, 10, 14, -1}, {9, 10, 15, -1}, {9, 10, 16, -1}, {9, 10, 17, -1}, {9, 10, 18, -1}, {9, 10, 19, -1}, {9, 10, 20, -1}, {9, 10, 21, -1}, {9, 11, 12, -1}, {9, 11, 13, -1}, {9, 11, 14, -1}, {9, 11, 15, -1}, {9, 11, 16, -1}, {9, 11, 17, -1}, {9, 11, 18, -1}, {9, 11, 19, -1}, {9, 11, 20, -1}, {9, 11, 21, -1}, {9, 12, 13, -1}, {9, 12, 14, -1}, {9, 12, 15, -1}, {9, 12, 16, -1}, {9, 12, 17, -1}, {9, 12, 18, -1}, {9, 12, 19, -1}, {9, 12, 20, -1}, {9, 12, 21, -1}, {9, 13, 14, -1}, {9, 13, 15, -1}, {9, 13, 16, -1}, {9, 13, 17, -1}, {9, 13, 18, -1}, {9, 13, 19, -1}, {9, 13, 20, -1}, {9, 13, 21, -1}, {9, 14, 15, -1}, {9, 14, 16, -1}, {9, 14, 17, -1}, {9, 14, 18, -1}, {9, 14, 19, -1}, {9, 14, 20, -1}, {9, 14, 21, -1}, {9, 15, 16, -1}, {9, 15, 17, -1}, {9, 15, 18, -1}, {9, 15, 19, -1}, {9, 15, 20, -1}, {9, 15, 21, -1}, {9, 16, 17, -1}, {9, 16, 18, -1}, {9, 16, 19, -1}, {9, 16, 20, -1}, {9, 16, 21, -1}, {9, 17, 18, -1}, {9, 17, 19, -1}, {9, 17, 20, -1}, {9, 17, 21, -1}, {9, 18, 19, -1}, {9, 18, 20, -1}, {9, 18, 21, -1}, {9, 19, 20, -1}, {9, 19, 21, -1}, {9, 20, 21, -1}, {10, 11, 12, -1}, {10, 11, 13, -1}, {10, 11, 14, -1}, {10, 11, 15, -1}, {10, 11, 16, -1}, {10, 11, 17, -1}, {10, 11, 18, -1}, {10, 11, 19, -1}, {10, 11, 20, -1}, {10, 11, 21, -1}, {10, 12, 13, -1}, {10, 12, 14, -1}, {10, 12, 15, -1}, {10, 12, 16, -1}, {10, 12, 17, -1}, {10, 12, 18, -1}, {10, 12, 19, -1}, {10, 12, 20, -1}, {10, 12, 21, -1}, {10, 13, 14, -1}, {10, 13, 15, -1}, {10, 13, 16, -1}, {10, 13, 17, -1}, {10, 13, 18, -1}, {10, 13, 19, -1}, {10, 13, 20, -1}, {10, 13, 21, -1}, {10, 14, 15, -1}, {10, 14, 16, -1}, {10, 14, 17, -1}, {10, 14, 18, -1}, {10, 14, 19, -1}, {10, 14, 20, -1}, {10, 14, 21, -1}, {10, 15, 16, -1}, {10, 15, 17, -1}, {10, 15, 18, -1}, {10, 15, 19, -1}, {10, 15, 20, -1}, {10, 15, 21, -1}, {10, 16, 17, -1}, {10, 16, 18, -1}, {10, 16, 19, -1}, {10, 16, 20, -1}, {10, 16, 21, -1}, {10, 17, 18, -1}, {10, 17, 19, -1}, {10, 17, 20, -1}, {10, 17, 21, -1}, {10, 18, 19, -1}, {10, 18, 20, -1}, {10, 18, 21, -1}, {10, 19, 20, -1}, {10, 19, 21, -1}, {10, 20, 21, -1}, {11, 12, 13, -1}, {11, 12, 14, -1}, {11, 12, 15, -1}, {11, 12, 16, -1}, {11, 12, 17, -1}, {11, 12, 18, -1}, {11, 12, 19, -1}, {11, 12, 20, -1}, {11, 12, 21, -1}, {11, 13, 14, -1}, {11, 13, 15, -1}, {11, 13, 16, -1}, {11, 13, 17, -1}, {11, 13, 18, -1}, {11, 13, 19, -1}, {11, 13, 20, -1}, {11, 13, 21, -1}, {11, 14, 15, -1}, {11, 14, 16, -1}, {11, 14, 17, -1}, {11, 14, 18, -1}, {11, 14, 19, -1}, {11, 14, 20, -1}, {11, 14, 21, -1}, {11, 15, 16, -1}, {11, 15, 17, -1}, {11, 15, 18, -1}, {11, 15, 19, -1}, {11, 15, 20, -1}, {11, 15, 21, -1}, {11, 16, 17, -1}, {11, 16, 18, -1}, {11, 16, 19, -1}, {11, 16, 20, -1}, {11, 16, 21, -1}, {11, 17, 18, -1}, {11, 17, 19, -1}, {11, 17, 20, -1}, {11, 17, 21, -1}, {11, 18, 19, -1}, {11, 18, 20, -1}, {11, 18, 21, -1}, {11, 19, 20, -1}, {11, 19, 21, -1}, {11, 20, 21, -1}, {12, 13, 14, -1}, {12, 13, 15, -1}, {12, 13, 16, -1}, {12, 13, 17, -1}, {12, 13, 18, -1}, {12, 13, 19, -1}, {12, 13, 20, -1}, {12, 13, 21, -1}, {12, 14, 15, -1}, {12, 14, 16, -1}, {12, 14, 17, -1}, {12, 14, 18, -1}, {12, 14, 19, -1}, {12, 14, 20, -1}, {12, 14, 21, -1}, {12, 15, 16, -1}, {12, 15, 17, -1}, {12, 15, 18, -1}, {12, 15, 19, -1}, {12, 15, 20, -1}, {12, 15, 21, -1}, {12, 16, 17, -1}, {12, 16, 18, -1}, {12, 16, 19, -1}, {12, 16, 20, -1}, {12, 16, 21, -1}, {12, 17, 18, -1}, {12, 17, 19, -1}, {12, 17, 20, -1}, {12, 17, 21, -1}, {12, 18, 19, -1}, {12, 18, 20, -1}, {12, 18, 21, -1}, {12, 19, 20, -1}, {12, 19, 21, -1}, {12, 20, 21, -1}, {13, 14, 15, -1}, {13, 14, 16, -1}, {13, 14, 17, -1}, {13, 14, 18, -1}, {13, 14, 19, -1}, {13, 14, 20, -1}, {13, 14, 21, -1}, {13, 15, 16, -1}, {13, 15, 17, -1}, {13, 15, 18, -1}, {13, 15, 19, -1}, {13, 15, 20, -1}, {13, 15, 21, -1}, {13, 16, 17, -1}, {13, 16, 18, -1}, {13, 16, 19, -1}, {13, 16, 20, -1}, {13, 16, 21, -1}, {13, 17, 18, -1}, {13, 17, 19, -1}, {13, 17, 20, -1}, {13, 17, 21, -1}, {13, 18, 19, -1}, {13, 18, 20, -1}, {13, 18, 21, -1}, {13, 19, 20, -1}, {13, 19, 21, -1}, {13, 20, 21, -1}, {14, 15, 16, -1}, {14, 15, 17, -1}, {14, 15, 18, -1}, {14, 15, 19, -1}, {14, 15, 20, -1}, {14, 15, 21, -1}, {14, 16, 17, -1}, {14, 16, 18, -1}, {14, 16, 19, -1}, {14, 16, 20, -1}, {14, 16, 21, -1}, {14, 17, 18, -1}, {14, 17, 19, -1}, {14, 17, 20, -1}, {14, 17, 21, -1}, {14, 18, 19, -1}, {14, 18, 20, -1}, {14, 18, 21, -1}, {14, 19, 20, -1}, {14, 19, 21, -1}, {14, 20, 21, -1}, {15, 16, 17, -1}, {15, 16, 18, -1}, {15, 16, 19, -1}, {15, 16, 20, -1}, {15, 16, 21, -1}, {15, 17, 18, -1}, {15, 17, 19, -1}, {15, 17, 20, -1}, {15, 17, 21, -1}, {15, 18, 19, -1}, {15, 18, 20, -1}, {15, 18, 21, -1}, {15, 19, 20, -1}, {15, 19, 21, -1}, {15, 20, 21, -1}, {16, 17, 18, -1}, {16, 17, 19, -1}, {16, 17, 20, -1}, {16, 17, 21, -1}, {16, 18, 19, -1}, {16, 18, 20, -1}, {16, 18, 21, -1}, {16, 19, 20, -1}, {16, 19, 21, -1}, {16, 20, 21, -1}, {17, 18, 19, -1}, {17, 18, 20, -1}, {17, 18, 21, -1}, {17, 19, 20, -1}, {17, 19, 21, -1}, {17, 20, 21, -1}, {18, 19, 20, -1}, {18, 19, 21, -1}, {18, 20, 21, -1}, {19, 20, 21, -1}} ;
76 #define NUM_23_3_COMBS 276
77 int failure_combs_23_3[NUM_23_3_COMBS][4] = {{0, -1, -1, -1}, {1, -1, -1, -1}, {2, -1, -1, -1}, {3, -1, -1, -1}, {4, -1, -1, -1}, {5, -1, -1, -1}, {6, -1, -1, -1}, {7, -1, -1, -1}, {8, -1, -1, -1}, {9, -1, -1, -1}, {10, -1, -1, -1}, {11, -1, -1, -1}, {12, -1, -1, -1}, {13, -1, -1, -1}, {14, -1, -1, -1}, {15, -1, -1, -1}, {16, -1, -1, -1}, {17, -1, -1, -1}, {18, -1, -1, -1}, {19, -1, -1, -1}, {20, -1, -1, -1}, {21, -1, -1, -1}, {22, -1, -1, -1}, {0, 1, -1, -1}, {0, 2, -1, -1}, {0, 3, -1, -1}, {0, 4, -1, -1}, {0, 5, -1, -1}, {0, 6, -1, -1}, {0, 7, -1, -1}, {0, 8, -1, -1}, {0, 9, -1, -1}, {0, 10, -1, -1}, {0, 11, -1, -1}, {0, 12, -1, -1}, {0, 13, -1, -1}, {0, 14, -1, -1}, {0, 15, -1, -1}, {0, 16, -1, -1}, {0, 17, -1, -1}, {0, 18, -1, -1}, {0, 19, -1, -1}, {0, 20, -1, -1}, {0, 21, -1, -1}, {0, 22, -1, -1}, {1, 2, -1, -1}, {1, 3, -1, -1}, {1, 4, -1, -1}, {1, 5, -1, -1}, {1, 6, -1, -1}, {1, 7, -1, -1}, {1, 8, -1, -1}, {1, 9, -1, -1}, {1, 10, -1, -1}, {1, 11, -1, -1}, {1, 12, -1, -1}, {1, 13, -1, -1}, {1, 14, -1, -1}, {1, 15, -1, -1}, {1, 16, -1, -1}, {1, 17, -1, -1}, {1, 18, -1, -1}, {1, 19, -1, -1}, {1, 20, -1, -1}, {1, 21, -1, -1}, {1, 22, -1, -1}, {2, 3, -1, -1}, {2, 4, -1, -1}, {2, 5, -1, -1}, {2, 6, -1, -1}, {2, 7, -1, -1}, {2, 8, -1, -1}, {2, 9, -1, -1}, {2, 10, -1, -1}, {2, 11, -1, -1}, {2, 12, -1, -1}, {2, 13, -1, -1}, {2, 14, -1, -1}, {2, 15, -1, -1}, {2, 16, -1, -1}, {2, 17, -1, -1}, {2, 18, -1, -1}, {2, 19, -1, -1}, {2, 20, -1, -1}, {2, 21, -1, -1}, {2, 22, -1, -1}, {3, 4, -1, -1}, {3, 5, -1, -1}, {3, 6, -1, -1}, {3, 7, -1, -1}, {3, 8, -1, -1}, {3, 9, -1, -1}, {3, 10, -1, -1}, {3, 11, -1, -1}, {3, 12, -1, -1}, {3, 13, -1, -1}, {3, 14, -1, -1}, {3, 15, -1, -1}, {3, 16, -1, -1}, {3, 17, -1, -1}, {3, 18, -1, -1}, {3, 19, -1, -1}, {3, 20, -1, -1}, {3, 21, -1, -1}, {3, 22, -1, -1}, {4, 5, -1, -1}, {4, 6, -1, -1}, {4, 7, -1, -1}, {4, 8, -1, -1}, {4, 9, -1, -1}, {4, 10, -1, -1}, {4, 11, -1, -1}, {4, 12, -1, -1}, {4, 13, -1, -1}, {4, 14, -1, -1}, {4, 15, -1, -1}, {4, 16, -1, -1}, {4, 17, -1, -1}, {4, 18, -1, -1}, {4, 19, -1, -1}, {4, 20, -1, -1}, {4, 21, -1, -1}, {4, 22, -1, -1}, {5, 6, -1, -1}, {5, 7, -1, -1}, {5, 8, -1, -1}, {5, 9, -1, -1}, {5, 10, -1, -1}, {5, 11, -1, -1}, {5, 12, -1, -1}, {5, 13, -1, -1}, {5, 14, -1, -1}, {5, 15, -1, -1}, {5, 16, -1, -1}, {5, 17, -1, -1}, {5, 18, -1, -1}, {5, 19, -1, -1}, {5, 20, -1, -1}, {5, 21, -1, -1}, {5, 22, -1, -1}, {6, 7, -1, -1}, {6, 8, -1, -1}, {6, 9, -1, -1}, {6, 10, -1, -1}, {6, 11, -1, -1}, {6, 12, -1, -1}, {6, 13, -1, -1}, {6, 14, -1, -1}, {6, 15, -1, -1}, {6, 16, -1, -1}, {6, 17, -1, -1}, {6, 18, -1, -1}, {6, 19, -1, -1}, {6, 20, -1, -1}, {6, 21, -1, -1}, {6, 22, -1, -1}, {7, 8, -1, -1}, {7, 9, -1, -1}, {7, 10, -1, -1}, {7, 11, -1, -1}, {7, 12, -1, -1}, {7, 13, -1, -1}, {7, 14, -1, -1}, {7, 15, -1, -1}, {7, 16, -1, -1}, {7, 17, -1, -1}, {7, 18, -1, -1}, {7, 19, -1, -1}, {7, 20, -1, -1}, {7, 21, -1, -1}, {7, 22, -1, -1}, {8, 9, -1, -1}, {8, 10, -1, -1}, {8, 11, -1, -1}, {8, 12, -1, -1}, {8, 13, -1, -1}, {8, 14, -1, -1}, {8, 15, -1, -1}, {8, 16, -1, -1}, {8, 17, -1, -1}, {8, 18, -1, -1}, {8, 19, -1, -1}, {8, 20, -1, -1}, {8, 21, -1, -1}, {8, 22, -1, -1}, {9, 10, -1, -1}, {9, 11, -1, -1}, {9, 12, -1, -1}, {9, 13, -1, -1}, {9, 14, -1, -1}, {9, 15, -1, -1}, {9, 16, -1, -1}, {9, 17, -1, -1}, {9, 18, -1, -1}, {9, 19, -1, -1}, {9, 20, -1, -1}, {9, 21, -1, -1}, {9, 22, -1, -1}, {10, 11, -1, -1}, {10, 12, -1, -1}, {10, 13, -1, -1}, {10, 14, -1, -1}, {10, 15, -1, -1}, {10, 16, -1, -1}, {10, 17, -1, -1}, {10, 18, -1, -1}, {10, 19, -1, -1}, {10, 20, -1, -1}, {10, 21, -1, -1}, {10, 22, -1, -1}, {11, 12, -1, -1}, {11, 13, -1, -1}, {11, 14, -1, -1}, {11, 15, -1, -1}, {11, 16, -1, -1}, {11, 17, -1, -1}, {11, 18, -1, -1}, {11, 19, -1, -1}, {11, 20, -1, -1}, {11, 21, -1, -1}, {11, 22, -1, -1}, {12, 13, -1, -1}, {12, 14, -1, -1}, {12, 15, -1, -1}, {12, 16, -1, -1}, {12, 17, -1, -1}, {12, 18, -1, -1}, {12, 19, -1, -1}, {12, 20, -1, -1}, {12, 21, -1, -1}, {12, 22, -1, -1}, {13, 14, -1, -1}, {13, 15, -1, -1}, {13, 16, -1, -1}, {13, 17, -1, -1}, {13, 18, -1, -1}, {13, 19, -1, -1}, {13, 20, -1, -1}, {13, 21, -1, -1}, {13, 22, -1, -1}, {14, 15, -1, -1}, {14, 16, -1, -1}, {14, 17, -1, -1}, {14, 18, -1, -1}, {14, 19, -1, -1}, {14, 20, -1, -1}, {14, 21, -1, -1}, {14, 22, -1, -1}, {15, 16, -1, -1}, {15, 17, -1, -1}, {15, 18, -1, -1}, {15, 19, -1, -1}, {15, 20, -1, -1}, {15, 21, -1, -1}, {15, 22, -1, -1}, {16, 17, -1, -1}, {16, 18, -1, -1}, {16, 19, -1, -1}, {16, 20, -1, -1}, {16, 21, -1, -1}, {16, 22, -1, -1}, {17, 18, -1, -1}, {17, 19, -1, -1}, {17, 20, -1, -1}, {17, 21, -1, -1}, {17, 22, -1, -1}, {18, 19, -1, -1}, {18, 20, -1, -1}, {18, 21, -1, -1}, {18, 22, -1, -1}, {19, 20, -1, -1}, {19, 21, -1, -1}, {19, 22, -1, -1}, {20, 21, -1, -1}, {20, 22, -1, -1}, {21, 22, -1, -1}} ;
78 #define NUM_23_4_COMBS 2047
79 int failure_combs_23_4[NUM_23_4_COMBS][4] = {{0, -1, -1, -1}, {1, -1, -1, -1}, {2, -1, -1, -1}, {3, -1, -1, -1}, {4, -1, -1, -1}, {5, -1, -1, -1}, {6, -1, -1, -1}, {7, -1, -1, -1}, {8, -1, -1, -1}, {9, -1, -1, -1}, {10, -1, -1, -1}, {11, -1, -1, -1}, {12, -1, -1, -1}, {13, -1, -1, -1}, {14, -1, -1, -1}, {15, -1, -1, -1}, {16, -1, -1, -1}, {17, -1, -1, -1}, {18, -1, -1, -1}, {19, -1, -1, -1}, {20, -1, -1, -1}, {21, -1, -1, -1}, {22, -1, -1, -1}, {0, 1, -1, -1}, {0, 2, -1, -1}, {0, 3, -1, -1}, {0, 4, -1, -1}, {0, 5, -1, -1}, {0, 6, -1, -1}, {0, 7, -1, -1}, {0, 8, -1, -1}, {0, 9, -1, -1}, {0, 10, -1, -1}, {0, 11, -1, -1}, {0, 12, -1, -1}, {0, 13, -1, -1}, {0, 14, -1, -1}, {0, 15, -1, -1}, {0, 16, -1, -1}, {0, 17, -1, -1}, {0, 18, -1, -1}, {0, 19, -1, -1}, {0, 20, -1, -1}, {0, 21, -1, -1}, {0, 22, -1, -1}, {1, 2, -1, -1}, {1, 3, -1, -1}, {1, 4, -1, -1}, {1, 5, -1, -1}, {1, 6, -1, -1}, {1, 7, -1, -1}, {1, 8, -1, -1}, {1, 9, -1, -1}, {1, 10, -1, -1}, {1, 11, -1, -1}, {1, 12, -1, -1}, {1, 13, -1, -1}, {1, 14, -1, -1}, {1, 15, -1, -1}, {1, 16, -1, -1}, {1, 17, -1, -1}, {1, 18, -1, -1}, {1, 19, -1, -1}, {1, 20, -1, -1}, {1, 21, -1, -1}, {1, 22, -1, -1}, {2, 3, -1, -1}, {2, 4, -1, -1}, {2, 5, -1, -1}, {2, 6, -1, -1}, {2, 7, -1, -1}, {2, 8, -1, -1}, {2, 9, -1, -1}, {2, 10, -1, -1}, {2, 11, -1, -1}, {2, 12, -1, -1}, {2, 13, -1, -1}, {2, 14, -1, -1}, {2, 15, -1, -1}, {2, 16, -1, -1}, {2, 17, -1, -1}, {2, 18, -1, -1}, {2, 19, -1, -1}, {2, 20, -1, -1}, {2, 21, -1, -1}, {2, 22, -1, -1}, {3, 4, -1, -1}, {3, 5, -1, -1}, {3, 6, -1, -1}, {3, 7, -1, -1}, {3, 8, -1, -1}, {3, 9, -1, -1}, {3, 10, -1, -1}, {3, 11, -1, -1}, {3, 12, -1, -1}, {3, 13, -1, -1}, {3, 14, -1, -1}, {3, 15, -1, -1}, {3, 16, -1, -1}, {3, 17, -1, -1}, {3, 18, -1, -1}, {3, 19, -1, -1}, {3, 20, -1, -1}, {3, 21, -1, -1}, {3, 22, -1, -1}, {4, 5, -1, -1}, {4, 6, -1, -1}, {4, 7, -1, -1}, {4, 8, -1, -1}, {4, 9, -1, -1}, {4, 10, -1, -1}, {4, 11, -1, -1}, {4, 12, -1, -1}, {4, 13, -1, -1}, {4, 14, -1, -1}, {4, 15, -1, -1}, {4, 16, -1, -1}, {4, 17, -1, -1}, {4, 18, -1, -1}, {4, 19, -1, -1}, {4, 20, -1, -1}, {4, 21, -1, -1}, {4, 22, -1, -1}, {5, 6, -1, -1}, {5, 7, -1, -1}, {5, 8, -1, -1}, {5, 9, -1, -1}, {5, 10, -1, -1}, {5, 11, -1, -1}, {5, 12, -1, -1}, {5, 13, -1, -1}, {5, 14, -1, -1}, {5, 15, -1, -1}, {5, 16, -1, -1}, {5, 17, -1, -1}, {5, 18, -1, -1}, {5, 19, -1, -1}, {5, 20, -1, -1}, {5, 21, -1, -1}, {5, 22, -1, -1}, {6, 7, -1, -1}, {6, 8, -1, -1}, {6, 9, -1, -1}, {6, 10, -1, -1}, {6, 11, -1, -1}, {6, 12, -1, -1}, {6, 13, -1, -1}, {6, 14, -1, -1}, {6, 15, -1, -1}, {6, 16, -1, -1}, {6, 17, -1, -1}, {6, 18, -1, -1}, {6, 19, -1, -1}, {6, 20, -1, -1}, {6, 21, -1, -1}, {6, 22, -1, -1}, {7, 8, -1, -1}, {7, 9, -1, -1}, {7, 10, -1, -1}, {7, 11, -1, -1}, {7, 12, -1, -1}, {7, 13, -1, -1}, {7, 14, -1, -1}, {7, 15, -1, -1}, {7, 16, -1, -1}, {7, 17, -1, -1}, {7, 18, -1, -1}, {7, 19, -1, -1}, {7, 20, -1, -1}, {7, 21, -1, -1}, {7, 22, -1, -1}, {8, 9, -1, -1}, {8, 10, -1, -1}, {8, 11, -1, -1}, {8, 12, -1, -1}, {8, 13, -1, -1}, {8, 14, -1, -1}, {8, 15, -1, -1}, {8, 16, -1, -1}, {8, 17, -1, -1}, {8, 18, -1, -1}, {8, 19, -1, -1}, {8, 20, -1, -1}, {8, 21, -1, -1}, {8, 22, -1, -1}, {9, 10, -1, -1}, {9, 11, -1, -1}, {9, 12, -1, -1}, {9, 13, -1, -1}, {9, 14, -1, -1}, {9, 15, -1, -1}, {9, 16, -1, -1}, {9, 17, -1, -1}, {9, 18, -1, -1}, {9, 19, -1, -1}, {9, 20, -1, -1}, {9, 21, -1, -1}, {9, 22, -1, -1}, {10, 11, -1, -1}, {10, 12, -1, -1}, {10, 13, -1, -1}, {10, 14, -1, -1}, {10, 15, -1, -1}, {10, 16, -1, -1}, {10, 17, -1, -1}, {10, 18, -1, -1}, {10, 19, -1, -1}, {10, 20, -1, -1}, {10, 21, -1, -1}, {10, 22, -1, -1}, {11, 12, -1, -1}, {11, 13, -1, -1}, {11, 14, -1, -1}, {11, 15, -1, -1}, {11, 16, -1, -1}, {11, 17, -1, -1}, {11, 18, -1, -1}, {11, 19, -1, -1}, {11, 20, -1, -1}, {11, 21, -1, -1}, {11, 22, -1, -1}, {12, 13, -1, -1}, {12, 14, -1, -1}, {12, 15, -1, -1}, {12, 16, -1, -1}, {12, 17, -1, -1}, {12, 18, -1, -1}, {12, 19, -1, -1}, {12, 20, -1, -1}, {12, 21, -1, -1}, {12, 22, -1, -1}, {13, 14, -1, -1}, {13, 15, -1, -1}, {13, 16, -1, -1}, {13, 17, -1, -1}, {13, 18, -1, -1}, {13, 19, -1, -1}, {13, 20, -1, -1}, {13, 21, -1, -1}, {13, 22, -1, -1}, {14, 15, -1, -1}, {14, 16, -1, -1}, {14, 17, -1, -1}, {14, 18, -1, -1}, {14, 19, -1, -1}, {14, 20, -1, -1}, {14, 21, -1, -1}, {14, 22, -1, -1}, {15, 16, -1, -1}, {15, 17, -1, -1}, {15, 18, -1, -1}, {15, 19, -1, -1}, {15, 20, -1, -1}, {15, 21, -1, -1}, {15, 22, -1, -1}, {16, 17, -1, -1}, {16, 18, -1, -1}, {16, 19, -1, -1}, {16, 20, -1, -1}, {16, 21, -1, -1}, {16, 22, -1, -1}, {17, 18, -1, -1}, {17, 19, -1, -1}, {17, 20, -1, -1}, {17, 21, -1, -1}, {17, 22, -1, -1}, {18, 19, -1, -1}, {18, 20, -1, -1}, {18, 21, -1, -1}, {18, 22, -1, -1}, {19, 20, -1, -1}, {19, 21, -1, -1}, {19, 22, -1, -1}, {20, 21, -1, -1}, {20, 22, -1, -1}, {21, 22, -1, -1}, {0, 1, 2, -1}, {0, 1, 3, -1}, {0, 1, 4, -1}, {0, 1, 5, -1}, {0, 1, 6, -1}, {0, 1, 7, -1}, {0, 1, 8, -1}, {0, 1, 9, -1}, {0, 1, 10, -1}, {0, 1, 11, -1}, {0, 1, 12, -1}, {0, 1, 13, -1}, {0, 1, 14, -1}, {0, 1, 15, -1}, {0, 1, 16, -1}, {0, 1, 17, -1}, {0, 1, 18, -1}, {0, 1, 19, -1}, {0, 1, 20, -1}, {0, 1, 21, -1}, {0, 1, 22, -1}, {0, 2, 3, -1}, {0, 2, 4, -1}, {0, 2, 5, -1}, {0, 2, 6, -1}, {0, 2, 7, -1}, {0, 2, 8, -1}, {0, 2, 9, -1}, {0, 2, 10, -1}, {0, 2, 11, -1}, {0, 2, 12, -1}, {0, 2, 13, -1}, {0, 2, 14, -1}, {0, 2, 15, -1}, {0, 2, 16, -1}, {0, 2, 17, -1}, {0, 2, 18, -1}, {0, 2, 19, -1}, {0, 2, 20, -1}, {0, 2, 21, -1}, {0, 2, 22, -1}, {0, 3, 4, -1}, {0, 3, 5, -1}, {0, 3, 6, -1}, {0, 3, 7, -1}, {0, 3, 8, -1}, {0, 3, 9, -1}, {0, 3, 10, -1}, {0, 3, 11, -1}, {0, 3, 12, -1}, {0, 3, 13, -1}, {0, 3, 14, -1}, {0, 3, 15, -1}, {0, 3, 16, -1}, {0, 3, 17, -1}, {0, 3, 18, -1}, {0, 3, 19, -1}, {0, 3, 20, -1}, {0, 3, 21, -1}, {0, 3, 22, -1}, {0, 4, 5, -1}, {0, 4, 6, -1}, {0, 4, 7, -1}, {0, 4, 8, -1}, {0, 4, 9, -1}, {0, 4, 10, -1}, {0, 4, 11, -1}, {0, 4, 12, -1}, {0, 4, 13, -1}, {0, 4, 14, -1}, {0, 4, 15, -1}, {0, 4, 16, -1}, {0, 4, 17, -1}, {0, 4, 18, -1}, {0, 4, 19, -1}, {0, 4, 20, -1}, {0, 4, 21, -1}, {0, 4, 22, -1}, {0, 5, 6, -1}, {0, 5, 7, -1}, {0, 5, 8, -1}, {0, 5, 9, -1}, {0, 5, 10, -1}, {0, 5, 11, -1}, {0, 5, 12, -1}, {0, 5, 13, -1}, {0, 5, 14, -1}, {0, 5, 15, -1}, {0, 5, 16, -1}, {0, 5, 17, -1}, {0, 5, 18, -1}, {0, 5, 19, -1}, {0, 5, 20, -1}, {0, 5, 21, -1}, {0, 5, 22, -1}, {0, 6, 7, -1}, {0, 6, 8, -1}, {0, 6, 9, -1}, {0, 6, 10, -1}, {0, 6, 11, -1}, {0, 6, 12, -1}, {0, 6, 13, -1}, {0, 6, 14, -1}, {0, 6, 15, -1}, {0, 6, 16, -1}, {0, 6, 17, -1}, {0, 6, 18, -1}, {0, 6, 19, -1}, {0, 6, 20, -1}, {0, 6, 21, -1}, {0, 6, 22, -1}, {0, 7, 8, -1}, {0, 7, 9, -1}, {0, 7, 10, -1}, {0, 7, 11, -1}, {0, 7, 12, -1}, {0, 7, 13, -1}, {0, 7, 14, -1}, {0, 7, 15, -1}, {0, 7, 16, -1}, {0, 7, 17, -1}, {0, 7, 18, -1}, {0, 7, 19, -1}, {0, 7, 20, -1}, {0, 7, 21, -1}, {0, 7, 22, -1}, {0, 8, 9, -1}, {0, 8, 10, -1}, {0, 8, 11, -1}, {0, 8, 12, -1}, {0, 8, 13, -1}, {0, 8, 14, -1}, {0, 8, 15, -1}, {0, 8, 16, -1}, {0, 8, 17, -1}, {0, 8, 18, -1}, {0, 8, 19, -1}, {0, 8, 20, -1}, {0, 8, 21, -1}, {0, 8, 22, -1}, {0, 9, 10, -1}, {0, 9, 11, -1}, {0, 9, 12, -1}, {0, 9, 13, -1}, {0, 9, 14, -1}, {0, 9, 15, -1}, {0, 9, 16, -1}, {0, 9, 17, -1}, {0, 9, 18, -1}, {0, 9, 19, -1}, {0, 9, 20, -1}, {0, 9, 21, -1}, {0, 9, 22, -1}, {0, 10, 11, -1}, {0, 10, 12, -1}, {0, 10, 13, -1}, {0, 10, 14, -1}, {0, 10, 15, -1}, {0, 10, 16, -1}, {0, 10, 17, -1}, {0, 10, 18, -1}, {0, 10, 19, -1}, {0, 10, 20, -1}, {0, 10, 21, -1}, {0, 10, 22, -1}, {0, 11, 12, -1}, {0, 11, 13, -1}, {0, 11, 14, -1}, {0, 11, 15, -1}, {0, 11, 16, -1}, {0, 11, 17, -1}, {0, 11, 18, -1}, {0, 11, 19, -1}, {0, 11, 20, -1}, {0, 11, 21, -1}, {0, 11, 22, -1}, {0, 12, 13, -1}, {0, 12, 14, -1}, {0, 12, 15, -1}, {0, 12, 16, -1}, {0, 12, 17, -1}, {0, 12, 18, -1}, {0, 12, 19, -1}, {0, 12, 20, -1}, {0, 12, 21, -1}, {0, 12, 22, -1}, {0, 13, 14, -1}, {0, 13, 15, -1}, {0, 13, 16, -1}, {0, 13, 17, -1}, {0, 13, 18, -1}, {0, 13, 19, -1}, {0, 13, 20, -1}, {0, 13, 21, -1}, {0, 13, 22, -1}, {0, 14, 15, -1}, {0, 14, 16, -1}, {0, 14, 17, -1}, {0, 14, 18, -1}, {0, 14, 19, -1}, {0, 14, 20, -1}, {0, 14, 21, -1}, {0, 14, 22, -1}, {0, 15, 16, -1}, {0, 15, 17, -1}, {0, 15, 18, -1}, {0, 15, 19, -1}, {0, 15, 20, -1}, {0, 15, 21, -1}, {0, 15, 22, -1}, {0, 16, 17, -1}, {0, 16, 18, -1}, {0, 16, 19, -1}, {0, 16, 20, -1}, {0, 16, 21, -1}, {0, 16, 22, -1}, {0, 17, 18, -1}, {0, 17, 19, -1}, {0, 17, 20, -1}, {0, 17, 21, -1}, {0, 17, 22, -1}, {0, 18, 19, -1}, {0, 18, 20, -1}, {0, 18, 21, -1}, {0, 18, 22, -1}, {0, 19, 20, -1}, {0, 19, 21, -1}, {0, 19, 22, -1}, {0, 20, 21, -1}, {0, 20, 22, -1}, {0, 21, 22, -1}, {1, 2, 3, -1}, {1, 2, 4, -1}, {1, 2, 5, -1}, {1, 2, 6, -1}, {1, 2, 7, -1}, {1, 2, 8, -1}, {1, 2, 9, -1}, {1, 2, 10, -1}, {1, 2, 11, -1}, {1, 2, 12, -1}, {1, 2, 13, -1}, {1, 2, 14, -1}, {1, 2, 15, -1}, {1, 2, 16, -1}, {1, 2, 17, -1}, {1, 2, 18, -1}, {1, 2, 19, -1}, {1, 2, 20, -1}, {1, 2, 21, -1}, {1, 2, 22, -1}, {1, 3, 4, -1}, {1, 3, 5, -1}, {1, 3, 6, -1}, {1, 3, 7, -1}, {1, 3, 8, -1}, {1, 3, 9, -1}, {1, 3, 10, -1}, {1, 3, 11, -1}, {1, 3, 12, -1}, {1, 3, 13, -1}, {1, 3, 14, -1}, {1, 3, 15, -1}, {1, 3, 16, -1}, {1, 3, 17, -1}, {1, 3, 18, -1}, {1, 3, 19, -1}, {1, 3, 20, -1}, {1, 3, 21, -1}, {1, 3, 22, -1}, {1, 4, 5, -1}, {1, 4, 6, -1}, {1, 4, 7, -1}, {1, 4, 8, -1}, {1, 4, 9, -1}, {1, 4, 10, -1}, {1, 4, 11, -1}, {1, 4, 12, -1}, {1, 4, 13, -1}, {1, 4, 14, -1}, {1, 4, 15, -1}, {1, 4, 16, -1}, {1, 4, 17, -1}, {1, 4, 18, -1}, {1, 4, 19, -1}, {1, 4, 20, -1}, {1, 4, 21, -1}, {1, 4, 22, -1}, {1, 5, 6, -1}, {1, 5, 7, -1}, {1, 5, 8, -1}, {1, 5, 9, -1}, {1, 5, 10, -1}, {1, 5, 11, -1}, {1, 5, 12, -1}, {1, 5, 13, -1}, {1, 5, 14, -1}, {1, 5, 15, -1}, {1, 5, 16, -1}, {1, 5, 17, -1}, {1, 5, 18, -1}, {1, 5, 19, -1}, {1, 5, 20, -1}, {1, 5, 21, -1}, {1, 5, 22, -1}, {1, 6, 7, -1}, {1, 6, 8, -1}, {1, 6, 9, -1}, {1, 6, 10, -1}, {1, 6, 11, -1}, {1, 6, 12, -1}, {1, 6, 13, -1}, {1, 6, 14, -1}, {1, 6, 15, -1}, {1, 6, 16, -1}, {1, 6, 17, -1}, {1, 6, 18, -1}, {1, 6, 19, -1}, {1, 6, 20, -1}, {1, 6, 21, -1}, {1, 6, 22, -1}, {1, 7, 8, -1}, {1, 7, 9, -1}, {1, 7, 10, -1}, {1, 7, 11, -1}, {1, 7, 12, -1}, {1, 7, 13, -1}, {1, 7, 14, -1}, {1, 7, 15, -1}, {1, 7, 16, -1}, {1, 7, 17, -1}, {1, 7, 18, -1}, {1, 7, 19, -1}, {1, 7, 20, -1}, {1, 7, 21, -1}, {1, 7, 22, -1}, {1, 8, 9, -1}, {1, 8, 10, -1}, {1, 8, 11, -1}, {1, 8, 12, -1}, {1, 8, 13, -1}, {1, 8, 14, -1}, {1, 8, 15, -1}, {1, 8, 16, -1}, {1, 8, 17, -1}, {1, 8, 18, -1}, {1, 8, 19, -1}, {1, 8, 20, -1}, {1, 8, 21, -1}, {1, 8, 22, -1}, {1, 9, 10, -1}, {1, 9, 11, -1}, {1, 9, 12, -1}, {1, 9, 13, -1}, {1, 9, 14, -1}, {1, 9, 15, -1}, {1, 9, 16, -1}, {1, 9, 17, -1}, {1, 9, 18, -1}, {1, 9, 19, -1}, {1, 9, 20, -1}, {1, 9, 21, -1}, {1, 9, 22, -1}, {1, 10, 11, -1}, {1, 10, 12, -1}, {1, 10, 13, -1}, {1, 10, 14, -1}, {1, 10, 15, -1}, {1, 10, 16, -1}, {1, 10, 17, -1}, {1, 10, 18, -1}, {1, 10, 19, -1}, {1, 10, 20, -1}, {1, 10, 21, -1}, {1, 10, 22, -1}, {1, 11, 12, -1}, {1, 11, 13, -1}, {1, 11, 14, -1}, {1, 11, 15, -1}, {1, 11, 16, -1}, {1, 11, 17, -1}, {1, 11, 18, -1}, {1, 11, 19, -1}, {1, 11, 20, -1}, {1, 11, 21, -1}, {1, 11, 22, -1}, {1, 12, 13, -1}, {1, 12, 14, -1}, {1, 12, 15, -1}, {1, 12, 16, -1}, {1, 12, 17, -1}, {1, 12, 18, -1}, {1, 12, 19, -1}, {1, 12, 20, -1}, {1, 12, 21, -1}, {1, 12, 22, -1}, {1, 13, 14, -1}, {1, 13, 15, -1}, {1, 13, 16, -1}, {1, 13, 17, -1}, {1, 13, 18, -1}, {1, 13, 19, -1}, {1, 13, 20, -1}, {1, 13, 21, -1}, {1, 13, 22, -1}, {1, 14, 15, -1}, {1, 14, 16, -1}, {1, 14, 17, -1}, {1, 14, 18, -1}, {1, 14, 19, -1}, {1, 14, 20, -1}, {1, 14, 21, -1}, {1, 14, 22, -1}, {1, 15, 16, -1}, {1, 15, 17, -1}, {1, 15, 18, -1}, {1, 15, 19, -1}, {1, 15, 20, -1}, {1, 15, 21, -1}, {1, 15, 22, -1}, {1, 16, 17, -1}, {1, 16, 18, -1}, {1, 16, 19, -1}, {1, 16, 20, -1}, {1, 16, 21, -1}, {1, 16, 22, -1}, {1, 17, 18, -1}, {1, 17, 19, -1}, {1, 17, 20, -1}, {1, 17, 21, -1}, {1, 17, 22, -1}, {1, 18, 19, -1}, {1, 18, 20, -1}, {1, 18, 21, -1}, {1, 18, 22, -1}, {1, 19, 20, -1}, {1, 19, 21, -1}, {1, 19, 22, -1}, {1, 20, 21, -1}, {1, 20, 22, -1}, {1, 21, 22, -1}, {2, 3, 4, -1}, {2, 3, 5, -1}, {2, 3, 6, -1}, {2, 3, 7, -1}, {2, 3, 8, -1}, {2, 3, 9, -1}, {2, 3, 10, -1}, {2, 3, 11, -1}, {2, 3, 12, -1}, {2, 3, 13, -1}, {2, 3, 14, -1}, {2, 3, 15, -1}, {2, 3, 16, -1}, {2, 3, 17, -1}, {2, 3, 18, -1}, {2, 3, 19, -1}, {2, 3, 20, -1}, {2, 3, 21, -1}, {2, 3, 22, -1}, {2, 4, 5, -1}, {2, 4, 6, -1}, {2, 4, 7, -1}, {2, 4, 8, -1}, {2, 4, 9, -1}, {2, 4, 10, -1}, {2, 4, 11, -1}, {2, 4, 12, -1}, {2, 4, 13, -1}, {2, 4, 14, -1}, {2, 4, 15, -1}, {2, 4, 16, -1}, {2, 4, 17, -1}, {2, 4, 18, -1}, {2, 4, 19, -1}, {2, 4, 20, -1}, {2, 4, 21, -1}, {2, 4, 22, -1}, {2, 5, 6, -1}, {2, 5, 7, -1}, {2, 5, 8, -1}, {2, 5, 9, -1}, {2, 5, 10, -1}, {2, 5, 11, -1}, {2, 5, 12, -1}, {2, 5, 13, -1}, {2, 5, 14, -1}, {2, 5, 15, -1}, {2, 5, 16, -1}, {2, 5, 17, -1}, {2, 5, 18, -1}, {2, 5, 19, -1}, {2, 5, 20, -1}, {2, 5, 21, -1}, {2, 5, 22, -1}, {2, 6, 7, -1}, {2, 6, 8, -1}, {2, 6, 9, -1}, {2, 6, 10, -1}, {2, 6, 11, -1}, {2, 6, 12, -1}, {2, 6, 13, -1}, {2, 6, 14, -1}, {2, 6, 15, -1}, {2, 6, 16, -1}, {2, 6, 17, -1}, {2, 6, 18, -1}, {2, 6, 19, -1}, {2, 6, 20, -1}, {2, 6, 21, -1}, {2, 6, 22, -1}, {2, 7, 8, -1}, {2, 7, 9, -1}, {2, 7, 10, -1}, {2, 7, 11, -1}, {2, 7, 12, -1}, {2, 7, 13, -1}, {2, 7, 14, -1}, {2, 7, 15, -1}, {2, 7, 16, -1}, {2, 7, 17, -1}, {2, 7, 18, -1}, {2, 7, 19, -1}, {2, 7, 20, -1}, {2, 7, 21, -1}, {2, 7, 22, -1}, {2, 8, 9, -1}, {2, 8, 10, -1}, {2, 8, 11, -1}, {2, 8, 12, -1}, {2, 8, 13, -1}, {2, 8, 14, -1}, {2, 8, 15, -1}, {2, 8, 16, -1}, {2, 8, 17, -1}, {2, 8, 18, -1}, {2, 8, 19, -1}, {2, 8, 20, -1}, {2, 8, 21, -1}, {2, 8, 22, -1}, {2, 9, 10, -1}, {2, 9, 11, -1}, {2, 9, 12, -1}, {2, 9, 13, -1}, {2, 9, 14, -1}, {2, 9, 15, -1}, {2, 9, 16, -1}, {2, 9, 17, -1}, {2, 9, 18, -1}, {2, 9, 19, -1}, {2, 9, 20, -1}, {2, 9, 21, -1}, {2, 9, 22, -1}, {2, 10, 11, -1}, {2, 10, 12, -1}, {2, 10, 13, -1}, {2, 10, 14, -1}, {2, 10, 15, -1}, {2, 10, 16, -1}, {2, 10, 17, -1}, {2, 10, 18, -1}, {2, 10, 19, -1}, {2, 10, 20, -1}, {2, 10, 21, -1}, {2, 10, 22, -1}, {2, 11, 12, -1}, {2, 11, 13, -1}, {2, 11, 14, -1}, {2, 11, 15, -1}, {2, 11, 16, -1}, {2, 11, 17, -1}, {2, 11, 18, -1}, {2, 11, 19, -1}, {2, 11, 20, -1}, {2, 11, 21, -1}, {2, 11, 22, -1}, {2, 12, 13, -1}, {2, 12, 14, -1}, {2, 12, 15, -1}, {2, 12, 16, -1}, {2, 12, 17, -1}, {2, 12, 18, -1}, {2, 12, 19, -1}, {2, 12, 20, -1}, {2, 12, 21, -1}, {2, 12, 22, -1}, {2, 13, 14, -1}, {2, 13, 15, -1}, {2, 13, 16, -1}, {2, 13, 17, -1}, {2, 13, 18, -1}, {2, 13, 19, -1}, {2, 13, 20, -1}, {2, 13, 21, -1}, {2, 13, 22, -1}, {2, 14, 15, -1}, {2, 14, 16, -1}, {2, 14, 17, -1}, {2, 14, 18, -1}, {2, 14, 19, -1}, {2, 14, 20, -1}, {2, 14, 21, -1}, {2, 14, 22, -1}, {2, 15, 16, -1}, {2, 15, 17, -1}, {2, 15, 18, -1}, {2, 15, 19, -1}, {2, 15, 20, -1}, {2, 15, 21, -1}, {2, 15, 22, -1}, {2, 16, 17, -1}, {2, 16, 18, -1}, {2, 16, 19, -1}, {2, 16, 20, -1}, {2, 16, 21, -1}, {2, 16, 22, -1}, {2, 17, 18, -1}, {2, 17, 19, -1}, {2, 17, 20, -1}, {2, 17, 21, -1}, {2, 17, 22, -1}, {2, 18, 19, -1}, {2, 18, 20, -1}, {2, 18, 21, -1}, {2, 18, 22, -1}, {2, 19, 20, -1}, {2, 19, 21, -1}, {2, 19, 22, -1}, {2, 20, 21, -1}, {2, 20, 22, -1}, {2, 21, 22, -1}, {3, 4, 5, -1}, {3, 4, 6, -1}, {3, 4, 7, -1}, {3, 4, 8, -1}, {3, 4, 9, -1}, {3, 4, 10, -1}, {3, 4, 11, -1}, {3, 4, 12, -1}, {3, 4, 13, -1}, {3, 4, 14, -1}, {3, 4, 15, -1}, {3, 4, 16, -1}, {3, 4, 17, -1}, {3, 4, 18, -1}, {3, 4, 19, -1}, {3, 4, 20, -1}, {3, 4, 21, -1}, {3, 4, 22, -1}, {3, 5, 6, -1}, {3, 5, 7, -1}, {3, 5, 8, -1}, {3, 5, 9, -1}, {3, 5, 10, -1}, {3, 5, 11, -1}, {3, 5, 12, -1}, {3, 5, 13, -1}, {3, 5, 14, -1}, {3, 5, 15, -1}, {3, 5, 16, -1}, {3, 5, 17, -1}, {3, 5, 18, -1}, {3, 5, 19, -1}, {3, 5, 20, -1}, {3, 5, 21, -1}, {3, 5, 22, -1}, {3, 6, 7, -1}, {3, 6, 8, -1}, {3, 6, 9, -1}, {3, 6, 10, -1}, {3, 6, 11, -1}, {3, 6, 12, -1}, {3, 6, 13, -1}, {3, 6, 14, -1}, {3, 6, 15, -1}, {3, 6, 16, -1}, {3, 6, 17, -1}, {3, 6, 18, -1}, {3, 6, 19, -1}, {3, 6, 20, -1}, {3, 6, 21, -1}, {3, 6, 22, -1}, {3, 7, 8, -1}, {3, 7, 9, -1}, {3, 7, 10, -1}, {3, 7, 11, -1}, {3, 7, 12, -1}, {3, 7, 13, -1}, {3, 7, 14, -1}, {3, 7, 15, -1}, {3, 7, 16, -1}, {3, 7, 17, -1}, {3, 7, 18, -1}, {3, 7, 19, -1}, {3, 7, 20, -1}, {3, 7, 21, -1}, {3, 7, 22, -1}, {3, 8, 9, -1}, {3, 8, 10, -1}, {3, 8, 11, -1}, {3, 8, 12, -1}, {3, 8, 13, -1}, {3, 8, 14, -1}, {3, 8, 15, -1}, {3, 8, 16, -1}, {3, 8, 17, -1}, {3, 8, 18, -1}, {3, 8, 19, -1}, {3, 8, 20, -1}, {3, 8, 21, -1}, {3, 8, 22, -1}, {3, 9, 10, -1}, {3, 9, 11, -1}, {3, 9, 12, -1}, {3, 9, 13, -1}, {3, 9, 14, -1}, {3, 9, 15, -1}, {3, 9, 16, -1}, {3, 9, 17, -1}, {3, 9, 18, -1}, {3, 9, 19, -1}, {3, 9, 20, -1}, {3, 9, 21, -1}, {3, 9, 22, -1}, {3, 10, 11, -1}, {3, 10, 12, -1}, {3, 10, 13, -1}, {3, 10, 14, -1}, {3, 10, 15, -1}, {3, 10, 16, -1}, {3, 10, 17, -1}, {3, 10, 18, -1}, {3, 10, 19, -1}, {3, 10, 20, -1}, {3, 10, 21, -1}, {3, 10, 22, -1}, {3, 11, 12, -1}, {3, 11, 13, -1}, {3, 11, 14, -1}, {3, 11, 15, -1}, {3, 11, 16, -1}, {3, 11, 17, -1}, {3, 11, 18, -1}, {3, 11, 19, -1}, {3, 11, 20, -1}, {3, 11, 21, -1}, {3, 11, 22, -1}, {3, 12, 13, -1}, {3, 12, 14, -1}, {3, 12, 15, -1}, {3, 12, 16, -1}, {3, 12, 17, -1}, {3, 12, 18, -1}, {3, 12, 19, -1}, {3, 12, 20, -1}, {3, 12, 21, -1}, {3, 12, 22, -1}, {3, 13, 14, -1}, {3, 13, 15, -1}, {3, 13, 16, -1}, {3, 13, 17, -1}, {3, 13, 18, -1}, {3, 13, 19, -1}, {3, 13, 20, -1}, {3, 13, 21, -1}, {3, 13, 22, -1}, {3, 14, 15, -1}, {3, 14, 16, -1}, {3, 14, 17, -1}, {3, 14, 18, -1}, {3, 14, 19, -1}, {3, 14, 20, -1}, {3, 14, 21, -1}, {3, 14, 22, -1}, {3, 15, 16, -1}, {3, 15, 17, -1}, {3, 15, 18, -1}, {3, 15, 19, -1}, {3, 15, 20, -1}, {3, 15, 21, -1}, {3, 15, 22, -1}, {3, 16, 17, -1}, {3, 16, 18, -1}, {3, 16, 19, -1}, {3, 16, 20, -1}, {3, 16, 21, -1}, {3, 16, 22, -1}, {3, 17, 18, -1}, {3, 17, 19, -1}, {3, 17, 20, -1}, {3, 17, 21, -1}, {3, 17, 22, -1}, {3, 18, 19, -1}, {3, 18, 20, -1}, {3, 18, 21, -1}, {3, 18, 22, -1}, {3, 19, 20, -1}, {3, 19, 21, -1}, {3, 19, 22, -1}, {3, 20, 21, -1}, {3, 20, 22, -1}, {3, 21, 22, -1}, {4, 5, 6, -1}, {4, 5, 7, -1}, {4, 5, 8, -1}, {4, 5, 9, -1}, {4, 5, 10, -1}, {4, 5, 11, -1}, {4, 5, 12, -1}, {4, 5, 13, -1}, {4, 5, 14, -1}, {4, 5, 15, -1}, {4, 5, 16, -1}, {4, 5, 17, -1}, {4, 5, 18, -1}, {4, 5, 19, -1}, {4, 5, 20, -1}, {4, 5, 21, -1}, {4, 5, 22, -1}, {4, 6, 7, -1}, {4, 6, 8, -1}, {4, 6, 9, -1}, {4, 6, 10, -1}, {4, 6, 11, -1}, {4, 6, 12, -1}, {4, 6, 13, -1}, {4, 6, 14, -1}, {4, 6, 15, -1}, {4, 6, 16, -1}, {4, 6, 17, -1}, {4, 6, 18, -1}, {4, 6, 19, -1}, {4, 6, 20, -1}, {4, 6, 21, -1}, {4, 6, 22, -1}, {4, 7, 8, -1}, {4, 7, 9, -1}, {4, 7, 10, -1}, {4, 7, 11, -1}, {4, 7, 12, -1}, {4, 7, 13, -1}, {4, 7, 14, -1}, {4, 7, 15, -1}, {4, 7, 16, -1}, {4, 7, 17, -1}, {4, 7, 18, -1}, {4, 7, 19, -1}, {4, 7, 20, -1}, {4, 7, 21, -1}, {4, 7, 22, -1}, {4, 8, 9, -1}, {4, 8, 10, -1}, {4, 8, 11, -1}, {4, 8, 12, -1}, {4, 8, 13, -1}, {4, 8, 14, -1}, {4, 8, 15, -1}, {4, 8, 16, -1}, {4, 8, 17, -1}, {4, 8, 18, -1}, {4, 8, 19, -1}, {4, 8, 20, -1}, {4, 8, 21, -1}, {4, 8, 22, -1}, {4, 9, 10, -1}, {4, 9, 11, -1}, {4, 9, 12, -1}, {4, 9, 13, -1}, {4, 9, 14, -1}, {4, 9, 15, -1}, {4, 9, 16, -1}, {4, 9, 17, -1}, {4, 9, 18, -1}, {4, 9, 19, -1}, {4, 9, 20, -1}, {4, 9, 21, -1}, {4, 9, 22, -1}, {4, 10, 11, -1}, {4, 10, 12, -1}, {4, 10, 13, -1}, {4, 10, 14, -1}, {4, 10, 15, -1}, {4, 10, 16, -1}, {4, 10, 17, -1}, {4, 10, 18, -1}, {4, 10, 19, -1}, {4, 10, 20, -1}, {4, 10, 21, -1}, {4, 10, 22, -1}, {4, 11, 12, -1}, {4, 11, 13, -1}, {4, 11, 14, -1}, {4, 11, 15, -1}, {4, 11, 16, -1}, {4, 11, 17, -1}, {4, 11, 18, -1}, {4, 11, 19, -1}, {4, 11, 20, -1}, {4, 11, 21, -1}, {4, 11, 22, -1}, {4, 12, 13, -1}, {4, 12, 14, -1}, {4, 12, 15, -1}, {4, 12, 16, -1}, {4, 12, 17, -1}, {4, 12, 18, -1}, {4, 12, 19, -1}, {4, 12, 20, -1}, {4, 12, 21, -1}, {4, 12, 22, -1}, {4, 13, 14, -1}, {4, 13, 15, -1}, {4, 13, 16, -1}, {4, 13, 17, -1}, {4, 13, 18, -1}, {4, 13, 19, -1}, {4, 13, 20, -1}, {4, 13, 21, -1}, {4, 13, 22, -1}, {4, 14, 15, -1}, {4, 14, 16, -1}, {4, 14, 17, -1}, {4, 14, 18, -1}, {4, 14, 19, -1}, {4, 14, 20, -1}, {4, 14, 21, -1}, {4, 14, 22, -1}, {4, 15, 16, -1}, {4, 15, 17, -1}, {4, 15, 18, -1}, {4, 15, 19, -1}, {4, 15, 20, -1}, {4, 15, 21, -1}, {4, 15, 22, -1}, {4, 16, 17, -1}, {4, 16, 18, -1}, {4, 16, 19, -1}, {4, 16, 20, -1}, {4, 16, 21, -1}, {4, 16, 22, -1}, {4, 17, 18, -1}, {4, 17, 19, -1}, {4, 17, 20, -1}, {4, 17, 21, -1}, {4, 17, 22, -1}, {4, 18, 19, -1}, {4, 18, 20, -1}, {4, 18, 21, -1}, {4, 18, 22, -1}, {4, 19, 20, -1}, {4, 19, 21, -1}, {4, 19, 22, -1}, {4, 20, 21, -1}, {4, 20, 22, -1}, {4, 21, 22, -1}, {5, 6, 7, -1}, {5, 6, 8, -1}, {5, 6, 9, -1}, {5, 6, 10, -1}, {5, 6, 11, -1}, {5, 6, 12, -1}, {5, 6, 13, -1}, {5, 6, 14, -1}, {5, 6, 15, -1}, {5, 6, 16, -1}, {5, 6, 17, -1}, {5, 6, 18, -1}, {5, 6, 19, -1}, {5, 6, 20, -1}, {5, 6, 21, -1}, {5, 6, 22, -1}, {5, 7, 8, -1}, {5, 7, 9, -1}, {5, 7, 10, -1}, {5, 7, 11, -1}, {5, 7, 12, -1}, {5, 7, 13, -1}, {5, 7, 14, -1}, {5, 7, 15, -1}, {5, 7, 16, -1}, {5, 7, 17, -1}, {5, 7, 18, -1}, {5, 7, 19, -1}, {5, 7, 20, -1}, {5, 7, 21, -1}, {5, 7, 22, -1}, {5, 8, 9, -1}, {5, 8, 10, -1}, {5, 8, 11, -1}, {5, 8, 12, -1}, {5, 8, 13, -1}, {5, 8, 14, -1}, {5, 8, 15, -1}, {5, 8, 16, -1}, {5, 8, 17, -1}, {5, 8, 18, -1}, {5, 8, 19, -1}, {5, 8, 20, -1}, {5, 8, 21, -1}, {5, 8, 22, -1}, {5, 9, 10, -1}, {5, 9, 11, -1}, {5, 9, 12, -1}, {5, 9, 13, -1}, {5, 9, 14, -1}, {5, 9, 15, -1}, {5, 9, 16, -1}, {5, 9, 17, -1}, {5, 9, 18, -1}, {5, 9, 19, -1}, {5, 9, 20, -1}, {5, 9, 21, -1}, {5, 9, 22, -1}, {5, 10, 11, -1}, {5, 10, 12, -1}, {5, 10, 13, -1}, {5, 10, 14, -1}, {5, 10, 15, -1}, {5, 10, 16, -1}, {5, 10, 17, -1}, {5, 10, 18, -1}, {5, 10, 19, -1}, {5, 10, 20, -1}, {5, 10, 21, -1}, {5, 10, 22, -1}, {5, 11, 12, -1}, {5, 11, 13, -1}, {5, 11, 14, -1}, {5, 11, 15, -1}, {5, 11, 16, -1}, {5, 11, 17, -1}, {5, 11, 18, -1}, {5, 11, 19, -1}, {5, 11, 20, -1}, {5, 11, 21, -1}, {5, 11, 22, -1}, {5, 12, 13, -1}, {5, 12, 14, -1}, {5, 12, 15, -1}, {5, 12, 16, -1}, {5, 12, 17, -1}, {5, 12, 18, -1}, {5, 12, 19, -1}, {5, 12, 20, -1}, {5, 12, 21, -1}, {5, 12, 22, -1}, {5, 13, 14, -1}, {5, 13, 15, -1}, {5, 13, 16, -1}, {5, 13, 17, -1}, {5, 13, 18, -1}, {5, 13, 19, -1}, {5, 13, 20, -1}, {5, 13, 21, -1}, {5, 13, 22, -1}, {5, 14, 15, -1}, {5, 14, 16, -1}, {5, 14, 17, -1}, {5, 14, 18, -1}, {5, 14, 19, -1}, {5, 14, 20, -1}, {5, 14, 21, -1}, {5, 14, 22, -1}, {5, 15, 16, -1}, {5, 15, 17, -1}, {5, 15, 18, -1}, {5, 15, 19, -1}, {5, 15, 20, -1}, {5, 15, 21, -1}, {5, 15, 22, -1}, {5, 16, 17, -1}, {5, 16, 18, -1}, {5, 16, 19, -1}, {5, 16, 20, -1}, {5, 16, 21, -1}, {5, 16, 22, -1}, {5, 17, 18, -1}, {5, 17, 19, -1}, {5, 17, 20, -1}, {5, 17, 21, -1}, {5, 17, 22, -1}, {5, 18, 19, -1}, {5, 18, 20, -1}, {5, 18, 21, -1}, {5, 18, 22, -1}, {5, 19, 20, -1}, {5, 19, 21, -1}, {5, 19, 22, -1}, {5, 20, 21, -1}, {5, 20, 22, -1}, {5, 21, 22, -1}, {6, 7, 8, -1}, {6, 7, 9, -1}, {6, 7, 10, -1}, {6, 7, 11, -1}, {6, 7, 12, -1}, {6, 7, 13, -1}, {6, 7, 14, -1}, {6, 7, 15, -1}, {6, 7, 16, -1}, {6, 7, 17, -1}, {6, 7, 18, -1}, {6, 7, 19, -1}, {6, 7, 20, -1}, {6, 7, 21, -1}, {6, 7, 22, -1}, {6, 8, 9, -1}, {6, 8, 10, -1}, {6, 8, 11, -1}, {6, 8, 12, -1}, {6, 8, 13, -1}, {6, 8, 14, -1}, {6, 8, 15, -1}, {6, 8, 16, -1}, {6, 8, 17, -1}, {6, 8, 18, -1}, {6, 8, 19, -1}, {6, 8, 20, -1}, {6, 8, 21, -1}, {6, 8, 22, -1}, {6, 9, 10, -1}, {6, 9, 11, -1}, {6, 9, 12, -1}, {6, 9, 13, -1}, {6, 9, 14, -1}, {6, 9, 15, -1}, {6, 9, 16, -1}, {6, 9, 17, -1}, {6, 9, 18, -1}, {6, 9, 19, -1}, {6, 9, 20, -1}, {6, 9, 21, -1}, {6, 9, 22, -1}, {6, 10, 11, -1}, {6, 10, 12, -1}, {6, 10, 13, -1}, {6, 10, 14, -1}, {6, 10, 15, -1}, {6, 10, 16, -1}, {6, 10, 17, -1}, {6, 10, 18, -1}, {6, 10, 19, -1}, {6, 10, 20, -1}, {6, 10, 21, -1}, {6, 10, 22, -1}, {6, 11, 12, -1}, {6, 11, 13, -1}, {6, 11, 14, -1}, {6, 11, 15, -1}, {6, 11, 16, -1}, {6, 11, 17, -1}, {6, 11, 18, -1}, {6, 11, 19, -1}, {6, 11, 20, -1}, {6, 11, 21, -1}, {6, 11, 22, -1}, {6, 12, 13, -1}, {6, 12, 14, -1}, {6, 12, 15, -1}, {6, 12, 16, -1}, {6, 12, 17, -1}, {6, 12, 18, -1}, {6, 12, 19, -1}, {6, 12, 20, -1}, {6, 12, 21, -1}, {6, 12, 22, -1}, {6, 13, 14, -1}, {6, 13, 15, -1}, {6, 13, 16, -1}, {6, 13, 17, -1}, {6, 13, 18, -1}, {6, 13, 19, -1}, {6, 13, 20, -1}, {6, 13, 21, -1}, {6, 13, 22, -1}, {6, 14, 15, -1}, {6, 14, 16, -1}, {6, 14, 17, -1}, {6, 14, 18, -1}, {6, 14, 19, -1}, {6, 14, 20, -1}, {6, 14, 21, -1}, {6, 14, 22, -1}, {6, 15, 16, -1}, {6, 15, 17, -1}, {6, 15, 18, -1}, {6, 15, 19, -1}, {6, 15, 20, -1}, {6, 15, 21, -1}, {6, 15, 22, -1}, {6, 16, 17, -1}, {6, 16, 18, -1}, {6, 16, 19, -1}, {6, 16, 20, -1}, {6, 16, 21, -1}, {6, 16, 22, -1}, {6, 17, 18, -1}, {6, 17, 19, -1}, {6, 17, 20, -1}, {6, 17, 21, -1}, {6, 17, 22, -1}, {6, 18, 19, -1}, {6, 18, 20, -1}, {6, 18, 21, -1}, {6, 18, 22, -1}, {6, 19, 20, -1}, {6, 19, 21, -1}, {6, 19, 22, -1}, {6, 20, 21, -1}, {6, 20, 22, -1}, {6, 21, 22, -1}, {7, 8, 9, -1}, {7, 8, 10, -1}, {7, 8, 11, -1}, {7, 8, 12, -1}, {7, 8, 13, -1}, {7, 8, 14, -1}, {7, 8, 15, -1}, {7, 8, 16, -1}, {7, 8, 17, -1}, {7, 8, 18, -1}, {7, 8, 19, -1}, {7, 8, 20, -1}, {7, 8, 21, -1}, {7, 8, 22, -1}, {7, 9, 10, -1}, {7, 9, 11, -1}, {7, 9, 12, -1}, {7, 9, 13, -1}, {7, 9, 14, -1}, {7, 9, 15, -1}, {7, 9, 16, -1}, {7, 9, 17, -1}, {7, 9, 18, -1}, {7, 9, 19, -1}, {7, 9, 20, -1}, {7, 9, 21, -1}, {7, 9, 22, -1}, {7, 10, 11, -1}, {7, 10, 12, -1}, {7, 10, 13, -1}, {7, 10, 14, -1}, {7, 10, 15, -1}, {7, 10, 16, -1}, {7, 10, 17, -1}, {7, 10, 18, -1}, {7, 10, 19, -1}, {7, 10, 20, -1}, {7, 10, 21, -1}, {7, 10, 22, -1}, {7, 11, 12, -1}, {7, 11, 13, -1}, {7, 11, 14, -1}, {7, 11, 15, -1}, {7, 11, 16, -1}, {7, 11, 17, -1}, {7, 11, 18, -1}, {7, 11, 19, -1}, {7, 11, 20, -1}, {7, 11, 21, -1}, {7, 11, 22, -1}, {7, 12, 13, -1}, {7, 12, 14, -1}, {7, 12, 15, -1}, {7, 12, 16, -1}, {7, 12, 17, -1}, {7, 12, 18, -1}, {7, 12, 19, -1}, {7, 12, 20, -1}, {7, 12, 21, -1}, {7, 12, 22, -1}, {7, 13, 14, -1}, {7, 13, 15, -1}, {7, 13, 16, -1}, {7, 13, 17, -1}, {7, 13, 18, -1}, {7, 13, 19, -1}, {7, 13, 20, -1}, {7, 13, 21, -1}, {7, 13, 22, -1}, {7, 14, 15, -1}, {7, 14, 16, -1}, {7, 14, 17, -1}, {7, 14, 18, -1}, {7, 14, 19, -1}, {7, 14, 20, -1}, {7, 14, 21, -1}, {7, 14, 22, -1}, {7, 15, 16, -1}, {7, 15, 17, -1}, {7, 15, 18, -1}, {7, 15, 19, -1}, {7, 15, 20, -1}, {7, 15, 21, -1}, {7, 15, 22, -1}, {7, 16, 17, -1}, {7, 16, 18, -1}, {7, 16, 19, -1}, {7, 16, 20, -1}, {7, 16, 21, -1}, {7, 16, 22, -1}, {7, 17, 18, -1}, {7, 17, 19, -1}, {7, 17, 20, -1}, {7, 17, 21, -1}, {7, 17, 22, -1}, {7, 18, 19, -1}, {7, 18, 20, -1}, {7, 18, 21, -1}, {7, 18, 22, -1}, {7, 19, 20, -1}, {7, 19, 21, -1}, {7, 19, 22, -1}, {7, 20, 21, -1}, {7, 20, 22, -1}, {7, 21, 22, -1}, {8, 9, 10, -1}, {8, 9, 11, -1}, {8, 9, 12, -1}, {8, 9, 13, -1}, {8, 9, 14, -1}, {8, 9, 15, -1}, {8, 9, 16, -1}, {8, 9, 17, -1}, {8, 9, 18, -1}, {8, 9, 19, -1}, {8, 9, 20, -1}, {8, 9, 21, -1}, {8, 9, 22, -1}, {8, 10, 11, -1}, {8, 10, 12, -1}, {8, 10, 13, -1}, {8, 10, 14, -1}, {8, 10, 15, -1}, {8, 10, 16, -1}, {8, 10, 17, -1}, {8, 10, 18, -1}, {8, 10, 19, -1}, {8, 10, 20, -1}, {8, 10, 21, -1}, {8, 10, 22, -1}, {8, 11, 12, -1}, {8, 11, 13, -1}, {8, 11, 14, -1}, {8, 11, 15, -1}, {8, 11, 16, -1}, {8, 11, 17, -1}, {8, 11, 18, -1}, {8, 11, 19, -1}, {8, 11, 20, -1}, {8, 11, 21, -1}, {8, 11, 22, -1}, {8, 12, 13, -1}, {8, 12, 14, -1}, {8, 12, 15, -1}, {8, 12, 16, -1}, {8, 12, 17, -1}, {8, 12, 18, -1}, {8, 12, 19, -1}, {8, 12, 20, -1}, {8, 12, 21, -1}, {8, 12, 22, -1}, {8, 13, 14, -1}, {8, 13, 15, -1}, {8, 13, 16, -1}, {8, 13, 17, -1}, {8, 13, 18, -1}, {8, 13, 19, -1}, {8, 13, 20, -1}, {8, 13, 21, -1}, {8, 13, 22, -1}, {8, 14, 15, -1}, {8, 14, 16, -1}, {8, 14, 17, -1}, {8, 14, 18, -1}, {8, 14, 19, -1}, {8, 14, 20, -1}, {8, 14, 21, -1}, {8, 14, 22, -1}, {8, 15, 16, -1}, {8, 15, 17, -1}, {8, 15, 18, -1}, {8, 15, 19, -1}, {8, 15, 20, -1}, {8, 15, 21, -1}, {8, 15, 22, -1}, {8, 16, 17, -1}, {8, 16, 18, -1}, {8, 16, 19, -1}, {8, 16, 20, -1}, {8, 16, 21, -1}, {8, 16, 22, -1}, {8, 17, 18, -1}, {8, 17, 19, -1}, {8, 17, 20, -1}, {8, 17, 21, -1}, {8, 17, 22, -1}, {8, 18, 19, -1}, {8, 18, 20, -1}, {8, 18, 21, -1}, {8, 18, 22, -1}, {8, 19, 20, -1}, {8, 19, 21, -1}, {8, 19, 22, -1}, {8, 20, 21, -1}, {8, 20, 22, -1}, {8, 21, 22, -1}, {9, 10, 11, -1}, {9, 10, 12, -1}, {9, 10, 13, -1}, {9, 10, 14, -1}, {9, 10, 15, -1}, {9, 10, 16, -1}, {9, 10, 17, -1}, {9, 10, 18, -1}, {9, 10, 19, -1}, {9, 10, 20, -1}, {9, 10, 21, -1}, {9, 10, 22, -1}, {9, 11, 12, -1}, {9, 11, 13, -1}, {9, 11, 14, -1}, {9, 11, 15, -1}, {9, 11, 16, -1}, {9, 11, 17, -1}, {9, 11, 18, -1}, {9, 11, 19, -1}, {9, 11, 20, -1}, {9, 11, 21, -1}, {9, 11, 22, -1}, {9, 12, 13, -1}, {9, 12, 14, -1}, {9, 12, 15, -1}, {9, 12, 16, -1}, {9, 12, 17, -1}, {9, 12, 18, -1}, {9, 12, 19, -1}, {9, 12, 20, -1}, {9, 12, 21, -1}, {9, 12, 22, -1}, {9, 13, 14, -1}, {9, 13, 15, -1}, {9, 13, 16, -1}, {9, 13, 17, -1}, {9, 13, 18, -1}, {9, 13, 19, -1}, {9, 13, 20, -1}, {9, 13, 21, -1}, {9, 13, 22, -1}, {9, 14, 15, -1}, {9, 14, 16, -1}, {9, 14, 17, -1}, {9, 14, 18, -1}, {9, 14, 19, -1}, {9, 14, 20, -1}, {9, 14, 21, -1}, {9, 14, 22, -1}, {9, 15, 16, -1}, {9, 15, 17, -1}, {9, 15, 18, -1}, {9, 15, 19, -1}, {9, 15, 20, -1}, {9, 15, 21, -1}, {9, 15, 22, -1}, {9, 16, 17, -1}, {9, 16, 18, -1}, {9, 16, 19, -1}, {9, 16, 20, -1}, {9, 16, 21, -1}, {9, 16, 22, -1}, {9, 17, 18, -1}, {9, 17, 19, -1}, {9, 17, 20, -1}, {9, 17, 21, -1}, {9, 17, 22, -1}, {9, 18, 19, -1}, {9, 18, 20, -1}, {9, 18, 21, -1}, {9, 18, 22, -1}, {9, 19, 20, -1}, {9, 19, 21, -1}, {9, 19, 22, -1}, {9, 20, 21, -1}, {9, 20, 22, -1}, {9, 21, 22, -1}, {10, 11, 12, -1}, {10, 11, 13, -1}, {10, 11, 14, -1}, {10, 11, 15, -1}, {10, 11, 16, -1}, {10, 11, 17, -1}, {10, 11, 18, -1}, {10, 11, 19, -1}, {10, 11, 20, -1}, {10, 11, 21, -1}, {10, 11, 22, -1}, {10, 12, 13, -1}, {10, 12, 14, -1}, {10, 12, 15, -1}, {10, 12, 16, -1}, {10, 12, 17, -1}, {10, 12, 18, -1}, {10, 12, 19, -1}, {10, 12, 20, -1}, {10, 12, 21, -1}, {10, 12, 22, -1}, {10, 13, 14, -1}, {10, 13, 15, -1}, {10, 13, 16, -1}, {10, 13, 17, -1}, {10, 13, 18, -1}, {10, 13, 19, -1}, {10, 13, 20, -1}, {10, 13, 21, -1}, {10, 13, 22, -1}, {10, 14, 15, -1}, {10, 14, 16, -1}, {10, 14, 17, -1}, {10, 14, 18, -1}, {10, 14, 19, -1}, {10, 14, 20, -1}, {10, 14, 21, -1}, {10, 14, 22, -1}, {10, 15, 16, -1}, {10, 15, 17, -1}, {10, 15, 18, -1}, {10, 15, 19, -1}, {10, 15, 20, -1}, {10, 15, 21, -1}, {10, 15, 22, -1}, {10, 16, 17, -1}, {10, 16, 18, -1}, {10, 16, 19, -1}, {10, 16, 20, -1}, {10, 16, 21, -1}, {10, 16, 22, -1}, {10, 17, 18, -1}, {10, 17, 19, -1}, {10, 17, 20, -1}, {10, 17, 21, -1}, {10, 17, 22, -1}, {10, 18, 19, -1}, {10, 18, 20, -1}, {10, 18, 21, -1}, {10, 18, 22, -1}, {10, 19, 20, -1}, {10, 19, 21, -1}, {10, 19, 22, -1}, {10, 20, 21, -1}, {10, 20, 22, -1}, {10, 21, 22, -1}, {11, 12, 13, -1}, {11, 12, 14, -1}, {11, 12, 15, -1}, {11, 12, 16, -1}, {11, 12, 17, -1}, {11, 12, 18, -1}, {11, 12, 19, -1}, {11, 12, 20, -1}, {11, 12, 21, -1}, {11, 12, 22, -1}, {11, 13, 14, -1}, {11, 13, 15, -1}, {11, 13, 16, -1}, {11, 13, 17, -1}, {11, 13, 18, -1}, {11, 13, 19, -1}, {11, 13, 20, -1}, {11, 13, 21, -1}, {11, 13, 22, -1}, {11, 14, 15, -1}, {11, 14, 16, -1}, {11, 14, 17, -1}, {11, 14, 18, -1}, {11, 14, 19, -1}, {11, 14, 20, -1}, {11, 14, 21, -1}, {11, 14, 22, -1}, {11, 15, 16, -1}, {11, 15, 17, -1}, {11, 15, 18, -1}, {11, 15, 19, -1}, {11, 15, 20, -1}, {11, 15, 21, -1}, {11, 15, 22, -1}, {11, 16, 17, -1}, {11, 16, 18, -1}, {11, 16, 19, -1}, {11, 16, 20, -1}, {11, 16, 21, -1}, {11, 16, 22, -1}, {11, 17, 18, -1}, {11, 17, 19, -1}, {11, 17, 20, -1}, {11, 17, 21, -1}, {11, 17, 22, -1}, {11, 18, 19, -1}, {11, 18, 20, -1}, {11, 18, 21, -1}, {11, 18, 22, -1}, {11, 19, 20, -1}, {11, 19, 21, -1}, {11, 19, 22, -1}, {11, 20, 21, -1}, {11, 20, 22, -1}, {11, 21, 22, -1}, {12, 13, 14, -1}, {12, 13, 15, -1}, {12, 13, 16, -1}, {12, 13, 17, -1}, {12, 13, 18, -1}, {12, 13, 19, -1}, {12, 13, 20, -1}, {12, 13, 21, -1}, {12, 13, 22, -1}, {12, 14, 15, -1}, {12, 14, 16, -1}, {12, 14, 17, -1}, {12, 14, 18, -1}, {12, 14, 19, -1}, {12, 14, 20, -1}, {12, 14, 21, -1}, {12, 14, 22, -1}, {12, 15, 16, -1}, {12, 15, 17, -1}, {12, 15, 18, -1}, {12, 15, 19, -1}, {12, 15, 20, -1}, {12, 15, 21, -1}, {12, 15, 22, -1}, {12, 16, 17, -1}, {12, 16, 18, -1}, {12, 16, 19, -1}, {12, 16, 20, -1}, {12, 16, 21, -1}, {12, 16, 22, -1}, {12, 17, 18, -1}, {12, 17, 19, -1}, {12, 17, 20, -1}, {12, 17, 21, -1}, {12, 17, 22, -1}, {12, 18, 19, -1}, {12, 18, 20, -1}, {12, 18, 21, -1}, {12, 18, 22, -1}, {12, 19, 20, -1}, {12, 19, 21, -1}, {12, 19, 22, -1}, {12, 20, 21, -1}, {12, 20, 22, -1}, {12, 21, 22, -1}, {13, 14, 15, -1}, {13, 14, 16, -1}, {13, 14, 17, -1}, {13, 14, 18, -1}, {13, 14, 19, -1}, {13, 14, 20, -1}, {13, 14, 21, -1}, {13, 14, 22, -1}, {13, 15, 16, -1}, {13, 15, 17, -1}, {13, 15, 18, -1}, {13, 15, 19, -1}, {13, 15, 20, -1}, {13, 15, 21, -1}, {13, 15, 22, -1}, {13, 16, 17, -1}, {13, 16, 18, -1}, {13, 16, 19, -1}, {13, 16, 20, -1}, {13, 16, 21, -1}, {13, 16, 22, -1}, {13, 17, 18, -1}, {13, 17, 19, -1}, {13, 17, 20, -1}, {13, 17, 21, -1}, {13, 17, 22, -1}, {13, 18, 19, -1}, {13, 18, 20, -1}, {13, 18, 21, -1}, {13, 18, 22, -1}, {13, 19, 20, -1}, {13, 19, 21, -1}, {13, 19, 22, -1}, {13, 20, 21, -1}, {13, 20, 22, -1}, {13, 21, 22, -1}, {14, 15, 16, -1}, {14, 15, 17, -1}, {14, 15, 18, -1}, {14, 15, 19, -1}, {14, 15, 20, -1}, {14, 15, 21, -1}, {14, 15, 22, -1}, {14, 16, 17, -1}, {14, 16, 18, -1}, {14, 16, 19, -1}, {14, 16, 20, -1}, {14, 16, 21, -1}, {14, 16, 22, -1}, {14, 17, 18, -1}, {14, 17, 19, -1}, {14, 17, 20, -1}, {14, 17, 21, -1}, {14, 17, 22, -1}, {14, 18, 19, -1}, {14, 18, 20, -1}, {14, 18, 21, -1}, {14, 18, 22, -1}, {14, 19, 20, -1}, {14, 19, 21, -1}, {14, 19, 22, -1}, {14, 20, 21, -1}, {14, 20, 22, -1}, {14, 21, 22, -1}, {15, 16, 17, -1}, {15, 16, 18, -1}, {15, 16, 19, -1}, {15, 16, 20, -1}, {15, 16, 21, -1}, {15, 16, 22, -1}, {15, 17, 18, -1}, {15, 17, 19, -1}, {15, 17, 20, -1}, {15, 17, 21, -1}, {15, 17, 22, -1}, {15, 18, 19, -1}, {15, 18, 20, -1}, {15, 18, 21, -1}, {15, 18, 22, -1}, {15, 19, 20, -1}, {15, 19, 21, -1}, {15, 19, 22, -1}, {15, 20, 21, -1}, {15, 20, 22, -1}, {15, 21, 22, -1}, {16, 17, 18, -1}, {16, 17, 19, -1}, {16, 17, 20, -1}, {16, 17, 21, -1}, {16, 17, 22, -1}, {16, 18, 19, -1}, {16, 18, 20, -1}, {16, 18, 21, -1}, {16, 18, 22, -1}, {16, 19, 20, -1}, {16, 19, 21, -1}, {16, 19, 22, -1}, {16, 20, 21, -1}, {16, 20, 22, -1}, {16, 21, 22, -1}, {17, 18, 19, -1}, {17, 18, 20, -1}, {17, 18, 21, -1}, {17, 18, 22, -1}, {17, 19, 20, -1}, {17, 19, 21, -1}, {17, 19, 22, -1}, {17, 20, 21, -1}, {17, 20, 22, -1}, {17, 21, 22, -1}, {18, 19, 20, -1}, {18, 19, 21, -1}, {18, 19, 22, -1}, {18, 20, 21, -1}, {18, 20, 22, -1}, {18, 21, 22, -1}, {19, 20, 21, -1}, {19, 20, 22, -1}, {19, 21, 22, -1}, {20, 21, 22, -1}} ;
80 #define NUM_24_3_COMBS 300
81 int failure_combs_24_3[NUM_24_3_COMBS][4] = {{0, -1, -1, -1}, {1, -1, -1, -1}, {2, -1, -1, -1}, {3, -1, -1, -1}, {4, -1, -1, -1}, {5, -1, -1, -1}, {6, -1, -1, -1}, {7, -1, -1, -1}, {8, -1, -1, -1}, {9, -1, -1, -1}, {10, -1, -1, -1}, {11, -1, -1, -1}, {12, -1, -1, -1}, {13, -1, -1, -1}, {14, -1, -1, -1}, {15, -1, -1, -1}, {16, -1, -1, -1}, {17, -1, -1, -1}, {18, -1, -1, -1}, {19, -1, -1, -1}, {20, -1, -1, -1}, {21, -1, -1, -1}, {22, -1, -1, -1}, {23, -1, -1, -1}, {0, 1, -1, -1}, {0, 2, -1, -1}, {0, 3, -1, -1}, {0, 4, -1, -1}, {0, 5, -1, -1}, {0, 6, -1, -1}, {0, 7, -1, -1}, {0, 8, -1, -1}, {0, 9, -1, -1}, {0, 10, -1, -1}, {0, 11, -1, -1}, {0, 12, -1, -1}, {0, 13, -1, -1}, {0, 14, -1, -1}, {0, 15, -1, -1}, {0, 16, -1, -1}, {0, 17, -1, -1}, {0, 18, -1, -1}, {0, 19, -1, -1}, {0, 20, -1, -1}, {0, 21, -1, -1}, {0, 22, -1, -1}, {0, 23, -1, -1}, {1, 2, -1, -1}, {1, 3, -1, -1}, {1, 4, -1, -1}, {1, 5, -1, -1}, {1, 6, -1, -1}, {1, 7, -1, -1}, {1, 8, -1, -1}, {1, 9, -1, -1}, {1, 10, -1, -1}, {1, 11, -1, -1}, {1, 12, -1, -1}, {1, 13, -1, -1}, {1, 14, -1, -1}, {1, 15, -1, -1}, {1, 16, -1, -1}, {1, 17, -1, -1}, {1, 18, -1, -1}, {1, 19, -1, -1}, {1, 20, -1, -1}, {1, 21, -1, -1}, {1, 22, -1, -1}, {1, 23, -1, -1}, {2, 3, -1, -1}, {2, 4, -1, -1}, {2, 5, -1, -1}, {2, 6, -1, -1}, {2, 7, -1, -1}, {2, 8, -1, -1}, {2, 9, -1, -1}, {2, 10, -1, -1}, {2, 11, -1, -1}, {2, 12, -1, -1}, {2, 13, -1, -1}, {2, 14, -1, -1}, {2, 15, -1, -1}, {2, 16, -1, -1}, {2, 17, -1, -1}, {2, 18, -1, -1}, {2, 19, -1, -1}, {2, 20, -1, -1}, {2, 21, -1, -1}, {2, 22, -1, -1}, {2, 23, -1, -1}, {3, 4, -1, -1}, {3, 5, -1, -1}, {3, 6, -1, -1}, {3, 7, -1, -1}, {3, 8, -1, -1}, {3, 9, -1, -1}, {3, 10, -1, -1}, {3, 11, -1, -1}, {3, 12, -1, -1}, {3, 13, -1, -1}, {3, 14, -1, -1}, {3, 15, -1, -1}, {3, 16, -1, -1}, {3, 17, -1, -1}, {3, 18, -1, -1}, {3, 19, -1, -1}, {3, 20, -1, -1}, {3, 21, -1, -1}, {3, 22, -1, -1}, {3, 23, -1, -1}, {4, 5, -1, -1}, {4, 6, -1, -1}, {4, 7, -1, -1}, {4, 8, -1, -1}, {4, 9, -1, -1}, {4, 10, -1, -1}, {4, 11, -1, -1}, {4, 12, -1, -1}, {4, 13, -1, -1}, {4, 14, -1, -1}, {4, 15, -1, -1}, {4, 16, -1, -1}, {4, 17, -1, -1}, {4, 18, -1, -1}, {4, 19, -1, -1}, {4, 20, -1, -1}, {4, 21, -1, -1}, {4, 22, -1, -1}, {4, 23, -1, -1}, {5, 6, -1, -1}, {5, 7, -1, -1}, {5, 8, -1, -1}, {5, 9, -1, -1}, {5, 10, -1, -1}, {5, 11, -1, -1}, {5, 12, -1, -1}, {5, 13, -1, -1}, {5, 14, -1, -1}, {5, 15, -1, -1}, {5, 16, -1, -1}, {5, 17, -1, -1}, {5, 18, -1, -1}, {5, 19, -1, -1}, {5, 20, -1, -1}, {5, 21, -1, -1}, {5, 22, -1, -1}, {5, 23, -1, -1}, {6, 7, -1, -1}, {6, 8, -1, -1}, {6, 9, -1, -1}, {6, 10, -1, -1}, {6, 11, -1, -1}, {6, 12, -1, -1}, {6, 13, -1, -1}, {6, 14, -1, -1}, {6, 15, -1, -1}, {6, 16, -1, -1}, {6, 17, -1, -1}, {6, 18, -1, -1}, {6, 19, -1, -1}, {6, 20, -1, -1}, {6, 21, -1, -1}, {6, 22, -1, -1}, {6, 23, -1, -1}, {7, 8, -1, -1}, {7, 9, -1, -1}, {7, 10, -1, -1}, {7, 11, -1, -1}, {7, 12, -1, -1}, {7, 13, -1, -1}, {7, 14, -1, -1}, {7, 15, -1, -1}, {7, 16, -1, -1}, {7, 17, -1, -1}, {7, 18, -1, -1}, {7, 19, -1, -1}, {7, 20, -1, -1}, {7, 21, -1, -1}, {7, 22, -1, -1}, {7, 23, -1, -1}, {8, 9, -1, -1}, {8, 10, -1, -1}, {8, 11, -1, -1}, {8, 12, -1, -1}, {8, 13, -1, -1}, {8, 14, -1, -1}, {8, 15, -1, -1}, {8, 16, -1, -1}, {8, 17, -1, -1}, {8, 18, -1, -1}, {8, 19, -1, -1}, {8, 20, -1, -1}, {8, 21, -1, -1}, {8, 22, -1, -1}, {8, 23, -1, -1}, {9, 10, -1, -1}, {9, 11, -1, -1}, {9, 12, -1, -1}, {9, 13, -1, -1}, {9, 14, -1, -1}, {9, 15, -1, -1}, {9, 16, -1, -1}, {9, 17, -1, -1}, {9, 18, -1, -1}, {9, 19, -1, -1}, {9, 20, -1, -1}, {9, 21, -1, -1}, {9, 22, -1, -1}, {9, 23, -1, -1}, {10, 11, -1, -1}, {10, 12, -1, -1}, {10, 13, -1, -1}, {10, 14, -1, -1}, {10, 15, -1, -1}, {10, 16, -1, -1}, {10, 17, -1, -1}, {10, 18, -1, -1}, {10, 19, -1, -1}, {10, 20, -1, -1}, {10, 21, -1, -1}, {10, 22, -1, -1}, {10, 23, -1, -1}, {11, 12, -1, -1}, {11, 13, -1, -1}, {11, 14, -1, -1}, {11, 15, -1, -1}, {11, 16, -1, -1}, {11, 17, -1, -1}, {11, 18, -1, -1}, {11, 19, -1, -1}, {11, 20, -1, -1}, {11, 21, -1, -1}, {11, 22, -1, -1}, {11, 23, -1, -1}, {12, 13, -1, -1}, {12, 14, -1, -1}, {12, 15, -1, -1}, {12, 16, -1, -1}, {12, 17, -1, -1}, {12, 18, -1, -1}, {12, 19, -1, -1}, {12, 20, -1, -1}, {12, 21, -1, -1}, {12, 22, -1, -1}, {12, 23, -1, -1}, {13, 14, -1, -1}, {13, 15, -1, -1}, {13, 16, -1, -1}, {13, 17, -1, -1}, {13, 18, -1, -1}, {13, 19, -1, -1}, {13, 20, -1, -1}, {13, 21, -1, -1}, {13, 22, -1, -1}, {13, 23, -1, -1}, {14, 15, -1, -1}, {14, 16, -1, -1}, {14, 17, -1, -1}, {14, 18, -1, -1}, {14, 19, -1, -1}, {14, 20, -1, -1}, {14, 21, -1, -1}, {14, 22, -1, -1}, {14, 23, -1, -1}, {15, 16, -1, -1}, {15, 17, -1, -1}, {15, 18, -1, -1}, {15, 19, -1, -1}, {15, 20, -1, -1}, {15, 21, -1, -1}, {15, 22, -1, -1}, {15, 23, -1, -1}, {16, 17, -1, -1}, {16, 18, -1, -1}, {16, 19, -1, -1}, {16, 20, -1, -1}, {16, 21, -1, -1}, {16, 22, -1, -1}, {16, 23, -1, -1}, {17, 18, -1, -1}, {17, 19, -1, -1}, {17, 20, -1, -1}, {17, 21, -1, -1}, {17, 22, -1, -1}, {17, 23, -1, -1}, {18, 19, -1, -1}, {18, 20, -1, -1}, {18, 21, -1, -1}, {18, 22, -1, -1}, {18, 23, -1, -1}, {19, 20, -1, -1}, {19, 21, -1, -1}, {19, 22, -1, -1}, {19, 23, -1, -1}, {20, 21, -1, -1}, {20, 22, -1, -1}, {20, 23, -1, -1}, {21, 22, -1, -1}, {21, 23, -1, -1}, {22, 23, -1, -1}} ;
82 #define NUM_24_4_COMBS 2324
83 int failure_combs_24_4[NUM_24_4_COMBS][4] = {{0, -1, -1, -1}, {1, -1, -1, -1}, {2, -1, -1, -1}, {3, -1, -1, -1}, {4, -1, -1, -1}, {5, -1, -1, -1}, {6, -1, -1, -1}, {7, -1, -1, -1}, {8, -1, -1, -1}, {9, -1, -1, -1}, {10, -1, -1, -1}, {11, -1, -1, -1}, {12, -1, -1, -1}, {13, -1, -1, -1}, {14, -1, -1, -1}, {15, -1, -1, -1}, {16, -1, -1, -1}, {17, -1, -1, -1}, {18, -1, -1, -1}, {19, -1, -1, -1}, {20, -1, -1, -1}, {21, -1, -1, -1}, {22, -1, -1, -1}, {23, -1, -1, -1}, {0, 1, -1, -1}, {0, 2, -1, -1}, {0, 3, -1, -1}, {0, 4, -1, -1}, {0, 5, -1, -1}, {0, 6, -1, -1}, {0, 7, -1, -1}, {0, 8, -1, -1}, {0, 9, -1, -1}, {0, 10, -1, -1}, {0, 11, -1, -1}, {0, 12, -1, -1}, {0, 13, -1, -1}, {0, 14, -1, -1}, {0, 15, -1, -1}, {0, 16, -1, -1}, {0, 17, -1, -1}, {0, 18, -1, -1}, {0, 19, -1, -1}, {0, 20, -1, -1}, {0, 21, -1, -1}, {0, 22, -1, -1}, {0, 23, -1, -1}, {1, 2, -1, -1}, {1, 3, -1, -1}, {1, 4, -1, -1}, {1, 5, -1, -1}, {1, 6, -1, -1}, {1, 7, -1, -1}, {1, 8, -1, -1}, {1, 9, -1, -1}, {1, 10, -1, -1}, {1, 11, -1, -1}, {1, 12, -1, -1}, {1, 13, -1, -1}, {1, 14, -1, -1}, {1, 15, -1, -1}, {1, 16, -1, -1}, {1, 17, -1, -1}, {1, 18, -1, -1}, {1, 19, -1, -1}, {1, 20, -1, -1}, {1, 21, -1, -1}, {1, 22, -1, -1}, {1, 23, -1, -1}, {2, 3, -1, -1}, {2, 4, -1, -1}, {2, 5, -1, -1}, {2, 6, -1, -1}, {2, 7, -1, -1}, {2, 8, -1, -1}, {2, 9, -1, -1}, {2, 10, -1, -1}, {2, 11, -1, -1}, {2, 12, -1, -1}, {2, 13, -1, -1}, {2, 14, -1, -1}, {2, 15, -1, -1}, {2, 16, -1, -1}, {2, 17, -1, -1}, {2, 18, -1, -1}, {2, 19, -1, -1}, {2, 20, -1, -1}, {2, 21, -1, -1}, {2, 22, -1, -1}, {2, 23, -1, -1}, {3, 4, -1, -1}, {3, 5, -1, -1}, {3, 6, -1, -1}, {3, 7, -1, -1}, {3, 8, -1, -1}, {3, 9, -1, -1}, {3, 10, -1, -1}, {3, 11, -1, -1}, {3, 12, -1, -1}, {3, 13, -1, -1}, {3, 14, -1, -1}, {3, 15, -1, -1}, {3, 16, -1, -1}, {3, 17, -1, -1}, {3, 18, -1, -1}, {3, 19, -1, -1}, {3, 20, -1, -1}, {3, 21, -1, -1}, {3, 22, -1, -1}, {3, 23, -1, -1}, {4, 5, -1, -1}, {4, 6, -1, -1}, {4, 7, -1, -1}, {4, 8, -1, -1}, {4, 9, -1, -1}, {4, 10, -1, -1}, {4, 11, -1, -1}, {4, 12, -1, -1}, {4, 13, -1, -1}, {4, 14, -1, -1}, {4, 15, -1, -1}, {4, 16, -1, -1}, {4, 17, -1, -1}, {4, 18, -1, -1}, {4, 19, -1, -1}, {4, 20, -1, -1}, {4, 21, -1, -1}, {4, 22, -1, -1}, {4, 23, -1, -1}, {5, 6, -1, -1}, {5, 7, -1, -1}, {5, 8, -1, -1}, {5, 9, -1, -1}, {5, 10, -1, -1}, {5, 11, -1, -1}, {5, 12, -1, -1}, {5, 13, -1, -1}, {5, 14, -1, -1}, {5, 15, -1, -1}, {5, 16, -1, -1}, {5, 17, -1, -1}, {5, 18, -1, -1}, {5, 19, -1, -1}, {5, 20, -1, -1}, {5, 21, -1, -1}, {5, 22, -1, -1}, {5, 23, -1, -1}, {6, 7, -1, -1}, {6, 8, -1, -1}, {6, 9, -1, -1}, {6, 10, -1, -1}, {6, 11, -1, -1}, {6, 12, -1, -1}, {6, 13, -1, -1}, {6, 14, -1, -1}, {6, 15, -1, -1}, {6, 16, -1, -1}, {6, 17, -1, -1}, {6, 18, -1, -1}, {6, 19, -1, -1}, {6, 20, -1, -1}, {6, 21, -1, -1}, {6, 22, -1, -1}, {6, 23, -1, -1}, {7, 8, -1, -1}, {7, 9, -1, -1}, {7, 10, -1, -1}, {7, 11, -1, -1}, {7, 12, -1, -1}, {7, 13, -1, -1}, {7, 14, -1, -1}, {7, 15, -1, -1}, {7, 16, -1, -1}, {7, 17, -1, -1}, {7, 18, -1, -1}, {7, 19, -1, -1}, {7, 20, -1, -1}, {7, 21, -1, -1}, {7, 22, -1, -1}, {7, 23, -1, -1}, {8, 9, -1, -1}, {8, 10, -1, -1}, {8, 11, -1, -1}, {8, 12, -1, -1}, {8, 13, -1, -1}, {8, 14, -1, -1}, {8, 15, -1, -1}, {8, 16, -1, -1}, {8, 17, -1, -1}, {8, 18, -1, -1}, {8, 19, -1, -1}, {8, 20, -1, -1}, {8, 21, -1, -1}, {8, 22, -1, -1}, {8, 23, -1, -1}, {9, 10, -1, -1}, {9, 11, -1, -1}, {9, 12, -1, -1}, {9, 13, -1, -1}, {9, 14, -1, -1}, {9, 15, -1, -1}, {9, 16, -1, -1}, {9, 17, -1, -1}, {9, 18, -1, -1}, {9, 19, -1, -1}, {9, 20, -1, -1}, {9, 21, -1, -1}, {9, 22, -1, -1}, {9, 23, -1, -1}, {10, 11, -1, -1}, {10, 12, -1, -1}, {10, 13, -1, -1}, {10, 14, -1, -1}, {10, 15, -1, -1}, {10, 16, -1, -1}, {10, 17, -1, -1}, {10, 18, -1, -1}, {10, 19, -1, -1}, {10, 20, -1, -1}, {10, 21, -1, -1}, {10, 22, -1, -1}, {10, 23, -1, -1}, {11, 12, -1, -1}, {11, 13, -1, -1}, {11, 14, -1, -1}, {11, 15, -1, -1}, {11, 16, -1, -1}, {11, 17, -1, -1}, {11, 18, -1, -1}, {11, 19, -1, -1}, {11, 20, -1, -1}, {11, 21, -1, -1}, {11, 22, -1, -1}, {11, 23, -1, -1}, {12, 13, -1, -1}, {12, 14, -1, -1}, {12, 15, -1, -1}, {12, 16, -1, -1}, {12, 17, -1, -1}, {12, 18, -1, -1}, {12, 19, -1, -1}, {12, 20, -1, -1}, {12, 21, -1, -1}, {12, 22, -1, -1}, {12, 23, -1, -1}, {13, 14, -1, -1}, {13, 15, -1, -1}, {13, 16, -1, -1}, {13, 17, -1, -1}, {13, 18, -1, -1}, {13, 19, -1, -1}, {13, 20, -1, -1}, {13, 21, -1, -1}, {13, 22, -1, -1}, {13, 23, -1, -1}, {14, 15, -1, -1}, {14, 16, -1, -1}, {14, 17, -1, -1}, {14, 18, -1, -1}, {14, 19, -1, -1}, {14, 20, -1, -1}, {14, 21, -1, -1}, {14, 22, -1, -1}, {14, 23, -1, -1}, {15, 16, -1, -1}, {15, 17, -1, -1}, {15, 18, -1, -1}, {15, 19, -1, -1}, {15, 20, -1, -1}, {15, 21, -1, -1}, {15, 22, -1, -1}, {15, 23, -1, -1}, {16, 17, -1, -1}, {16, 18, -1, -1}, {16, 19, -1, -1}, {16, 20, -1, -1}, {16, 21, -1, -1}, {16, 22, -1, -1}, {16, 23, -1, -1}, {17, 18, -1, -1}, {17, 19, -1, -1}, {17, 20, -1, -1}, {17, 21, -1, -1}, {17, 22, -1, -1}, {17, 23, -1, -1}, {18, 19, -1, -1}, {18, 20, -1, -1}, {18, 21, -1, -1}, {18, 22, -1, -1}, {18, 23, -1, -1}, {19, 20, -1, -1}, {19, 21, -1, -1}, {19, 22, -1, -1}, {19, 23, -1, -1}, {20, 21, -1, -1}, {20, 22, -1, -1}, {20, 23, -1, -1}, {21, 22, -1, -1}, {21, 23, -1, -1}, {22, 23, -1, -1}, {0, 1, 2, -1}, {0, 1, 3, -1}, {0, 1, 4, -1}, {0, 1, 5, -1}, {0, 1, 6, -1}, {0, 1, 7, -1}, {0, 1, 8, -1}, {0, 1, 9, -1}, {0, 1, 10, -1}, {0, 1, 11, -1}, {0, 1, 12, -1}, {0, 1, 13, -1}, {0, 1, 14, -1}, {0, 1, 15, -1}, {0, 1, 16, -1}, {0, 1, 17, -1}, {0, 1, 18, -1}, {0, 1, 19, -1}, {0, 1, 20, -1}, {0, 1, 21, -1}, {0, 1, 22, -1}, {0, 1, 23, -1}, {0, 2, 3, -1}, {0, 2, 4, -1}, {0, 2, 5, -1}, {0, 2, 6, -1}, {0, 2, 7, -1}, {0, 2, 8, -1}, {0, 2, 9, -1}, {0, 2, 10, -1}, {0, 2, 11, -1}, {0, 2, 12, -1}, {0, 2, 13, -1}, {0, 2, 14, -1}, {0, 2, 15, -1}, {0, 2, 16, -1}, {0, 2, 17, -1}, {0, 2, 18, -1}, {0, 2, 19, -1}, {0, 2, 20, -1}, {0, 2, 21, -1}, {0, 2, 22, -1}, {0, 2, 23, -1}, {0, 3, 4, -1}, {0, 3, 5, -1}, {0, 3, 6, -1}, {0, 3, 7, -1}, {0, 3, 8, -1}, {0, 3, 9, -1}, {0, 3, 10, -1}, {0, 3, 11, -1}, {0, 3, 12, -1}, {0, 3, 13, -1}, {0, 3, 14, -1}, {0, 3, 15, -1}, {0, 3, 16, -1}, {0, 3, 17, -1}, {0, 3, 18, -1}, {0, 3, 19, -1}, {0, 3, 20, -1}, {0, 3, 21, -1}, {0, 3, 22, -1}, {0, 3, 23, -1}, {0, 4, 5, -1}, {0, 4, 6, -1}, {0, 4, 7, -1}, {0, 4, 8, -1}, {0, 4, 9, -1}, {0, 4, 10, -1}, {0, 4, 11, -1}, {0, 4, 12, -1}, {0, 4, 13, -1}, {0, 4, 14, -1}, {0, 4, 15, -1}, {0, 4, 16, -1}, {0, 4, 17, -1}, {0, 4, 18, -1}, {0, 4, 19, -1}, {0, 4, 20, -1}, {0, 4, 21, -1}, {0, 4, 22, -1}, {0, 4, 23, -1}, {0, 5, 6, -1}, {0, 5, 7, -1}, {0, 5, 8, -1}, {0, 5, 9, -1}, {0, 5, 10, -1}, {0, 5, 11, -1}, {0, 5, 12, -1}, {0, 5, 13, -1}, {0, 5, 14, -1}, {0, 5, 15, -1}, {0, 5, 16, -1}, {0, 5, 17, -1}, {0, 5, 18, -1}, {0, 5, 19, -1}, {0, 5, 20, -1}, {0, 5, 21, -1}, {0, 5, 22, -1}, {0, 5, 23, -1}, {0, 6, 7, -1}, {0, 6, 8, -1}, {0, 6, 9, -1}, {0, 6, 10, -1}, {0, 6, 11, -1}, {0, 6, 12, -1}, {0, 6, 13, -1}, {0, 6, 14, -1}, {0, 6, 15, -1}, {0, 6, 16, -1}, {0, 6, 17, -1}, {0, 6, 18, -1}, {0, 6, 19, -1}, {0, 6, 20, -1}, {0, 6, 21, -1}, {0, 6, 22, -1}, {0, 6, 23, -1}, {0, 7, 8, -1}, {0, 7, 9, -1}, {0, 7, 10, -1}, {0, 7, 11, -1}, {0, 7, 12, -1}, {0, 7, 13, -1}, {0, 7, 14, -1}, {0, 7, 15, -1}, {0, 7, 16, -1}, {0, 7, 17, -1}, {0, 7, 18, -1}, {0, 7, 19, -1}, {0, 7, 20, -1}, {0, 7, 21, -1}, {0, 7, 22, -1}, {0, 7, 23, -1}, {0, 8, 9, -1}, {0, 8, 10, -1}, {0, 8, 11, -1}, {0, 8, 12, -1}, {0, 8, 13, -1}, {0, 8, 14, -1}, {0, 8, 15, -1}, {0, 8, 16, -1}, {0, 8, 17, -1}, {0, 8, 18, -1}, {0, 8, 19, -1}, {0, 8, 20, -1}, {0, 8, 21, -1}, {0, 8, 22, -1}, {0, 8, 23, -1}, {0, 9, 10, -1}, {0, 9, 11, -1}, {0, 9, 12, -1}, {0, 9, 13, -1}, {0, 9, 14, -1}, {0, 9, 15, -1}, {0, 9, 16, -1}, {0, 9, 17, -1}, {0, 9, 18, -1}, {0, 9, 19, -1}, {0, 9, 20, -1}, {0, 9, 21, -1}, {0, 9, 22, -1}, {0, 9, 23, -1}, {0, 10, 11, -1}, {0, 10, 12, -1}, {0, 10, 13, -1}, {0, 10, 14, -1}, {0, 10, 15, -1}, {0, 10, 16, -1}, {0, 10, 17, -1}, {0, 10, 18, -1}, {0, 10, 19, -1}, {0, 10, 20, -1}, {0, 10, 21, -1}, {0, 10, 22, -1}, {0, 10, 23, -1}, {0, 11, 12, -1}, {0, 11, 13, -1}, {0, 11, 14, -1}, {0, 11, 15, -1}, {0, 11, 16, -1}, {0, 11, 17, -1}, {0, 11, 18, -1}, {0, 11, 19, -1}, {0, 11, 20, -1}, {0, 11, 21, -1}, {0, 11, 22, -1}, {0, 11, 23, -1}, {0, 12, 13, -1}, {0, 12, 14, -1}, {0, 12, 15, -1}, {0, 12, 16, -1}, {0, 12, 17, -1}, {0, 12, 18, -1}, {0, 12, 19, -1}, {0, 12, 20, -1}, {0, 12, 21, -1}, {0, 12, 22, -1}, {0, 12, 23, -1}, {0, 13, 14, -1}, {0, 13, 15, -1}, {0, 13, 16, -1}, {0, 13, 17, -1}, {0, 13, 18, -1}, {0, 13, 19, -1}, {0, 13, 20, -1}, {0, 13, 21, -1}, {0, 13, 22, -1}, {0, 13, 23, -1}, {0, 14, 15, -1}, {0, 14, 16, -1}, {0, 14, 17, -1}, {0, 14, 18, -1}, {0, 14, 19, -1}, {0, 14, 20, -1}, {0, 14, 21, -1}, {0, 14, 22, -1}, {0, 14, 23, -1}, {0, 15, 16, -1}, {0, 15, 17, -1}, {0, 15, 18, -1}, {0, 15, 19, -1}, {0, 15, 20, -1}, {0, 15, 21, -1}, {0, 15, 22, -1}, {0, 15, 23, -1}, {0, 16, 17, -1}, {0, 16, 18, -1}, {0, 16, 19, -1}, {0, 16, 20, -1}, {0, 16, 21, -1}, {0, 16, 22, -1}, {0, 16, 23, -1}, {0, 17, 18, -1}, {0, 17, 19, -1}, {0, 17, 20, -1}, {0, 17, 21, -1}, {0, 17, 22, -1}, {0, 17, 23, -1}, {0, 18, 19, -1}, {0, 18, 20, -1}, {0, 18, 21, -1}, {0, 18, 22, -1}, {0, 18, 23, -1}, {0, 19, 20, -1}, {0, 19, 21, -1}, {0, 19, 22, -1}, {0, 19, 23, -1}, {0, 20, 21, -1}, {0, 20, 22, -1}, {0, 20, 23, -1}, {0, 21, 22, -1}, {0, 21, 23, -1}, {0, 22, 23, -1}, {1, 2, 3, -1}, {1, 2, 4, -1}, {1, 2, 5, -1}, {1, 2, 6, -1}, {1, 2, 7, -1}, {1, 2, 8, -1}, {1, 2, 9, -1}, {1, 2, 10, -1}, {1, 2, 11, -1}, {1, 2, 12, -1}, {1, 2, 13, -1}, {1, 2, 14, -1}, {1, 2, 15, -1}, {1, 2, 16, -1}, {1, 2, 17, -1}, {1, 2, 18, -1}, {1, 2, 19, -1}, {1, 2, 20, -1}, {1, 2, 21, -1}, {1, 2, 22, -1}, {1, 2, 23, -1}, {1, 3, 4, -1}, {1, 3, 5, -1}, {1, 3, 6, -1}, {1, 3, 7, -1}, {1, 3, 8, -1}, {1, 3, 9, -1}, {1, 3, 10, -1}, {1, 3, 11, -1}, {1, 3, 12, -1}, {1, 3, 13, -1}, {1, 3, 14, -1}, {1, 3, 15, -1}, {1, 3, 16, -1}, {1, 3, 17, -1}, {1, 3, 18, -1}, {1, 3, 19, -1}, {1, 3, 20, -1}, {1, 3, 21, -1}, {1, 3, 22, -1}, {1, 3, 23, -1}, {1, 4, 5, -1}, {1, 4, 6, -1}, {1, 4, 7, -1}, {1, 4, 8, -1}, {1, 4, 9, -1}, {1, 4, 10, -1}, {1, 4, 11, -1}, {1, 4, 12, -1}, {1, 4, 13, -1}, {1, 4, 14, -1}, {1, 4, 15, -1}, {1, 4, 16, -1}, {1, 4, 17, -1}, {1, 4, 18, -1}, {1, 4, 19, -1}, {1, 4, 20, -1}, {1, 4, 21, -1}, {1, 4, 22, -1}, {1, 4, 23, -1}, {1, 5, 6, -1}, {1, 5, 7, -1}, {1, 5, 8, -1}, {1, 5, 9, -1}, {1, 5, 10, -1}, {1, 5, 11, -1}, {1, 5, 12, -1}, {1, 5, 13, -1}, {1, 5, 14, -1}, {1, 5, 15, -1}, {1, 5, 16, -1}, {1, 5, 17, -1}, {1, 5, 18, -1}, {1, 5, 19, -1}, {1, 5, 20, -1}, {1, 5, 21, -1}, {1, 5, 22, -1}, {1, 5, 23, -1}, {1, 6, 7, -1}, {1, 6, 8, -1}, {1, 6, 9, -1}, {1, 6, 10, -1}, {1, 6, 11, -1}, {1, 6, 12, -1}, {1, 6, 13, -1}, {1, 6, 14, -1}, {1, 6, 15, -1}, {1, 6, 16, -1}, {1, 6, 17, -1}, {1, 6, 18, -1}, {1, 6, 19, -1}, {1, 6, 20, -1}, {1, 6, 21, -1}, {1, 6, 22, -1}, {1, 6, 23, -1}, {1, 7, 8, -1}, {1, 7, 9, -1}, {1, 7, 10, -1}, {1, 7, 11, -1}, {1, 7, 12, -1}, {1, 7, 13, -1}, {1, 7, 14, -1}, {1, 7, 15, -1}, {1, 7, 16, -1}, {1, 7, 17, -1}, {1, 7, 18, -1}, {1, 7, 19, -1}, {1, 7, 20, -1}, {1, 7, 21, -1}, {1, 7, 22, -1}, {1, 7, 23, -1}, {1, 8, 9, -1}, {1, 8, 10, -1}, {1, 8, 11, -1}, {1, 8, 12, -1}, {1, 8, 13, -1}, {1, 8, 14, -1}, {1, 8, 15, -1}, {1, 8, 16, -1}, {1, 8, 17, -1}, {1, 8, 18, -1}, {1, 8, 19, -1}, {1, 8, 20, -1}, {1, 8, 21, -1}, {1, 8, 22, -1}, {1, 8, 23, -1}, {1, 9, 10, -1}, {1, 9, 11, -1}, {1, 9, 12, -1}, {1, 9, 13, -1}, {1, 9, 14, -1}, {1, 9, 15, -1}, {1, 9, 16, -1}, {1, 9, 17, -1}, {1, 9, 18, -1}, {1, 9, 19, -1}, {1, 9, 20, -1}, {1, 9, 21, -1}, {1, 9, 22, -1}, {1, 9, 23, -1}, {1, 10, 11, -1}, {1, 10, 12, -1}, {1, 10, 13, -1}, {1, 10, 14, -1}, {1, 10, 15, -1}, {1, 10, 16, -1}, {1, 10, 17, -1}, {1, 10, 18, -1}, {1, 10, 19, -1}, {1, 10, 20, -1}, {1, 10, 21, -1}, {1, 10, 22, -1}, {1, 10, 23, -1}, {1, 11, 12, -1}, {1, 11, 13, -1}, {1, 11, 14, -1}, {1, 11, 15, -1}, {1, 11, 16, -1}, {1, 11, 17, -1}, {1, 11, 18, -1}, {1, 11, 19, -1}, {1, 11, 20, -1}, {1, 11, 21, -1}, {1, 11, 22, -1}, {1, 11, 23, -1}, {1, 12, 13, -1}, {1, 12, 14, -1}, {1, 12, 15, -1}, {1, 12, 16, -1}, {1, 12, 17, -1}, {1, 12, 18, -1}, {1, 12, 19, -1}, {1, 12, 20, -1}, {1, 12, 21, -1}, {1, 12, 22, -1}, {1, 12, 23, -1}, {1, 13, 14, -1}, {1, 13, 15, -1}, {1, 13, 16, -1}, {1, 13, 17, -1}, {1, 13, 18, -1}, {1, 13, 19, -1}, {1, 13, 20, -1}, {1, 13, 21, -1}, {1, 13, 22, -1}, {1, 13, 23, -1}, {1, 14, 15, -1}, {1, 14, 16, -1}, {1, 14, 17, -1}, {1, 14, 18, -1}, {1, 14, 19, -1}, {1, 14, 20, -1}, {1, 14, 21, -1}, {1, 14, 22, -1}, {1, 14, 23, -1}, {1, 15, 16, -1}, {1, 15, 17, -1}, {1, 15, 18, -1}, {1, 15, 19, -1}, {1, 15, 20, -1}, {1, 15, 21, -1}, {1, 15, 22, -1}, {1, 15, 23, -1}, {1, 16, 17, -1}, {1, 16, 18, -1}, {1, 16, 19, -1}, {1, 16, 20, -1}, {1, 16, 21, -1}, {1, 16, 22, -1}, {1, 16, 23, -1}, {1, 17, 18, -1}, {1, 17, 19, -1}, {1, 17, 20, -1}, {1, 17, 21, -1}, {1, 17, 22, -1}, {1, 17, 23, -1}, {1, 18, 19, -1}, {1, 18, 20, -1}, {1, 18, 21, -1}, {1, 18, 22, -1}, {1, 18, 23, -1}, {1, 19, 20, -1}, {1, 19, 21, -1}, {1, 19, 22, -1}, {1, 19, 23, -1}, {1, 20, 21, -1}, {1, 20, 22, -1}, {1, 20, 23, -1}, {1, 21, 22, -1}, {1, 21, 23, -1}, {1, 22, 23, -1}, {2, 3, 4, -1}, {2, 3, 5, -1}, {2, 3, 6, -1}, {2, 3, 7, -1}, {2, 3, 8, -1}, {2, 3, 9, -1}, {2, 3, 10, -1}, {2, 3, 11, -1}, {2, 3, 12, -1}, {2, 3, 13, -1}, {2, 3, 14, -1}, {2, 3, 15, -1}, {2, 3, 16, -1}, {2, 3, 17, -1}, {2, 3, 18, -1}, {2, 3, 19, -1}, {2, 3, 20, -1}, {2, 3, 21, -1}, {2, 3, 22, -1}, {2, 3, 23, -1}, {2, 4, 5, -1}, {2, 4, 6, -1}, {2, 4, 7, -1}, {2, 4, 8, -1}, {2, 4, 9, -1}, {2, 4, 10, -1}, {2, 4, 11, -1}, {2, 4, 12, -1}, {2, 4, 13, -1}, {2, 4, 14, -1}, {2, 4, 15, -1}, {2, 4, 16, -1}, {2, 4, 17, -1}, {2, 4, 18, -1}, {2, 4, 19, -1}, {2, 4, 20, -1}, {2, 4, 21, -1}, {2, 4, 22, -1}, {2, 4, 23, -1}, {2, 5, 6, -1}, {2, 5, 7, -1}, {2, 5, 8, -1}, {2, 5, 9, -1}, {2, 5, 10, -1}, {2, 5, 11, -1}, {2, 5, 12, -1}, {2, 5, 13, -1}, {2, 5, 14, -1}, {2, 5, 15, -1}, {2, 5, 16, -1}, {2, 5, 17, -1}, {2, 5, 18, -1}, {2, 5, 19, -1}, {2, 5, 20, -1}, {2, 5, 21, -1}, {2, 5, 22, -1}, {2, 5, 23, -1}, {2, 6, 7, -1}, {2, 6, 8, -1}, {2, 6, 9, -1}, {2, 6, 10, -1}, {2, 6, 11, -1}, {2, 6, 12, -1}, {2, 6, 13, -1}, {2, 6, 14, -1}, {2, 6, 15, -1}, {2, 6, 16, -1}, {2, 6, 17, -1}, {2, 6, 18, -1}, {2, 6, 19, -1}, {2, 6, 20, -1}, {2, 6, 21, -1}, {2, 6, 22, -1}, {2, 6, 23, -1}, {2, 7, 8, -1}, {2, 7, 9, -1}, {2, 7, 10, -1}, {2, 7, 11, -1}, {2, 7, 12, -1}, {2, 7, 13, -1}, {2, 7, 14, -1}, {2, 7, 15, -1}, {2, 7, 16, -1}, {2, 7, 17, -1}, {2, 7, 18, -1}, {2, 7, 19, -1}, {2, 7, 20, -1}, {2, 7, 21, -1}, {2, 7, 22, -1}, {2, 7, 23, -1}, {2, 8, 9, -1}, {2, 8, 10, -1}, {2, 8, 11, -1}, {2, 8, 12, -1}, {2, 8, 13, -1}, {2, 8, 14, -1}, {2, 8, 15, -1}, {2, 8, 16, -1}, {2, 8, 17, -1}, {2, 8, 18, -1}, {2, 8, 19, -1}, {2, 8, 20, -1}, {2, 8, 21, -1}, {2, 8, 22, -1}, {2, 8, 23, -1}, {2, 9, 10, -1}, {2, 9, 11, -1}, {2, 9, 12, -1}, {2, 9, 13, -1}, {2, 9, 14, -1}, {2, 9, 15, -1}, {2, 9, 16, -1}, {2, 9, 17, -1}, {2, 9, 18, -1}, {2, 9, 19, -1}, {2, 9, 20, -1}, {2, 9, 21, -1}, {2, 9, 22, -1}, {2, 9, 23, -1}, {2, 10, 11, -1}, {2, 10, 12, -1}, {2, 10, 13, -1}, {2, 10, 14, -1}, {2, 10, 15, -1}, {2, 10, 16, -1}, {2, 10, 17, -1}, {2, 10, 18, -1}, {2, 10, 19, -1}, {2, 10, 20, -1}, {2, 10, 21, -1}, {2, 10, 22, -1}, {2, 10, 23, -1}, {2, 11, 12, -1}, {2, 11, 13, -1}, {2, 11, 14, -1}, {2, 11, 15, -1}, {2, 11, 16, -1}, {2, 11, 17, -1}, {2, 11, 18, -1}, {2, 11, 19, -1}, {2, 11, 20, -1}, {2, 11, 21, -1}, {2, 11, 22, -1}, {2, 11, 23, -1}, {2, 12, 13, -1}, {2, 12, 14, -1}, {2, 12, 15, -1}, {2, 12, 16, -1}, {2, 12, 17, -1}, {2, 12, 18, -1}, {2, 12, 19, -1}, {2, 12, 20, -1}, {2, 12, 21, -1}, {2, 12, 22, -1}, {2, 12, 23, -1}, {2, 13, 14, -1}, {2, 13, 15, -1}, {2, 13, 16, -1}, {2, 13, 17, -1}, {2, 13, 18, -1}, {2, 13, 19, -1}, {2, 13, 20, -1}, {2, 13, 21, -1}, {2, 13, 22, -1}, {2, 13, 23, -1}, {2, 14, 15, -1}, {2, 14, 16, -1}, {2, 14, 17, -1}, {2, 14, 18, -1}, {2, 14, 19, -1}, {2, 14, 20, -1}, {2, 14, 21, -1}, {2, 14, 22, -1}, {2, 14, 23, -1}, {2, 15, 16, -1}, {2, 15, 17, -1}, {2, 15, 18, -1}, {2, 15, 19, -1}, {2, 15, 20, -1}, {2, 15, 21, -1}, {2, 15, 22, -1}, {2, 15, 23, -1}, {2, 16, 17, -1}, {2, 16, 18, -1}, {2, 16, 19, -1}, {2, 16, 20, -1}, {2, 16, 21, -1}, {2, 16, 22, -1}, {2, 16, 23, -1}, {2, 17, 18, -1}, {2, 17, 19, -1}, {2, 17, 20, -1}, {2, 17, 21, -1}, {2, 17, 22, -1}, {2, 17, 23, -1}, {2, 18, 19, -1}, {2, 18, 20, -1}, {2, 18, 21, -1}, {2, 18, 22, -1}, {2, 18, 23, -1}, {2, 19, 20, -1}, {2, 19, 21, -1}, {2, 19, 22, -1}, {2, 19, 23, -1}, {2, 20, 21, -1}, {2, 20, 22, -1}, {2, 20, 23, -1}, {2, 21, 22, -1}, {2, 21, 23, -1}, {2, 22, 23, -1}, {3, 4, 5, -1}, {3, 4, 6, -1}, {3, 4, 7, -1}, {3, 4, 8, -1}, {3, 4, 9, -1}, {3, 4, 10, -1}, {3, 4, 11, -1}, {3, 4, 12, -1}, {3, 4, 13, -1}, {3, 4, 14, -1}, {3, 4, 15, -1}, {3, 4, 16, -1}, {3, 4, 17, -1}, {3, 4, 18, -1}, {3, 4, 19, -1}, {3, 4, 20, -1}, {3, 4, 21, -1}, {3, 4, 22, -1}, {3, 4, 23, -1}, {3, 5, 6, -1}, {3, 5, 7, -1}, {3, 5, 8, -1}, {3, 5, 9, -1}, {3, 5, 10, -1}, {3, 5, 11, -1}, {3, 5, 12, -1}, {3, 5, 13, -1}, {3, 5, 14, -1}, {3, 5, 15, -1}, {3, 5, 16, -1}, {3, 5, 17, -1}, {3, 5, 18, -1}, {3, 5, 19, -1}, {3, 5, 20, -1}, {3, 5, 21, -1}, {3, 5, 22, -1}, {3, 5, 23, -1}, {3, 6, 7, -1}, {3, 6, 8, -1}, {3, 6, 9, -1}, {3, 6, 10, -1}, {3, 6, 11, -1}, {3, 6, 12, -1}, {3, 6, 13, -1}, {3, 6, 14, -1}, {3, 6, 15, -1}, {3, 6, 16, -1}, {3, 6, 17, -1}, {3, 6, 18, -1}, {3, 6, 19, -1}, {3, 6, 20, -1}, {3, 6, 21, -1}, {3, 6, 22, -1}, {3, 6, 23, -1}, {3, 7, 8, -1}, {3, 7, 9, -1}, {3, 7, 10, -1}, {3, 7, 11, -1}, {3, 7, 12, -1}, {3, 7, 13, -1}, {3, 7, 14, -1}, {3, 7, 15, -1}, {3, 7, 16, -1}, {3, 7, 17, -1}, {3, 7, 18, -1}, {3, 7, 19, -1}, {3, 7, 20, -1}, {3, 7, 21, -1}, {3, 7, 22, -1}, {3, 7, 23, -1}, {3, 8, 9, -1}, {3, 8, 10, -1}, {3, 8, 11, -1}, {3, 8, 12, -1}, {3, 8, 13, -1}, {3, 8, 14, -1}, {3, 8, 15, -1}, {3, 8, 16, -1}, {3, 8, 17, -1}, {3, 8, 18, -1}, {3, 8, 19, -1}, {3, 8, 20, -1}, {3, 8, 21, -1}, {3, 8, 22, -1}, {3, 8, 23, -1}, {3, 9, 10, -1}, {3, 9, 11, -1}, {3, 9, 12, -1}, {3, 9, 13, -1}, {3, 9, 14, -1}, {3, 9, 15, -1}, {3, 9, 16, -1}, {3, 9, 17, -1}, {3, 9, 18, -1}, {3, 9, 19, -1}, {3, 9, 20, -1}, {3, 9, 21, -1}, {3, 9, 22, -1}, {3, 9, 23, -1}, {3, 10, 11, -1}, {3, 10, 12, -1}, {3, 10, 13, -1}, {3, 10, 14, -1}, {3, 10, 15, -1}, {3, 10, 16, -1}, {3, 10, 17, -1}, {3, 10, 18, -1}, {3, 10, 19, -1}, {3, 10, 20, -1}, {3, 10, 21, -1}, {3, 10, 22, -1}, {3, 10, 23, -1}, {3, 11, 12, -1}, {3, 11, 13, -1}, {3, 11, 14, -1}, {3, 11, 15, -1}, {3, 11, 16, -1}, {3, 11, 17, -1}, {3, 11, 18, -1}, {3, 11, 19, -1}, {3, 11, 20, -1}, {3, 11, 21, -1}, {3, 11, 22, -1}, {3, 11, 23, -1}, {3, 12, 13, -1}, {3, 12, 14, -1}, {3, 12, 15, -1}, {3, 12, 16, -1}, {3, 12, 17, -1}, {3, 12, 18, -1}, {3, 12, 19, -1}, {3, 12, 20, -1}, {3, 12, 21, -1}, {3, 12, 22, -1}, {3, 12, 23, -1}, {3, 13, 14, -1}, {3, 13, 15, -1}, {3, 13, 16, -1}, {3, 13, 17, -1}, {3, 13, 18, -1}, {3, 13, 19, -1}, {3, 13, 20, -1}, {3, 13, 21, -1}, {3, 13, 22, -1}, {3, 13, 23, -1}, {3, 14, 15, -1}, {3, 14, 16, -1}, {3, 14, 17, -1}, {3, 14, 18, -1}, {3, 14, 19, -1}, {3, 14, 20, -1}, {3, 14, 21, -1}, {3, 14, 22, -1}, {3, 14, 23, -1}, {3, 15, 16, -1}, {3, 15, 17, -1}, {3, 15, 18, -1}, {3, 15, 19, -1}, {3, 15, 20, -1}, {3, 15, 21, -1}, {3, 15, 22, -1}, {3, 15, 23, -1}, {3, 16, 17, -1}, {3, 16, 18, -1}, {3, 16, 19, -1}, {3, 16, 20, -1}, {3, 16, 21, -1}, {3, 16, 22, -1}, {3, 16, 23, -1}, {3, 17, 18, -1}, {3, 17, 19, -1}, {3, 17, 20, -1}, {3, 17, 21, -1}, {3, 17, 22, -1}, {3, 17, 23, -1}, {3, 18, 19, -1}, {3, 18, 20, -1}, {3, 18, 21, -1}, {3, 18, 22, -1}, {3, 18, 23, -1}, {3, 19, 20, -1}, {3, 19, 21, -1}, {3, 19, 22, -1}, {3, 19, 23, -1}, {3, 20, 21, -1}, {3, 20, 22, -1}, {3, 20, 23, -1}, {3, 21, 22, -1}, {3, 21, 23, -1}, {3, 22, 23, -1}, {4, 5, 6, -1}, {4, 5, 7, -1}, {4, 5, 8, -1}, {4, 5, 9, -1}, {4, 5, 10, -1}, {4, 5, 11, -1}, {4, 5, 12, -1}, {4, 5, 13, -1}, {4, 5, 14, -1}, {4, 5, 15, -1}, {4, 5, 16, -1}, {4, 5, 17, -1}, {4, 5, 18, -1}, {4, 5, 19, -1}, {4, 5, 20, -1}, {4, 5, 21, -1}, {4, 5, 22, -1}, {4, 5, 23, -1}, {4, 6, 7, -1}, {4, 6, 8, -1}, {4, 6, 9, -1}, {4, 6, 10, -1}, {4, 6, 11, -1}, {4, 6, 12, -1}, {4, 6, 13, -1}, {4, 6, 14, -1}, {4, 6, 15, -1}, {4, 6, 16, -1}, {4, 6, 17, -1}, {4, 6, 18, -1}, {4, 6, 19, -1}, {4, 6, 20, -1}, {4, 6, 21, -1}, {4, 6, 22, -1}, {4, 6, 23, -1}, {4, 7, 8, -1}, {4, 7, 9, -1}, {4, 7, 10, -1}, {4, 7, 11, -1}, {4, 7, 12, -1}, {4, 7, 13, -1}, {4, 7, 14, -1}, {4, 7, 15, -1}, {4, 7, 16, -1}, {4, 7, 17, -1}, {4, 7, 18, -1}, {4, 7, 19, -1}, {4, 7, 20, -1}, {4, 7, 21, -1}, {4, 7, 22, -1}, {4, 7, 23, -1}, {4, 8, 9, -1}, {4, 8, 10, -1}, {4, 8, 11, -1}, {4, 8, 12, -1}, {4, 8, 13, -1}, {4, 8, 14, -1}, {4, 8, 15, -1}, {4, 8, 16, -1}, {4, 8, 17, -1}, {4, 8, 18, -1}, {4, 8, 19, -1}, {4, 8, 20, -1}, {4, 8, 21, -1}, {4, 8, 22, -1}, {4, 8, 23, -1}, {4, 9, 10, -1}, {4, 9, 11, -1}, {4, 9, 12, -1}, {4, 9, 13, -1}, {4, 9, 14, -1}, {4, 9, 15, -1}, {4, 9, 16, -1}, {4, 9, 17, -1}, {4, 9, 18, -1}, {4, 9, 19, -1}, {4, 9, 20, -1}, {4, 9, 21, -1}, {4, 9, 22, -1}, {4, 9, 23, -1}, {4, 10, 11, -1}, {4, 10, 12, -1}, {4, 10, 13, -1}, {4, 10, 14, -1}, {4, 10, 15, -1}, {4, 10, 16, -1}, {4, 10, 17, -1}, {4, 10, 18, -1}, {4, 10, 19, -1}, {4, 10, 20, -1}, {4, 10, 21, -1}, {4, 10, 22, -1}, {4, 10, 23, -1}, {4, 11, 12, -1}, {4, 11, 13, -1}, {4, 11, 14, -1}, {4, 11, 15, -1}, {4, 11, 16, -1}, {4, 11, 17, -1}, {4, 11, 18, -1}, {4, 11, 19, -1}, {4, 11, 20, -1}, {4, 11, 21, -1}, {4, 11, 22, -1}, {4, 11, 23, -1}, {4, 12, 13, -1}, {4, 12, 14, -1}, {4, 12, 15, -1}, {4, 12, 16, -1}, {4, 12, 17, -1}, {4, 12, 18, -1}, {4, 12, 19, -1}, {4, 12, 20, -1}, {4, 12, 21, -1}, {4, 12, 22, -1}, {4, 12, 23, -1}, {4, 13, 14, -1}, {4, 13, 15, -1}, {4, 13, 16, -1}, {4, 13, 17, -1}, {4, 13, 18, -1}, {4, 13, 19, -1}, {4, 13, 20, -1}, {4, 13, 21, -1}, {4, 13, 22, -1}, {4, 13, 23, -1}, {4, 14, 15, -1}, {4, 14, 16, -1}, {4, 14, 17, -1}, {4, 14, 18, -1}, {4, 14, 19, -1}, {4, 14, 20, -1}, {4, 14, 21, -1}, {4, 14, 22, -1}, {4, 14, 23, -1}, {4, 15, 16, -1}, {4, 15, 17, -1}, {4, 15, 18, -1}, {4, 15, 19, -1}, {4, 15, 20, -1}, {4, 15, 21, -1}, {4, 15, 22, -1}, {4, 15, 23, -1}, {4, 16, 17, -1}, {4, 16, 18, -1}, {4, 16, 19, -1}, {4, 16, 20, -1}, {4, 16, 21, -1}, {4, 16, 22, -1}, {4, 16, 23, -1}, {4, 17, 18, -1}, {4, 17, 19, -1}, {4, 17, 20, -1}, {4, 17, 21, -1}, {4, 17, 22, -1}, {4, 17, 23, -1}, {4, 18, 19, -1}, {4, 18, 20, -1}, {4, 18, 21, -1}, {4, 18, 22, -1}, {4, 18, 23, -1}, {4, 19, 20, -1}, {4, 19, 21, -1}, {4, 19, 22, -1}, {4, 19, 23, -1}, {4, 20, 21, -1}, {4, 20, 22, -1}, {4, 20, 23, -1}, {4, 21, 22, -1}, {4, 21, 23, -1}, {4, 22, 23, -1}, {5, 6, 7, -1}, {5, 6, 8, -1}, {5, 6, 9, -1}, {5, 6, 10, -1}, {5, 6, 11, -1}, {5, 6, 12, -1}, {5, 6, 13, -1}, {5, 6, 14, -1}, {5, 6, 15, -1}, {5, 6, 16, -1}, {5, 6, 17, -1}, {5, 6, 18, -1}, {5, 6, 19, -1}, {5, 6, 20, -1}, {5, 6, 21, -1}, {5, 6, 22, -1}, {5, 6, 23, -1}, {5, 7, 8, -1}, {5, 7, 9, -1}, {5, 7, 10, -1}, {5, 7, 11, -1}, {5, 7, 12, -1}, {5, 7, 13, -1}, {5, 7, 14, -1}, {5, 7, 15, -1}, {5, 7, 16, -1}, {5, 7, 17, -1}, {5, 7, 18, -1}, {5, 7, 19, -1}, {5, 7, 20, -1}, {5, 7, 21, -1}, {5, 7, 22, -1}, {5, 7, 23, -1}, {5, 8, 9, -1}, {5, 8, 10, -1}, {5, 8, 11, -1}, {5, 8, 12, -1}, {5, 8, 13, -1}, {5, 8, 14, -1}, {5, 8, 15, -1}, {5, 8, 16, -1}, {5, 8, 17, -1}, {5, 8, 18, -1}, {5, 8, 19, -1}, {5, 8, 20, -1}, {5, 8, 21, -1}, {5, 8, 22, -1}, {5, 8, 23, -1}, {5, 9, 10, -1}, {5, 9, 11, -1}, {5, 9, 12, -1}, {5, 9, 13, -1}, {5, 9, 14, -1}, {5, 9, 15, -1}, {5, 9, 16, -1}, {5, 9, 17, -1}, {5, 9, 18, -1}, {5, 9, 19, -1}, {5, 9, 20, -1}, {5, 9, 21, -1}, {5, 9, 22, -1}, {5, 9, 23, -1}, {5, 10, 11, -1}, {5, 10, 12, -1}, {5, 10, 13, -1}, {5, 10, 14, -1}, {5, 10, 15, -1}, {5, 10, 16, -1}, {5, 10, 17, -1}, {5, 10, 18, -1}, {5, 10, 19, -1}, {5, 10, 20, -1}, {5, 10, 21, -1}, {5, 10, 22, -1}, {5, 10, 23, -1}, {5, 11, 12, -1}, {5, 11, 13, -1}, {5, 11, 14, -1}, {5, 11, 15, -1}, {5, 11, 16, -1}, {5, 11, 17, -1}, {5, 11, 18, -1}, {5, 11, 19, -1}, {5, 11, 20, -1}, {5, 11, 21, -1}, {5, 11, 22, -1}, {5, 11, 23, -1}, {5, 12, 13, -1}, {5, 12, 14, -1}, {5, 12, 15, -1}, {5, 12, 16, -1}, {5, 12, 17, -1}, {5, 12, 18, -1}, {5, 12, 19, -1}, {5, 12, 20, -1}, {5, 12, 21, -1}, {5, 12, 22, -1}, {5, 12, 23, -1}, {5, 13, 14, -1}, {5, 13, 15, -1}, {5, 13, 16, -1}, {5, 13, 17, -1}, {5, 13, 18, -1}, {5, 13, 19, -1}, {5, 13, 20, -1}, {5, 13, 21, -1}, {5, 13, 22, -1}, {5, 13, 23, -1}, {5, 14, 15, -1}, {5, 14, 16, -1}, {5, 14, 17, -1}, {5, 14, 18, -1}, {5, 14, 19, -1}, {5, 14, 20, -1}, {5, 14, 21, -1}, {5, 14, 22, -1}, {5, 14, 23, -1}, {5, 15, 16, -1}, {5, 15, 17, -1}, {5, 15, 18, -1}, {5, 15, 19, -1}, {5, 15, 20, -1}, {5, 15, 21, -1}, {5, 15, 22, -1}, {5, 15, 23, -1}, {5, 16, 17, -1}, {5, 16, 18, -1}, {5, 16, 19, -1}, {5, 16, 20, -1}, {5, 16, 21, -1}, {5, 16, 22, -1}, {5, 16, 23, -1}, {5, 17, 18, -1}, {5, 17, 19, -1}, {5, 17, 20, -1}, {5, 17, 21, -1}, {5, 17, 22, -1}, {5, 17, 23, -1}, {5, 18, 19, -1}, {5, 18, 20, -1}, {5, 18, 21, -1}, {5, 18, 22, -1}, {5, 18, 23, -1}, {5, 19, 20, -1}, {5, 19, 21, -1}, {5, 19, 22, -1}, {5, 19, 23, -1}, {5, 20, 21, -1}, {5, 20, 22, -1}, {5, 20, 23, -1}, {5, 21, 22, -1}, {5, 21, 23, -1}, {5, 22, 23, -1}, {6, 7, 8, -1}, {6, 7, 9, -1}, {6, 7, 10, -1}, {6, 7, 11, -1}, {6, 7, 12, -1}, {6, 7, 13, -1}, {6, 7, 14, -1}, {6, 7, 15, -1}, {6, 7, 16, -1}, {6, 7, 17, -1}, {6, 7, 18, -1}, {6, 7, 19, -1}, {6, 7, 20, -1}, {6, 7, 21, -1}, {6, 7, 22, -1}, {6, 7, 23, -1}, {6, 8, 9, -1}, {6, 8, 10, -1}, {6, 8, 11, -1}, {6, 8, 12, -1}, {6, 8, 13, -1}, {6, 8, 14, -1}, {6, 8, 15, -1}, {6, 8, 16, -1}, {6, 8, 17, -1}, {6, 8, 18, -1}, {6, 8, 19, -1}, {6, 8, 20, -1}, {6, 8, 21, -1}, {6, 8, 22, -1}, {6, 8, 23, -1}, {6, 9, 10, -1}, {6, 9, 11, -1}, {6, 9, 12, -1}, {6, 9, 13, -1}, {6, 9, 14, -1}, {6, 9, 15, -1}, {6, 9, 16, -1}, {6, 9, 17, -1}, {6, 9, 18, -1}, {6, 9, 19, -1}, {6, 9, 20, -1}, {6, 9, 21, -1}, {6, 9, 22, -1}, {6, 9, 23, -1}, {6, 10, 11, -1}, {6, 10, 12, -1}, {6, 10, 13, -1}, {6, 10, 14, -1}, {6, 10, 15, -1}, {6, 10, 16, -1}, {6, 10, 17, -1}, {6, 10, 18, -1}, {6, 10, 19, -1}, {6, 10, 20, -1}, {6, 10, 21, -1}, {6, 10, 22, -1}, {6, 10, 23, -1}, {6, 11, 12, -1}, {6, 11, 13, -1}, {6, 11, 14, -1}, {6, 11, 15, -1}, {6, 11, 16, -1}, {6, 11, 17, -1}, {6, 11, 18, -1}, {6, 11, 19, -1}, {6, 11, 20, -1}, {6, 11, 21, -1}, {6, 11, 22, -1}, {6, 11, 23, -1}, {6, 12, 13, -1}, {6, 12, 14, -1}, {6, 12, 15, -1}, {6, 12, 16, -1}, {6, 12, 17, -1}, {6, 12, 18, -1}, {6, 12, 19, -1}, {6, 12, 20, -1}, {6, 12, 21, -1}, {6, 12, 22, -1}, {6, 12, 23, -1}, {6, 13, 14, -1}, {6, 13, 15, -1}, {6, 13, 16, -1}, {6, 13, 17, -1}, {6, 13, 18, -1}, {6, 13, 19, -1}, {6, 13, 20, -1}, {6, 13, 21, -1}, {6, 13, 22, -1}, {6, 13, 23, -1}, {6, 14, 15, -1}, {6, 14, 16, -1}, {6, 14, 17, -1}, {6, 14, 18, -1}, {6, 14, 19, -1}, {6, 14, 20, -1}, {6, 14, 21, -1}, {6, 14, 22, -1}, {6, 14, 23, -1}, {6, 15, 16, -1}, {6, 15, 17, -1}, {6, 15, 18, -1}, {6, 15, 19, -1}, {6, 15, 20, -1}, {6, 15, 21, -1}, {6, 15, 22, -1}, {6, 15, 23, -1}, {6, 16, 17, -1}, {6, 16, 18, -1}, {6, 16, 19, -1}, {6, 16, 20, -1}, {6, 16, 21, -1}, {6, 16, 22, -1}, {6, 16, 23, -1}, {6, 17, 18, -1}, {6, 17, 19, -1}, {6, 17, 20, -1}, {6, 17, 21, -1}, {6, 17, 22, -1}, {6, 17, 23, -1}, {6, 18, 19, -1}, {6, 18, 20, -1}, {6, 18, 21, -1}, {6, 18, 22, -1}, {6, 18, 23, -1}, {6, 19, 20, -1}, {6, 19, 21, -1}, {6, 19, 22, -1}, {6, 19, 23, -1}, {6, 20, 21, -1}, {6, 20, 22, -1}, {6, 20, 23, -1}, {6, 21, 22, -1}, {6, 21, 23, -1}, {6, 22, 23, -1}, {7, 8, 9, -1}, {7, 8, 10, -1}, {7, 8, 11, -1}, {7, 8, 12, -1}, {7, 8, 13, -1}, {7, 8, 14, -1}, {7, 8, 15, -1}, {7, 8, 16, -1}, {7, 8, 17, -1}, {7, 8, 18, -1}, {7, 8, 19, -1}, {7, 8, 20, -1}, {7, 8, 21, -1}, {7, 8, 22, -1}, {7, 8, 23, -1}, {7, 9, 10, -1}, {7, 9, 11, -1}, {7, 9, 12, -1}, {7, 9, 13, -1}, {7, 9, 14, -1}, {7, 9, 15, -1}, {7, 9, 16, -1}, {7, 9, 17, -1}, {7, 9, 18, -1}, {7, 9, 19, -1}, {7, 9, 20, -1}, {7, 9, 21, -1}, {7, 9, 22, -1}, {7, 9, 23, -1}, {7, 10, 11, -1}, {7, 10, 12, -1}, {7, 10, 13, -1}, {7, 10, 14, -1}, {7, 10, 15, -1}, {7, 10, 16, -1}, {7, 10, 17, -1}, {7, 10, 18, -1}, {7, 10, 19, -1}, {7, 10, 20, -1}, {7, 10, 21, -1}, {7, 10, 22, -1}, {7, 10, 23, -1}, {7, 11, 12, -1}, {7, 11, 13, -1}, {7, 11, 14, -1}, {7, 11, 15, -1}, {7, 11, 16, -1}, {7, 11, 17, -1}, {7, 11, 18, -1}, {7, 11, 19, -1}, {7, 11, 20, -1}, {7, 11, 21, -1}, {7, 11, 22, -1}, {7, 11, 23, -1}, {7, 12, 13, -1}, {7, 12, 14, -1}, {7, 12, 15, -1}, {7, 12, 16, -1}, {7, 12, 17, -1}, {7, 12, 18, -1}, {7, 12, 19, -1}, {7, 12, 20, -1}, {7, 12, 21, -1}, {7, 12, 22, -1}, {7, 12, 23, -1}, {7, 13, 14, -1}, {7, 13, 15, -1}, {7, 13, 16, -1}, {7, 13, 17, -1}, {7, 13, 18, -1}, {7, 13, 19, -1}, {7, 13, 20, -1}, {7, 13, 21, -1}, {7, 13, 22, -1}, {7, 13, 23, -1}, {7, 14, 15, -1}, {7, 14, 16, -1}, {7, 14, 17, -1}, {7, 14, 18, -1}, {7, 14, 19, -1}, {7, 14, 20, -1}, {7, 14, 21, -1}, {7, 14, 22, -1}, {7, 14, 23, -1}, {7, 15, 16, -1}, {7, 15, 17, -1}, {7, 15, 18, -1}, {7, 15, 19, -1}, {7, 15, 20, -1}, {7, 15, 21, -1}, {7, 15, 22, -1}, {7, 15, 23, -1}, {7, 16, 17, -1}, {7, 16, 18, -1}, {7, 16, 19, -1}, {7, 16, 20, -1}, {7, 16, 21, -1}, {7, 16, 22, -1}, {7, 16, 23, -1}, {7, 17, 18, -1}, {7, 17, 19, -1}, {7, 17, 20, -1}, {7, 17, 21, -1}, {7, 17, 22, -1}, {7, 17, 23, -1}, {7, 18, 19, -1}, {7, 18, 20, -1}, {7, 18, 21, -1}, {7, 18, 22, -1}, {7, 18, 23, -1}, {7, 19, 20, -1}, {7, 19, 21, -1}, {7, 19, 22, -1}, {7, 19, 23, -1}, {7, 20, 21, -1}, {7, 20, 22, -1}, {7, 20, 23, -1}, {7, 21, 22, -1}, {7, 21, 23, -1}, {7, 22, 23, -1}, {8, 9, 10, -1}, {8, 9, 11, -1}, {8, 9, 12, -1}, {8, 9, 13, -1}, {8, 9, 14, -1}, {8, 9, 15, -1}, {8, 9, 16, -1}, {8, 9, 17, -1}, {8, 9, 18, -1}, {8, 9, 19, -1}, {8, 9, 20, -1}, {8, 9, 21, -1}, {8, 9, 22, -1}, {8, 9, 23, -1}, {8, 10, 11, -1}, {8, 10, 12, -1}, {8, 10, 13, -1}, {8, 10, 14, -1}, {8, 10, 15, -1}, {8, 10, 16, -1}, {8, 10, 17, -1}, {8, 10, 18, -1}, {8, 10, 19, -1}, {8, 10, 20, -1}, {8, 10, 21, -1}, {8, 10, 22, -1}, {8, 10, 23, -1}, {8, 11, 12, -1}, {8, 11, 13, -1}, {8, 11, 14, -1}, {8, 11, 15, -1}, {8, 11, 16, -1}, {8, 11, 17, -1}, {8, 11, 18, -1}, {8, 11, 19, -1}, {8, 11, 20, -1}, {8, 11, 21, -1}, {8, 11, 22, -1}, {8, 11, 23, -1}, {8, 12, 13, -1}, {8, 12, 14, -1}, {8, 12, 15, -1}, {8, 12, 16, -1}, {8, 12, 17, -1}, {8, 12, 18, -1}, {8, 12, 19, -1}, {8, 12, 20, -1}, {8, 12, 21, -1}, {8, 12, 22, -1}, {8, 12, 23, -1}, {8, 13, 14, -1}, {8, 13, 15, -1}, {8, 13, 16, -1}, {8, 13, 17, -1}, {8, 13, 18, -1}, {8, 13, 19, -1}, {8, 13, 20, -1}, {8, 13, 21, -1}, {8, 13, 22, -1}, {8, 13, 23, -1}, {8, 14, 15, -1}, {8, 14, 16, -1}, {8, 14, 17, -1}, {8, 14, 18, -1}, {8, 14, 19, -1}, {8, 14, 20, -1}, {8, 14, 21, -1}, {8, 14, 22, -1}, {8, 14, 23, -1}, {8, 15, 16, -1}, {8, 15, 17, -1}, {8, 15, 18, -1}, {8, 15, 19, -1}, {8, 15, 20, -1}, {8, 15, 21, -1}, {8, 15, 22, -1}, {8, 15, 23, -1}, {8, 16, 17, -1}, {8, 16, 18, -1}, {8, 16, 19, -1}, {8, 16, 20, -1}, {8, 16, 21, -1}, {8, 16, 22, -1}, {8, 16, 23, -1}, {8, 17, 18, -1}, {8, 17, 19, -1}, {8, 17, 20, -1}, {8, 17, 21, -1}, {8, 17, 22, -1}, {8, 17, 23, -1}, {8, 18, 19, -1}, {8, 18, 20, -1}, {8, 18, 21, -1}, {8, 18, 22, -1}, {8, 18, 23, -1}, {8, 19, 20, -1}, {8, 19, 21, -1}, {8, 19, 22, -1}, {8, 19, 23, -1}, {8, 20, 21, -1}, {8, 20, 22, -1}, {8, 20, 23, -1}, {8, 21, 22, -1}, {8, 21, 23, -1}, {8, 22, 23, -1}, {9, 10, 11, -1}, {9, 10, 12, -1}, {9, 10, 13, -1}, {9, 10, 14, -1}, {9, 10, 15, -1}, {9, 10, 16, -1}, {9, 10, 17, -1}, {9, 10, 18, -1}, {9, 10, 19, -1}, {9, 10, 20, -1}, {9, 10, 21, -1}, {9, 10, 22, -1}, {9, 10, 23, -1}, {9, 11, 12, -1}, {9, 11, 13, -1}, {9, 11, 14, -1}, {9, 11, 15, -1}, {9, 11, 16, -1}, {9, 11, 17, -1}, {9, 11, 18, -1}, {9, 11, 19, -1}, {9, 11, 20, -1}, {9, 11, 21, -1}, {9, 11, 22, -1}, {9, 11, 23, -1}, {9, 12, 13, -1}, {9, 12, 14, -1}, {9, 12, 15, -1}, {9, 12, 16, -1}, {9, 12, 17, -1}, {9, 12, 18, -1}, {9, 12, 19, -1}, {9, 12, 20, -1}, {9, 12, 21, -1}, {9, 12, 22, -1}, {9, 12, 23, -1}, {9, 13, 14, -1}, {9, 13, 15, -1}, {9, 13, 16, -1}, {9, 13, 17, -1}, {9, 13, 18, -1}, {9, 13, 19, -1}, {9, 13, 20, -1}, {9, 13, 21, -1}, {9, 13, 22, -1}, {9, 13, 23, -1}, {9, 14, 15, -1}, {9, 14, 16, -1}, {9, 14, 17, -1}, {9, 14, 18, -1}, {9, 14, 19, -1}, {9, 14, 20, -1}, {9, 14, 21, -1}, {9, 14, 22, -1}, {9, 14, 23, -1}, {9, 15, 16, -1}, {9, 15, 17, -1}, {9, 15, 18, -1}, {9, 15, 19, -1}, {9, 15, 20, -1}, {9, 15, 21, -1}, {9, 15, 22, -1}, {9, 15, 23, -1}, {9, 16, 17, -1}, {9, 16, 18, -1}, {9, 16, 19, -1}, {9, 16, 20, -1}, {9, 16, 21, -1}, {9, 16, 22, -1}, {9, 16, 23, -1}, {9, 17, 18, -1}, {9, 17, 19, -1}, {9, 17, 20, -1}, {9, 17, 21, -1}, {9, 17, 22, -1}, {9, 17, 23, -1}, {9, 18, 19, -1}, {9, 18, 20, -1}, {9, 18, 21, -1}, {9, 18, 22, -1}, {9, 18, 23, -1}, {9, 19, 20, -1}, {9, 19, 21, -1}, {9, 19, 22, -1}, {9, 19, 23, -1}, {9, 20, 21, -1}, {9, 20, 22, -1}, {9, 20, 23, -1}, {9, 21, 22, -1}, {9, 21, 23, -1}, {9, 22, 23, -1}, {10, 11, 12, -1}, {10, 11, 13, -1}, {10, 11, 14, -1}, {10, 11, 15, -1}, {10, 11, 16, -1}, {10, 11, 17, -1}, {10, 11, 18, -1}, {10, 11, 19, -1}, {10, 11, 20, -1}, {10, 11, 21, -1}, {10, 11, 22, -1}, {10, 11, 23, -1}, {10, 12, 13, -1}, {10, 12, 14, -1}, {10, 12, 15, -1}, {10, 12, 16, -1}, {10, 12, 17, -1}, {10, 12, 18, -1}, {10, 12, 19, -1}, {10, 12, 20, -1}, {10, 12, 21, -1}, {10, 12, 22, -1}, {10, 12, 23, -1}, {10, 13, 14, -1}, {10, 13, 15, -1}, {10, 13, 16, -1}, {10, 13, 17, -1}, {10, 13, 18, -1}, {10, 13, 19, -1}, {10, 13, 20, -1}, {10, 13, 21, -1}, {10, 13, 22, -1}, {10, 13, 23, -1}, {10, 14, 15, -1}, {10, 14, 16, -1}, {10, 14, 17, -1}, {10, 14, 18, -1}, {10, 14, 19, -1}, {10, 14, 20, -1}, {10, 14, 21, -1}, {10, 14, 22, -1}, {10, 14, 23, -1}, {10, 15, 16, -1}, {10, 15, 17, -1}, {10, 15, 18, -1}, {10, 15, 19, -1}, {10, 15, 20, -1}, {10, 15, 21, -1}, {10, 15, 22, -1}, {10, 15, 23, -1}, {10, 16, 17, -1}, {10, 16, 18, -1}, {10, 16, 19, -1}, {10, 16, 20, -1}, {10, 16, 21, -1}, {10, 16, 22, -1}, {10, 16, 23, -1}, {10, 17, 18, -1}, {10, 17, 19, -1}, {10, 17, 20, -1}, {10, 17, 21, -1}, {10, 17, 22, -1}, {10, 17, 23, -1}, {10, 18, 19, -1}, {10, 18, 20, -1}, {10, 18, 21, -1}, {10, 18, 22, -1}, {10, 18, 23, -1}, {10, 19, 20, -1}, {10, 19, 21, -1}, {10, 19, 22, -1}, {10, 19, 23, -1}, {10, 20, 21, -1}, {10, 20, 22, -1}, {10, 20, 23, -1}, {10, 21, 22, -1}, {10, 21, 23, -1}, {10, 22, 23, -1}, {11, 12, 13, -1}, {11, 12, 14, -1}, {11, 12, 15, -1}, {11, 12, 16, -1}, {11, 12, 17, -1}, {11, 12, 18, -1}, {11, 12, 19, -1}, {11, 12, 20, -1}, {11, 12, 21, -1}, {11, 12, 22, -1}, {11, 12, 23, -1}, {11, 13, 14, -1}, {11, 13, 15, -1}, {11, 13, 16, -1}, {11, 13, 17, -1}, {11, 13, 18, -1}, {11, 13, 19, -1}, {11, 13, 20, -1}, {11, 13, 21, -1}, {11, 13, 22, -1}, {11, 13, 23, -1}, {11, 14, 15, -1}, {11, 14, 16, -1}, {11, 14, 17, -1}, {11, 14, 18, -1}, {11, 14, 19, -1}, {11, 14, 20, -1}, {11, 14, 21, -1}, {11, 14, 22, -1}, {11, 14, 23, -1}, {11, 15, 16, -1}, {11, 15, 17, -1}, {11, 15, 18, -1}, {11, 15, 19, -1}, {11, 15, 20, -1}, {11, 15, 21, -1}, {11, 15, 22, -1}, {11, 15, 23, -1}, {11, 16, 17, -1}, {11, 16, 18, -1}, {11, 16, 19, -1}, {11, 16, 20, -1}, {11, 16, 21, -1}, {11, 16, 22, -1}, {11, 16, 23, -1}, {11, 17, 18, -1}, {11, 17, 19, -1}, {11, 17, 20, -1}, {11, 17, 21, -1}, {11, 17, 22, -1}, {11, 17, 23, -1}, {11, 18, 19, -1}, {11, 18, 20, -1}, {11, 18, 21, -1}, {11, 18, 22, -1}, {11, 18, 23, -1}, {11, 19, 20, -1}, {11, 19, 21, -1}, {11, 19, 22, -1}, {11, 19, 23, -1}, {11, 20, 21, -1}, {11, 20, 22, -1}, {11, 20, 23, -1}, {11, 21, 22, -1}, {11, 21, 23, -1}, {11, 22, 23, -1}, {12, 13, 14, -1}, {12, 13, 15, -1}, {12, 13, 16, -1}, {12, 13, 17, -1}, {12, 13, 18, -1}, {12, 13, 19, -1}, {12, 13, 20, -1}, {12, 13, 21, -1}, {12, 13, 22, -1}, {12, 13, 23, -1}, {12, 14, 15, -1}, {12, 14, 16, -1}, {12, 14, 17, -1}, {12, 14, 18, -1}, {12, 14, 19, -1}, {12, 14, 20, -1}, {12, 14, 21, -1}, {12, 14, 22, -1}, {12, 14, 23, -1}, {12, 15, 16, -1}, {12, 15, 17, -1}, {12, 15, 18, -1}, {12, 15, 19, -1}, {12, 15, 20, -1}, {12, 15, 21, -1}, {12, 15, 22, -1}, {12, 15, 23, -1}, {12, 16, 17, -1}, {12, 16, 18, -1}, {12, 16, 19, -1}, {12, 16, 20, -1}, {12, 16, 21, -1}, {12, 16, 22, -1}, {12, 16, 23, -1}, {12, 17, 18, -1}, {12, 17, 19, -1}, {12, 17, 20, -1}, {12, 17, 21, -1}, {12, 17, 22, -1}, {12, 17, 23, -1}, {12, 18, 19, -1}, {12, 18, 20, -1}, {12, 18, 21, -1}, {12, 18, 22, -1}, {12, 18, 23, -1}, {12, 19, 20, -1}, {12, 19, 21, -1}, {12, 19, 22, -1}, {12, 19, 23, -1}, {12, 20, 21, -1}, {12, 20, 22, -1}, {12, 20, 23, -1}, {12, 21, 22, -1}, {12, 21, 23, -1}, {12, 22, 23, -1}, {13, 14, 15, -1}, {13, 14, 16, -1}, {13, 14, 17, -1}, {13, 14, 18, -1}, {13, 14, 19, -1}, {13, 14, 20, -1}, {13, 14, 21, -1}, {13, 14, 22, -1}, {13, 14, 23, -1}, {13, 15, 16, -1}, {13, 15, 17, -1}, {13, 15, 18, -1}, {13, 15, 19, -1}, {13, 15, 20, -1}, {13, 15, 21, -1}, {13, 15, 22, -1}, {13, 15, 23, -1}, {13, 16, 17, -1}, {13, 16, 18, -1}, {13, 16, 19, -1}, {13, 16, 20, -1}, {13, 16, 21, -1}, {13, 16, 22, -1}, {13, 16, 23, -1}, {13, 17, 18, -1}, {13, 17, 19, -1}, {13, 17, 20, -1}, {13, 17, 21, -1}, {13, 17, 22, -1}, {13, 17, 23, -1}, {13, 18, 19, -1}, {13, 18, 20, -1}, {13, 18, 21, -1}, {13, 18, 22, -1}, {13, 18, 23, -1}, {13, 19, 20, -1}, {13, 19, 21, -1}, {13, 19, 22, -1}, {13, 19, 23, -1}, {13, 20, 21, -1}, {13, 20, 22, -1}, {13, 20, 23, -1}, {13, 21, 22, -1}, {13, 21, 23, -1}, {13, 22, 23, -1}, {14, 15, 16, -1}, {14, 15, 17, -1}, {14, 15, 18, -1}, {14, 15, 19, -1}, {14, 15, 20, -1}, {14, 15, 21, -1}, {14, 15, 22, -1}, {14, 15, 23, -1}, {14, 16, 17, -1}, {14, 16, 18, -1}, {14, 16, 19, -1}, {14, 16, 20, -1}, {14, 16, 21, -1}, {14, 16, 22, -1}, {14, 16, 23, -1}, {14, 17, 18, -1}, {14, 17, 19, -1}, {14, 17, 20, -1}, {14, 17, 21, -1}, {14, 17, 22, -1}, {14, 17, 23, -1}, {14, 18, 19, -1}, {14, 18, 20, -1}, {14, 18, 21, -1}, {14, 18, 22, -1}, {14, 18, 23, -1}, {14, 19, 20, -1}, {14, 19, 21, -1}, {14, 19, 22, -1}, {14, 19, 23, -1}, {14, 20, 21, -1}, {14, 20, 22, -1}, {14, 20, 23, -1}, {14, 21, 22, -1}, {14, 21, 23, -1}, {14, 22, 23, -1}, {15, 16, 17, -1}, {15, 16, 18, -1}, {15, 16, 19, -1}, {15, 16, 20, -1}, {15, 16, 21, -1}, {15, 16, 22, -1}, {15, 16, 23, -1}, {15, 17, 18, -1}, {15, 17, 19, -1}, {15, 17, 20, -1}, {15, 17, 21, -1}, {15, 17, 22, -1}, {15, 17, 23, -1}, {15, 18, 19, -1}, {15, 18, 20, -1}, {15, 18, 21, -1}, {15, 18, 22, -1}, {15, 18, 23, -1}, {15, 19, 20, -1}, {15, 19, 21, -1}, {15, 19, 22, -1}, {15, 19, 23, -1}, {15, 20, 21, -1}, {15, 20, 22, -1}, {15, 20, 23, -1}, {15, 21, 22, -1}, {15, 21, 23, -1}, {15, 22, 23, -1}, {16, 17, 18, -1}, {16, 17, 19, -1}, {16, 17, 20, -1}, {16, 17, 21, -1}, {16, 17, 22, -1}, {16, 17, 23, -1}, {16, 18, 19, -1}, {16, 18, 20, -1}, {16, 18, 21, -1}, {16, 18, 22, -1}, {16, 18, 23, -1}, {16, 19, 20, -1}, {16, 19, 21, -1}, {16, 19, 22, -1}, {16, 19, 23, -1}, {16, 20, 21, -1}, {16, 20, 22, -1}, {16, 20, 23, -1}, {16, 21, 22, -1}, {16, 21, 23, -1}, {16, 22, 23, -1}, {17, 18, 19, -1}, {17, 18, 20, -1}, {17, 18, 21, -1}, {17, 18, 22, -1}, {17, 18, 23, -1}, {17, 19, 20, -1}, {17, 19, 21, -1}, {17, 19, 22, -1}, {17, 19, 23, -1}, {17, 20, 21, -1}, {17, 20, 22, -1}, {17, 20, 23, -1}, {17, 21, 22, -1}, {17, 21, 23, -1}, {17, 22, 23, -1}, {18, 19, 20, -1}, {18, 19, 21, -1}, {18, 19, 22, -1}, {18, 19, 23, -1}, {18, 20, 21, -1}, {18, 20, 22, -1}, {18, 20, 23, -1}, {18, 21, 22, -1}, {18, 21, 23, -1}, {18, 22, 23, -1}, {19, 20, 21, -1}, {19, 20, 22, -1}, {19, 20, 23, -1}, {19, 21, 22, -1}, {19, 21, 23, -1}, {19, 22, 23, -1}, {20, 21, 22, -1}, {20, 21, 23, -1}, {20, 22, 23, -1}, {21, 22, 23, -1}} ;
84 #define NUM_25_3_COMBS 325
85 int failure_combs_25_3[NUM_25_3_COMBS][4] = {{0, -1, -1, -1}, {1, -1, -1, -1}, {2, -1, -1, -1}, {3, -1, -1, -1}, {4, -1, -1, -1}, {5, -1, -1, -1}, {6, -1, -1, -1}, {7, -1, -1, -1}, {8, -1, -1, -1}, {9, -1, -1, -1}, {10, -1, -1, -1}, {11, -1, -1, -1}, {12, -1, -1, -1}, {13, -1, -1, -1}, {14, -1, -1, -1}, {15, -1, -1, -1}, {16, -1, -1, -1}, {17, -1, -1, -1}, {18, -1, -1, -1}, {19, -1, -1, -1}, {20, -1, -1, -1}, {21, -1, -1, -1}, {22, -1, -1, -1}, {23, -1, -1, -1}, {24, -1, -1, -1}, {0, 1, -1, -1}, {0, 2, -1, -1}, {0, 3, -1, -1}, {0, 4, -1, -1}, {0, 5, -1, -1}, {0, 6, -1, -1}, {0, 7, -1, -1}, {0, 8, -1, -1}, {0, 9, -1, -1}, {0, 10, -1, -1}, {0, 11, -1, -1}, {0, 12, -1, -1}, {0, 13, -1, -1}, {0, 14, -1, -1}, {0, 15, -1, -1}, {0, 16, -1, -1}, {0, 17, -1, -1}, {0, 18, -1, -1}, {0, 19, -1, -1}, {0, 20, -1, -1}, {0, 21, -1, -1}, {0, 22, -1, -1}, {0, 23, -1, -1}, {0, 24, -1, -1}, {1, 2, -1, -1}, {1, 3, -1, -1}, {1, 4, -1, -1}, {1, 5, -1, -1}, {1, 6, -1, -1}, {1, 7, -1, -1}, {1, 8, -1, -1}, {1, 9, -1, -1}, {1, 10, -1, -1}, {1, 11, -1, -1}, {1, 12, -1, -1}, {1, 13, -1, -1}, {1, 14, -1, -1}, {1, 15, -1, -1}, {1, 16, -1, -1}, {1, 17, -1, -1}, {1, 18, -1, -1}, {1, 19, -1, -1}, {1, 20, -1, -1}, {1, 21, -1, -1}, {1, 22, -1, -1}, {1, 23, -1, -1}, {1, 24, -1, -1}, {2, 3, -1, -1}, {2, 4, -1, -1}, {2, 5, -1, -1}, {2, 6, -1, -1}, {2, 7, -1, -1}, {2, 8, -1, -1}, {2, 9, -1, -1}, {2, 10, -1, -1}, {2, 11, -1, -1}, {2, 12, -1, -1}, {2, 13, -1, -1}, {2, 14, -1, -1}, {2, 15, -1, -1}, {2, 16, -1, -1}, {2, 17, -1, -1}, {2, 18, -1, -1}, {2, 19, -1, -1}, {2, 20, -1, -1}, {2, 21, -1, -1}, {2, 22, -1, -1}, {2, 23, -1, -1}, {2, 24, -1, -1}, {3, 4, -1, -1}, {3, 5, -1, -1}, {3, 6, -1, -1}, {3, 7, -1, -1}, {3, 8, -1, -1}, {3, 9, -1, -1}, {3, 10, -1, -1}, {3, 11, -1, -1}, {3, 12, -1, -1}, {3, 13, -1, -1}, {3, 14, -1, -1}, {3, 15, -1, -1}, {3, 16, -1, -1}, {3, 17, -1, -1}, {3, 18, -1, -1}, {3, 19, -1, -1}, {3, 20, -1, -1}, {3, 21, -1, -1}, {3, 22, -1, -1}, {3, 23, -1, -1}, {3, 24, -1, -1}, {4, 5, -1, -1}, {4, 6, -1, -1}, {4, 7, -1, -1}, {4, 8, -1, -1}, {4, 9, -1, -1}, {4, 10, -1, -1}, {4, 11, -1, -1}, {4, 12, -1, -1}, {4, 13, -1, -1}, {4, 14, -1, -1}, {4, 15, -1, -1}, {4, 16, -1, -1}, {4, 17, -1, -1}, {4, 18, -1, -1}, {4, 19, -1, -1}, {4, 20, -1, -1}, {4, 21, -1, -1}, {4, 22, -1, -1}, {4, 23, -1, -1}, {4, 24, -1, -1}, {5, 6, -1, -1}, {5, 7, -1, -1}, {5, 8, -1, -1}, {5, 9, -1, -1}, {5, 10, -1, -1}, {5, 11, -1, -1}, {5, 12, -1, -1}, {5, 13, -1, -1}, {5, 14, -1, -1}, {5, 15, -1, -1}, {5, 16, -1, -1}, {5, 17, -1, -1}, {5, 18, -1, -1}, {5, 19, -1, -1}, {5, 20, -1, -1}, {5, 21, -1, -1}, {5, 22, -1, -1}, {5, 23, -1, -1}, {5, 24, -1, -1}, {6, 7, -1, -1}, {6, 8, -1, -1}, {6, 9, -1, -1}, {6, 10, -1, -1}, {6, 11, -1, -1}, {6, 12, -1, -1}, {6, 13, -1, -1}, {6, 14, -1, -1}, {6, 15, -1, -1}, {6, 16, -1, -1}, {6, 17, -1, -1}, {6, 18, -1, -1}, {6, 19, -1, -1}, {6, 20, -1, -1}, {6, 21, -1, -1}, {6, 22, -1, -1}, {6, 23, -1, -1}, {6, 24, -1, -1}, {7, 8, -1, -1}, {7, 9, -1, -1}, {7, 10, -1, -1}, {7, 11, -1, -1}, {7, 12, -1, -1}, {7, 13, -1, -1}, {7, 14, -1, -1}, {7, 15, -1, -1}, {7, 16, -1, -1}, {7, 17, -1, -1}, {7, 18, -1, -1}, {7, 19, -1, -1}, {7, 20, -1, -1}, {7, 21, -1, -1}, {7, 22, -1, -1}, {7, 23, -1, -1}, {7, 24, -1, -1}, {8, 9, -1, -1}, {8, 10, -1, -1}, {8, 11, -1, -1}, {8, 12, -1, -1}, {8, 13, -1, -1}, {8, 14, -1, -1}, {8, 15, -1, -1}, {8, 16, -1, -1}, {8, 17, -1, -1}, {8, 18, -1, -1}, {8, 19, -1, -1}, {8, 20, -1, -1}, {8, 21, -1, -1}, {8, 22, -1, -1}, {8, 23, -1, -1}, {8, 24, -1, -1}, {9, 10, -1, -1}, {9, 11, -1, -1}, {9, 12, -1, -1}, {9, 13, -1, -1}, {9, 14, -1, -1}, {9, 15, -1, -1}, {9, 16, -1, -1}, {9, 17, -1, -1}, {9, 18, -1, -1}, {9, 19, -1, -1}, {9, 20, -1, -1}, {9, 21, -1, -1}, {9, 22, -1, -1}, {9, 23, -1, -1}, {9, 24, -1, -1}, {10, 11, -1, -1}, {10, 12, -1, -1}, {10, 13, -1, -1}, {10, 14, -1, -1}, {10, 15, -1, -1}, {10, 16, -1, -1}, {10, 17, -1, -1}, {10, 18, -1, -1}, {10, 19, -1, -1}, {10, 20, -1, -1}, {10, 21, -1, -1}, {10, 22, -1, -1}, {10, 23, -1, -1}, {10, 24, -1, -1}, {11, 12, -1, -1}, {11, 13, -1, -1}, {11, 14, -1, -1}, {11, 15, -1, -1}, {11, 16, -1, -1}, {11, 17, -1, -1}, {11, 18, -1, -1}, {11, 19, -1, -1}, {11, 20, -1, -1}, {11, 21, -1, -1}, {11, 22, -1, -1}, {11, 23, -1, -1}, {11, 24, -1, -1}, {12, 13, -1, -1}, {12, 14, -1, -1}, {12, 15, -1, -1}, {12, 16, -1, -1}, {12, 17, -1, -1}, {12, 18, -1, -1}, {12, 19, -1, -1}, {12, 20, -1, -1}, {12, 21, -1, -1}, {12, 22, -1, -1}, {12, 23, -1, -1}, {12, 24, -1, -1}, {13, 14, -1, -1}, {13, 15, -1, -1}, {13, 16, -1, -1}, {13, 17, -1, -1}, {13, 18, -1, -1}, {13, 19, -1, -1}, {13, 20, -1, -1}, {13, 21, -1, -1}, {13, 22, -1, -1}, {13, 23, -1, -1}, {13, 24, -1, -1}, {14, 15, -1, -1}, {14, 16, -1, -1}, {14, 17, -1, -1}, {14, 18, -1, -1}, {14, 19, -1, -1}, {14, 20, -1, -1}, {14, 21, -1, -1}, {14, 22, -1, -1}, {14, 23, -1, -1}, {14, 24, -1, -1}, {15, 16, -1, -1}, {15, 17, -1, -1}, {15, 18, -1, -1}, {15, 19, -1, -1}, {15, 20, -1, -1}, {15, 21, -1, -1}, {15, 22, -1, -1}, {15, 23, -1, -1}, {15, 24, -1, -1}, {16, 17, -1, -1}, {16, 18, -1, -1}, {16, 19, -1, -1}, {16, 20, -1, -1}, {16, 21, -1, -1}, {16, 22, -1, -1}, {16, 23, -1, -1}, {16, 24, -1, -1}, {17, 18, -1, -1}, {17, 19, -1, -1}, {17, 20, -1, -1}, {17, 21, -1, -1}, {17, 22, -1, -1}, {17, 23, -1, -1}, {17, 24, -1, -1}, {18, 19, -1, -1}, {18, 20, -1, -1}, {18, 21, -1, -1}, {18, 22, -1, -1}, {18, 23, -1, -1}, {18, 24, -1, -1}, {19, 20, -1, -1}, {19, 21, -1, -1}, {19, 22, -1, -1}, {19, 23, -1, -1}, {19, 24, -1, -1}, {20, 21, -1, -1}, {20, 22, -1, -1}, {20, 23, -1, -1}, {20, 24, -1, -1}, {21, 22, -1, -1}, {21, 23, -1, -1}, {21, 24, -1, -1}, {22, 23, -1, -1}, {22, 24, -1, -1}, {23, 24, -1, -1}} ;
86 #define NUM_25_4_COMBS 2625
87 int failure_combs_25_4[NUM_25_4_COMBS][4] = {{0, -1, -1, -1}, {1, -1, -1, -1}, {2, -1, -1, -1}, {3, -1, -1, -1}, {4, -1, -1, -1}, {5, -1, -1, -1}, {6, -1, -1, -1}, {7, -1, -1, -1}, {8, -1, -1, -1}, {9, -1, -1, -1}, {10, -1, -1, -1}, {11, -1, -1, -1}, {12, -1, -1, -1}, {13, -1, -1, -1}, {14, -1, -1, -1}, {15, -1, -1, -1}, {16, -1, -1, -1}, {17, -1, -1, -1}, {18, -1, -1, -1}, {19, -1, -1, -1}, {20, -1, -1, -1}, {21, -1, -1, -1}, {22, -1, -1, -1}, {23, -1, -1, -1}, {24, -1, -1, -1}, {0, 1, -1, -1}, {0, 2, -1, -1}, {0, 3, -1, -1}, {0, 4, -1, -1}, {0, 5, -1, -1}, {0, 6, -1, -1}, {0, 7, -1, -1}, {0, 8, -1, -1}, {0, 9, -1, -1}, {0, 10, -1, -1}, {0, 11, -1, -1}, {0, 12, -1, -1}, {0, 13, -1, -1}, {0, 14, -1, -1}, {0, 15, -1, -1}, {0, 16, -1, -1}, {0, 17, -1, -1}, {0, 18, -1, -1}, {0, 19, -1, -1}, {0, 20, -1, -1}, {0, 21, -1, -1}, {0, 22, -1, -1}, {0, 23, -1, -1}, {0, 24, -1, -1}, {1, 2, -1, -1}, {1, 3, -1, -1}, {1, 4, -1, -1}, {1, 5, -1, -1}, {1, 6, -1, -1}, {1, 7, -1, -1}, {1, 8, -1, -1}, {1, 9, -1, -1}, {1, 10, -1, -1}, {1, 11, -1, -1}, {1, 12, -1, -1}, {1, 13, -1, -1}, {1, 14, -1, -1}, {1, 15, -1, -1}, {1, 16, -1, -1}, {1, 17, -1, -1}, {1, 18, -1, -1}, {1, 19, -1, -1}, {1, 20, -1, -1}, {1, 21, -1, -1}, {1, 22, -1, -1}, {1, 23, -1, -1}, {1, 24, -1, -1}, {2, 3, -1, -1}, {2, 4, -1, -1}, {2, 5, -1, -1}, {2, 6, -1, -1}, {2, 7, -1, -1}, {2, 8, -1, -1}, {2, 9, -1, -1}, {2, 10, -1, -1}, {2, 11, -1, -1}, {2, 12, -1, -1}, {2, 13, -1, -1}, {2, 14, -1, -1}, {2, 15, -1, -1}, {2, 16, -1, -1}, {2, 17, -1, -1}, {2, 18, -1, -1}, {2, 19, -1, -1}, {2, 20, -1, -1}, {2, 21, -1, -1}, {2, 22, -1, -1}, {2, 23, -1, -1}, {2, 24, -1, -1}, {3, 4, -1, -1}, {3, 5, -1, -1}, {3, 6, -1, -1}, {3, 7, -1, -1}, {3, 8, -1, -1}, {3, 9, -1, -1}, {3, 10, -1, -1}, {3, 11, -1, -1}, {3, 12, -1, -1}, {3, 13, -1, -1}, {3, 14, -1, -1}, {3, 15, -1, -1}, {3, 16, -1, -1}, {3, 17, -1, -1}, {3, 18, -1, -1}, {3, 19, -1, -1}, {3, 20, -1, -1}, {3, 21, -1, -1}, {3, 22, -1, -1}, {3, 23, -1, -1}, {3, 24, -1, -1}, {4, 5, -1, -1}, {4, 6, -1, -1}, {4, 7, -1, -1}, {4, 8, -1, -1}, {4, 9, -1, -1}, {4, 10, -1, -1}, {4, 11, -1, -1}, {4, 12, -1, -1}, {4, 13, -1, -1}, {4, 14, -1, -1}, {4, 15, -1, -1}, {4, 16, -1, -1}, {4, 17, -1, -1}, {4, 18, -1, -1}, {4, 19, -1, -1}, {4, 20, -1, -1}, {4, 21, -1, -1}, {4, 22, -1, -1}, {4, 23, -1, -1}, {4, 24, -1, -1}, {5, 6, -1, -1}, {5, 7, -1, -1}, {5, 8, -1, -1}, {5, 9, -1, -1}, {5, 10, -1, -1}, {5, 11, -1, -1}, {5, 12, -1, -1}, {5, 13, -1, -1}, {5, 14, -1, -1}, {5, 15, -1, -1}, {5, 16, -1, -1}, {5, 17, -1, -1}, {5, 18, -1, -1}, {5, 19, -1, -1}, {5, 20, -1, -1}, {5, 21, -1, -1}, {5, 22, -1, -1}, {5, 23, -1, -1}, {5, 24, -1, -1}, {6, 7, -1, -1}, {6, 8, -1, -1}, {6, 9, -1, -1}, {6, 10, -1, -1}, {6, 11, -1, -1}, {6, 12, -1, -1}, {6, 13, -1, -1}, {6, 14, -1, -1}, {6, 15, -1, -1}, {6, 16, -1, -1}, {6, 17, -1, -1}, {6, 18, -1, -1}, {6, 19, -1, -1}, {6, 20, -1, -1}, {6, 21, -1, -1}, {6, 22, -1, -1}, {6, 23, -1, -1}, {6, 24, -1, -1}, {7, 8, -1, -1}, {7, 9, -1, -1}, {7, 10, -1, -1}, {7, 11, -1, -1}, {7, 12, -1, -1}, {7, 13, -1, -1}, {7, 14, -1, -1}, {7, 15, -1, -1}, {7, 16, -1, -1}, {7, 17, -1, -1}, {7, 18, -1, -1}, {7, 19, -1, -1}, {7, 20, -1, -1}, {7, 21, -1, -1}, {7, 22, -1, -1}, {7, 23, -1, -1}, {7, 24, -1, -1}, {8, 9, -1, -1}, {8, 10, -1, -1}, {8, 11, -1, -1}, {8, 12, -1, -1}, {8, 13, -1, -1}, {8, 14, -1, -1}, {8, 15, -1, -1}, {8, 16, -1, -1}, {8, 17, -1, -1}, {8, 18, -1, -1}, {8, 19, -1, -1}, {8, 20, -1, -1}, {8, 21, -1, -1}, {8, 22, -1, -1}, {8, 23, -1, -1}, {8, 24, -1, -1}, {9, 10, -1, -1}, {9, 11, -1, -1}, {9, 12, -1, -1}, {9, 13, -1, -1}, {9, 14, -1, -1}, {9, 15, -1, -1}, {9, 16, -1, -1}, {9, 17, -1, -1}, {9, 18, -1, -1}, {9, 19, -1, -1}, {9, 20, -1, -1}, {9, 21, -1, -1}, {9, 22, -1, -1}, {9, 23, -1, -1}, {9, 24, -1, -1}, {10, 11, -1, -1}, {10, 12, -1, -1}, {10, 13, -1, -1}, {10, 14, -1, -1}, {10, 15, -1, -1}, {10, 16, -1, -1}, {10, 17, -1, -1}, {10, 18, -1, -1}, {10, 19, -1, -1}, {10, 20, -1, -1}, {10, 21, -1, -1}, {10, 22, -1, -1}, {10, 23, -1, -1}, {10, 24, -1, -1}, {11, 12, -1, -1}, {11, 13, -1, -1}, {11, 14, -1, -1}, {11, 15, -1, -1}, {11, 16, -1, -1}, {11, 17, -1, -1}, {11, 18, -1, -1}, {11, 19, -1, -1}, {11, 20, -1, -1}, {11, 21, -1, -1}, {11, 22, -1, -1}, {11, 23, -1, -1}, {11, 24, -1, -1}, {12, 13, -1, -1}, {12, 14, -1, -1}, {12, 15, -1, -1}, {12, 16, -1, -1}, {12, 17, -1, -1}, {12, 18, -1, -1}, {12, 19, -1, -1}, {12, 20, -1, -1}, {12, 21, -1, -1}, {12, 22, -1, -1}, {12, 23, -1, -1}, {12, 24, -1, -1}, {13, 14, -1, -1}, {13, 15, -1, -1}, {13, 16, -1, -1}, {13, 17, -1, -1}, {13, 18, -1, -1}, {13, 19, -1, -1}, {13, 20, -1, -1}, {13, 21, -1, -1}, {13, 22, -1, -1}, {13, 23, -1, -1}, {13, 24, -1, -1}, {14, 15, -1, -1}, {14, 16, -1, -1}, {14, 17, -1, -1}, {14, 18, -1, -1}, {14, 19, -1, -1}, {14, 20, -1, -1}, {14, 21, -1, -1}, {14, 22, -1, -1}, {14, 23, -1, -1}, {14, 24, -1, -1}, {15, 16, -1, -1}, {15, 17, -1, -1}, {15, 18, -1, -1}, {15, 19, -1, -1}, {15, 20, -1, -1}, {15, 21, -1, -1}, {15, 22, -1, -1}, {15, 23, -1, -1}, {15, 24, -1, -1}, {16, 17, -1, -1}, {16, 18, -1, -1}, {16, 19, -1, -1}, {16, 20, -1, -1}, {16, 21, -1, -1}, {16, 22, -1, -1}, {16, 23, -1, -1}, {16, 24, -1, -1}, {17, 18, -1, -1}, {17, 19, -1, -1}, {17, 20, -1, -1}, {17, 21, -1, -1}, {17, 22, -1, -1}, {17, 23, -1, -1}, {17, 24, -1, -1}, {18, 19, -1, -1}, {18, 20, -1, -1}, {18, 21, -1, -1}, {18, 22, -1, -1}, {18, 23, -1, -1}, {18, 24, -1, -1}, {19, 20, -1, -1}, {19, 21, -1, -1}, {19, 22, -1, -1}, {19, 23, -1, -1}, {19, 24, -1, -1}, {20, 21, -1, -1}, {20, 22, -1, -1}, {20, 23, -1, -1}, {20, 24, -1, -1}, {21, 22, -1, -1}, {21, 23, -1, -1}, {21, 24, -1, -1}, {22, 23, -1, -1}, {22, 24, -1, -1}, {23, 24, -1, -1}, {0, 1, 2, -1}, {0, 1, 3, -1}, {0, 1, 4, -1}, {0, 1, 5, -1}, {0, 1, 6, -1}, {0, 1, 7, -1}, {0, 1, 8, -1}, {0, 1, 9, -1}, {0, 1, 10, -1}, {0, 1, 11, -1}, {0, 1, 12, -1}, {0, 1, 13, -1}, {0, 1, 14, -1}, {0, 1, 15, -1}, {0, 1, 16, -1}, {0, 1, 17, -1}, {0, 1, 18, -1}, {0, 1, 19, -1}, {0, 1, 20, -1}, {0, 1, 21, -1}, {0, 1, 22, -1}, {0, 1, 23, -1}, {0, 1, 24, -1}, {0, 2, 3, -1}, {0, 2, 4, -1}, {0, 2, 5, -1}, {0, 2, 6, -1}, {0, 2, 7, -1}, {0, 2, 8, -1}, {0, 2, 9, -1}, {0, 2, 10, -1}, {0, 2, 11, -1}, {0, 2, 12, -1}, {0, 2, 13, -1}, {0, 2, 14, -1}, {0, 2, 15, -1}, {0, 2, 16, -1}, {0, 2, 17, -1}, {0, 2, 18, -1}, {0, 2, 19, -1}, {0, 2, 20, -1}, {0, 2, 21, -1}, {0, 2, 22, -1}, {0, 2, 23, -1}, {0, 2, 24, -1}, {0, 3, 4, -1}, {0, 3, 5, -1}, {0, 3, 6, -1}, {0, 3, 7, -1}, {0, 3, 8, -1}, {0, 3, 9, -1}, {0, 3, 10, -1}, {0, 3, 11, -1}, {0, 3, 12, -1}, {0, 3, 13, -1}, {0, 3, 14, -1}, {0, 3, 15, -1}, {0, 3, 16, -1}, {0, 3, 17, -1}, {0, 3, 18, -1}, {0, 3, 19, -1}, {0, 3, 20, -1}, {0, 3, 21, -1}, {0, 3, 22, -1}, {0, 3, 23, -1}, {0, 3, 24, -1}, {0, 4, 5, -1}, {0, 4, 6, -1}, {0, 4, 7, -1}, {0, 4, 8, -1}, {0, 4, 9, -1}, {0, 4, 10, -1}, {0, 4, 11, -1}, {0, 4, 12, -1}, {0, 4, 13, -1}, {0, 4, 14, -1}, {0, 4, 15, -1}, {0, 4, 16, -1}, {0, 4, 17, -1}, {0, 4, 18, -1}, {0, 4, 19, -1}, {0, 4, 20, -1}, {0, 4, 21, -1}, {0, 4, 22, -1}, {0, 4, 23, -1}, {0, 4, 24, -1}, {0, 5, 6, -1}, {0, 5, 7, -1}, {0, 5, 8, -1}, {0, 5, 9, -1}, {0, 5, 10, -1}, {0, 5, 11, -1}, {0, 5, 12, -1}, {0, 5, 13, -1}, {0, 5, 14, -1}, {0, 5, 15, -1}, {0, 5, 16, -1}, {0, 5, 17, -1}, {0, 5, 18, -1}, {0, 5, 19, -1}, {0, 5, 20, -1}, {0, 5, 21, -1}, {0, 5, 22, -1}, {0, 5, 23, -1}, {0, 5, 24, -1}, {0, 6, 7, -1}, {0, 6, 8, -1}, {0, 6, 9, -1}, {0, 6, 10, -1}, {0, 6, 11, -1}, {0, 6, 12, -1}, {0, 6, 13, -1}, {0, 6, 14, -1}, {0, 6, 15, -1}, {0, 6, 16, -1}, {0, 6, 17, -1}, {0, 6, 18, -1}, {0, 6, 19, -1}, {0, 6, 20, -1}, {0, 6, 21, -1}, {0, 6, 22, -1}, {0, 6, 23, -1}, {0, 6, 24, -1}, {0, 7, 8, -1}, {0, 7, 9, -1}, {0, 7, 10, -1}, {0, 7, 11, -1}, {0, 7, 12, -1}, {0, 7, 13, -1}, {0, 7, 14, -1}, {0, 7, 15, -1}, {0, 7, 16, -1}, {0, 7, 17, -1}, {0, 7, 18, -1}, {0, 7, 19, -1}, {0, 7, 20, -1}, {0, 7, 21, -1}, {0, 7, 22, -1}, {0, 7, 23, -1}, {0, 7, 24, -1}, {0, 8, 9, -1}, {0, 8, 10, -1}, {0, 8, 11, -1}, {0, 8, 12, -1}, {0, 8, 13, -1}, {0, 8, 14, -1}, {0, 8, 15, -1}, {0, 8, 16, -1}, {0, 8, 17, -1}, {0, 8, 18, -1}, {0, 8, 19, -1}, {0, 8, 20, -1}, {0, 8, 21, -1}, {0, 8, 22, -1}, {0, 8, 23, -1}, {0, 8, 24, -1}, {0, 9, 10, -1}, {0, 9, 11, -1}, {0, 9, 12, -1}, {0, 9, 13, -1}, {0, 9, 14, -1}, {0, 9, 15, -1}, {0, 9, 16, -1}, {0, 9, 17, -1}, {0, 9, 18, -1}, {0, 9, 19, -1}, {0, 9, 20, -1}, {0, 9, 21, -1}, {0, 9, 22, -1}, {0, 9, 23, -1}, {0, 9, 24, -1}, {0, 10, 11, -1}, {0, 10, 12, -1}, {0, 10, 13, -1}, {0, 10, 14, -1}, {0, 10, 15, -1}, {0, 10, 16, -1}, {0, 10, 17, -1}, {0, 10, 18, -1}, {0, 10, 19, -1}, {0, 10, 20, -1}, {0, 10, 21, -1}, {0, 10, 22, -1}, {0, 10, 23, -1}, {0, 10, 24, -1}, {0, 11, 12, -1}, {0, 11, 13, -1}, {0, 11, 14, -1}, {0, 11, 15, -1}, {0, 11, 16, -1}, {0, 11, 17, -1}, {0, 11, 18, -1}, {0, 11, 19, -1}, {0, 11, 20, -1}, {0, 11, 21, -1}, {0, 11, 22, -1}, {0, 11, 23, -1}, {0, 11, 24, -1}, {0, 12, 13, -1}, {0, 12, 14, -1}, {0, 12, 15, -1}, {0, 12, 16, -1}, {0, 12, 17, -1}, {0, 12, 18, -1}, {0, 12, 19, -1}, {0, 12, 20, -1}, {0, 12, 21, -1}, {0, 12, 22, -1}, {0, 12, 23, -1}, {0, 12, 24, -1}, {0, 13, 14, -1}, {0, 13, 15, -1}, {0, 13, 16, -1}, {0, 13, 17, -1}, {0, 13, 18, -1}, {0, 13, 19, -1}, {0, 13, 20, -1}, {0, 13, 21, -1}, {0, 13, 22, -1}, {0, 13, 23, -1}, {0, 13, 24, -1}, {0, 14, 15, -1}, {0, 14, 16, -1}, {0, 14, 17, -1}, {0, 14, 18, -1}, {0, 14, 19, -1}, {0, 14, 20, -1}, {0, 14, 21, -1}, {0, 14, 22, -1}, {0, 14, 23, -1}, {0, 14, 24, -1}, {0, 15, 16, -1}, {0, 15, 17, -1}, {0, 15, 18, -1}, {0, 15, 19, -1}, {0, 15, 20, -1}, {0, 15, 21, -1}, {0, 15, 22, -1}, {0, 15, 23, -1}, {0, 15, 24, -1}, {0, 16, 17, -1}, {0, 16, 18, -1}, {0, 16, 19, -1}, {0, 16, 20, -1}, {0, 16, 21, -1}, {0, 16, 22, -1}, {0, 16, 23, -1}, {0, 16, 24, -1}, {0, 17, 18, -1}, {0, 17, 19, -1}, {0, 17, 20, -1}, {0, 17, 21, -1}, {0, 17, 22, -1}, {0, 17, 23, -1}, {0, 17, 24, -1}, {0, 18, 19, -1}, {0, 18, 20, -1}, {0, 18, 21, -1}, {0, 18, 22, -1}, {0, 18, 23, -1}, {0, 18, 24, -1}, {0, 19, 20, -1}, {0, 19, 21, -1}, {0, 19, 22, -1}, {0, 19, 23, -1}, {0, 19, 24, -1}, {0, 20, 21, -1}, {0, 20, 22, -1}, {0, 20, 23, -1}, {0, 20, 24, -1}, {0, 21, 22, -1}, {0, 21, 23, -1}, {0, 21, 24, -1}, {0, 22, 23, -1}, {0, 22, 24, -1}, {0, 23, 24, -1}, {1, 2, 3, -1}, {1, 2, 4, -1}, {1, 2, 5, -1}, {1, 2, 6, -1}, {1, 2, 7, -1}, {1, 2, 8, -1}, {1, 2, 9, -1}, {1, 2, 10, -1}, {1, 2, 11, -1}, {1, 2, 12, -1}, {1, 2, 13, -1}, {1, 2, 14, -1}, {1, 2, 15, -1}, {1, 2, 16, -1}, {1, 2, 17, -1}, {1, 2, 18, -1}, {1, 2, 19, -1}, {1, 2, 20, -1}, {1, 2, 21, -1}, {1, 2, 22, -1}, {1, 2, 23, -1}, {1, 2, 24, -1}, {1, 3, 4, -1}, {1, 3, 5, -1}, {1, 3, 6, -1}, {1, 3, 7, -1}, {1, 3, 8, -1}, {1, 3, 9, -1}, {1, 3, 10, -1}, {1, 3, 11, -1}, {1, 3, 12, -1}, {1, 3, 13, -1}, {1, 3, 14, -1}, {1, 3, 15, -1}, {1, 3, 16, -1}, {1, 3, 17, -1}, {1, 3, 18, -1}, {1, 3, 19, -1}, {1, 3, 20, -1}, {1, 3, 21, -1}, {1, 3, 22, -1}, {1, 3, 23, -1}, {1, 3, 24, -1}, {1, 4, 5, -1}, {1, 4, 6, -1}, {1, 4, 7, -1}, {1, 4, 8, -1}, {1, 4, 9, -1}, {1, 4, 10, -1}, {1, 4, 11, -1}, {1, 4, 12, -1}, {1, 4, 13, -1}, {1, 4, 14, -1}, {1, 4, 15, -1}, {1, 4, 16, -1}, {1, 4, 17, -1}, {1, 4, 18, -1}, {1, 4, 19, -1}, {1, 4, 20, -1}, {1, 4, 21, -1}, {1, 4, 22, -1}, {1, 4, 23, -1}, {1, 4, 24, -1}, {1, 5, 6, -1}, {1, 5, 7, -1}, {1, 5, 8, -1}, {1, 5, 9, -1}, {1, 5, 10, -1}, {1, 5, 11, -1}, {1, 5, 12, -1}, {1, 5, 13, -1}, {1, 5, 14, -1}, {1, 5, 15, -1}, {1, 5, 16, -1}, {1, 5, 17, -1}, {1, 5, 18, -1}, {1, 5, 19, -1}, {1, 5, 20, -1}, {1, 5, 21, -1}, {1, 5, 22, -1}, {1, 5, 23, -1}, {1, 5, 24, -1}, {1, 6, 7, -1}, {1, 6, 8, -1}, {1, 6, 9, -1}, {1, 6, 10, -1}, {1, 6, 11, -1}, {1, 6, 12, -1}, {1, 6, 13, -1}, {1, 6, 14, -1}, {1, 6, 15, -1}, {1, 6, 16, -1}, {1, 6, 17, -1}, {1, 6, 18, -1}, {1, 6, 19, -1}, {1, 6, 20, -1}, {1, 6, 21, -1}, {1, 6, 22, -1}, {1, 6, 23, -1}, {1, 6, 24, -1}, {1, 7, 8, -1}, {1, 7, 9, -1}, {1, 7, 10, -1}, {1, 7, 11, -1}, {1, 7, 12, -1}, {1, 7, 13, -1}, {1, 7, 14, -1}, {1, 7, 15, -1}, {1, 7, 16, -1}, {1, 7, 17, -1}, {1, 7, 18, -1}, {1, 7, 19, -1}, {1, 7, 20, -1}, {1, 7, 21, -1}, {1, 7, 22, -1}, {1, 7, 23, -1}, {1, 7, 24, -1}, {1, 8, 9, -1}, {1, 8, 10, -1}, {1, 8, 11, -1}, {1, 8, 12, -1}, {1, 8, 13, -1}, {1, 8, 14, -1}, {1, 8, 15, -1}, {1, 8, 16, -1}, {1, 8, 17, -1}, {1, 8, 18, -1}, {1, 8, 19, -1}, {1, 8, 20, -1}, {1, 8, 21, -1}, {1, 8, 22, -1}, {1, 8, 23, -1}, {1, 8, 24, -1}, {1, 9, 10, -1}, {1, 9, 11, -1}, {1, 9, 12, -1}, {1, 9, 13, -1}, {1, 9, 14, -1}, {1, 9, 15, -1}, {1, 9, 16, -1}, {1, 9, 17, -1}, {1, 9, 18, -1}, {1, 9, 19, -1}, {1, 9, 20, -1}, {1, 9, 21, -1}, {1, 9, 22, -1}, {1, 9, 23, -1}, {1, 9, 24, -1}, {1, 10, 11, -1}, {1, 10, 12, -1}, {1, 10, 13, -1}, {1, 10, 14, -1}, {1, 10, 15, -1}, {1, 10, 16, -1}, {1, 10, 17, -1}, {1, 10, 18, -1}, {1, 10, 19, -1}, {1, 10, 20, -1}, {1, 10, 21, -1}, {1, 10, 22, -1}, {1, 10, 23, -1}, {1, 10, 24, -1}, {1, 11, 12, -1}, {1, 11, 13, -1}, {1, 11, 14, -1}, {1, 11, 15, -1}, {1, 11, 16, -1}, {1, 11, 17, -1}, {1, 11, 18, -1}, {1, 11, 19, -1}, {1, 11, 20, -1}, {1, 11, 21, -1}, {1, 11, 22, -1}, {1, 11, 23, -1}, {1, 11, 24, -1}, {1, 12, 13, -1}, {1, 12, 14, -1}, {1, 12, 15, -1}, {1, 12, 16, -1}, {1, 12, 17, -1}, {1, 12, 18, -1}, {1, 12, 19, -1}, {1, 12, 20, -1}, {1, 12, 21, -1}, {1, 12, 22, -1}, {1, 12, 23, -1}, {1, 12, 24, -1}, {1, 13, 14, -1}, {1, 13, 15, -1}, {1, 13, 16, -1}, {1, 13, 17, -1}, {1, 13, 18, -1}, {1, 13, 19, -1}, {1, 13, 20, -1}, {1, 13, 21, -1}, {1, 13, 22, -1}, {1, 13, 23, -1}, {1, 13, 24, -1}, {1, 14, 15, -1}, {1, 14, 16, -1}, {1, 14, 17, -1}, {1, 14, 18, -1}, {1, 14, 19, -1}, {1, 14, 20, -1}, {1, 14, 21, -1}, {1, 14, 22, -1}, {1, 14, 23, -1}, {1, 14, 24, -1}, {1, 15, 16, -1}, {1, 15, 17, -1}, {1, 15, 18, -1}, {1, 15, 19, -1}, {1, 15, 20, -1}, {1, 15, 21, -1}, {1, 15, 22, -1}, {1, 15, 23, -1}, {1, 15, 24, -1}, {1, 16, 17, -1}, {1, 16, 18, -1}, {1, 16, 19, -1}, {1, 16, 20, -1}, {1, 16, 21, -1}, {1, 16, 22, -1}, {1, 16, 23, -1}, {1, 16, 24, -1}, {1, 17, 18, -1}, {1, 17, 19, -1}, {1, 17, 20, -1}, {1, 17, 21, -1}, {1, 17, 22, -1}, {1, 17, 23, -1}, {1, 17, 24, -1}, {1, 18, 19, -1}, {1, 18, 20, -1}, {1, 18, 21, -1}, {1, 18, 22, -1}, {1, 18, 23, -1}, {1, 18, 24, -1}, {1, 19, 20, -1}, {1, 19, 21, -1}, {1, 19, 22, -1}, {1, 19, 23, -1}, {1, 19, 24, -1}, {1, 20, 21, -1}, {1, 20, 22, -1}, {1, 20, 23, -1}, {1, 20, 24, -1}, {1, 21, 22, -1}, {1, 21, 23, -1}, {1, 21, 24, -1}, {1, 22, 23, -1}, {1, 22, 24, -1}, {1, 23, 24, -1}, {2, 3, 4, -1}, {2, 3, 5, -1}, {2, 3, 6, -1}, {2, 3, 7, -1}, {2, 3, 8, -1}, {2, 3, 9, -1}, {2, 3, 10, -1}, {2, 3, 11, -1}, {2, 3, 12, -1}, {2, 3, 13, -1}, {2, 3, 14, -1}, {2, 3, 15, -1}, {2, 3, 16, -1}, {2, 3, 17, -1}, {2, 3, 18, -1}, {2, 3, 19, -1}, {2, 3, 20, -1}, {2, 3, 21, -1}, {2, 3, 22, -1}, {2, 3, 23, -1}, {2, 3, 24, -1}, {2, 4, 5, -1}, {2, 4, 6, -1}, {2, 4, 7, -1}, {2, 4, 8, -1}, {2, 4, 9, -1}, {2, 4, 10, -1}, {2, 4, 11, -1}, {2, 4, 12, -1}, {2, 4, 13, -1}, {2, 4, 14, -1}, {2, 4, 15, -1}, {2, 4, 16, -1}, {2, 4, 17, -1}, {2, 4, 18, -1}, {2, 4, 19, -1}, {2, 4, 20, -1}, {2, 4, 21, -1}, {2, 4, 22, -1}, {2, 4, 23, -1}, {2, 4, 24, -1}, {2, 5, 6, -1}, {2, 5, 7, -1}, {2, 5, 8, -1}, {2, 5, 9, -1}, {2, 5, 10, -1}, {2, 5, 11, -1}, {2, 5, 12, -1}, {2, 5, 13, -1}, {2, 5, 14, -1}, {2, 5, 15, -1}, {2, 5, 16, -1}, {2, 5, 17, -1}, {2, 5, 18, -1}, {2, 5, 19, -1}, {2, 5, 20, -1}, {2, 5, 21, -1}, {2, 5, 22, -1}, {2, 5, 23, -1}, {2, 5, 24, -1}, {2, 6, 7, -1}, {2, 6, 8, -1}, {2, 6, 9, -1}, {2, 6, 10, -1}, {2, 6, 11, -1}, {2, 6, 12, -1}, {2, 6, 13, -1}, {2, 6, 14, -1}, {2, 6, 15, -1}, {2, 6, 16, -1}, {2, 6, 17, -1}, {2, 6, 18, -1}, {2, 6, 19, -1}, {2, 6, 20, -1}, {2, 6, 21, -1}, {2, 6, 22, -1}, {2, 6, 23, -1}, {2, 6, 24, -1}, {2, 7, 8, -1}, {2, 7, 9, -1}, {2, 7, 10, -1}, {2, 7, 11, -1}, {2, 7, 12, -1}, {2, 7, 13, -1}, {2, 7, 14, -1}, {2, 7, 15, -1}, {2, 7, 16, -1}, {2, 7, 17, -1}, {2, 7, 18, -1}, {2, 7, 19, -1}, {2, 7, 20, -1}, {2, 7, 21, -1}, {2, 7, 22, -1}, {2, 7, 23, -1}, {2, 7, 24, -1}, {2, 8, 9, -1}, {2, 8, 10, -1}, {2, 8, 11, -1}, {2, 8, 12, -1}, {2, 8, 13, -1}, {2, 8, 14, -1}, {2, 8, 15, -1}, {2, 8, 16, -1}, {2, 8, 17, -1}, {2, 8, 18, -1}, {2, 8, 19, -1}, {2, 8, 20, -1}, {2, 8, 21, -1}, {2, 8, 22, -1}, {2, 8, 23, -1}, {2, 8, 24, -1}, {2, 9, 10, -1}, {2, 9, 11, -1}, {2, 9, 12, -1}, {2, 9, 13, -1}, {2, 9, 14, -1}, {2, 9, 15, -1}, {2, 9, 16, -1}, {2, 9, 17, -1}, {2, 9, 18, -1}, {2, 9, 19, -1}, {2, 9, 20, -1}, {2, 9, 21, -1}, {2, 9, 22, -1}, {2, 9, 23, -1}, {2, 9, 24, -1}, {2, 10, 11, -1}, {2, 10, 12, -1}, {2, 10, 13, -1}, {2, 10, 14, -1}, {2, 10, 15, -1}, {2, 10, 16, -1}, {2, 10, 17, -1}, {2, 10, 18, -1}, {2, 10, 19, -1}, {2, 10, 20, -1}, {2, 10, 21, -1}, {2, 10, 22, -1}, {2, 10, 23, -1}, {2, 10, 24, -1}, {2, 11, 12, -1}, {2, 11, 13, -1}, {2, 11, 14, -1}, {2, 11, 15, -1}, {2, 11, 16, -1}, {2, 11, 17, -1}, {2, 11, 18, -1}, {2, 11, 19, -1}, {2, 11, 20, -1}, {2, 11, 21, -1}, {2, 11, 22, -1}, {2, 11, 23, -1}, {2, 11, 24, -1}, {2, 12, 13, -1}, {2, 12, 14, -1}, {2, 12, 15, -1}, {2, 12, 16, -1}, {2, 12, 17, -1}, {2, 12, 18, -1}, {2, 12, 19, -1}, {2, 12, 20, -1}, {2, 12, 21, -1}, {2, 12, 22, -1}, {2, 12, 23, -1}, {2, 12, 24, -1}, {2, 13, 14, -1}, {2, 13, 15, -1}, {2, 13, 16, -1}, {2, 13, 17, -1}, {2, 13, 18, -1}, {2, 13, 19, -1}, {2, 13, 20, -1}, {2, 13, 21, -1}, {2, 13, 22, -1}, {2, 13, 23, -1}, {2, 13, 24, -1}, {2, 14, 15, -1}, {2, 14, 16, -1}, {2, 14, 17, -1}, {2, 14, 18, -1}, {2, 14, 19, -1}, {2, 14, 20, -1}, {2, 14, 21, -1}, {2, 14, 22, -1}, {2, 14, 23, -1}, {2, 14, 24, -1}, {2, 15, 16, -1}, {2, 15, 17, -1}, {2, 15, 18, -1}, {2, 15, 19, -1}, {2, 15, 20, -1}, {2, 15, 21, -1}, {2, 15, 22, -1}, {2, 15, 23, -1}, {2, 15, 24, -1}, {2, 16, 17, -1}, {2, 16, 18, -1}, {2, 16, 19, -1}, {2, 16, 20, -1}, {2, 16, 21, -1}, {2, 16, 22, -1}, {2, 16, 23, -1}, {2, 16, 24, -1}, {2, 17, 18, -1}, {2, 17, 19, -1}, {2, 17, 20, -1}, {2, 17, 21, -1}, {2, 17, 22, -1}, {2, 17, 23, -1}, {2, 17, 24, -1}, {2, 18, 19, -1}, {2, 18, 20, -1}, {2, 18, 21, -1}, {2, 18, 22, -1}, {2, 18, 23, -1}, {2, 18, 24, -1}, {2, 19, 20, -1}, {2, 19, 21, -1}, {2, 19, 22, -1}, {2, 19, 23, -1}, {2, 19, 24, -1}, {2, 20, 21, -1}, {2, 20, 22, -1}, {2, 20, 23, -1}, {2, 20, 24, -1}, {2, 21, 22, -1}, {2, 21, 23, -1}, {2, 21, 24, -1}, {2, 22, 23, -1}, {2, 22, 24, -1}, {2, 23, 24, -1}, {3, 4, 5, -1}, {3, 4, 6, -1}, {3, 4, 7, -1}, {3, 4, 8, -1}, {3, 4, 9, -1}, {3, 4, 10, -1}, {3, 4, 11, -1}, {3, 4, 12, -1}, {3, 4, 13, -1}, {3, 4, 14, -1}, {3, 4, 15, -1}, {3, 4, 16, -1}, {3, 4, 17, -1}, {3, 4, 18, -1}, {3, 4, 19, -1}, {3, 4, 20, -1}, {3, 4, 21, -1}, {3, 4, 22, -1}, {3, 4, 23, -1}, {3, 4, 24, -1}, {3, 5, 6, -1}, {3, 5, 7, -1}, {3, 5, 8, -1}, {3, 5, 9, -1}, {3, 5, 10, -1}, {3, 5, 11, -1}, {3, 5, 12, -1}, {3, 5, 13, -1}, {3, 5, 14, -1}, {3, 5, 15, -1}, {3, 5, 16, -1}, {3, 5, 17, -1}, {3, 5, 18, -1}, {3, 5, 19, -1}, {3, 5, 20, -1}, {3, 5, 21, -1}, {3, 5, 22, -1}, {3, 5, 23, -1}, {3, 5, 24, -1}, {3, 6, 7, -1}, {3, 6, 8, -1}, {3, 6, 9, -1}, {3, 6, 10, -1}, {3, 6, 11, -1}, {3, 6, 12, -1}, {3, 6, 13, -1}, {3, 6, 14, -1}, {3, 6, 15, -1}, {3, 6, 16, -1}, {3, 6, 17, -1}, {3, 6, 18, -1}, {3, 6, 19, -1}, {3, 6, 20, -1}, {3, 6, 21, -1}, {3, 6, 22, -1}, {3, 6, 23, -1}, {3, 6, 24, -1}, {3, 7, 8, -1}, {3, 7, 9, -1}, {3, 7, 10, -1}, {3, 7, 11, -1}, {3, 7, 12, -1}, {3, 7, 13, -1}, {3, 7, 14, -1}, {3, 7, 15, -1}, {3, 7, 16, -1}, {3, 7, 17, -1}, {3, 7, 18, -1}, {3, 7, 19, -1}, {3, 7, 20, -1}, {3, 7, 21, -1}, {3, 7, 22, -1}, {3, 7, 23, -1}, {3, 7, 24, -1}, {3, 8, 9, -1}, {3, 8, 10, -1}, {3, 8, 11, -1}, {3, 8, 12, -1}, {3, 8, 13, -1}, {3, 8, 14, -1}, {3, 8, 15, -1}, {3, 8, 16, -1}, {3, 8, 17, -1}, {3, 8, 18, -1}, {3, 8, 19, -1}, {3, 8, 20, -1}, {3, 8, 21, -1}, {3, 8, 22, -1}, {3, 8, 23, -1}, {3, 8, 24, -1}, {3, 9, 10, -1}, {3, 9, 11, -1}, {3, 9, 12, -1}, {3, 9, 13, -1}, {3, 9, 14, -1}, {3, 9, 15, -1}, {3, 9, 16, -1}, {3, 9, 17, -1}, {3, 9, 18, -1}, {3, 9, 19, -1}, {3, 9, 20, -1}, {3, 9, 21, -1}, {3, 9, 22, -1}, {3, 9, 23, -1}, {3, 9, 24, -1}, {3, 10, 11, -1}, {3, 10, 12, -1}, {3, 10, 13, -1}, {3, 10, 14, -1}, {3, 10, 15, -1}, {3, 10, 16, -1}, {3, 10, 17, -1}, {3, 10, 18, -1}, {3, 10, 19, -1}, {3, 10, 20, -1}, {3, 10, 21, -1}, {3, 10, 22, -1}, {3, 10, 23, -1}, {3, 10, 24, -1}, {3, 11, 12, -1}, {3, 11, 13, -1}, {3, 11, 14, -1}, {3, 11, 15, -1}, {3, 11, 16, -1}, {3, 11, 17, -1}, {3, 11, 18, -1}, {3, 11, 19, -1}, {3, 11, 20, -1}, {3, 11, 21, -1}, {3, 11, 22, -1}, {3, 11, 23, -1}, {3, 11, 24, -1}, {3, 12, 13, -1}, {3, 12, 14, -1}, {3, 12, 15, -1}, {3, 12, 16, -1}, {3, 12, 17, -1}, {3, 12, 18, -1}, {3, 12, 19, -1}, {3, 12, 20, -1}, {3, 12, 21, -1}, {3, 12, 22, -1}, {3, 12, 23, -1}, {3, 12, 24, -1}, {3, 13, 14, -1}, {3, 13, 15, -1}, {3, 13, 16, -1}, {3, 13, 17, -1}, {3, 13, 18, -1}, {3, 13, 19, -1}, {3, 13, 20, -1}, {3, 13, 21, -1}, {3, 13, 22, -1}, {3, 13, 23, -1}, {3, 13, 24, -1}, {3, 14, 15, -1}, {3, 14, 16, -1}, {3, 14, 17, -1}, {3, 14, 18, -1}, {3, 14, 19, -1}, {3, 14, 20, -1}, {3, 14, 21, -1}, {3, 14, 22, -1}, {3, 14, 23, -1}, {3, 14, 24, -1}, {3, 15, 16, -1}, {3, 15, 17, -1}, {3, 15, 18, -1}, {3, 15, 19, -1}, {3, 15, 20, -1}, {3, 15, 21, -1}, {3, 15, 22, -1}, {3, 15, 23, -1}, {3, 15, 24, -1}, {3, 16, 17, -1}, {3, 16, 18, -1}, {3, 16, 19, -1}, {3, 16, 20, -1}, {3, 16, 21, -1}, {3, 16, 22, -1}, {3, 16, 23, -1}, {3, 16, 24, -1}, {3, 17, 18, -1}, {3, 17, 19, -1}, {3, 17, 20, -1}, {3, 17, 21, -1}, {3, 17, 22, -1}, {3, 17, 23, -1}, {3, 17, 24, -1}, {3, 18, 19, -1}, {3, 18, 20, -1}, {3, 18, 21, -1}, {3, 18, 22, -1}, {3, 18, 23, -1}, {3, 18, 24, -1}, {3, 19, 20, -1}, {3, 19, 21, -1}, {3, 19, 22, -1}, {3, 19, 23, -1}, {3, 19, 24, -1}, {3, 20, 21, -1}, {3, 20, 22, -1}, {3, 20, 23, -1}, {3, 20, 24, -1}, {3, 21, 22, -1}, {3, 21, 23, -1}, {3, 21, 24, -1}, {3, 22, 23, -1}, {3, 22, 24, -1}, {3, 23, 24, -1}, {4, 5, 6, -1}, {4, 5, 7, -1}, {4, 5, 8, -1}, {4, 5, 9, -1}, {4, 5, 10, -1}, {4, 5, 11, -1}, {4, 5, 12, -1}, {4, 5, 13, -1}, {4, 5, 14, -1}, {4, 5, 15, -1}, {4, 5, 16, -1}, {4, 5, 17, -1}, {4, 5, 18, -1}, {4, 5, 19, -1}, {4, 5, 20, -1}, {4, 5, 21, -1}, {4, 5, 22, -1}, {4, 5, 23, -1}, {4, 5, 24, -1}, {4, 6, 7, -1}, {4, 6, 8, -1}, {4, 6, 9, -1}, {4, 6, 10, -1}, {4, 6, 11, -1}, {4, 6, 12, -1}, {4, 6, 13, -1}, {4, 6, 14, -1}, {4, 6, 15, -1}, {4, 6, 16, -1}, {4, 6, 17, -1}, {4, 6, 18, -1}, {4, 6, 19, -1}, {4, 6, 20, -1}, {4, 6, 21, -1}, {4, 6, 22, -1}, {4, 6, 23, -1}, {4, 6, 24, -1}, {4, 7, 8, -1}, {4, 7, 9, -1}, {4, 7, 10, -1}, {4, 7, 11, -1}, {4, 7, 12, -1}, {4, 7, 13, -1}, {4, 7, 14, -1}, {4, 7, 15, -1}, {4, 7, 16, -1}, {4, 7, 17, -1}, {4, 7, 18, -1}, {4, 7, 19, -1}, {4, 7, 20, -1}, {4, 7, 21, -1}, {4, 7, 22, -1}, {4, 7, 23, -1}, {4, 7, 24, -1}, {4, 8, 9, -1}, {4, 8, 10, -1}, {4, 8, 11, -1}, {4, 8, 12, -1}, {4, 8, 13, -1}, {4, 8, 14, -1}, {4, 8, 15, -1}, {4, 8, 16, -1}, {4, 8, 17, -1}, {4, 8, 18, -1}, {4, 8, 19, -1}, {4, 8, 20, -1}, {4, 8, 21, -1}, {4, 8, 22, -1}, {4, 8, 23, -1}, {4, 8, 24, -1}, {4, 9, 10, -1}, {4, 9, 11, -1}, {4, 9, 12, -1}, {4, 9, 13, -1}, {4, 9, 14, -1}, {4, 9, 15, -1}, {4, 9, 16, -1}, {4, 9, 17, -1}, {4, 9, 18, -1}, {4, 9, 19, -1}, {4, 9, 20, -1}, {4, 9, 21, -1}, {4, 9, 22, -1}, {4, 9, 23, -1}, {4, 9, 24, -1}, {4, 10, 11, -1}, {4, 10, 12, -1}, {4, 10, 13, -1}, {4, 10, 14, -1}, {4, 10, 15, -1}, {4, 10, 16, -1}, {4, 10, 17, -1}, {4, 10, 18, -1}, {4, 10, 19, -1}, {4, 10, 20, -1}, {4, 10, 21, -1}, {4, 10, 22, -1}, {4, 10, 23, -1}, {4, 10, 24, -1}, {4, 11, 12, -1}, {4, 11, 13, -1}, {4, 11, 14, -1}, {4, 11, 15, -1}, {4, 11, 16, -1}, {4, 11, 17, -1}, {4, 11, 18, -1}, {4, 11, 19, -1}, {4, 11, 20, -1}, {4, 11, 21, -1}, {4, 11, 22, -1}, {4, 11, 23, -1}, {4, 11, 24, -1}, {4, 12, 13, -1}, {4, 12, 14, -1}, {4, 12, 15, -1}, {4, 12, 16, -1}, {4, 12, 17, -1}, {4, 12, 18, -1}, {4, 12, 19, -1}, {4, 12, 20, -1}, {4, 12, 21, -1}, {4, 12, 22, -1}, {4, 12, 23, -1}, {4, 12, 24, -1}, {4, 13, 14, -1}, {4, 13, 15, -1}, {4, 13, 16, -1}, {4, 13, 17, -1}, {4, 13, 18, -1}, {4, 13, 19, -1}, {4, 13, 20, -1}, {4, 13, 21, -1}, {4, 13, 22, -1}, {4, 13, 23, -1}, {4, 13, 24, -1}, {4, 14, 15, -1}, {4, 14, 16, -1}, {4, 14, 17, -1}, {4, 14, 18, -1}, {4, 14, 19, -1}, {4, 14, 20, -1}, {4, 14, 21, -1}, {4, 14, 22, -1}, {4, 14, 23, -1}, {4, 14, 24, -1}, {4, 15, 16, -1}, {4, 15, 17, -1}, {4, 15, 18, -1}, {4, 15, 19, -1}, {4, 15, 20, -1}, {4, 15, 21, -1}, {4, 15, 22, -1}, {4, 15, 23, -1}, {4, 15, 24, -1}, {4, 16, 17, -1}, {4, 16, 18, -1}, {4, 16, 19, -1}, {4, 16, 20, -1}, {4, 16, 21, -1}, {4, 16, 22, -1}, {4, 16, 23, -1}, {4, 16, 24, -1}, {4, 17, 18, -1}, {4, 17, 19, -1}, {4, 17, 20, -1}, {4, 17, 21, -1}, {4, 17, 22, -1}, {4, 17, 23, -1}, {4, 17, 24, -1}, {4, 18, 19, -1}, {4, 18, 20, -1}, {4, 18, 21, -1}, {4, 18, 22, -1}, {4, 18, 23, -1}, {4, 18, 24, -1}, {4, 19, 20, -1}, {4, 19, 21, -1}, {4, 19, 22, -1}, {4, 19, 23, -1}, {4, 19, 24, -1}, {4, 20, 21, -1}, {4, 20, 22, -1}, {4, 20, 23, -1}, {4, 20, 24, -1}, {4, 21, 22, -1}, {4, 21, 23, -1}, {4, 21, 24, -1}, {4, 22, 23, -1}, {4, 22, 24, -1}, {4, 23, 24, -1}, {5, 6, 7, -1}, {5, 6, 8, -1}, {5, 6, 9, -1}, {5, 6, 10, -1}, {5, 6, 11, -1}, {5, 6, 12, -1}, {5, 6, 13, -1}, {5, 6, 14, -1}, {5, 6, 15, -1}, {5, 6, 16, -1}, {5, 6, 17, -1}, {5, 6, 18, -1}, {5, 6, 19, -1}, {5, 6, 20, -1}, {5, 6, 21, -1}, {5, 6, 22, -1}, {5, 6, 23, -1}, {5, 6, 24, -1}, {5, 7, 8, -1}, {5, 7, 9, -1}, {5, 7, 10, -1}, {5, 7, 11, -1}, {5, 7, 12, -1}, {5, 7, 13, -1}, {5, 7, 14, -1}, {5, 7, 15, -1}, {5, 7, 16, -1}, {5, 7, 17, -1}, {5, 7, 18, -1}, {5, 7, 19, -1}, {5, 7, 20, -1}, {5, 7, 21, -1}, {5, 7, 22, -1}, {5, 7, 23, -1}, {5, 7, 24, -1}, {5, 8, 9, -1}, {5, 8, 10, -1}, {5, 8, 11, -1}, {5, 8, 12, -1}, {5, 8, 13, -1}, {5, 8, 14, -1}, {5, 8, 15, -1}, {5, 8, 16, -1}, {5, 8, 17, -1}, {5, 8, 18, -1}, {5, 8, 19, -1}, {5, 8, 20, -1}, {5, 8, 21, -1}, {5, 8, 22, -1}, {5, 8, 23, -1}, {5, 8, 24, -1}, {5, 9, 10, -1}, {5, 9, 11, -1}, {5, 9, 12, -1}, {5, 9, 13, -1}, {5, 9, 14, -1}, {5, 9, 15, -1}, {5, 9, 16, -1}, {5, 9, 17, -1}, {5, 9, 18, -1}, {5, 9, 19, -1}, {5, 9, 20, -1}, {5, 9, 21, -1}, {5, 9, 22, -1}, {5, 9, 23, -1}, {5, 9, 24, -1}, {5, 10, 11, -1}, {5, 10, 12, -1}, {5, 10, 13, -1}, {5, 10, 14, -1}, {5, 10, 15, -1}, {5, 10, 16, -1}, {5, 10, 17, -1}, {5, 10, 18, -1}, {5, 10, 19, -1}, {5, 10, 20, -1}, {5, 10, 21, -1}, {5, 10, 22, -1}, {5, 10, 23, -1}, {5, 10, 24, -1}, {5, 11, 12, -1}, {5, 11, 13, -1}, {5, 11, 14, -1}, {5, 11, 15, -1}, {5, 11, 16, -1}, {5, 11, 17, -1}, {5, 11, 18, -1}, {5, 11, 19, -1}, {5, 11, 20, -1}, {5, 11, 21, -1}, {5, 11, 22, -1}, {5, 11, 23, -1}, {5, 11, 24, -1}, {5, 12, 13, -1}, {5, 12, 14, -1}, {5, 12, 15, -1}, {5, 12, 16, -1}, {5, 12, 17, -1}, {5, 12, 18, -1}, {5, 12, 19, -1}, {5, 12, 20, -1}, {5, 12, 21, -1}, {5, 12, 22, -1}, {5, 12, 23, -1}, {5, 12, 24, -1}, {5, 13, 14, -1}, {5, 13, 15, -1}, {5, 13, 16, -1}, {5, 13, 17, -1}, {5, 13, 18, -1}, {5, 13, 19, -1}, {5, 13, 20, -1}, {5, 13, 21, -1}, {5, 13, 22, -1}, {5, 13, 23, -1}, {5, 13, 24, -1}, {5, 14, 15, -1}, {5, 14, 16, -1}, {5, 14, 17, -1}, {5, 14, 18, -1}, {5, 14, 19, -1}, {5, 14, 20, -1}, {5, 14, 21, -1}, {5, 14, 22, -1}, {5, 14, 23, -1}, {5, 14, 24, -1}, {5, 15, 16, -1}, {5, 15, 17, -1}, {5, 15, 18, -1}, {5, 15, 19, -1}, {5, 15, 20, -1}, {5, 15, 21, -1}, {5, 15, 22, -1}, {5, 15, 23, -1}, {5, 15, 24, -1}, {5, 16, 17, -1}, {5, 16, 18, -1}, {5, 16, 19, -1}, {5, 16, 20, -1}, {5, 16, 21, -1}, {5, 16, 22, -1}, {5, 16, 23, -1}, {5, 16, 24, -1}, {5, 17, 18, -1}, {5, 17, 19, -1}, {5, 17, 20, -1}, {5, 17, 21, -1}, {5, 17, 22, -1}, {5, 17, 23, -1}, {5, 17, 24, -1}, {5, 18, 19, -1}, {5, 18, 20, -1}, {5, 18, 21, -1}, {5, 18, 22, -1}, {5, 18, 23, -1}, {5, 18, 24, -1}, {5, 19, 20, -1}, {5, 19, 21, -1}, {5, 19, 22, -1}, {5, 19, 23, -1}, {5, 19, 24, -1}, {5, 20, 21, -1}, {5, 20, 22, -1}, {5, 20, 23, -1}, {5, 20, 24, -1}, {5, 21, 22, -1}, {5, 21, 23, -1}, {5, 21, 24, -1}, {5, 22, 23, -1}, {5, 22, 24, -1}, {5, 23, 24, -1}, {6, 7, 8, -1}, {6, 7, 9, -1}, {6, 7, 10, -1}, {6, 7, 11, -1}, {6, 7, 12, -1}, {6, 7, 13, -1}, {6, 7, 14, -1}, {6, 7, 15, -1}, {6, 7, 16, -1}, {6, 7, 17, -1}, {6, 7, 18, -1}, {6, 7, 19, -1}, {6, 7, 20, -1}, {6, 7, 21, -1}, {6, 7, 22, -1}, {6, 7, 23, -1}, {6, 7, 24, -1}, {6, 8, 9, -1}, {6, 8, 10, -1}, {6, 8, 11, -1}, {6, 8, 12, -1}, {6, 8, 13, -1}, {6, 8, 14, -1}, {6, 8, 15, -1}, {6, 8, 16, -1}, {6, 8, 17, -1}, {6, 8, 18, -1}, {6, 8, 19, -1}, {6, 8, 20, -1}, {6, 8, 21, -1}, {6, 8, 22, -1}, {6, 8, 23, -1}, {6, 8, 24, -1}, {6, 9, 10, -1}, {6, 9, 11, -1}, {6, 9, 12, -1}, {6, 9, 13, -1}, {6, 9, 14, -1}, {6, 9, 15, -1}, {6, 9, 16, -1}, {6, 9, 17, -1}, {6, 9, 18, -1}, {6, 9, 19, -1}, {6, 9, 20, -1}, {6, 9, 21, -1}, {6, 9, 22, -1}, {6, 9, 23, -1}, {6, 9, 24, -1}, {6, 10, 11, -1}, {6, 10, 12, -1}, {6, 10, 13, -1}, {6, 10, 14, -1}, {6, 10, 15, -1}, {6, 10, 16, -1}, {6, 10, 17, -1}, {6, 10, 18, -1}, {6, 10, 19, -1}, {6, 10, 20, -1}, {6, 10, 21, -1}, {6, 10, 22, -1}, {6, 10, 23, -1}, {6, 10, 24, -1}, {6, 11, 12, -1}, {6, 11, 13, -1}, {6, 11, 14, -1}, {6, 11, 15, -1}, {6, 11, 16, -1}, {6, 11, 17, -1}, {6, 11, 18, -1}, {6, 11, 19, -1}, {6, 11, 20, -1}, {6, 11, 21, -1}, {6, 11, 22, -1}, {6, 11, 23, -1}, {6, 11, 24, -1}, {6, 12, 13, -1}, {6, 12, 14, -1}, {6, 12, 15, -1}, {6, 12, 16, -1}, {6, 12, 17, -1}, {6, 12, 18, -1}, {6, 12, 19, -1}, {6, 12, 20, -1}, {6, 12, 21, -1}, {6, 12, 22, -1}, {6, 12, 23, -1}, {6, 12, 24, -1}, {6, 13, 14, -1}, {6, 13, 15, -1}, {6, 13, 16, -1}, {6, 13, 17, -1}, {6, 13, 18, -1}, {6, 13, 19, -1}, {6, 13, 20, -1}, {6, 13, 21, -1}, {6, 13, 22, -1}, {6, 13, 23, -1}, {6, 13, 24, -1}, {6, 14, 15, -1}, {6, 14, 16, -1}, {6, 14, 17, -1}, {6, 14, 18, -1}, {6, 14, 19, -1}, {6, 14, 20, -1}, {6, 14, 21, -1}, {6, 14, 22, -1}, {6, 14, 23, -1}, {6, 14, 24, -1}, {6, 15, 16, -1}, {6, 15, 17, -1}, {6, 15, 18, -1}, {6, 15, 19, -1}, {6, 15, 20, -1}, {6, 15, 21, -1}, {6, 15, 22, -1}, {6, 15, 23, -1}, {6, 15, 24, -1}, {6, 16, 17, -1}, {6, 16, 18, -1}, {6, 16, 19, -1}, {6, 16, 20, -1}, {6, 16, 21, -1}, {6, 16, 22, -1}, {6, 16, 23, -1}, {6, 16, 24, -1}, {6, 17, 18, -1}, {6, 17, 19, -1}, {6, 17, 20, -1}, {6, 17, 21, -1}, {6, 17, 22, -1}, {6, 17, 23, -1}, {6, 17, 24, -1}, {6, 18, 19, -1}, {6, 18, 20, -1}, {6, 18, 21, -1}, {6, 18, 22, -1}, {6, 18, 23, -1}, {6, 18, 24, -1}, {6, 19, 20, -1}, {6, 19, 21, -1}, {6, 19, 22, -1}, {6, 19, 23, -1}, {6, 19, 24, -1}, {6, 20, 21, -1}, {6, 20, 22, -1}, {6, 20, 23, -1}, {6, 20, 24, -1}, {6, 21, 22, -1}, {6, 21, 23, -1}, {6, 21, 24, -1}, {6, 22, 23, -1}, {6, 22, 24, -1}, {6, 23, 24, -1}, {7, 8, 9, -1}, {7, 8, 10, -1}, {7, 8, 11, -1}, {7, 8, 12, -1}, {7, 8, 13, -1}, {7, 8, 14, -1}, {7, 8, 15, -1}, {7, 8, 16, -1}, {7, 8, 17, -1}, {7, 8, 18, -1}, {7, 8, 19, -1}, {7, 8, 20, -1}, {7, 8, 21, -1}, {7, 8, 22, -1}, {7, 8, 23, -1}, {7, 8, 24, -1}, {7, 9, 10, -1}, {7, 9, 11, -1}, {7, 9, 12, -1}, {7, 9, 13, -1}, {7, 9, 14, -1}, {7, 9, 15, -1}, {7, 9, 16, -1}, {7, 9, 17, -1}, {7, 9, 18, -1}, {7, 9, 19, -1}, {7, 9, 20, -1}, {7, 9, 21, -1}, {7, 9, 22, -1}, {7, 9, 23, -1}, {7, 9, 24, -1}, {7, 10, 11, -1}, {7, 10, 12, -1}, {7, 10, 13, -1}, {7, 10, 14, -1}, {7, 10, 15, -1}, {7, 10, 16, -1}, {7, 10, 17, -1}, {7, 10, 18, -1}, {7, 10, 19, -1}, {7, 10, 20, -1}, {7, 10, 21, -1}, {7, 10, 22, -1}, {7, 10, 23, -1}, {7, 10, 24, -1}, {7, 11, 12, -1}, {7, 11, 13, -1}, {7, 11, 14, -1}, {7, 11, 15, -1}, {7, 11, 16, -1}, {7, 11, 17, -1}, {7, 11, 18, -1}, {7, 11, 19, -1}, {7, 11, 20, -1}, {7, 11, 21, -1}, {7, 11, 22, -1}, {7, 11, 23, -1}, {7, 11, 24, -1}, {7, 12, 13, -1}, {7, 12, 14, -1}, {7, 12, 15, -1}, {7, 12, 16, -1}, {7, 12, 17, -1}, {7, 12, 18, -1}, {7, 12, 19, -1}, {7, 12, 20, -1}, {7, 12, 21, -1}, {7, 12, 22, -1}, {7, 12, 23, -1}, {7, 12, 24, -1}, {7, 13, 14, -1}, {7, 13, 15, -1}, {7, 13, 16, -1}, {7, 13, 17, -1}, {7, 13, 18, -1}, {7, 13, 19, -1}, {7, 13, 20, -1}, {7, 13, 21, -1}, {7, 13, 22, -1}, {7, 13, 23, -1}, {7, 13, 24, -1}, {7, 14, 15, -1}, {7, 14, 16, -1}, {7, 14, 17, -1}, {7, 14, 18, -1}, {7, 14, 19, -1}, {7, 14, 20, -1}, {7, 14, 21, -1}, {7, 14, 22, -1}, {7, 14, 23, -1}, {7, 14, 24, -1}, {7, 15, 16, -1}, {7, 15, 17, -1}, {7, 15, 18, -1}, {7, 15, 19, -1}, {7, 15, 20, -1}, {7, 15, 21, -1}, {7, 15, 22, -1}, {7, 15, 23, -1}, {7, 15, 24, -1}, {7, 16, 17, -1}, {7, 16, 18, -1}, {7, 16, 19, -1}, {7, 16, 20, -1}, {7, 16, 21, -1}, {7, 16, 22, -1}, {7, 16, 23, -1}, {7, 16, 24, -1}, {7, 17, 18, -1}, {7, 17, 19, -1}, {7, 17, 20, -1}, {7, 17, 21, -1}, {7, 17, 22, -1}, {7, 17, 23, -1}, {7, 17, 24, -1}, {7, 18, 19, -1}, {7, 18, 20, -1}, {7, 18, 21, -1}, {7, 18, 22, -1}, {7, 18, 23, -1}, {7, 18, 24, -1}, {7, 19, 20, -1}, {7, 19, 21, -1}, {7, 19, 22, -1}, {7, 19, 23, -1}, {7, 19, 24, -1}, {7, 20, 21, -1}, {7, 20, 22, -1}, {7, 20, 23, -1}, {7, 20, 24, -1}, {7, 21, 22, -1}, {7, 21, 23, -1}, {7, 21, 24, -1}, {7, 22, 23, -1}, {7, 22, 24, -1}, {7, 23, 24, -1}, {8, 9, 10, -1}, {8, 9, 11, -1}, {8, 9, 12, -1}, {8, 9, 13, -1}, {8, 9, 14, -1}, {8, 9, 15, -1}, {8, 9, 16, -1}, {8, 9, 17, -1}, {8, 9, 18, -1}, {8, 9, 19, -1}, {8, 9, 20, -1}, {8, 9, 21, -1}, {8, 9, 22, -1}, {8, 9, 23, -1}, {8, 9, 24, -1}, {8, 10, 11, -1}, {8, 10, 12, -1}, {8, 10, 13, -1}, {8, 10, 14, -1}, {8, 10, 15, -1}, {8, 10, 16, -1}, {8, 10, 17, -1}, {8, 10, 18, -1}, {8, 10, 19, -1}, {8, 10, 20, -1}, {8, 10, 21, -1}, {8, 10, 22, -1}, {8, 10, 23, -1}, {8, 10, 24, -1}, {8, 11, 12, -1}, {8, 11, 13, -1}, {8, 11, 14, -1}, {8, 11, 15, -1}, {8, 11, 16, -1}, {8, 11, 17, -1}, {8, 11, 18, -1}, {8, 11, 19, -1}, {8, 11, 20, -1}, {8, 11, 21, -1}, {8, 11, 22, -1}, {8, 11, 23, -1}, {8, 11, 24, -1}, {8, 12, 13, -1}, {8, 12, 14, -1}, {8, 12, 15, -1}, {8, 12, 16, -1}, {8, 12, 17, -1}, {8, 12, 18, -1}, {8, 12, 19, -1}, {8, 12, 20, -1}, {8, 12, 21, -1}, {8, 12, 22, -1}, {8, 12, 23, -1}, {8, 12, 24, -1}, {8, 13, 14, -1}, {8, 13, 15, -1}, {8, 13, 16, -1}, {8, 13, 17, -1}, {8, 13, 18, -1}, {8, 13, 19, -1}, {8, 13, 20, -1}, {8, 13, 21, -1}, {8, 13, 22, -1}, {8, 13, 23, -1}, {8, 13, 24, -1}, {8, 14, 15, -1}, {8, 14, 16, -1}, {8, 14, 17, -1}, {8, 14, 18, -1}, {8, 14, 19, -1}, {8, 14, 20, -1}, {8, 14, 21, -1}, {8, 14, 22, -1}, {8, 14, 23, -1}, {8, 14, 24, -1}, {8, 15, 16, -1}, {8, 15, 17, -1}, {8, 15, 18, -1}, {8, 15, 19, -1}, {8, 15, 20, -1}, {8, 15, 21, -1}, {8, 15, 22, -1}, {8, 15, 23, -1}, {8, 15, 24, -1}, {8, 16, 17, -1}, {8, 16, 18, -1}, {8, 16, 19, -1}, {8, 16, 20, -1}, {8, 16, 21, -1}, {8, 16, 22, -1}, {8, 16, 23, -1}, {8, 16, 24, -1}, {8, 17, 18, -1}, {8, 17, 19, -1}, {8, 17, 20, -1}, {8, 17, 21, -1}, {8, 17, 22, -1}, {8, 17, 23, -1}, {8, 17, 24, -1}, {8, 18, 19, -1}, {8, 18, 20, -1}, {8, 18, 21, -1}, {8, 18, 22, -1}, {8, 18, 23, -1}, {8, 18, 24, -1}, {8, 19, 20, -1}, {8, 19, 21, -1}, {8, 19, 22, -1}, {8, 19, 23, -1}, {8, 19, 24, -1}, {8, 20, 21, -1}, {8, 20, 22, -1}, {8, 20, 23, -1}, {8, 20, 24, -1}, {8, 21, 22, -1}, {8, 21, 23, -1}, {8, 21, 24, -1}, {8, 22, 23, -1}, {8, 22, 24, -1}, {8, 23, 24, -1}, {9, 10, 11, -1}, {9, 10, 12, -1}, {9, 10, 13, -1}, {9, 10, 14, -1}, {9, 10, 15, -1}, {9, 10, 16, -1}, {9, 10, 17, -1}, {9, 10, 18, -1}, {9, 10, 19, -1}, {9, 10, 20, -1}, {9, 10, 21, -1}, {9, 10, 22, -1}, {9, 10, 23, -1}, {9, 10, 24, -1}, {9, 11, 12, -1}, {9, 11, 13, -1}, {9, 11, 14, -1}, {9, 11, 15, -1}, {9, 11, 16, -1}, {9, 11, 17, -1}, {9, 11, 18, -1}, {9, 11, 19, -1}, {9, 11, 20, -1}, {9, 11, 21, -1}, {9, 11, 22, -1}, {9, 11, 23, -1}, {9, 11, 24, -1}, {9, 12, 13, -1}, {9, 12, 14, -1}, {9, 12, 15, -1}, {9, 12, 16, -1}, {9, 12, 17, -1}, {9, 12, 18, -1}, {9, 12, 19, -1}, {9, 12, 20, -1}, {9, 12, 21, -1}, {9, 12, 22, -1}, {9, 12, 23, -1}, {9, 12, 24, -1}, {9, 13, 14, -1}, {9, 13, 15, -1}, {9, 13, 16, -1}, {9, 13, 17, -1}, {9, 13, 18, -1}, {9, 13, 19, -1}, {9, 13, 20, -1}, {9, 13, 21, -1}, {9, 13, 22, -1}, {9, 13, 23, -1}, {9, 13, 24, -1}, {9, 14, 15, -1}, {9, 14, 16, -1}, {9, 14, 17, -1}, {9, 14, 18, -1}, {9, 14, 19, -1}, {9, 14, 20, -1}, {9, 14, 21, -1}, {9, 14, 22, -1}, {9, 14, 23, -1}, {9, 14, 24, -1}, {9, 15, 16, -1}, {9, 15, 17, -1}, {9, 15, 18, -1}, {9, 15, 19, -1}, {9, 15, 20, -1}, {9, 15, 21, -1}, {9, 15, 22, -1}, {9, 15, 23, -1}, {9, 15, 24, -1}, {9, 16, 17, -1}, {9, 16, 18, -1}, {9, 16, 19, -1}, {9, 16, 20, -1}, {9, 16, 21, -1}, {9, 16, 22, -1}, {9, 16, 23, -1}, {9, 16, 24, -1}, {9, 17, 18, -1}, {9, 17, 19, -1}, {9, 17, 20, -1}, {9, 17, 21, -1}, {9, 17, 22, -1}, {9, 17, 23, -1}, {9, 17, 24, -1}, {9, 18, 19, -1}, {9, 18, 20, -1}, {9, 18, 21, -1}, {9, 18, 22, -1}, {9, 18, 23, -1}, {9, 18, 24, -1}, {9, 19, 20, -1}, {9, 19, 21, -1}, {9, 19, 22, -1}, {9, 19, 23, -1}, {9, 19, 24, -1}, {9, 20, 21, -1}, {9, 20, 22, -1}, {9, 20, 23, -1}, {9, 20, 24, -1}, {9, 21, 22, -1}, {9, 21, 23, -1}, {9, 21, 24, -1}, {9, 22, 23, -1}, {9, 22, 24, -1}, {9, 23, 24, -1}, {10, 11, 12, -1}, {10, 11, 13, -1}, {10, 11, 14, -1}, {10, 11, 15, -1}, {10, 11, 16, -1}, {10, 11, 17, -1}, {10, 11, 18, -1}, {10, 11, 19, -1}, {10, 11, 20, -1}, {10, 11, 21, -1}, {10, 11, 22, -1}, {10, 11, 23, -1}, {10, 11, 24, -1}, {10, 12, 13, -1}, {10, 12, 14, -1}, {10, 12, 15, -1}, {10, 12, 16, -1}, {10, 12, 17, -1}, {10, 12, 18, -1}, {10, 12, 19, -1}, {10, 12, 20, -1}, {10, 12, 21, -1}, {10, 12, 22, -1}, {10, 12, 23, -1}, {10, 12, 24, -1}, {10, 13, 14, -1}, {10, 13, 15, -1}, {10, 13, 16, -1}, {10, 13, 17, -1}, {10, 13, 18, -1}, {10, 13, 19, -1}, {10, 13, 20, -1}, {10, 13, 21, -1}, {10, 13, 22, -1}, {10, 13, 23, -1}, {10, 13, 24, -1}, {10, 14, 15, -1}, {10, 14, 16, -1}, {10, 14, 17, -1}, {10, 14, 18, -1}, {10, 14, 19, -1}, {10, 14, 20, -1}, {10, 14, 21, -1}, {10, 14, 22, -1}, {10, 14, 23, -1}, {10, 14, 24, -1}, {10, 15, 16, -1}, {10, 15, 17, -1}, {10, 15, 18, -1}, {10, 15, 19, -1}, {10, 15, 20, -1}, {10, 15, 21, -1}, {10, 15, 22, -1}, {10, 15, 23, -1}, {10, 15, 24, -1}, {10, 16, 17, -1}, {10, 16, 18, -1}, {10, 16, 19, -1}, {10, 16, 20, -1}, {10, 16, 21, -1}, {10, 16, 22, -1}, {10, 16, 23, -1}, {10, 16, 24, -1}, {10, 17, 18, -1}, {10, 17, 19, -1}, {10, 17, 20, -1}, {10, 17, 21, -1}, {10, 17, 22, -1}, {10, 17, 23, -1}, {10, 17, 24, -1}, {10, 18, 19, -1}, {10, 18, 20, -1}, {10, 18, 21, -1}, {10, 18, 22, -1}, {10, 18, 23, -1}, {10, 18, 24, -1}, {10, 19, 20, -1}, {10, 19, 21, -1}, {10, 19, 22, -1}, {10, 19, 23, -1}, {10, 19, 24, -1}, {10, 20, 21, -1}, {10, 20, 22, -1}, {10, 20, 23, -1}, {10, 20, 24, -1}, {10, 21, 22, -1}, {10, 21, 23, -1}, {10, 21, 24, -1}, {10, 22, 23, -1}, {10, 22, 24, -1}, {10, 23, 24, -1}, {11, 12, 13, -1}, {11, 12, 14, -1}, {11, 12, 15, -1}, {11, 12, 16, -1}, {11, 12, 17, -1}, {11, 12, 18, -1}, {11, 12, 19, -1}, {11, 12, 20, -1}, {11, 12, 21, -1}, {11, 12, 22, -1}, {11, 12, 23, -1}, {11, 12, 24, -1}, {11, 13, 14, -1}, {11, 13, 15, -1}, {11, 13, 16, -1}, {11, 13, 17, -1}, {11, 13, 18, -1}, {11, 13, 19, -1}, {11, 13, 20, -1}, {11, 13, 21, -1}, {11, 13, 22, -1}, {11, 13, 23, -1}, {11, 13, 24, -1}, {11, 14, 15, -1}, {11, 14, 16, -1}, {11, 14, 17, -1}, {11, 14, 18, -1}, {11, 14, 19, -1}, {11, 14, 20, -1}, {11, 14, 21, -1}, {11, 14, 22, -1}, {11, 14, 23, -1}, {11, 14, 24, -1}, {11, 15, 16, -1}, {11, 15, 17, -1}, {11, 15, 18, -1}, {11, 15, 19, -1}, {11, 15, 20, -1}, {11, 15, 21, -1}, {11, 15, 22, -1}, {11, 15, 23, -1}, {11, 15, 24, -1}, {11, 16, 17, -1}, {11, 16, 18, -1}, {11, 16, 19, -1}, {11, 16, 20, -1}, {11, 16, 21, -1}, {11, 16, 22, -1}, {11, 16, 23, -1}, {11, 16, 24, -1}, {11, 17, 18, -1}, {11, 17, 19, -1}, {11, 17, 20, -1}, {11, 17, 21, -1}, {11, 17, 22, -1}, {11, 17, 23, -1}, {11, 17, 24, -1}, {11, 18, 19, -1}, {11, 18, 20, -1}, {11, 18, 21, -1}, {11, 18, 22, -1}, {11, 18, 23, -1}, {11, 18, 24, -1}, {11, 19, 20, -1}, {11, 19, 21, -1}, {11, 19, 22, -1}, {11, 19, 23, -1}, {11, 19, 24, -1}, {11, 20, 21, -1}, {11, 20, 22, -1}, {11, 20, 23, -1}, {11, 20, 24, -1}, {11, 21, 22, -1}, {11, 21, 23, -1}, {11, 21, 24, -1}, {11, 22, 23, -1}, {11, 22, 24, -1}, {11, 23, 24, -1}, {12, 13, 14, -1}, {12, 13, 15, -1}, {12, 13, 16, -1}, {12, 13, 17, -1}, {12, 13, 18, -1}, {12, 13, 19, -1}, {12, 13, 20, -1}, {12, 13, 21, -1}, {12, 13, 22, -1}, {12, 13, 23, -1}, {12, 13, 24, -1}, {12, 14, 15, -1}, {12, 14, 16, -1}, {12, 14, 17, -1}, {12, 14, 18, -1}, {12, 14, 19, -1}, {12, 14, 20, -1}, {12, 14, 21, -1}, {12, 14, 22, -1}, {12, 14, 23, -1}, {12, 14, 24, -1}, {12, 15, 16, -1}, {12, 15, 17, -1}, {12, 15, 18, -1}, {12, 15, 19, -1}, {12, 15, 20, -1}, {12, 15, 21, -1}, {12, 15, 22, -1}, {12, 15, 23, -1}, {12, 15, 24, -1}, {12, 16, 17, -1}, {12, 16, 18, -1}, {12, 16, 19, -1}, {12, 16, 20, -1}, {12, 16, 21, -1}, {12, 16, 22, -1}, {12, 16, 23, -1}, {12, 16, 24, -1}, {12, 17, 18, -1}, {12, 17, 19, -1}, {12, 17, 20, -1}, {12, 17, 21, -1}, {12, 17, 22, -1}, {12, 17, 23, -1}, {12, 17, 24, -1}, {12, 18, 19, -1}, {12, 18, 20, -1}, {12, 18, 21, -1}, {12, 18, 22, -1}, {12, 18, 23, -1}, {12, 18, 24, -1}, {12, 19, 20, -1}, {12, 19, 21, -1}, {12, 19, 22, -1}, {12, 19, 23, -1}, {12, 19, 24, -1}, {12, 20, 21, -1}, {12, 20, 22, -1}, {12, 20, 23, -1}, {12, 20, 24, -1}, {12, 21, 22, -1}, {12, 21, 23, -1}, {12, 21, 24, -1}, {12, 22, 23, -1}, {12, 22, 24, -1}, {12, 23, 24, -1}, {13, 14, 15, -1}, {13, 14, 16, -1}, {13, 14, 17, -1}, {13, 14, 18, -1}, {13, 14, 19, -1}, {13, 14, 20, -1}, {13, 14, 21, -1}, {13, 14, 22, -1}, {13, 14, 23, -1}, {13, 14, 24, -1}, {13, 15, 16, -1}, {13, 15, 17, -1}, {13, 15, 18, -1}, {13, 15, 19, -1}, {13, 15, 20, -1}, {13, 15, 21, -1}, {13, 15, 22, -1}, {13, 15, 23, -1}, {13, 15, 24, -1}, {13, 16, 17, -1}, {13, 16, 18, -1}, {13, 16, 19, -1}, {13, 16, 20, -1}, {13, 16, 21, -1}, {13, 16, 22, -1}, {13, 16, 23, -1}, {13, 16, 24, -1}, {13, 17, 18, -1}, {13, 17, 19, -1}, {13, 17, 20, -1}, {13, 17, 21, -1}, {13, 17, 22, -1}, {13, 17, 23, -1}, {13, 17, 24, -1}, {13, 18, 19, -1}, {13, 18, 20, -1}, {13, 18, 21, -1}, {13, 18, 22, -1}, {13, 18, 23, -1}, {13, 18, 24, -1}, {13, 19, 20, -1}, {13, 19, 21, -1}, {13, 19, 22, -1}, {13, 19, 23, -1}, {13, 19, 24, -1}, {13, 20, 21, -1}, {13, 20, 22, -1}, {13, 20, 23, -1}, {13, 20, 24, -1}, {13, 21, 22, -1}, {13, 21, 23, -1}, {13, 21, 24, -1}, {13, 22, 23, -1}, {13, 22, 24, -1}, {13, 23, 24, -1}, {14, 15, 16, -1}, {14, 15, 17, -1}, {14, 15, 18, -1}, {14, 15, 19, -1}, {14, 15, 20, -1}, {14, 15, 21, -1}, {14, 15, 22, -1}, {14, 15, 23, -1}, {14, 15, 24, -1}, {14, 16, 17, -1}, {14, 16, 18, -1}, {14, 16, 19, -1}, {14, 16, 20, -1}, {14, 16, 21, -1}, {14, 16, 22, -1}, {14, 16, 23, -1}, {14, 16, 24, -1}, {14, 17, 18, -1}, {14, 17, 19, -1}, {14, 17, 20, -1}, {14, 17, 21, -1}, {14, 17, 22, -1}, {14, 17, 23, -1}, {14, 17, 24, -1}, {14, 18, 19, -1}, {14, 18, 20, -1}, {14, 18, 21, -1}, {14, 18, 22, -1}, {14, 18, 23, -1}, {14, 18, 24, -1}, {14, 19, 20, -1}, {14, 19, 21, -1}, {14, 19, 22, -1}, {14, 19, 23, -1}, {14, 19, 24, -1}, {14, 20, 21, -1}, {14, 20, 22, -1}, {14, 20, 23, -1}, {14, 20, 24, -1}, {14, 21, 22, -1}, {14, 21, 23, -1}, {14, 21, 24, -1}, {14, 22, 23, -1}, {14, 22, 24, -1}, {14, 23, 24, -1}, {15, 16, 17, -1}, {15, 16, 18, -1}, {15, 16, 19, -1}, {15, 16, 20, -1}, {15, 16, 21, -1}, {15, 16, 22, -1}, {15, 16, 23, -1}, {15, 16, 24, -1}, {15, 17, 18, -1}, {15, 17, 19, -1}, {15, 17, 20, -1}, {15, 17, 21, -1}, {15, 17, 22, -1}, {15, 17, 23, -1}, {15, 17, 24, -1}, {15, 18, 19, -1}, {15, 18, 20, -1}, {15, 18, 21, -1}, {15, 18, 22, -1}, {15, 18, 23, -1}, {15, 18, 24, -1}, {15, 19, 20, -1}, {15, 19, 21, -1}, {15, 19, 22, -1}, {15, 19, 23, -1}, {15, 19, 24, -1}, {15, 20, 21, -1}, {15, 20, 22, -1}, {15, 20, 23, -1}, {15, 20, 24, -1}, {15, 21, 22, -1}, {15, 21, 23, -1}, {15, 21, 24, -1}, {15, 22, 23, -1}, {15, 22, 24, -1}, {15, 23, 24, -1}, {16, 17, 18, -1}, {16, 17, 19, -1}, {16, 17, 20, -1}, {16, 17, 21, -1}, {16, 17, 22, -1}, {16, 17, 23, -1}, {16, 17, 24, -1}, {16, 18, 19, -1}, {16, 18, 20, -1}, {16, 18, 21, -1}, {16, 18, 22, -1}, {16, 18, 23, -1}, {16, 18, 24, -1}, {16, 19, 20, -1}, {16, 19, 21, -1}, {16, 19, 22, -1}, {16, 19, 23, -1}, {16, 19, 24, -1}, {16, 20, 21, -1}, {16, 20, 22, -1}, {16, 20, 23, -1}, {16, 20, 24, -1}, {16, 21, 22, -1}, {16, 21, 23, -1}, {16, 21, 24, -1}, {16, 22, 23, -1}, {16, 22, 24, -1}, {16, 23, 24, -1}, {17, 18, 19, -1}, {17, 18, 20, -1}, {17, 18, 21, -1}, {17, 18, 22, -1}, {17, 18, 23, -1}, {17, 18, 24, -1}, {17, 19, 20, -1}, {17, 19, 21, -1}, {17, 19, 22, -1}, {17, 19, 23, -1}, {17, 19, 24, -1}, {17, 20, 21, -1}, {17, 20, 22, -1}, {17, 20, 23, -1}, {17, 20, 24, -1}, {17, 21, 22, -1}, {17, 21, 23, -1}, {17, 21, 24, -1}, {17, 22, 23, -1}, {17, 22, 24, -1}, {17, 23, 24, -1}, {18, 19, 20, -1}, {18, 19, 21, -1}, {18, 19, 22, -1}, {18, 19, 23, -1}, {18, 19, 24, -1}, {18, 20, 21, -1}, {18, 20, 22, -1}, {18, 20, 23, -1}, {18, 20, 24, -1}, {18, 21, 22, -1}, {18, 21, 23, -1}, {18, 21, 24, -1}, {18, 22, 23, -1}, {18, 22, 24, -1}, {18, 23, 24, -1}, {19, 20, 21, -1}, {19, 20, 22, -1}, {19, 20, 23, -1}, {19, 20, 24, -1}, {19, 21, 22, -1}, {19, 21, 23, -1}, {19, 21, 24, -1}, {19, 22, 23, -1}, {19, 22, 24, -1}, {19, 23, 24, -1}, {20, 21, 22, -1}, {20, 21, 23, -1}, {20, 21, 24, -1}, {20, 22, 23, -1}, {20, 22, 24, -1}, {20, 23, 24, -1}, {21, 22, 23, -1}, {21, 22, 24, -1}, {21, 23, 24, -1}, {22, 23, 24, -1}} ;
88 #define NUM_26_3_COMBS 351
89 int failure_combs_26_3[NUM_26_3_COMBS][4] = {{0, -1, -1, -1}, {1, -1, -1, -1}, {2, -1, -1, -1}, {3, -1, -1, -1}, {4, -1, -1, -1}, {5, -1, -1, -1}, {6, -1, -1, -1}, {7, -1, -1, -1}, {8, -1, -1, -1}, {9, -1, -1, -1}, {10, -1, -1, -1}, {11, -1, -1, -1}, {12, -1, -1, -1}, {13, -1, -1, -1}, {14, -1, -1, -1}, {15, -1, -1, -1}, {16, -1, -1, -1}, {17, -1, -1, -1}, {18, -1, -1, -1}, {19, -1, -1, -1}, {20, -1, -1, -1}, {21, -1, -1, -1}, {22, -1, -1, -1}, {23, -1, -1, -1}, {24, -1, -1, -1}, {25, -1, -1, -1}, {0, 1, -1, -1}, {0, 2, -1, -1}, {0, 3, -1, -1}, {0, 4, -1, -1}, {0, 5, -1, -1}, {0, 6, -1, -1}, {0, 7, -1, -1}, {0, 8, -1, -1}, {0, 9, -1, -1}, {0, 10, -1, -1}, {0, 11, -1, -1}, {0, 12, -1, -1}, {0, 13, -1, -1}, {0, 14, -1, -1}, {0, 15, -1, -1}, {0, 16, -1, -1}, {0, 17, -1, -1}, {0, 18, -1, -1}, {0, 19, -1, -1}, {0, 20, -1, -1}, {0, 21, -1, -1}, {0, 22, -1, -1}, {0, 23, -1, -1}, {0, 24, -1, -1}, {0, 25, -1, -1}, {1, 2, -1, -1}, {1, 3, -1, -1}, {1, 4, -1, -1}, {1, 5, -1, -1}, {1, 6, -1, -1}, {1, 7, -1, -1}, {1, 8, -1, -1}, {1, 9, -1, -1}, {1, 10, -1, -1}, {1, 11, -1, -1}, {1, 12, -1, -1}, {1, 13, -1, -1}, {1, 14, -1, -1}, {1, 15, -1, -1}, {1, 16, -1, -1}, {1, 17, -1, -1}, {1, 18, -1, -1}, {1, 19, -1, -1}, {1, 20, -1, -1}, {1, 21, -1, -1}, {1, 22, -1, -1}, {1, 23, -1, -1}, {1, 24, -1, -1}, {1, 25, -1, -1}, {2, 3, -1, -1}, {2, 4, -1, -1}, {2, 5, -1, -1}, {2, 6, -1, -1}, {2, 7, -1, -1}, {2, 8, -1, -1}, {2, 9, -1, -1}, {2, 10, -1, -1}, {2, 11, -1, -1}, {2, 12, -1, -1}, {2, 13, -1, -1}, {2, 14, -1, -1}, {2, 15, -1, -1}, {2, 16, -1, -1}, {2, 17, -1, -1}, {2, 18, -1, -1}, {2, 19, -1, -1}, {2, 20, -1, -1}, {2, 21, -1, -1}, {2, 22, -1, -1}, {2, 23, -1, -1}, {2, 24, -1, -1}, {2, 25, -1, -1}, {3, 4, -1, -1}, {3, 5, -1, -1}, {3, 6, -1, -1}, {3, 7, -1, -1}, {3, 8, -1, -1}, {3, 9, -1, -1}, {3, 10, -1, -1}, {3, 11, -1, -1}, {3, 12, -1, -1}, {3, 13, -1, -1}, {3, 14, -1, -1}, {3, 15, -1, -1}, {3, 16, -1, -1}, {3, 17, -1, -1}, {3, 18, -1, -1}, {3, 19, -1, -1}, {3, 20, -1, -1}, {3, 21, -1, -1}, {3, 22, -1, -1}, {3, 23, -1, -1}, {3, 24, -1, -1}, {3, 25, -1, -1}, {4, 5, -1, -1}, {4, 6, -1, -1}, {4, 7, -1, -1}, {4, 8, -1, -1}, {4, 9, -1, -1}, {4, 10, -1, -1}, {4, 11, -1, -1}, {4, 12, -1, -1}, {4, 13, -1, -1}, {4, 14, -1, -1}, {4, 15, -1, -1}, {4, 16, -1, -1}, {4, 17, -1, -1}, {4, 18, -1, -1}, {4, 19, -1, -1}, {4, 20, -1, -1}, {4, 21, -1, -1}, {4, 22, -1, -1}, {4, 23, -1, -1}, {4, 24, -1, -1}, {4, 25, -1, -1}, {5, 6, -1, -1}, {5, 7, -1, -1}, {5, 8, -1, -1}, {5, 9, -1, -1}, {5, 10, -1, -1}, {5, 11, -1, -1}, {5, 12, -1, -1}, {5, 13, -1, -1}, {5, 14, -1, -1}, {5, 15, -1, -1}, {5, 16, -1, -1}, {5, 17, -1, -1}, {5, 18, -1, -1}, {5, 19, -1, -1}, {5, 20, -1, -1}, {5, 21, -1, -1}, {5, 22, -1, -1}, {5, 23, -1, -1}, {5, 24, -1, -1}, {5, 25, -1, -1}, {6, 7, -1, -1}, {6, 8, -1, -1}, {6, 9, -1, -1}, {6, 10, -1, -1}, {6, 11, -1, -1}, {6, 12, -1, -1}, {6, 13, -1, -1}, {6, 14, -1, -1}, {6, 15, -1, -1}, {6, 16, -1, -1}, {6, 17, -1, -1}, {6, 18, -1, -1}, {6, 19, -1, -1}, {6, 20, -1, -1}, {6, 21, -1, -1}, {6, 22, -1, -1}, {6, 23, -1, -1}, {6, 24, -1, -1}, {6, 25, -1, -1}, {7, 8, -1, -1}, {7, 9, -1, -1}, {7, 10, -1, -1}, {7, 11, -1, -1}, {7, 12, -1, -1}, {7, 13, -1, -1}, {7, 14, -1, -1}, {7, 15, -1, -1}, {7, 16, -1, -1}, {7, 17, -1, -1}, {7, 18, -1, -1}, {7, 19, -1, -1}, {7, 20, -1, -1}, {7, 21, -1, -1}, {7, 22, -1, -1}, {7, 23, -1, -1}, {7, 24, -1, -1}, {7, 25, -1, -1}, {8, 9, -1, -1}, {8, 10, -1, -1}, {8, 11, -1, -1}, {8, 12, -1, -1}, {8, 13, -1, -1}, {8, 14, -1, -1}, {8, 15, -1, -1}, {8, 16, -1, -1}, {8, 17, -1, -1}, {8, 18, -1, -1}, {8, 19, -1, -1}, {8, 20, -1, -1}, {8, 21, -1, -1}, {8, 22, -1, -1}, {8, 23, -1, -1}, {8, 24, -1, -1}, {8, 25, -1, -1}, {9, 10, -1, -1}, {9, 11, -1, -1}, {9, 12, -1, -1}, {9, 13, -1, -1}, {9, 14, -1, -1}, {9, 15, -1, -1}, {9, 16, -1, -1}, {9, 17, -1, -1}, {9, 18, -1, -1}, {9, 19, -1, -1}, {9, 20, -1, -1}, {9, 21, -1, -1}, {9, 22, -1, -1}, {9, 23, -1, -1}, {9, 24, -1, -1}, {9, 25, -1, -1}, {10, 11, -1, -1}, {10, 12, -1, -1}, {10, 13, -1, -1}, {10, 14, -1, -1}, {10, 15, -1, -1}, {10, 16, -1, -1}, {10, 17, -1, -1}, {10, 18, -1, -1}, {10, 19, -1, -1}, {10, 20, -1, -1}, {10, 21, -1, -1}, {10, 22, -1, -1}, {10, 23, -1, -1}, {10, 24, -1, -1}, {10, 25, -1, -1}, {11, 12, -1, -1}, {11, 13, -1, -1}, {11, 14, -1, -1}, {11, 15, -1, -1}, {11, 16, -1, -1}, {11, 17, -1, -1}, {11, 18, -1, -1}, {11, 19, -1, -1}, {11, 20, -1, -1}, {11, 21, -1, -1}, {11, 22, -1, -1}, {11, 23, -1, -1}, {11, 24, -1, -1}, {11, 25, -1, -1}, {12, 13, -1, -1}, {12, 14, -1, -1}, {12, 15, -1, -1}, {12, 16, -1, -1}, {12, 17, -1, -1}, {12, 18, -1, -1}, {12, 19, -1, -1}, {12, 20, -1, -1}, {12, 21, -1, -1}, {12, 22, -1, -1}, {12, 23, -1, -1}, {12, 24, -1, -1}, {12, 25, -1, -1}, {13, 14, -1, -1}, {13, 15, -1, -1}, {13, 16, -1, -1}, {13, 17, -1, -1}, {13, 18, -1, -1}, {13, 19, -1, -1}, {13, 20, -1, -1}, {13, 21, -1, -1}, {13, 22, -1, -1}, {13, 23, -1, -1}, {13, 24, -1, -1}, {13, 25, -1, -1}, {14, 15, -1, -1}, {14, 16, -1, -1}, {14, 17, -1, -1}, {14, 18, -1, -1}, {14, 19, -1, -1}, {14, 20, -1, -1}, {14, 21, -1, -1}, {14, 22, -1, -1}, {14, 23, -1, -1}, {14, 24, -1, -1}, {14, 25, -1, -1}, {15, 16, -1, -1}, {15, 17, -1, -1}, {15, 18, -1, -1}, {15, 19, -1, -1}, {15, 20, -1, -1}, {15, 21, -1, -1}, {15, 22, -1, -1}, {15, 23, -1, -1}, {15, 24, -1, -1}, {15, 25, -1, -1}, {16, 17, -1, -1}, {16, 18, -1, -1}, {16, 19, -1, -1}, {16, 20, -1, -1}, {16, 21, -1, -1}, {16, 22, -1, -1}, {16, 23, -1, -1}, {16, 24, -1, -1}, {16, 25, -1, -1}, {17, 18, -1, -1}, {17, 19, -1, -1}, {17, 20, -1, -1}, {17, 21, -1, -1}, {17, 22, -1, -1}, {17, 23, -1, -1}, {17, 24, -1, -1}, {17, 25, -1, -1}, {18, 19, -1, -1}, {18, 20, -1, -1}, {18, 21, -1, -1}, {18, 22, -1, -1}, {18, 23, -1, -1}, {18, 24, -1, -1}, {18, 25, -1, -1}, {19, 20, -1, -1}, {19, 21, -1, -1}, {19, 22, -1, -1}, {19, 23, -1, -1}, {19, 24, -1, -1}, {19, 25, -1, -1}, {20, 21, -1, -1}, {20, 22, -1, -1}, {20, 23, -1, -1}, {20, 24, -1, -1}, {20, 25, -1, -1}, {21, 22, -1, -1}, {21, 23, -1, -1}, {21, 24, -1, -1}, {21, 25, -1, -1}, {22, 23, -1, -1}, {22, 24, -1, -1}, {22, 25, -1, -1}, {23, 24, -1, -1}, {23, 25, -1, -1}, {24, 25, -1, -1}} ;
90 #define NUM_26_4_COMBS 2951
91 int failure_combs_26_4[NUM_26_4_COMBS][4] = {{0, -1, -1, -1}, {1, -1, -1, -1}, {2, -1, -1, -1}, {3, -1, -1, -1}, {4, -1, -1, -1}, {5, -1, -1, -1}, {6, -1, -1, -1}, {7, -1, -1, -1}, {8, -1, -1, -1}, {9, -1, -1, -1}, {10, -1, -1, -1}, {11, -1, -1, -1}, {12, -1, -1, -1}, {13, -1, -1, -1}, {14, -1, -1, -1}, {15, -1, -1, -1}, {16, -1, -1, -1}, {17, -1, -1, -1}, {18, -1, -1, -1}, {19, -1, -1, -1}, {20, -1, -1, -1}, {21, -1, -1, -1}, {22, -1, -1, -1}, {23, -1, -1, -1}, {24, -1, -1, -1}, {25, -1, -1, -1}, {0, 1, -1, -1}, {0, 2, -1, -1}, {0, 3, -1, -1}, {0, 4, -1, -1}, {0, 5, -1, -1}, {0, 6, -1, -1}, {0, 7, -1, -1}, {0, 8, -1, -1}, {0, 9, -1, -1}, {0, 10, -1, -1}, {0, 11, -1, -1}, {0, 12, -1, -1}, {0, 13, -1, -1}, {0, 14, -1, -1}, {0, 15, -1, -1}, {0, 16, -1, -1}, {0, 17, -1, -1}, {0, 18, -1, -1}, {0, 19, -1, -1}, {0, 20, -1, -1}, {0, 21, -1, -1}, {0, 22, -1, -1}, {0, 23, -1, -1}, {0, 24, -1, -1}, {0, 25, -1, -1}, {1, 2, -1, -1}, {1, 3, -1, -1}, {1, 4, -1, -1}, {1, 5, -1, -1}, {1, 6, -1, -1}, {1, 7, -1, -1}, {1, 8, -1, -1}, {1, 9, -1, -1}, {1, 10, -1, -1}, {1, 11, -1, -1}, {1, 12, -1, -1}, {1, 13, -1, -1}, {1, 14, -1, -1}, {1, 15, -1, -1}, {1, 16, -1, -1}, {1, 17, -1, -1}, {1, 18, -1, -1}, {1, 19, -1, -1}, {1, 20, -1, -1}, {1, 21, -1, -1}, {1, 22, -1, -1}, {1, 23, -1, -1}, {1, 24, -1, -1}, {1, 25, -1, -1}, {2, 3, -1, -1}, {2, 4, -1, -1}, {2, 5, -1, -1}, {2, 6, -1, -1}, {2, 7, -1, -1}, {2, 8, -1, -1}, {2, 9, -1, -1}, {2, 10, -1, -1}, {2, 11, -1, -1}, {2, 12, -1, -1}, {2, 13, -1, -1}, {2, 14, -1, -1}, {2, 15, -1, -1}, {2, 16, -1, -1}, {2, 17, -1, -1}, {2, 18, -1, -1}, {2, 19, -1, -1}, {2, 20, -1, -1}, {2, 21, -1, -1}, {2, 22, -1, -1}, {2, 23, -1, -1}, {2, 24, -1, -1}, {2, 25, -1, -1}, {3, 4, -1, -1}, {3, 5, -1, -1}, {3, 6, -1, -1}, {3, 7, -1, -1}, {3, 8, -1, -1}, {3, 9, -1, -1}, {3, 10, -1, -1}, {3, 11, -1, -1}, {3, 12, -1, -1}, {3, 13, -1, -1}, {3, 14, -1, -1}, {3, 15, -1, -1}, {3, 16, -1, -1}, {3, 17, -1, -1}, {3, 18, -1, -1}, {3, 19, -1, -1}, {3, 20, -1, -1}, {3, 21, -1, -1}, {3, 22, -1, -1}, {3, 23, -1, -1}, {3, 24, -1, -1}, {3, 25, -1, -1}, {4, 5, -1, -1}, {4, 6, -1, -1}, {4, 7, -1, -1}, {4, 8, -1, -1}, {4, 9, -1, -1}, {4, 10, -1, -1}, {4, 11, -1, -1}, {4, 12, -1, -1}, {4, 13, -1, -1}, {4, 14, -1, -1}, {4, 15, -1, -1}, {4, 16, -1, -1}, {4, 17, -1, -1}, {4, 18, -1, -1}, {4, 19, -1, -1}, {4, 20, -1, -1}, {4, 21, -1, -1}, {4, 22, -1, -1}, {4, 23, -1, -1}, {4, 24, -1, -1}, {4, 25, -1, -1}, {5, 6, -1, -1}, {5, 7, -1, -1}, {5, 8, -1, -1}, {5, 9, -1, -1}, {5, 10, -1, -1}, {5, 11, -1, -1}, {5, 12, -1, -1}, {5, 13, -1, -1}, {5, 14, -1, -1}, {5, 15, -1, -1}, {5, 16, -1, -1}, {5, 17, -1, -1}, {5, 18, -1, -1}, {5, 19, -1, -1}, {5, 20, -1, -1}, {5, 21, -1, -1}, {5, 22, -1, -1}, {5, 23, -1, -1}, {5, 24, -1, -1}, {5, 25, -1, -1}, {6, 7, -1, -1}, {6, 8, -1, -1}, {6, 9, -1, -1}, {6, 10, -1, -1}, {6, 11, -1, -1}, {6, 12, -1, -1}, {6, 13, -1, -1}, {6, 14, -1, -1}, {6, 15, -1, -1}, {6, 16, -1, -1}, {6, 17, -1, -1}, {6, 18, -1, -1}, {6, 19, -1, -1}, {6, 20, -1, -1}, {6, 21, -1, -1}, {6, 22, -1, -1}, {6, 23, -1, -1}, {6, 24, -1, -1}, {6, 25, -1, -1}, {7, 8, -1, -1}, {7, 9, -1, -1}, {7, 10, -1, -1}, {7, 11, -1, -1}, {7, 12, -1, -1}, {7, 13, -1, -1}, {7, 14, -1, -1}, {7, 15, -1, -1}, {7, 16, -1, -1}, {7, 17, -1, -1}, {7, 18, -1, -1}, {7, 19, -1, -1}, {7, 20, -1, -1}, {7, 21, -1, -1}, {7, 22, -1, -1}, {7, 23, -1, -1}, {7, 24, -1, -1}, {7, 25, -1, -1}, {8, 9, -1, -1}, {8, 10, -1, -1}, {8, 11, -1, -1}, {8, 12, -1, -1}, {8, 13, -1, -1}, {8, 14, -1, -1}, {8, 15, -1, -1}, {8, 16, -1, -1}, {8, 17, -1, -1}, {8, 18, -1, -1}, {8, 19, -1, -1}, {8, 20, -1, -1}, {8, 21, -1, -1}, {8, 22, -1, -1}, {8, 23, -1, -1}, {8, 24, -1, -1}, {8, 25, -1, -1}, {9, 10, -1, -1}, {9, 11, -1, -1}, {9, 12, -1, -1}, {9, 13, -1, -1}, {9, 14, -1, -1}, {9, 15, -1, -1}, {9, 16, -1, -1}, {9, 17, -1, -1}, {9, 18, -1, -1}, {9, 19, -1, -1}, {9, 20, -1, -1}, {9, 21, -1, -1}, {9, 22, -1, -1}, {9, 23, -1, -1}, {9, 24, -1, -1}, {9, 25, -1, -1}, {10, 11, -1, -1}, {10, 12, -1, -1}, {10, 13, -1, -1}, {10, 14, -1, -1}, {10, 15, -1, -1}, {10, 16, -1, -1}, {10, 17, -1, -1}, {10, 18, -1, -1}, {10, 19, -1, -1}, {10, 20, -1, -1}, {10, 21, -1, -1}, {10, 22, -1, -1}, {10, 23, -1, -1}, {10, 24, -1, -1}, {10, 25, -1, -1}, {11, 12, -1, -1}, {11, 13, -1, -1}, {11, 14, -1, -1}, {11, 15, -1, -1}, {11, 16, -1, -1}, {11, 17, -1, -1}, {11, 18, -1, -1}, {11, 19, -1, -1}, {11, 20, -1, -1}, {11, 21, -1, -1}, {11, 22, -1, -1}, {11, 23, -1, -1}, {11, 24, -1, -1}, {11, 25, -1, -1}, {12, 13, -1, -1}, {12, 14, -1, -1}, {12, 15, -1, -1}, {12, 16, -1, -1}, {12, 17, -1, -1}, {12, 18, -1, -1}, {12, 19, -1, -1}, {12, 20, -1, -1}, {12, 21, -1, -1}, {12, 22, -1, -1}, {12, 23, -1, -1}, {12, 24, -1, -1}, {12, 25, -1, -1}, {13, 14, -1, -1}, {13, 15, -1, -1}, {13, 16, -1, -1}, {13, 17, -1, -1}, {13, 18, -1, -1}, {13, 19, -1, -1}, {13, 20, -1, -1}, {13, 21, -1, -1}, {13, 22, -1, -1}, {13, 23, -1, -1}, {13, 24, -1, -1}, {13, 25, -1, -1}, {14, 15, -1, -1}, {14, 16, -1, -1}, {14, 17, -1, -1}, {14, 18, -1, -1}, {14, 19, -1, -1}, {14, 20, -1, -1}, {14, 21, -1, -1}, {14, 22, -1, -1}, {14, 23, -1, -1}, {14, 24, -1, -1}, {14, 25, -1, -1}, {15, 16, -1, -1}, {15, 17, -1, -1}, {15, 18, -1, -1}, {15, 19, -1, -1}, {15, 20, -1, -1}, {15, 21, -1, -1}, {15, 22, -1, -1}, {15, 23, -1, -1}, {15, 24, -1, -1}, {15, 25, -1, -1}, {16, 17, -1, -1}, {16, 18, -1, -1}, {16, 19, -1, -1}, {16, 20, -1, -1}, {16, 21, -1, -1}, {16, 22, -1, -1}, {16, 23, -1, -1}, {16, 24, -1, -1}, {16, 25, -1, -1}, {17, 18, -1, -1}, {17, 19, -1, -1}, {17, 20, -1, -1}, {17, 21, -1, -1}, {17, 22, -1, -1}, {17, 23, -1, -1}, {17, 24, -1, -1}, {17, 25, -1, -1}, {18, 19, -1, -1}, {18, 20, -1, -1}, {18, 21, -1, -1}, {18, 22, -1, -1}, {18, 23, -1, -1}, {18, 24, -1, -1}, {18, 25, -1, -1}, {19, 20, -1, -1}, {19, 21, -1, -1}, {19, 22, -1, -1}, {19, 23, -1, -1}, {19, 24, -1, -1}, {19, 25, -1, -1}, {20, 21, -1, -1}, {20, 22, -1, -1}, {20, 23, -1, -1}, {20, 24, -1, -1}, {20, 25, -1, -1}, {21, 22, -1, -1}, {21, 23, -1, -1}, {21, 24, -1, -1}, {21, 25, -1, -1}, {22, 23, -1, -1}, {22, 24, -1, -1}, {22, 25, -1, -1}, {23, 24, -1, -1}, {23, 25, -1, -1}, {24, 25, -1, -1}, {0, 1, 2, -1}, {0, 1, 3, -1}, {0, 1, 4, -1}, {0, 1, 5, -1}, {0, 1, 6, -1}, {0, 1, 7, -1}, {0, 1, 8, -1}, {0, 1, 9, -1}, {0, 1, 10, -1}, {0, 1, 11, -1}, {0, 1, 12, -1}, {0, 1, 13, -1}, {0, 1, 14, -1}, {0, 1, 15, -1}, {0, 1, 16, -1}, {0, 1, 17, -1}, {0, 1, 18, -1}, {0, 1, 19, -1}, {0, 1, 20, -1}, {0, 1, 21, -1}, {0, 1, 22, -1}, {0, 1, 23, -1}, {0, 1, 24, -1}, {0, 1, 25, -1}, {0, 2, 3, -1}, {0, 2, 4, -1}, {0, 2, 5, -1}, {0, 2, 6, -1}, {0, 2, 7, -1}, {0, 2, 8, -1}, {0, 2, 9, -1}, {0, 2, 10, -1}, {0, 2, 11, -1}, {0, 2, 12, -1}, {0, 2, 13, -1}, {0, 2, 14, -1}, {0, 2, 15, -1}, {0, 2, 16, -1}, {0, 2, 17, -1}, {0, 2, 18, -1}, {0, 2, 19, -1}, {0, 2, 20, -1}, {0, 2, 21, -1}, {0, 2, 22, -1}, {0, 2, 23, -1}, {0, 2, 24, -1}, {0, 2, 25, -1}, {0, 3, 4, -1}, {0, 3, 5, -1}, {0, 3, 6, -1}, {0, 3, 7, -1}, {0, 3, 8, -1}, {0, 3, 9, -1}, {0, 3, 10, -1}, {0, 3, 11, -1}, {0, 3, 12, -1}, {0, 3, 13, -1}, {0, 3, 14, -1}, {0, 3, 15, -1}, {0, 3, 16, -1}, {0, 3, 17, -1}, {0, 3, 18, -1}, {0, 3, 19, -1}, {0, 3, 20, -1}, {0, 3, 21, -1}, {0, 3, 22, -1}, {0, 3, 23, -1}, {0, 3, 24, -1}, {0, 3, 25, -1}, {0, 4, 5, -1}, {0, 4, 6, -1}, {0, 4, 7, -1}, {0, 4, 8, -1}, {0, 4, 9, -1}, {0, 4, 10, -1}, {0, 4, 11, -1}, {0, 4, 12, -1}, {0, 4, 13, -1}, {0, 4, 14, -1}, {0, 4, 15, -1}, {0, 4, 16, -1}, {0, 4, 17, -1}, {0, 4, 18, -1}, {0, 4, 19, -1}, {0, 4, 20, -1}, {0, 4, 21, -1}, {0, 4, 22, -1}, {0, 4, 23, -1}, {0, 4, 24, -1}, {0, 4, 25, -1}, {0, 5, 6, -1}, {0, 5, 7, -1}, {0, 5, 8, -1}, {0, 5, 9, -1}, {0, 5, 10, -1}, {0, 5, 11, -1}, {0, 5, 12, -1}, {0, 5, 13, -1}, {0, 5, 14, -1}, {0, 5, 15, -1}, {0, 5, 16, -1}, {0, 5, 17, -1}, {0, 5, 18, -1}, {0, 5, 19, -1}, {0, 5, 20, -1}, {0, 5, 21, -1}, {0, 5, 22, -1}, {0, 5, 23, -1}, {0, 5, 24, -1}, {0, 5, 25, -1}, {0, 6, 7, -1}, {0, 6, 8, -1}, {0, 6, 9, -1}, {0, 6, 10, -1}, {0, 6, 11, -1}, {0, 6, 12, -1}, {0, 6, 13, -1}, {0, 6, 14, -1}, {0, 6, 15, -1}, {0, 6, 16, -1}, {0, 6, 17, -1}, {0, 6, 18, -1}, {0, 6, 19, -1}, {0, 6, 20, -1}, {0, 6, 21, -1}, {0, 6, 22, -1}, {0, 6, 23, -1}, {0, 6, 24, -1}, {0, 6, 25, -1}, {0, 7, 8, -1}, {0, 7, 9, -1}, {0, 7, 10, -1}, {0, 7, 11, -1}, {0, 7, 12, -1}, {0, 7, 13, -1}, {0, 7, 14, -1}, {0, 7, 15, -1}, {0, 7, 16, -1}, {0, 7, 17, -1}, {0, 7, 18, -1}, {0, 7, 19, -1}, {0, 7, 20, -1}, {0, 7, 21, -1}, {0, 7, 22, -1}, {0, 7, 23, -1}, {0, 7, 24, -1}, {0, 7, 25, -1}, {0, 8, 9, -1}, {0, 8, 10, -1}, {0, 8, 11, -1}, {0, 8, 12, -1}, {0, 8, 13, -1}, {0, 8, 14, -1}, {0, 8, 15, -1}, {0, 8, 16, -1}, {0, 8, 17, -1}, {0, 8, 18, -1}, {0, 8, 19, -1}, {0, 8, 20, -1}, {0, 8, 21, -1}, {0, 8, 22, -1}, {0, 8, 23, -1}, {0, 8, 24, -1}, {0, 8, 25, -1}, {0, 9, 10, -1}, {0, 9, 11, -1}, {0, 9, 12, -1}, {0, 9, 13, -1}, {0, 9, 14, -1}, {0, 9, 15, -1}, {0, 9, 16, -1}, {0, 9, 17, -1}, {0, 9, 18, -1}, {0, 9, 19, -1}, {0, 9, 20, -1}, {0, 9, 21, -1}, {0, 9, 22, -1}, {0, 9, 23, -1}, {0, 9, 24, -1}, {0, 9, 25, -1}, {0, 10, 11, -1}, {0, 10, 12, -1}, {0, 10, 13, -1}, {0, 10, 14, -1}, {0, 10, 15, -1}, {0, 10, 16, -1}, {0, 10, 17, -1}, {0, 10, 18, -1}, {0, 10, 19, -1}, {0, 10, 20, -1}, {0, 10, 21, -1}, {0, 10, 22, -1}, {0, 10, 23, -1}, {0, 10, 24, -1}, {0, 10, 25, -1}, {0, 11, 12, -1}, {0, 11, 13, -1}, {0, 11, 14, -1}, {0, 11, 15, -1}, {0, 11, 16, -1}, {0, 11, 17, -1}, {0, 11, 18, -1}, {0, 11, 19, -1}, {0, 11, 20, -1}, {0, 11, 21, -1}, {0, 11, 22, -1}, {0, 11, 23, -1}, {0, 11, 24, -1}, {0, 11, 25, -1}, {0, 12, 13, -1}, {0, 12, 14, -1}, {0, 12, 15, -1}, {0, 12, 16, -1}, {0, 12, 17, -1}, {0, 12, 18, -1}, {0, 12, 19, -1}, {0, 12, 20, -1}, {0, 12, 21, -1}, {0, 12, 22, -1}, {0, 12, 23, -1}, {0, 12, 24, -1}, {0, 12, 25, -1}, {0, 13, 14, -1}, {0, 13, 15, -1}, {0, 13, 16, -1}, {0, 13, 17, -1}, {0, 13, 18, -1}, {0, 13, 19, -1}, {0, 13, 20, -1}, {0, 13, 21, -1}, {0, 13, 22, -1}, {0, 13, 23, -1}, {0, 13, 24, -1}, {0, 13, 25, -1}, {0, 14, 15, -1}, {0, 14, 16, -1}, {0, 14, 17, -1}, {0, 14, 18, -1}, {0, 14, 19, -1}, {0, 14, 20, -1}, {0, 14, 21, -1}, {0, 14, 22, -1}, {0, 14, 23, -1}, {0, 14, 24, -1}, {0, 14, 25, -1}, {0, 15, 16, -1}, {0, 15, 17, -1}, {0, 15, 18, -1}, {0, 15, 19, -1}, {0, 15, 20, -1}, {0, 15, 21, -1}, {0, 15, 22, -1}, {0, 15, 23, -1}, {0, 15, 24, -1}, {0, 15, 25, -1}, {0, 16, 17, -1}, {0, 16, 18, -1}, {0, 16, 19, -1}, {0, 16, 20, -1}, {0, 16, 21, -1}, {0, 16, 22, -1}, {0, 16, 23, -1}, {0, 16, 24, -1}, {0, 16, 25, -1}, {0, 17, 18, -1}, {0, 17, 19, -1}, {0, 17, 20, -1}, {0, 17, 21, -1}, {0, 17, 22, -1}, {0, 17, 23, -1}, {0, 17, 24, -1}, {0, 17, 25, -1}, {0, 18, 19, -1}, {0, 18, 20, -1}, {0, 18, 21, -1}, {0, 18, 22, -1}, {0, 18, 23, -1}, {0, 18, 24, -1}, {0, 18, 25, -1}, {0, 19, 20, -1}, {0, 19, 21, -1}, {0, 19, 22, -1}, {0, 19, 23, -1}, {0, 19, 24, -1}, {0, 19, 25, -1}, {0, 20, 21, -1}, {0, 20, 22, -1}, {0, 20, 23, -1}, {0, 20, 24, -1}, {0, 20, 25, -1}, {0, 21, 22, -1}, {0, 21, 23, -1}, {0, 21, 24, -1}, {0, 21, 25, -1}, {0, 22, 23, -1}, {0, 22, 24, -1}, {0, 22, 25, -1}, {0, 23, 24, -1}, {0, 23, 25, -1}, {0, 24, 25, -1}, {1, 2, 3, -1}, {1, 2, 4, -1}, {1, 2, 5, -1}, {1, 2, 6, -1}, {1, 2, 7, -1}, {1, 2, 8, -1}, {1, 2, 9, -1}, {1, 2, 10, -1}, {1, 2, 11, -1}, {1, 2, 12, -1}, {1, 2, 13, -1}, {1, 2, 14, -1}, {1, 2, 15, -1}, {1, 2, 16, -1}, {1, 2, 17, -1}, {1, 2, 18, -1}, {1, 2, 19, -1}, {1, 2, 20, -1}, {1, 2, 21, -1}, {1, 2, 22, -1}, {1, 2, 23, -1}, {1, 2, 24, -1}, {1, 2, 25, -1}, {1, 3, 4, -1}, {1, 3, 5, -1}, {1, 3, 6, -1}, {1, 3, 7, -1}, {1, 3, 8, -1}, {1, 3, 9, -1}, {1, 3, 10, -1}, {1, 3, 11, -1}, {1, 3, 12, -1}, {1, 3, 13, -1}, {1, 3, 14, -1}, {1, 3, 15, -1}, {1, 3, 16, -1}, {1, 3, 17, -1}, {1, 3, 18, -1}, {1, 3, 19, -1}, {1, 3, 20, -1}, {1, 3, 21, -1}, {1, 3, 22, -1}, {1, 3, 23, -1}, {1, 3, 24, -1}, {1, 3, 25, -1}, {1, 4, 5, -1}, {1, 4, 6, -1}, {1, 4, 7, -1}, {1, 4, 8, -1}, {1, 4, 9, -1}, {1, 4, 10, -1}, {1, 4, 11, -1}, {1, 4, 12, -1}, {1, 4, 13, -1}, {1, 4, 14, -1}, {1, 4, 15, -1}, {1, 4, 16, -1}, {1, 4, 17, -1}, {1, 4, 18, -1}, {1, 4, 19, -1}, {1, 4, 20, -1}, {1, 4, 21, -1}, {1, 4, 22, -1}, {1, 4, 23, -1}, {1, 4, 24, -1}, {1, 4, 25, -1}, {1, 5, 6, -1}, {1, 5, 7, -1}, {1, 5, 8, -1}, {1, 5, 9, -1}, {1, 5, 10, -1}, {1, 5, 11, -1}, {1, 5, 12, -1}, {1, 5, 13, -1}, {1, 5, 14, -1}, {1, 5, 15, -1}, {1, 5, 16, -1}, {1, 5, 17, -1}, {1, 5, 18, -1}, {1, 5, 19, -1}, {1, 5, 20, -1}, {1, 5, 21, -1}, {1, 5, 22, -1}, {1, 5, 23, -1}, {1, 5, 24, -1}, {1, 5, 25, -1}, {1, 6, 7, -1}, {1, 6, 8, -1}, {1, 6, 9, -1}, {1, 6, 10, -1}, {1, 6, 11, -1}, {1, 6, 12, -1}, {1, 6, 13, -1}, {1, 6, 14, -1}, {1, 6, 15, -1}, {1, 6, 16, -1}, {1, 6, 17, -1}, {1, 6, 18, -1}, {1, 6, 19, -1}, {1, 6, 20, -1}, {1, 6, 21, -1}, {1, 6, 22, -1}, {1, 6, 23, -1}, {1, 6, 24, -1}, {1, 6, 25, -1}, {1, 7, 8, -1}, {1, 7, 9, -1}, {1, 7, 10, -1}, {1, 7, 11, -1}, {1, 7, 12, -1}, {1, 7, 13, -1}, {1, 7, 14, -1}, {1, 7, 15, -1}, {1, 7, 16, -1}, {1, 7, 17, -1}, {1, 7, 18, -1}, {1, 7, 19, -1}, {1, 7, 20, -1}, {1, 7, 21, -1}, {1, 7, 22, -1}, {1, 7, 23, -1}, {1, 7, 24, -1}, {1, 7, 25, -1}, {1, 8, 9, -1}, {1, 8, 10, -1}, {1, 8, 11, -1}, {1, 8, 12, -1}, {1, 8, 13, -1}, {1, 8, 14, -1}, {1, 8, 15, -1}, {1, 8, 16, -1}, {1, 8, 17, -1}, {1, 8, 18, -1}, {1, 8, 19, -1}, {1, 8, 20, -1}, {1, 8, 21, -1}, {1, 8, 22, -1}, {1, 8, 23, -1}, {1, 8, 24, -1}, {1, 8, 25, -1}, {1, 9, 10, -1}, {1, 9, 11, -1}, {1, 9, 12, -1}, {1, 9, 13, -1}, {1, 9, 14, -1}, {1, 9, 15, -1}, {1, 9, 16, -1}, {1, 9, 17, -1}, {1, 9, 18, -1}, {1, 9, 19, -1}, {1, 9, 20, -1}, {1, 9, 21, -1}, {1, 9, 22, -1}, {1, 9, 23, -1}, {1, 9, 24, -1}, {1, 9, 25, -1}, {1, 10, 11, -1}, {1, 10, 12, -1}, {1, 10, 13, -1}, {1, 10, 14, -1}, {1, 10, 15, -1}, {1, 10, 16, -1}, {1, 10, 17, -1}, {1, 10, 18, -1}, {1, 10, 19, -1}, {1, 10, 20, -1}, {1, 10, 21, -1}, {1, 10, 22, -1}, {1, 10, 23, -1}, {1, 10, 24, -1}, {1, 10, 25, -1}, {1, 11, 12, -1}, {1, 11, 13, -1}, {1, 11, 14, -1}, {1, 11, 15, -1}, {1, 11, 16, -1}, {1, 11, 17, -1}, {1, 11, 18, -1}, {1, 11, 19, -1}, {1, 11, 20, -1}, {1, 11, 21, -1}, {1, 11, 22, -1}, {1, 11, 23, -1}, {1, 11, 24, -1}, {1, 11, 25, -1}, {1, 12, 13, -1}, {1, 12, 14, -1}, {1, 12, 15, -1}, {1, 12, 16, -1}, {1, 12, 17, -1}, {1, 12, 18, -1}, {1, 12, 19, -1}, {1, 12, 20, -1}, {1, 12, 21, -1}, {1, 12, 22, -1}, {1, 12, 23, -1}, {1, 12, 24, -1}, {1, 12, 25, -1}, {1, 13, 14, -1}, {1, 13, 15, -1}, {1, 13, 16, -1}, {1, 13, 17, -1}, {1, 13, 18, -1}, {1, 13, 19, -1}, {1, 13, 20, -1}, {1, 13, 21, -1}, {1, 13, 22, -1}, {1, 13, 23, -1}, {1, 13, 24, -1}, {1, 13, 25, -1}, {1, 14, 15, -1}, {1, 14, 16, -1}, {1, 14, 17, -1}, {1, 14, 18, -1}, {1, 14, 19, -1}, {1, 14, 20, -1}, {1, 14, 21, -1}, {1, 14, 22, -1}, {1, 14, 23, -1}, {1, 14, 24, -1}, {1, 14, 25, -1}, {1, 15, 16, -1}, {1, 15, 17, -1}, {1, 15, 18, -1}, {1, 15, 19, -1}, {1, 15, 20, -1}, {1, 15, 21, -1}, {1, 15, 22, -1}, {1, 15, 23, -1}, {1, 15, 24, -1}, {1, 15, 25, -1}, {1, 16, 17, -1}, {1, 16, 18, -1}, {1, 16, 19, -1}, {1, 16, 20, -1}, {1, 16, 21, -1}, {1, 16, 22, -1}, {1, 16, 23, -1}, {1, 16, 24, -1}, {1, 16, 25, -1}, {1, 17, 18, -1}, {1, 17, 19, -1}, {1, 17, 20, -1}, {1, 17, 21, -1}, {1, 17, 22, -1}, {1, 17, 23, -1}, {1, 17, 24, -1}, {1, 17, 25, -1}, {1, 18, 19, -1}, {1, 18, 20, -1}, {1, 18, 21, -1}, {1, 18, 22, -1}, {1, 18, 23, -1}, {1, 18, 24, -1}, {1, 18, 25, -1}, {1, 19, 20, -1}, {1, 19, 21, -1}, {1, 19, 22, -1}, {1, 19, 23, -1}, {1, 19, 24, -1}, {1, 19, 25, -1}, {1, 20, 21, -1}, {1, 20, 22, -1}, {1, 20, 23, -1}, {1, 20, 24, -1}, {1, 20, 25, -1}, {1, 21, 22, -1}, {1, 21, 23, -1}, {1, 21, 24, -1}, {1, 21, 25, -1}, {1, 22, 23, -1}, {1, 22, 24, -1}, {1, 22, 25, -1}, {1, 23, 24, -1}, {1, 23, 25, -1}, {1, 24, 25, -1}, {2, 3, 4, -1}, {2, 3, 5, -1}, {2, 3, 6, -1}, {2, 3, 7, -1}, {2, 3, 8, -1}, {2, 3, 9, -1}, {2, 3, 10, -1}, {2, 3, 11, -1}, {2, 3, 12, -1}, {2, 3, 13, -1}, {2, 3, 14, -1}, {2, 3, 15, -1}, {2, 3, 16, -1}, {2, 3, 17, -1}, {2, 3, 18, -1}, {2, 3, 19, -1}, {2, 3, 20, -1}, {2, 3, 21, -1}, {2, 3, 22, -1}, {2, 3, 23, -1}, {2, 3, 24, -1}, {2, 3, 25, -1}, {2, 4, 5, -1}, {2, 4, 6, -1}, {2, 4, 7, -1}, {2, 4, 8, -1}, {2, 4, 9, -1}, {2, 4, 10, -1}, {2, 4, 11, -1}, {2, 4, 12, -1}, {2, 4, 13, -1}, {2, 4, 14, -1}, {2, 4, 15, -1}, {2, 4, 16, -1}, {2, 4, 17, -1}, {2, 4, 18, -1}, {2, 4, 19, -1}, {2, 4, 20, -1}, {2, 4, 21, -1}, {2, 4, 22, -1}, {2, 4, 23, -1}, {2, 4, 24, -1}, {2, 4, 25, -1}, {2, 5, 6, -1}, {2, 5, 7, -1}, {2, 5, 8, -1}, {2, 5, 9, -1}, {2, 5, 10, -1}, {2, 5, 11, -1}, {2, 5, 12, -1}, {2, 5, 13, -1}, {2, 5, 14, -1}, {2, 5, 15, -1}, {2, 5, 16, -1}, {2, 5, 17, -1}, {2, 5, 18, -1}, {2, 5, 19, -1}, {2, 5, 20, -1}, {2, 5, 21, -1}, {2, 5, 22, -1}, {2, 5, 23, -1}, {2, 5, 24, -1}, {2, 5, 25, -1}, {2, 6, 7, -1}, {2, 6, 8, -1}, {2, 6, 9, -1}, {2, 6, 10, -1}, {2, 6, 11, -1}, {2, 6, 12, -1}, {2, 6, 13, -1}, {2, 6, 14, -1}, {2, 6, 15, -1}, {2, 6, 16, -1}, {2, 6, 17, -1}, {2, 6, 18, -1}, {2, 6, 19, -1}, {2, 6, 20, -1}, {2, 6, 21, -1}, {2, 6, 22, -1}, {2, 6, 23, -1}, {2, 6, 24, -1}, {2, 6, 25, -1}, {2, 7, 8, -1}, {2, 7, 9, -1}, {2, 7, 10, -1}, {2, 7, 11, -1}, {2, 7, 12, -1}, {2, 7, 13, -1}, {2, 7, 14, -1}, {2, 7, 15, -1}, {2, 7, 16, -1}, {2, 7, 17, -1}, {2, 7, 18, -1}, {2, 7, 19, -1}, {2, 7, 20, -1}, {2, 7, 21, -1}, {2, 7, 22, -1}, {2, 7, 23, -1}, {2, 7, 24, -1}, {2, 7, 25, -1}, {2, 8, 9, -1}, {2, 8, 10, -1}, {2, 8, 11, -1}, {2, 8, 12, -1}, {2, 8, 13, -1}, {2, 8, 14, -1}, {2, 8, 15, -1}, {2, 8, 16, -1}, {2, 8, 17, -1}, {2, 8, 18, -1}, {2, 8, 19, -1}, {2, 8, 20, -1}, {2, 8, 21, -1}, {2, 8, 22, -1}, {2, 8, 23, -1}, {2, 8, 24, -1}, {2, 8, 25, -1}, {2, 9, 10, -1}, {2, 9, 11, -1}, {2, 9, 12, -1}, {2, 9, 13, -1}, {2, 9, 14, -1}, {2, 9, 15, -1}, {2, 9, 16, -1}, {2, 9, 17, -1}, {2, 9, 18, -1}, {2, 9, 19, -1}, {2, 9, 20, -1}, {2, 9, 21, -1}, {2, 9, 22, -1}, {2, 9, 23, -1}, {2, 9, 24, -1}, {2, 9, 25, -1}, {2, 10, 11, -1}, {2, 10, 12, -1}, {2, 10, 13, -1}, {2, 10, 14, -1}, {2, 10, 15, -1}, {2, 10, 16, -1}, {2, 10, 17, -1}, {2, 10, 18, -1}, {2, 10, 19, -1}, {2, 10, 20, -1}, {2, 10, 21, -1}, {2, 10, 22, -1}, {2, 10, 23, -1}, {2, 10, 24, -1}, {2, 10, 25, -1}, {2, 11, 12, -1}, {2, 11, 13, -1}, {2, 11, 14, -1}, {2, 11, 15, -1}, {2, 11, 16, -1}, {2, 11, 17, -1}, {2, 11, 18, -1}, {2, 11, 19, -1}, {2, 11, 20, -1}, {2, 11, 21, -1}, {2, 11, 22, -1}, {2, 11, 23, -1}, {2, 11, 24, -1}, {2, 11, 25, -1}, {2, 12, 13, -1}, {2, 12, 14, -1}, {2, 12, 15, -1}, {2, 12, 16, -1}, {2, 12, 17, -1}, {2, 12, 18, -1}, {2, 12, 19, -1}, {2, 12, 20, -1}, {2, 12, 21, -1}, {2, 12, 22, -1}, {2, 12, 23, -1}, {2, 12, 24, -1}, {2, 12, 25, -1}, {2, 13, 14, -1}, {2, 13, 15, -1}, {2, 13, 16, -1}, {2, 13, 17, -1}, {2, 13, 18, -1}, {2, 13, 19, -1}, {2, 13, 20, -1}, {2, 13, 21, -1}, {2, 13, 22, -1}, {2, 13, 23, -1}, {2, 13, 24, -1}, {2, 13, 25, -1}, {2, 14, 15, -1}, {2, 14, 16, -1}, {2, 14, 17, -1}, {2, 14, 18, -1}, {2, 14, 19, -1}, {2, 14, 20, -1}, {2, 14, 21, -1}, {2, 14, 22, -1}, {2, 14, 23, -1}, {2, 14, 24, -1}, {2, 14, 25, -1}, {2, 15, 16, -1}, {2, 15, 17, -1}, {2, 15, 18, -1}, {2, 15, 19, -1}, {2, 15, 20, -1}, {2, 15, 21, -1}, {2, 15, 22, -1}, {2, 15, 23, -1}, {2, 15, 24, -1}, {2, 15, 25, -1}, {2, 16, 17, -1}, {2, 16, 18, -1}, {2, 16, 19, -1}, {2, 16, 20, -1}, {2, 16, 21, -1}, {2, 16, 22, -1}, {2, 16, 23, -1}, {2, 16, 24, -1}, {2, 16, 25, -1}, {2, 17, 18, -1}, {2, 17, 19, -1}, {2, 17, 20, -1}, {2, 17, 21, -1}, {2, 17, 22, -1}, {2, 17, 23, -1}, {2, 17, 24, -1}, {2, 17, 25, -1}, {2, 18, 19, -1}, {2, 18, 20, -1}, {2, 18, 21, -1}, {2, 18, 22, -1}, {2, 18, 23, -1}, {2, 18, 24, -1}, {2, 18, 25, -1}, {2, 19, 20, -1}, {2, 19, 21, -1}, {2, 19, 22, -1}, {2, 19, 23, -1}, {2, 19, 24, -1}, {2, 19, 25, -1}, {2, 20, 21, -1}, {2, 20, 22, -1}, {2, 20, 23, -1}, {2, 20, 24, -1}, {2, 20, 25, -1}, {2, 21, 22, -1}, {2, 21, 23, -1}, {2, 21, 24, -1}, {2, 21, 25, -1}, {2, 22, 23, -1}, {2, 22, 24, -1}, {2, 22, 25, -1}, {2, 23, 24, -1}, {2, 23, 25, -1}, {2, 24, 25, -1}, {3, 4, 5, -1}, {3, 4, 6, -1}, {3, 4, 7, -1}, {3, 4, 8, -1}, {3, 4, 9, -1}, {3, 4, 10, -1}, {3, 4, 11, -1}, {3, 4, 12, -1}, {3, 4, 13, -1}, {3, 4, 14, -1}, {3, 4, 15, -1}, {3, 4, 16, -1}, {3, 4, 17, -1}, {3, 4, 18, -1}, {3, 4, 19, -1}, {3, 4, 20, -1}, {3, 4, 21, -1}, {3, 4, 22, -1}, {3, 4, 23, -1}, {3, 4, 24, -1}, {3, 4, 25, -1}, {3, 5, 6, -1}, {3, 5, 7, -1}, {3, 5, 8, -1}, {3, 5, 9, -1}, {3, 5, 10, -1}, {3, 5, 11, -1}, {3, 5, 12, -1}, {3, 5, 13, -1}, {3, 5, 14, -1}, {3, 5, 15, -1}, {3, 5, 16, -1}, {3, 5, 17, -1}, {3, 5, 18, -1}, {3, 5, 19, -1}, {3, 5, 20, -1}, {3, 5, 21, -1}, {3, 5, 22, -1}, {3, 5, 23, -1}, {3, 5, 24, -1}, {3, 5, 25, -1}, {3, 6, 7, -1}, {3, 6, 8, -1}, {3, 6, 9, -1}, {3, 6, 10, -1}, {3, 6, 11, -1}, {3, 6, 12, -1}, {3, 6, 13, -1}, {3, 6, 14, -1}, {3, 6, 15, -1}, {3, 6, 16, -1}, {3, 6, 17, -1}, {3, 6, 18, -1}, {3, 6, 19, -1}, {3, 6, 20, -1}, {3, 6, 21, -1}, {3, 6, 22, -1}, {3, 6, 23, -1}, {3, 6, 24, -1}, {3, 6, 25, -1}, {3, 7, 8, -1}, {3, 7, 9, -1}, {3, 7, 10, -1}, {3, 7, 11, -1}, {3, 7, 12, -1}, {3, 7, 13, -1}, {3, 7, 14, -1}, {3, 7, 15, -1}, {3, 7, 16, -1}, {3, 7, 17, -1}, {3, 7, 18, -1}, {3, 7, 19, -1}, {3, 7, 20, -1}, {3, 7, 21, -1}, {3, 7, 22, -1}, {3, 7, 23, -1}, {3, 7, 24, -1}, {3, 7, 25, -1}, {3, 8, 9, -1}, {3, 8, 10, -1}, {3, 8, 11, -1}, {3, 8, 12, -1}, {3, 8, 13, -1}, {3, 8, 14, -1}, {3, 8, 15, -1}, {3, 8, 16, -1}, {3, 8, 17, -1}, {3, 8, 18, -1}, {3, 8, 19, -1}, {3, 8, 20, -1}, {3, 8, 21, -1}, {3, 8, 22, -1}, {3, 8, 23, -1}, {3, 8, 24, -1}, {3, 8, 25, -1}, {3, 9, 10, -1}, {3, 9, 11, -1}, {3, 9, 12, -1}, {3, 9, 13, -1}, {3, 9, 14, -1}, {3, 9, 15, -1}, {3, 9, 16, -1}, {3, 9, 17, -1}, {3, 9, 18, -1}, {3, 9, 19, -1}, {3, 9, 20, -1}, {3, 9, 21, -1}, {3, 9, 22, -1}, {3, 9, 23, -1}, {3, 9, 24, -1}, {3, 9, 25, -1}, {3, 10, 11, -1}, {3, 10, 12, -1}, {3, 10, 13, -1}, {3, 10, 14, -1}, {3, 10, 15, -1}, {3, 10, 16, -1}, {3, 10, 17, -1}, {3, 10, 18, -1}, {3, 10, 19, -1}, {3, 10, 20, -1}, {3, 10, 21, -1}, {3, 10, 22, -1}, {3, 10, 23, -1}, {3, 10, 24, -1}, {3, 10, 25, -1}, {3, 11, 12, -1}, {3, 11, 13, -1}, {3, 11, 14, -1}, {3, 11, 15, -1}, {3, 11, 16, -1}, {3, 11, 17, -1}, {3, 11, 18, -1}, {3, 11, 19, -1}, {3, 11, 20, -1}, {3, 11, 21, -1}, {3, 11, 22, -1}, {3, 11, 23, -1}, {3, 11, 24, -1}, {3, 11, 25, -1}, {3, 12, 13, -1}, {3, 12, 14, -1}, {3, 12, 15, -1}, {3, 12, 16, -1}, {3, 12, 17, -1}, {3, 12, 18, -1}, {3, 12, 19, -1}, {3, 12, 20, -1}, {3, 12, 21, -1}, {3, 12, 22, -1}, {3, 12, 23, -1}, {3, 12, 24, -1}, {3, 12, 25, -1}, {3, 13, 14, -1}, {3, 13, 15, -1}, {3, 13, 16, -1}, {3, 13, 17, -1}, {3, 13, 18, -1}, {3, 13, 19, -1}, {3, 13, 20, -1}, {3, 13, 21, -1}, {3, 13, 22, -1}, {3, 13, 23, -1}, {3, 13, 24, -1}, {3, 13, 25, -1}, {3, 14, 15, -1}, {3, 14, 16, -1}, {3, 14, 17, -1}, {3, 14, 18, -1}, {3, 14, 19, -1}, {3, 14, 20, -1}, {3, 14, 21, -1}, {3, 14, 22, -1}, {3, 14, 23, -1}, {3, 14, 24, -1}, {3, 14, 25, -1}, {3, 15, 16, -1}, {3, 15, 17, -1}, {3, 15, 18, -1}, {3, 15, 19, -1}, {3, 15, 20, -1}, {3, 15, 21, -1}, {3, 15, 22, -1}, {3, 15, 23, -1}, {3, 15, 24, -1}, {3, 15, 25, -1}, {3, 16, 17, -1}, {3, 16, 18, -1}, {3, 16, 19, -1}, {3, 16, 20, -1}, {3, 16, 21, -1}, {3, 16, 22, -1}, {3, 16, 23, -1}, {3, 16, 24, -1}, {3, 16, 25, -1}, {3, 17, 18, -1}, {3, 17, 19, -1}, {3, 17, 20, -1}, {3, 17, 21, -1}, {3, 17, 22, -1}, {3, 17, 23, -1}, {3, 17, 24, -1}, {3, 17, 25, -1}, {3, 18, 19, -1}, {3, 18, 20, -1}, {3, 18, 21, -1}, {3, 18, 22, -1}, {3, 18, 23, -1}, {3, 18, 24, -1}, {3, 18, 25, -1}, {3, 19, 20, -1}, {3, 19, 21, -1}, {3, 19, 22, -1}, {3, 19, 23, -1}, {3, 19, 24, -1}, {3, 19, 25, -1}, {3, 20, 21, -1}, {3, 20, 22, -1}, {3, 20, 23, -1}, {3, 20, 24, -1}, {3, 20, 25, -1}, {3, 21, 22, -1}, {3, 21, 23, -1}, {3, 21, 24, -1}, {3, 21, 25, -1}, {3, 22, 23, -1}, {3, 22, 24, -1}, {3, 22, 25, -1}, {3, 23, 24, -1}, {3, 23, 25, -1}, {3, 24, 25, -1}, {4, 5, 6, -1}, {4, 5, 7, -1}, {4, 5, 8, -1}, {4, 5, 9, -1}, {4, 5, 10, -1}, {4, 5, 11, -1}, {4, 5, 12, -1}, {4, 5, 13, -1}, {4, 5, 14, -1}, {4, 5, 15, -1}, {4, 5, 16, -1}, {4, 5, 17, -1}, {4, 5, 18, -1}, {4, 5, 19, -1}, {4, 5, 20, -1}, {4, 5, 21, -1}, {4, 5, 22, -1}, {4, 5, 23, -1}, {4, 5, 24, -1}, {4, 5, 25, -1}, {4, 6, 7, -1}, {4, 6, 8, -1}, {4, 6, 9, -1}, {4, 6, 10, -1}, {4, 6, 11, -1}, {4, 6, 12, -1}, {4, 6, 13, -1}, {4, 6, 14, -1}, {4, 6, 15, -1}, {4, 6, 16, -1}, {4, 6, 17, -1}, {4, 6, 18, -1}, {4, 6, 19, -1}, {4, 6, 20, -1}, {4, 6, 21, -1}, {4, 6, 22, -1}, {4, 6, 23, -1}, {4, 6, 24, -1}, {4, 6, 25, -1}, {4, 7, 8, -1}, {4, 7, 9, -1}, {4, 7, 10, -1}, {4, 7, 11, -1}, {4, 7, 12, -1}, {4, 7, 13, -1}, {4, 7, 14, -1}, {4, 7, 15, -1}, {4, 7, 16, -1}, {4, 7, 17, -1}, {4, 7, 18, -1}, {4, 7, 19, -1}, {4, 7, 20, -1}, {4, 7, 21, -1}, {4, 7, 22, -1}, {4, 7, 23, -1}, {4, 7, 24, -1}, {4, 7, 25, -1}, {4, 8, 9, -1}, {4, 8, 10, -1}, {4, 8, 11, -1}, {4, 8, 12, -1}, {4, 8, 13, -1}, {4, 8, 14, -1}, {4, 8, 15, -1}, {4, 8, 16, -1}, {4, 8, 17, -1}, {4, 8, 18, -1}, {4, 8, 19, -1}, {4, 8, 20, -1}, {4, 8, 21, -1}, {4, 8, 22, -1}, {4, 8, 23, -1}, {4, 8, 24, -1}, {4, 8, 25, -1}, {4, 9, 10, -1}, {4, 9, 11, -1}, {4, 9, 12, -1}, {4, 9, 13, -1}, {4, 9, 14, -1}, {4, 9, 15, -1}, {4, 9, 16, -1}, {4, 9, 17, -1}, {4, 9, 18, -1}, {4, 9, 19, -1}, {4, 9, 20, -1}, {4, 9, 21, -1}, {4, 9, 22, -1}, {4, 9, 23, -1}, {4, 9, 24, -1}, {4, 9, 25, -1}, {4, 10, 11, -1}, {4, 10, 12, -1}, {4, 10, 13, -1}, {4, 10, 14, -1}, {4, 10, 15, -1}, {4, 10, 16, -1}, {4, 10, 17, -1}, {4, 10, 18, -1}, {4, 10, 19, -1}, {4, 10, 20, -1}, {4, 10, 21, -1}, {4, 10, 22, -1}, {4, 10, 23, -1}, {4, 10, 24, -1}, {4, 10, 25, -1}, {4, 11, 12, -1}, {4, 11, 13, -1}, {4, 11, 14, -1}, {4, 11, 15, -1}, {4, 11, 16, -1}, {4, 11, 17, -1}, {4, 11, 18, -1}, {4, 11, 19, -1}, {4, 11, 20, -1}, {4, 11, 21, -1}, {4, 11, 22, -1}, {4, 11, 23, -1}, {4, 11, 24, -1}, {4, 11, 25, -1}, {4, 12, 13, -1}, {4, 12, 14, -1}, {4, 12, 15, -1}, {4, 12, 16, -1}, {4, 12, 17, -1}, {4, 12, 18, -1}, {4, 12, 19, -1}, {4, 12, 20, -1}, {4, 12, 21, -1}, {4, 12, 22, -1}, {4, 12, 23, -1}, {4, 12, 24, -1}, {4, 12, 25, -1}, {4, 13, 14, -1}, {4, 13, 15, -1}, {4, 13, 16, -1}, {4, 13, 17, -1}, {4, 13, 18, -1}, {4, 13, 19, -1}, {4, 13, 20, -1}, {4, 13, 21, -1}, {4, 13, 22, -1}, {4, 13, 23, -1}, {4, 13, 24, -1}, {4, 13, 25, -1}, {4, 14, 15, -1}, {4, 14, 16, -1}, {4, 14, 17, -1}, {4, 14, 18, -1}, {4, 14, 19, -1}, {4, 14, 20, -1}, {4, 14, 21, -1}, {4, 14, 22, -1}, {4, 14, 23, -1}, {4, 14, 24, -1}, {4, 14, 25, -1}, {4, 15, 16, -1}, {4, 15, 17, -1}, {4, 15, 18, -1}, {4, 15, 19, -1}, {4, 15, 20, -1}, {4, 15, 21, -1}, {4, 15, 22, -1}, {4, 15, 23, -1}, {4, 15, 24, -1}, {4, 15, 25, -1}, {4, 16, 17, -1}, {4, 16, 18, -1}, {4, 16, 19, -1}, {4, 16, 20, -1}, {4, 16, 21, -1}, {4, 16, 22, -1}, {4, 16, 23, -1}, {4, 16, 24, -1}, {4, 16, 25, -1}, {4, 17, 18, -1}, {4, 17, 19, -1}, {4, 17, 20, -1}, {4, 17, 21, -1}, {4, 17, 22, -1}, {4, 17, 23, -1}, {4, 17, 24, -1}, {4, 17, 25, -1}, {4, 18, 19, -1}, {4, 18, 20, -1}, {4, 18, 21, -1}, {4, 18, 22, -1}, {4, 18, 23, -1}, {4, 18, 24, -1}, {4, 18, 25, -1}, {4, 19, 20, -1}, {4, 19, 21, -1}, {4, 19, 22, -1}, {4, 19, 23, -1}, {4, 19, 24, -1}, {4, 19, 25, -1}, {4, 20, 21, -1}, {4, 20, 22, -1}, {4, 20, 23, -1}, {4, 20, 24, -1}, {4, 20, 25, -1}, {4, 21, 22, -1}, {4, 21, 23, -1}, {4, 21, 24, -1}, {4, 21, 25, -1}, {4, 22, 23, -1}, {4, 22, 24, -1}, {4, 22, 25, -1}, {4, 23, 24, -1}, {4, 23, 25, -1}, {4, 24, 25, -1}, {5, 6, 7, -1}, {5, 6, 8, -1}, {5, 6, 9, -1}, {5, 6, 10, -1}, {5, 6, 11, -1}, {5, 6, 12, -1}, {5, 6, 13, -1}, {5, 6, 14, -1}, {5, 6, 15, -1}, {5, 6, 16, -1}, {5, 6, 17, -1}, {5, 6, 18, -1}, {5, 6, 19, -1}, {5, 6, 20, -1}, {5, 6, 21, -1}, {5, 6, 22, -1}, {5, 6, 23, -1}, {5, 6, 24, -1}, {5, 6, 25, -1}, {5, 7, 8, -1}, {5, 7, 9, -1}, {5, 7, 10, -1}, {5, 7, 11, -1}, {5, 7, 12, -1}, {5, 7, 13, -1}, {5, 7, 14, -1}, {5, 7, 15, -1}, {5, 7, 16, -1}, {5, 7, 17, -1}, {5, 7, 18, -1}, {5, 7, 19, -1}, {5, 7, 20, -1}, {5, 7, 21, -1}, {5, 7, 22, -1}, {5, 7, 23, -1}, {5, 7, 24, -1}, {5, 7, 25, -1}, {5, 8, 9, -1}, {5, 8, 10, -1}, {5, 8, 11, -1}, {5, 8, 12, -1}, {5, 8, 13, -1}, {5, 8, 14, -1}, {5, 8, 15, -1}, {5, 8, 16, -1}, {5, 8, 17, -1}, {5, 8, 18, -1}, {5, 8, 19, -1}, {5, 8, 20, -1}, {5, 8, 21, -1}, {5, 8, 22, -1}, {5, 8, 23, -1}, {5, 8, 24, -1}, {5, 8, 25, -1}, {5, 9, 10, -1}, {5, 9, 11, -1}, {5, 9, 12, -1}, {5, 9, 13, -1}, {5, 9, 14, -1}, {5, 9, 15, -1}, {5, 9, 16, -1}, {5, 9, 17, -1}, {5, 9, 18, -1}, {5, 9, 19, -1}, {5, 9, 20, -1}, {5, 9, 21, -1}, {5, 9, 22, -1}, {5, 9, 23, -1}, {5, 9, 24, -1}, {5, 9, 25, -1}, {5, 10, 11, -1}, {5, 10, 12, -1}, {5, 10, 13, -1}, {5, 10, 14, -1}, {5, 10, 15, -1}, {5, 10, 16, -1}, {5, 10, 17, -1}, {5, 10, 18, -1}, {5, 10, 19, -1}, {5, 10, 20, -1}, {5, 10, 21, -1}, {5, 10, 22, -1}, {5, 10, 23, -1}, {5, 10, 24, -1}, {5, 10, 25, -1}, {5, 11, 12, -1}, {5, 11, 13, -1}, {5, 11, 14, -1}, {5, 11, 15, -1}, {5, 11, 16, -1}, {5, 11, 17, -1}, {5, 11, 18, -1}, {5, 11, 19, -1}, {5, 11, 20, -1}, {5, 11, 21, -1}, {5, 11, 22, -1}, {5, 11, 23, -1}, {5, 11, 24, -1}, {5, 11, 25, -1}, {5, 12, 13, -1}, {5, 12, 14, -1}, {5, 12, 15, -1}, {5, 12, 16, -1}, {5, 12, 17, -1}, {5, 12, 18, -1}, {5, 12, 19, -1}, {5, 12, 20, -1}, {5, 12, 21, -1}, {5, 12, 22, -1}, {5, 12, 23, -1}, {5, 12, 24, -1}, {5, 12, 25, -1}, {5, 13, 14, -1}, {5, 13, 15, -1}, {5, 13, 16, -1}, {5, 13, 17, -1}, {5, 13, 18, -1}, {5, 13, 19, -1}, {5, 13, 20, -1}, {5, 13, 21, -1}, {5, 13, 22, -1}, {5, 13, 23, -1}, {5, 13, 24, -1}, {5, 13, 25, -1}, {5, 14, 15, -1}, {5, 14, 16, -1}, {5, 14, 17, -1}, {5, 14, 18, -1}, {5, 14, 19, -1}, {5, 14, 20, -1}, {5, 14, 21, -1}, {5, 14, 22, -1}, {5, 14, 23, -1}, {5, 14, 24, -1}, {5, 14, 25, -1}, {5, 15, 16, -1}, {5, 15, 17, -1}, {5, 15, 18, -1}, {5, 15, 19, -1}, {5, 15, 20, -1}, {5, 15, 21, -1}, {5, 15, 22, -1}, {5, 15, 23, -1}, {5, 15, 24, -1}, {5, 15, 25, -1}, {5, 16, 17, -1}, {5, 16, 18, -1}, {5, 16, 19, -1}, {5, 16, 20, -1}, {5, 16, 21, -1}, {5, 16, 22, -1}, {5, 16, 23, -1}, {5, 16, 24, -1}, {5, 16, 25, -1}, {5, 17, 18, -1}, {5, 17, 19, -1}, {5, 17, 20, -1}, {5, 17, 21, -1}, {5, 17, 22, -1}, {5, 17, 23, -1}, {5, 17, 24, -1}, {5, 17, 25, -1}, {5, 18, 19, -1}, {5, 18, 20, -1}, {5, 18, 21, -1}, {5, 18, 22, -1}, {5, 18, 23, -1}, {5, 18, 24, -1}, {5, 18, 25, -1}, {5, 19, 20, -1}, {5, 19, 21, -1}, {5, 19, 22, -1}, {5, 19, 23, -1}, {5, 19, 24, -1}, {5, 19, 25, -1}, {5, 20, 21, -1}, {5, 20, 22, -1}, {5, 20, 23, -1}, {5, 20, 24, -1}, {5, 20, 25, -1}, {5, 21, 22, -1}, {5, 21, 23, -1}, {5, 21, 24, -1}, {5, 21, 25, -1}, {5, 22, 23, -1}, {5, 22, 24, -1}, {5, 22, 25, -1}, {5, 23, 24, -1}, {5, 23, 25, -1}, {5, 24, 25, -1}, {6, 7, 8, -1}, {6, 7, 9, -1}, {6, 7, 10, -1}, {6, 7, 11, -1}, {6, 7, 12, -1}, {6, 7, 13, -1}, {6, 7, 14, -1}, {6, 7, 15, -1}, {6, 7, 16, -1}, {6, 7, 17, -1}, {6, 7, 18, -1}, {6, 7, 19, -1}, {6, 7, 20, -1}, {6, 7, 21, -1}, {6, 7, 22, -1}, {6, 7, 23, -1}, {6, 7, 24, -1}, {6, 7, 25, -1}, {6, 8, 9, -1}, {6, 8, 10, -1}, {6, 8, 11, -1}, {6, 8, 12, -1}, {6, 8, 13, -1}, {6, 8, 14, -1}, {6, 8, 15, -1}, {6, 8, 16, -1}, {6, 8, 17, -1}, {6, 8, 18, -1}, {6, 8, 19, -1}, {6, 8, 20, -1}, {6, 8, 21, -1}, {6, 8, 22, -1}, {6, 8, 23, -1}, {6, 8, 24, -1}, {6, 8, 25, -1}, {6, 9, 10, -1}, {6, 9, 11, -1}, {6, 9, 12, -1}, {6, 9, 13, -1}, {6, 9, 14, -1}, {6, 9, 15, -1}, {6, 9, 16, -1}, {6, 9, 17, -1}, {6, 9, 18, -1}, {6, 9, 19, -1}, {6, 9, 20, -1}, {6, 9, 21, -1}, {6, 9, 22, -1}, {6, 9, 23, -1}, {6, 9, 24, -1}, {6, 9, 25, -1}, {6, 10, 11, -1}, {6, 10, 12, -1}, {6, 10, 13, -1}, {6, 10, 14, -1}, {6, 10, 15, -1}, {6, 10, 16, -1}, {6, 10, 17, -1}, {6, 10, 18, -1}, {6, 10, 19, -1}, {6, 10, 20, -1}, {6, 10, 21, -1}, {6, 10, 22, -1}, {6, 10, 23, -1}, {6, 10, 24, -1}, {6, 10, 25, -1}, {6, 11, 12, -1}, {6, 11, 13, -1}, {6, 11, 14, -1}, {6, 11, 15, -1}, {6, 11, 16, -1}, {6, 11, 17, -1}, {6, 11, 18, -1}, {6, 11, 19, -1}, {6, 11, 20, -1}, {6, 11, 21, -1}, {6, 11, 22, -1}, {6, 11, 23, -1}, {6, 11, 24, -1}, {6, 11, 25, -1}, {6, 12, 13, -1}, {6, 12, 14, -1}, {6, 12, 15, -1}, {6, 12, 16, -1}, {6, 12, 17, -1}, {6, 12, 18, -1}, {6, 12, 19, -1}, {6, 12, 20, -1}, {6, 12, 21, -1}, {6, 12, 22, -1}, {6, 12, 23, -1}, {6, 12, 24, -1}, {6, 12, 25, -1}, {6, 13, 14, -1}, {6, 13, 15, -1}, {6, 13, 16, -1}, {6, 13, 17, -1}, {6, 13, 18, -1}, {6, 13, 19, -1}, {6, 13, 20, -1}, {6, 13, 21, -1}, {6, 13, 22, -1}, {6, 13, 23, -1}, {6, 13, 24, -1}, {6, 13, 25, -1}, {6, 14, 15, -1}, {6, 14, 16, -1}, {6, 14, 17, -1}, {6, 14, 18, -1}, {6, 14, 19, -1}, {6, 14, 20, -1}, {6, 14, 21, -1}, {6, 14, 22, -1}, {6, 14, 23, -1}, {6, 14, 24, -1}, {6, 14, 25, -1}, {6, 15, 16, -1}, {6, 15, 17, -1}, {6, 15, 18, -1}, {6, 15, 19, -1}, {6, 15, 20, -1}, {6, 15, 21, -1}, {6, 15, 22, -1}, {6, 15, 23, -1}, {6, 15, 24, -1}, {6, 15, 25, -1}, {6, 16, 17, -1}, {6, 16, 18, -1}, {6, 16, 19, -1}, {6, 16, 20, -1}, {6, 16, 21, -1}, {6, 16, 22, -1}, {6, 16, 23, -1}, {6, 16, 24, -1}, {6, 16, 25, -1}, {6, 17, 18, -1}, {6, 17, 19, -1}, {6, 17, 20, -1}, {6, 17, 21, -1}, {6, 17, 22, -1}, {6, 17, 23, -1}, {6, 17, 24, -1}, {6, 17, 25, -1}, {6, 18, 19, -1}, {6, 18, 20, -1}, {6, 18, 21, -1}, {6, 18, 22, -1}, {6, 18, 23, -1}, {6, 18, 24, -1}, {6, 18, 25, -1}, {6, 19, 20, -1}, {6, 19, 21, -1}, {6, 19, 22, -1}, {6, 19, 23, -1}, {6, 19, 24, -1}, {6, 19, 25, -1}, {6, 20, 21, -1}, {6, 20, 22, -1}, {6, 20, 23, -1}, {6, 20, 24, -1}, {6, 20, 25, -1}, {6, 21, 22, -1}, {6, 21, 23, -1}, {6, 21, 24, -1}, {6, 21, 25, -1}, {6, 22, 23, -1}, {6, 22, 24, -1}, {6, 22, 25, -1}, {6, 23, 24, -1}, {6, 23, 25, -1}, {6, 24, 25, -1}, {7, 8, 9, -1}, {7, 8, 10, -1}, {7, 8, 11, -1}, {7, 8, 12, -1}, {7, 8, 13, -1}, {7, 8, 14, -1}, {7, 8, 15, -1}, {7, 8, 16, -1}, {7, 8, 17, -1}, {7, 8, 18, -1}, {7, 8, 19, -1}, {7, 8, 20, -1}, {7, 8, 21, -1}, {7, 8, 22, -1}, {7, 8, 23, -1}, {7, 8, 24, -1}, {7, 8, 25, -1}, {7, 9, 10, -1}, {7, 9, 11, -1}, {7, 9, 12, -1}, {7, 9, 13, -1}, {7, 9, 14, -1}, {7, 9, 15, -1}, {7, 9, 16, -1}, {7, 9, 17, -1}, {7, 9, 18, -1}, {7, 9, 19, -1}, {7, 9, 20, -1}, {7, 9, 21, -1}, {7, 9, 22, -1}, {7, 9, 23, -1}, {7, 9, 24, -1}, {7, 9, 25, -1}, {7, 10, 11, -1}, {7, 10, 12, -1}, {7, 10, 13, -1}, {7, 10, 14, -1}, {7, 10, 15, -1}, {7, 10, 16, -1}, {7, 10, 17, -1}, {7, 10, 18, -1}, {7, 10, 19, -1}, {7, 10, 20, -1}, {7, 10, 21, -1}, {7, 10, 22, -1}, {7, 10, 23, -1}, {7, 10, 24, -1}, {7, 10, 25, -1}, {7, 11, 12, -1}, {7, 11, 13, -1}, {7, 11, 14, -1}, {7, 11, 15, -1}, {7, 11, 16, -1}, {7, 11, 17, -1}, {7, 11, 18, -1}, {7, 11, 19, -1}, {7, 11, 20, -1}, {7, 11, 21, -1}, {7, 11, 22, -1}, {7, 11, 23, -1}, {7, 11, 24, -1}, {7, 11, 25, -1}, {7, 12, 13, -1}, {7, 12, 14, -1}, {7, 12, 15, -1}, {7, 12, 16, -1}, {7, 12, 17, -1}, {7, 12, 18, -1}, {7, 12, 19, -1}, {7, 12, 20, -1}, {7, 12, 21, -1}, {7, 12, 22, -1}, {7, 12, 23, -1}, {7, 12, 24, -1}, {7, 12, 25, -1}, {7, 13, 14, -1}, {7, 13, 15, -1}, {7, 13, 16, -1}, {7, 13, 17, -1}, {7, 13, 18, -1}, {7, 13, 19, -1}, {7, 13, 20, -1}, {7, 13, 21, -1}, {7, 13, 22, -1}, {7, 13, 23, -1}, {7, 13, 24, -1}, {7, 13, 25, -1}, {7, 14, 15, -1}, {7, 14, 16, -1}, {7, 14, 17, -1}, {7, 14, 18, -1}, {7, 14, 19, -1}, {7, 14, 20, -1}, {7, 14, 21, -1}, {7, 14, 22, -1}, {7, 14, 23, -1}, {7, 14, 24, -1}, {7, 14, 25, -1}, {7, 15, 16, -1}, {7, 15, 17, -1}, {7, 15, 18, -1}, {7, 15, 19, -1}, {7, 15, 20, -1}, {7, 15, 21, -1}, {7, 15, 22, -1}, {7, 15, 23, -1}, {7, 15, 24, -1}, {7, 15, 25, -1}, {7, 16, 17, -1}, {7, 16, 18, -1}, {7, 16, 19, -1}, {7, 16, 20, -1}, {7, 16, 21, -1}, {7, 16, 22, -1}, {7, 16, 23, -1}, {7, 16, 24, -1}, {7, 16, 25, -1}, {7, 17, 18, -1}, {7, 17, 19, -1}, {7, 17, 20, -1}, {7, 17, 21, -1}, {7, 17, 22, -1}, {7, 17, 23, -1}, {7, 17, 24, -1}, {7, 17, 25, -1}, {7, 18, 19, -1}, {7, 18, 20, -1}, {7, 18, 21, -1}, {7, 18, 22, -1}, {7, 18, 23, -1}, {7, 18, 24, -1}, {7, 18, 25, -1}, {7, 19, 20, -1}, {7, 19, 21, -1}, {7, 19, 22, -1}, {7, 19, 23, -1}, {7, 19, 24, -1}, {7, 19, 25, -1}, {7, 20, 21, -1}, {7, 20, 22, -1}, {7, 20, 23, -1}, {7, 20, 24, -1}, {7, 20, 25, -1}, {7, 21, 22, -1}, {7, 21, 23, -1}, {7, 21, 24, -1}, {7, 21, 25, -1}, {7, 22, 23, -1}, {7, 22, 24, -1}, {7, 22, 25, -1}, {7, 23, 24, -1}, {7, 23, 25, -1}, {7, 24, 25, -1}, {8, 9, 10, -1}, {8, 9, 11, -1}, {8, 9, 12, -1}, {8, 9, 13, -1}, {8, 9, 14, -1}, {8, 9, 15, -1}, {8, 9, 16, -1}, {8, 9, 17, -1}, {8, 9, 18, -1}, {8, 9, 19, -1}, {8, 9, 20, -1}, {8, 9, 21, -1}, {8, 9, 22, -1}, {8, 9, 23, -1}, {8, 9, 24, -1}, {8, 9, 25, -1}, {8, 10, 11, -1}, {8, 10, 12, -1}, {8, 10, 13, -1}, {8, 10, 14, -1}, {8, 10, 15, -1}, {8, 10, 16, -1}, {8, 10, 17, -1}, {8, 10, 18, -1}, {8, 10, 19, -1}, {8, 10, 20, -1}, {8, 10, 21, -1}, {8, 10, 22, -1}, {8, 10, 23, -1}, {8, 10, 24, -1}, {8, 10, 25, -1}, {8, 11, 12, -1}, {8, 11, 13, -1}, {8, 11, 14, -1}, {8, 11, 15, -1}, {8, 11, 16, -1}, {8, 11, 17, -1}, {8, 11, 18, -1}, {8, 11, 19, -1}, {8, 11, 20, -1}, {8, 11, 21, -1}, {8, 11, 22, -1}, {8, 11, 23, -1}, {8, 11, 24, -1}, {8, 11, 25, -1}, {8, 12, 13, -1}, {8, 12, 14, -1}, {8, 12, 15, -1}, {8, 12, 16, -1}, {8, 12, 17, -1}, {8, 12, 18, -1}, {8, 12, 19, -1}, {8, 12, 20, -1}, {8, 12, 21, -1}, {8, 12, 22, -1}, {8, 12, 23, -1}, {8, 12, 24, -1}, {8, 12, 25, -1}, {8, 13, 14, -1}, {8, 13, 15, -1}, {8, 13, 16, -1}, {8, 13, 17, -1}, {8, 13, 18, -1}, {8, 13, 19, -1}, {8, 13, 20, -1}, {8, 13, 21, -1}, {8, 13, 22, -1}, {8, 13, 23, -1}, {8, 13, 24, -1}, {8, 13, 25, -1}, {8, 14, 15, -1}, {8, 14, 16, -1}, {8, 14, 17, -1}, {8, 14, 18, -1}, {8, 14, 19, -1}, {8, 14, 20, -1}, {8, 14, 21, -1}, {8, 14, 22, -1}, {8, 14, 23, -1}, {8, 14, 24, -1}, {8, 14, 25, -1}, {8, 15, 16, -1}, {8, 15, 17, -1}, {8, 15, 18, -1}, {8, 15, 19, -1}, {8, 15, 20, -1}, {8, 15, 21, -1}, {8, 15, 22, -1}, {8, 15, 23, -1}, {8, 15, 24, -1}, {8, 15, 25, -1}, {8, 16, 17, -1}, {8, 16, 18, -1}, {8, 16, 19, -1}, {8, 16, 20, -1}, {8, 16, 21, -1}, {8, 16, 22, -1}, {8, 16, 23, -1}, {8, 16, 24, -1}, {8, 16, 25, -1}, {8, 17, 18, -1}, {8, 17, 19, -1}, {8, 17, 20, -1}, {8, 17, 21, -1}, {8, 17, 22, -1}, {8, 17, 23, -1}, {8, 17, 24, -1}, {8, 17, 25, -1}, {8, 18, 19, -1}, {8, 18, 20, -1}, {8, 18, 21, -1}, {8, 18, 22, -1}, {8, 18, 23, -1}, {8, 18, 24, -1}, {8, 18, 25, -1}, {8, 19, 20, -1}, {8, 19, 21, -1}, {8, 19, 22, -1}, {8, 19, 23, -1}, {8, 19, 24, -1}, {8, 19, 25, -1}, {8, 20, 21, -1}, {8, 20, 22, -1}, {8, 20, 23, -1}, {8, 20, 24, -1}, {8, 20, 25, -1}, {8, 21, 22, -1}, {8, 21, 23, -1}, {8, 21, 24, -1}, {8, 21, 25, -1}, {8, 22, 23, -1}, {8, 22, 24, -1}, {8, 22, 25, -1}, {8, 23, 24, -1}, {8, 23, 25, -1}, {8, 24, 25, -1}, {9, 10, 11, -1}, {9, 10, 12, -1}, {9, 10, 13, -1}, {9, 10, 14, -1}, {9, 10, 15, -1}, {9, 10, 16, -1}, {9, 10, 17, -1}, {9, 10, 18, -1}, {9, 10, 19, -1}, {9, 10, 20, -1}, {9, 10, 21, -1}, {9, 10, 22, -1}, {9, 10, 23, -1}, {9, 10, 24, -1}, {9, 10, 25, -1}, {9, 11, 12, -1}, {9, 11, 13, -1}, {9, 11, 14, -1}, {9, 11, 15, -1}, {9, 11, 16, -1}, {9, 11, 17, -1}, {9, 11, 18, -1}, {9, 11, 19, -1}, {9, 11, 20, -1}, {9, 11, 21, -1}, {9, 11, 22, -1}, {9, 11, 23, -1}, {9, 11, 24, -1}, {9, 11, 25, -1}, {9, 12, 13, -1}, {9, 12, 14, -1}, {9, 12, 15, -1}, {9, 12, 16, -1}, {9, 12, 17, -1}, {9, 12, 18, -1}, {9, 12, 19, -1}, {9, 12, 20, -1}, {9, 12, 21, -1}, {9, 12, 22, -1}, {9, 12, 23, -1}, {9, 12, 24, -1}, {9, 12, 25, -1}, {9, 13, 14, -1}, {9, 13, 15, -1}, {9, 13, 16, -1}, {9, 13, 17, -1}, {9, 13, 18, -1}, {9, 13, 19, -1}, {9, 13, 20, -1}, {9, 13, 21, -1}, {9, 13, 22, -1}, {9, 13, 23, -1}, {9, 13, 24, -1}, {9, 13, 25, -1}, {9, 14, 15, -1}, {9, 14, 16, -1}, {9, 14, 17, -1}, {9, 14, 18, -1}, {9, 14, 19, -1}, {9, 14, 20, -1}, {9, 14, 21, -1}, {9, 14, 22, -1}, {9, 14, 23, -1}, {9, 14, 24, -1}, {9, 14, 25, -1}, {9, 15, 16, -1}, {9, 15, 17, -1}, {9, 15, 18, -1}, {9, 15, 19, -1}, {9, 15, 20, -1}, {9, 15, 21, -1}, {9, 15, 22, -1}, {9, 15, 23, -1}, {9, 15, 24, -1}, {9, 15, 25, -1}, {9, 16, 17, -1}, {9, 16, 18, -1}, {9, 16, 19, -1}, {9, 16, 20, -1}, {9, 16, 21, -1}, {9, 16, 22, -1}, {9, 16, 23, -1}, {9, 16, 24, -1}, {9, 16, 25, -1}, {9, 17, 18, -1}, {9, 17, 19, -1}, {9, 17, 20, -1}, {9, 17, 21, -1}, {9, 17, 22, -1}, {9, 17, 23, -1}, {9, 17, 24, -1}, {9, 17, 25, -1}, {9, 18, 19, -1}, {9, 18, 20, -1}, {9, 18, 21, -1}, {9, 18, 22, -1}, {9, 18, 23, -1}, {9, 18, 24, -1}, {9, 18, 25, -1}, {9, 19, 20, -1}, {9, 19, 21, -1}, {9, 19, 22, -1}, {9, 19, 23, -1}, {9, 19, 24, -1}, {9, 19, 25, -1}, {9, 20, 21, -1}, {9, 20, 22, -1}, {9, 20, 23, -1}, {9, 20, 24, -1}, {9, 20, 25, -1}, {9, 21, 22, -1}, {9, 21, 23, -1}, {9, 21, 24, -1}, {9, 21, 25, -1}, {9, 22, 23, -1}, {9, 22, 24, -1}, {9, 22, 25, -1}, {9, 23, 24, -1}, {9, 23, 25, -1}, {9, 24, 25, -1}, {10, 11, 12, -1}, {10, 11, 13, -1}, {10, 11, 14, -1}, {10, 11, 15, -1}, {10, 11, 16, -1}, {10, 11, 17, -1}, {10, 11, 18, -1}, {10, 11, 19, -1}, {10, 11, 20, -1}, {10, 11, 21, -1}, {10, 11, 22, -1}, {10, 11, 23, -1}, {10, 11, 24, -1}, {10, 11, 25, -1}, {10, 12, 13, -1}, {10, 12, 14, -1}, {10, 12, 15, -1}, {10, 12, 16, -1}, {10, 12, 17, -1}, {10, 12, 18, -1}, {10, 12, 19, -1}, {10, 12, 20, -1}, {10, 12, 21, -1}, {10, 12, 22, -1}, {10, 12, 23, -1}, {10, 12, 24, -1}, {10, 12, 25, -1}, {10, 13, 14, -1}, {10, 13, 15, -1}, {10, 13, 16, -1}, {10, 13, 17, -1}, {10, 13, 18, -1}, {10, 13, 19, -1}, {10, 13, 20, -1}, {10, 13, 21, -1}, {10, 13, 22, -1}, {10, 13, 23, -1}, {10, 13, 24, -1}, {10, 13, 25, -1}, {10, 14, 15, -1}, {10, 14, 16, -1}, {10, 14, 17, -1}, {10, 14, 18, -1}, {10, 14, 19, -1}, {10, 14, 20, -1}, {10, 14, 21, -1}, {10, 14, 22, -1}, {10, 14, 23, -1}, {10, 14, 24, -1}, {10, 14, 25, -1}, {10, 15, 16, -1}, {10, 15, 17, -1}, {10, 15, 18, -1}, {10, 15, 19, -1}, {10, 15, 20, -1}, {10, 15, 21, -1}, {10, 15, 22, -1}, {10, 15, 23, -1}, {10, 15, 24, -1}, {10, 15, 25, -1}, {10, 16, 17, -1}, {10, 16, 18, -1}, {10, 16, 19, -1}, {10, 16, 20, -1}, {10, 16, 21, -1}, {10, 16, 22, -1}, {10, 16, 23, -1}, {10, 16, 24, -1}, {10, 16, 25, -1}, {10, 17, 18, -1}, {10, 17, 19, -1}, {10, 17, 20, -1}, {10, 17, 21, -1}, {10, 17, 22, -1}, {10, 17, 23, -1}, {10, 17, 24, -1}, {10, 17, 25, -1}, {10, 18, 19, -1}, {10, 18, 20, -1}, {10, 18, 21, -1}, {10, 18, 22, -1}, {10, 18, 23, -1}, {10, 18, 24, -1}, {10, 18, 25, -1}, {10, 19, 20, -1}, {10, 19, 21, -1}, {10, 19, 22, -1}, {10, 19, 23, -1}, {10, 19, 24, -1}, {10, 19, 25, -1}, {10, 20, 21, -1}, {10, 20, 22, -1}, {10, 20, 23, -1}, {10, 20, 24, -1}, {10, 20, 25, -1}, {10, 21, 22, -1}, {10, 21, 23, -1}, {10, 21, 24, -1}, {10, 21, 25, -1}, {10, 22, 23, -1}, {10, 22, 24, -1}, {10, 22, 25, -1}, {10, 23, 24, -1}, {10, 23, 25, -1}, {10, 24, 25, -1}, {11, 12, 13, -1}, {11, 12, 14, -1}, {11, 12, 15, -1}, {11, 12, 16, -1}, {11, 12, 17, -1}, {11, 12, 18, -1}, {11, 12, 19, -1}, {11, 12, 20, -1}, {11, 12, 21, -1}, {11, 12, 22, -1}, {11, 12, 23, -1}, {11, 12, 24, -1}, {11, 12, 25, -1}, {11, 13, 14, -1}, {11, 13, 15, -1}, {11, 13, 16, -1}, {11, 13, 17, -1}, {11, 13, 18, -1}, {11, 13, 19, -1}, {11, 13, 20, -1}, {11, 13, 21, -1}, {11, 13, 22, -1}, {11, 13, 23, -1}, {11, 13, 24, -1}, {11, 13, 25, -1}, {11, 14, 15, -1}, {11, 14, 16, -1}, {11, 14, 17, -1}, {11, 14, 18, -1}, {11, 14, 19, -1}, {11, 14, 20, -1}, {11, 14, 21, -1}, {11, 14, 22, -1}, {11, 14, 23, -1}, {11, 14, 24, -1}, {11, 14, 25, -1}, {11, 15, 16, -1}, {11, 15, 17, -1}, {11, 15, 18, -1}, {11, 15, 19, -1}, {11, 15, 20, -1}, {11, 15, 21, -1}, {11, 15, 22, -1}, {11, 15, 23, -1}, {11, 15, 24, -1}, {11, 15, 25, -1}, {11, 16, 17, -1}, {11, 16, 18, -1}, {11, 16, 19, -1}, {11, 16, 20, -1}, {11, 16, 21, -1}, {11, 16, 22, -1}, {11, 16, 23, -1}, {11, 16, 24, -1}, {11, 16, 25, -1}, {11, 17, 18, -1}, {11, 17, 19, -1}, {11, 17, 20, -1}, {11, 17, 21, -1}, {11, 17, 22, -1}, {11, 17, 23, -1}, {11, 17, 24, -1}, {11, 17, 25, -1}, {11, 18, 19, -1}, {11, 18, 20, -1}, {11, 18, 21, -1}, {11, 18, 22, -1}, {11, 18, 23, -1}, {11, 18, 24, -1}, {11, 18, 25, -1}, {11, 19, 20, -1}, {11, 19, 21, -1}, {11, 19, 22, -1}, {11, 19, 23, -1}, {11, 19, 24, -1}, {11, 19, 25, -1}, {11, 20, 21, -1}, {11, 20, 22, -1}, {11, 20, 23, -1}, {11, 20, 24, -1}, {11, 20, 25, -1}, {11, 21, 22, -1}, {11, 21, 23, -1}, {11, 21, 24, -1}, {11, 21, 25, -1}, {11, 22, 23, -1}, {11, 22, 24, -1}, {11, 22, 25, -1}, {11, 23, 24, -1}, {11, 23, 25, -1}, {11, 24, 25, -1}, {12, 13, 14, -1}, {12, 13, 15, -1}, {12, 13, 16, -1}, {12, 13, 17, -1}, {12, 13, 18, -1}, {12, 13, 19, -1}, {12, 13, 20, -1}, {12, 13, 21, -1}, {12, 13, 22, -1}, {12, 13, 23, -1}, {12, 13, 24, -1}, {12, 13, 25, -1}, {12, 14, 15, -1}, {12, 14, 16, -1}, {12, 14, 17, -1}, {12, 14, 18, -1}, {12, 14, 19, -1}, {12, 14, 20, -1}, {12, 14, 21, -1}, {12, 14, 22, -1}, {12, 14, 23, -1}, {12, 14, 24, -1}, {12, 14, 25, -1}, {12, 15, 16, -1}, {12, 15, 17, -1}, {12, 15, 18, -1}, {12, 15, 19, -1}, {12, 15, 20, -1}, {12, 15, 21, -1}, {12, 15, 22, -1}, {12, 15, 23, -1}, {12, 15, 24, -1}, {12, 15, 25, -1}, {12, 16, 17, -1}, {12, 16, 18, -1}, {12, 16, 19, -1}, {12, 16, 20, -1}, {12, 16, 21, -1}, {12, 16, 22, -1}, {12, 16, 23, -1}, {12, 16, 24, -1}, {12, 16, 25, -1}, {12, 17, 18, -1}, {12, 17, 19, -1}, {12, 17, 20, -1}, {12, 17, 21, -1}, {12, 17, 22, -1}, {12, 17, 23, -1}, {12, 17, 24, -1}, {12, 17, 25, -1}, {12, 18, 19, -1}, {12, 18, 20, -1}, {12, 18, 21, -1}, {12, 18, 22, -1}, {12, 18, 23, -1}, {12, 18, 24, -1}, {12, 18, 25, -1}, {12, 19, 20, -1}, {12, 19, 21, -1}, {12, 19, 22, -1}, {12, 19, 23, -1}, {12, 19, 24, -1}, {12, 19, 25, -1}, {12, 20, 21, -1}, {12, 20, 22, -1}, {12, 20, 23, -1}, {12, 20, 24, -1}, {12, 20, 25, -1}, {12, 21, 22, -1}, {12, 21, 23, -1}, {12, 21, 24, -1}, {12, 21, 25, -1}, {12, 22, 23, -1}, {12, 22, 24, -1}, {12, 22, 25, -1}, {12, 23, 24, -1}, {12, 23, 25, -1}, {12, 24, 25, -1}, {13, 14, 15, -1}, {13, 14, 16, -1}, {13, 14, 17, -1}, {13, 14, 18, -1}, {13, 14, 19, -1}, {13, 14, 20, -1}, {13, 14, 21, -1}, {13, 14, 22, -1}, {13, 14, 23, -1}, {13, 14, 24, -1}, {13, 14, 25, -1}, {13, 15, 16, -1}, {13, 15, 17, -1}, {13, 15, 18, -1}, {13, 15, 19, -1}, {13, 15, 20, -1}, {13, 15, 21, -1}, {13, 15, 22, -1}, {13, 15, 23, -1}, {13, 15, 24, -1}, {13, 15, 25, -1}, {13, 16, 17, -1}, {13, 16, 18, -1}, {13, 16, 19, -1}, {13, 16, 20, -1}, {13, 16, 21, -1}, {13, 16, 22, -1}, {13, 16, 23, -1}, {13, 16, 24, -1}, {13, 16, 25, -1}, {13, 17, 18, -1}, {13, 17, 19, -1}, {13, 17, 20, -1}, {13, 17, 21, -1}, {13, 17, 22, -1}, {13, 17, 23, -1}, {13, 17, 24, -1}, {13, 17, 25, -1}, {13, 18, 19, -1}, {13, 18, 20, -1}, {13, 18, 21, -1}, {13, 18, 22, -1}, {13, 18, 23, -1}, {13, 18, 24, -1}, {13, 18, 25, -1}, {13, 19, 20, -1}, {13, 19, 21, -1}, {13, 19, 22, -1}, {13, 19, 23, -1}, {13, 19, 24, -1}, {13, 19, 25, -1}, {13, 20, 21, -1}, {13, 20, 22, -1}, {13, 20, 23, -1}, {13, 20, 24, -1}, {13, 20, 25, -1}, {13, 21, 22, -1}, {13, 21, 23, -1}, {13, 21, 24, -1}, {13, 21, 25, -1}, {13, 22, 23, -1}, {13, 22, 24, -1}, {13, 22, 25, -1}, {13, 23, 24, -1}, {13, 23, 25, -1}, {13, 24, 25, -1}, {14, 15, 16, -1}, {14, 15, 17, -1}, {14, 15, 18, -1}, {14, 15, 19, -1}, {14, 15, 20, -1}, {14, 15, 21, -1}, {14, 15, 22, -1}, {14, 15, 23, -1}, {14, 15, 24, -1}, {14, 15, 25, -1}, {14, 16, 17, -1}, {14, 16, 18, -1}, {14, 16, 19, -1}, {14, 16, 20, -1}, {14, 16, 21, -1}, {14, 16, 22, -1}, {14, 16, 23, -1}, {14, 16, 24, -1}, {14, 16, 25, -1}, {14, 17, 18, -1}, {14, 17, 19, -1}, {14, 17, 20, -1}, {14, 17, 21, -1}, {14, 17, 22, -1}, {14, 17, 23, -1}, {14, 17, 24, -1}, {14, 17, 25, -1}, {14, 18, 19, -1}, {14, 18, 20, -1}, {14, 18, 21, -1}, {14, 18, 22, -1}, {14, 18, 23, -1}, {14, 18, 24, -1}, {14, 18, 25, -1}, {14, 19, 20, -1}, {14, 19, 21, -1}, {14, 19, 22, -1}, {14, 19, 23, -1}, {14, 19, 24, -1}, {14, 19, 25, -1}, {14, 20, 21, -1}, {14, 20, 22, -1}, {14, 20, 23, -1}, {14, 20, 24, -1}, {14, 20, 25, -1}, {14, 21, 22, -1}, {14, 21, 23, -1}, {14, 21, 24, -1}, {14, 21, 25, -1}, {14, 22, 23, -1}, {14, 22, 24, -1}, {14, 22, 25, -1}, {14, 23, 24, -1}, {14, 23, 25, -1}, {14, 24, 25, -1}, {15, 16, 17, -1}, {15, 16, 18, -1}, {15, 16, 19, -1}, {15, 16, 20, -1}, {15, 16, 21, -1}, {15, 16, 22, -1}, {15, 16, 23, -1}, {15, 16, 24, -1}, {15, 16, 25, -1}, {15, 17, 18, -1}, {15, 17, 19, -1}, {15, 17, 20, -1}, {15, 17, 21, -1}, {15, 17, 22, -1}, {15, 17, 23, -1}, {15, 17, 24, -1}, {15, 17, 25, -1}, {15, 18, 19, -1}, {15, 18, 20, -1}, {15, 18, 21, -1}, {15, 18, 22, -1}, {15, 18, 23, -1}, {15, 18, 24, -1}, {15, 18, 25, -1}, {15, 19, 20, -1}, {15, 19, 21, -1}, {15, 19, 22, -1}, {15, 19, 23, -1}, {15, 19, 24, -1}, {15, 19, 25, -1}, {15, 20, 21, -1}, {15, 20, 22, -1}, {15, 20, 23, -1}, {15, 20, 24, -1}, {15, 20, 25, -1}, {15, 21, 22, -1}, {15, 21, 23, -1}, {15, 21, 24, -1}, {15, 21, 25, -1}, {15, 22, 23, -1}, {15, 22, 24, -1}, {15, 22, 25, -1}, {15, 23, 24, -1}, {15, 23, 25, -1}, {15, 24, 25, -1}, {16, 17, 18, -1}, {16, 17, 19, -1}, {16, 17, 20, -1}, {16, 17, 21, -1}, {16, 17, 22, -1}, {16, 17, 23, -1}, {16, 17, 24, -1}, {16, 17, 25, -1}, {16, 18, 19, -1}, {16, 18, 20, -1}, {16, 18, 21, -1}, {16, 18, 22, -1}, {16, 18, 23, -1}, {16, 18, 24, -1}, {16, 18, 25, -1}, {16, 19, 20, -1}, {16, 19, 21, -1}, {16, 19, 22, -1}, {16, 19, 23, -1}, {16, 19, 24, -1}, {16, 19, 25, -1}, {16, 20, 21, -1}, {16, 20, 22, -1}, {16, 20, 23, -1}, {16, 20, 24, -1}, {16, 20, 25, -1}, {16, 21, 22, -1}, {16, 21, 23, -1}, {16, 21, 24, -1}, {16, 21, 25, -1}, {16, 22, 23, -1}, {16, 22, 24, -1}, {16, 22, 25, -1}, {16, 23, 24, -1}, {16, 23, 25, -1}, {16, 24, 25, -1}, {17, 18, 19, -1}, {17, 18, 20, -1}, {17, 18, 21, -1}, {17, 18, 22, -1}, {17, 18, 23, -1}, {17, 18, 24, -1}, {17, 18, 25, -1}, {17, 19, 20, -1}, {17, 19, 21, -1}, {17, 19, 22, -1}, {17, 19, 23, -1}, {17, 19, 24, -1}, {17, 19, 25, -1}, {17, 20, 21, -1}, {17, 20, 22, -1}, {17, 20, 23, -1}, {17, 20, 24, -1}, {17, 20, 25, -1}, {17, 21, 22, -1}, {17, 21, 23, -1}, {17, 21, 24, -1}, {17, 21, 25, -1}, {17, 22, 23, -1}, {17, 22, 24, -1}, {17, 22, 25, -1}, {17, 23, 24, -1}, {17, 23, 25, -1}, {17, 24, 25, -1}, {18, 19, 20, -1}, {18, 19, 21, -1}, {18, 19, 22, -1}, {18, 19, 23, -1}, {18, 19, 24, -1}, {18, 19, 25, -1}, {18, 20, 21, -1}, {18, 20, 22, -1}, {18, 20, 23, -1}, {18, 20, 24, -1}, {18, 20, 25, -1}, {18, 21, 22, -1}, {18, 21, 23, -1}, {18, 21, 24, -1}, {18, 21, 25, -1}, {18, 22, 23, -1}, {18, 22, 24, -1}, {18, 22, 25, -1}, {18, 23, 24, -1}, {18, 23, 25, -1}, {18, 24, 25, -1}, {19, 20, 21, -1}, {19, 20, 22, -1}, {19, 20, 23, -1}, {19, 20, 24, -1}, {19, 20, 25, -1}, {19, 21, 22, -1}, {19, 21, 23, -1}, {19, 21, 24, -1}, {19, 21, 25, -1}, {19, 22, 23, -1}, {19, 22, 24, -1}, {19, 22, 25, -1}, {19, 23, 24, -1}, {19, 23, 25, -1}, {19, 24, 25, -1}, {20, 21, 22, -1}, {20, 21, 23, -1}, {20, 21, 24, -1}, {20, 21, 25, -1}, {20, 22, 23, -1}, {20, 22, 24, -1}, {20, 22, 25, -1}, {20, 23, 24, -1}, {20, 23, 25, -1}, {20, 24, 25, -1}, {21, 22, 23, -1}, {21, 22, 24, -1}, {21, 22, 25, -1}, {21, 23, 24, -1}, {21, 23, 25, -1}, {21, 24, 25, -1}, {22, 23, 24, -1}, {22, 23, 25, -1}, {22, 24, 25, -1}, {23, 24, 25, -1}} ;
+0
-65
tools/gen_failure_combs.py less more
0 # Copyright (c) 2013, Kevin Greenan (kmgreen2@gmail.com)
1 # All rights reserved.
2 #
3 # Redistribution and use in source and binary forms, with or without
4 # modification, are permitted provided that the following conditions are met:
5 #
6 # Redistributions of source code must retain the above copyright notice, this
7 # list of conditions and the following disclaimer.
8 #
9 # Redistributions in binary form must reproduce the above copyright notice,
10 # this list of conditions and the following disclaimer in the documentation
11 # and/or other materials provided with the distribution. THIS SOFTWARE IS
12 # PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS
13 # OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
14 # OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN
15 # NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY
16 # DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
17 # (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
18 # LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
19 # ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
20 # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
21 # THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
22
23 import optparse
24 import mpmath
25 import itertools
26 import sys
27 import random
28
29
30 def get_combinations(list, k):
31 return itertools.combinations(list, k)
32
33 if len(sys.argv) != 3:
34 print("Usage: %s <num_fragments> <num_combs>")
35 sys.exit(1)
36
37 n = int(sys.argv[1])
38 k = int(sys.argv[2])
39
40 if n is None or k is None:
41 print("Usage: %s <num_fragments> <num_combs>")
42 sys.exit(1)
43
44 fragments = [i for i in range(n)]
45 fragment_combinations = []
46
47 for i in range(1, k + 1):
48 fragment_combinations.extend(
49 [list(comb) for comb in get_combinations(fragments, i)])
50
51 for comb in fragment_combinations:
52 while len(comb) < 4:
53 comb.append(-1)
54
55 failure_comb_format_str = \
56 "int failure_combs_%d_%d[NUM_%d_%d_COMBS][%d] = %s ;"
57
58 fragment_combination_str = (
59 "%s" % fragment_combinations).replace("[", "{").replace("]", "}")
60
61 print("#define NUM_%d_%d_COMBS %d" %
62 (n, k + 1, len(fragment_combinations)))
63 print(failure_comb_format_str %
64 (n, k + 1, n, k + 1, 4, fragment_combination_str))
+0
-230
tools/gen_goldilocks_codes.py less more
0 # Copyright (c) 2013, Kevin Greenan (kmgreen2@gmail.com)
1 # All rights reserved.
2 #
3 # Redistribution and use in source and binary forms, with or without
4 # modification, are permitted provided that the following conditions are met:
5 #
6 # Redistributions of source code must retain the above copyright notice, this
7 # list of conditions and the following disclaimer.
8 #
9 # Redistributions in binary form must reproduce the above copyright notice,
10 # this list of conditions and the following disclaimer in the documentation
11 # and/or other materials provided with the distribution. THIS SOFTWARE IS
12 # PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS
13 # OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
14 # OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN
15 # NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY
16 # DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
17 # (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
18 # LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
19 # ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
20 # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
21 # THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
22
23 import optparse
24 import mpmath
25 import itertools
26 import sys
27 import random
28
29
30 def get_combinations(list, k):
31 return itertools.combinations(list, k)
32
33
34 def list_to_bm(list):
35 bm = 0
36 for elm in list:
37 bm = bm | (1 << elm)
38 return bm
39
40
41 def bm_to_list(bm):
42 list = []
43 tmp_bm = bm
44 count = 0
45 while tmp_bm != 0:
46 if tmp_bm & 1:
47 list.append(count)
48 count = count + 1
49 tmp_bm = tmp_bm >> 1
50 return list
51
52
53 def list_of_list_to_bm_list(list):
54 bm_list = []
55 for elm in list:
56 bm_list.append(list_to_bm(elm))
57
58 return bm_list
59
60
61 def bm_list_to_list_of_list(bm_list):
62 list_of_list = []
63 for bm in bm_list:
64 list_of_list.append(bm_to_list(bm))
65
66 return list_of_list
67
68
69 def bm_in(elm, bm):
70 if bm & (1 << elm):
71 return True
72 else:
73 return False
74
75
76 def bm(elm):
77 return (1 << elm)
78
79
80 def bm_insert(bm, elm):
81 bm = bm | (1 << elm)
82 return bm
83
84
85 def bm_rm(bm, elm):
86 if bm_in(elm, bm):
87 bm = bm ^ (1 << elm)
88 return bm
89
90
91 def bm_is_subset(bm1, bm2):
92 if (bm1 & bm2) ^ bm1 == 0:
93 return True
94 else:
95 return False
96
97
98 def bm_intersection(bm1, bm2):
99 return bm1 & bm2
100
101
102 def bm_hw(bm):
103 hw = 0
104 if bm == 0:
105 return hw
106
107 while bm != 0:
108 if (bm & 1) == 1:
109 hw += 1
110 bm = bm >> 1
111 return hw
112
113
114 def create_full_bm(num_bits):
115 bm = (1 << num_bits) - 1
116 return bm
117
118
119 def find_first(list, find_func):
120 for i in range(len(list)):
121 if find_func(list[i]):
122 elm = list.pop(i)
123 return elm
124
125 return None
126
127
128 def get_num_data_in_parity(parity_bm_list):
129 num_data_in_parity = [0 for i in range(m)]
130
131 for parity_bm in parity_bm_list:
132 for i in range(len(num_data_in_parity)):
133 if bm_in(i, parity_bm):
134 num_data_in_parity[i] += 1
135
136 return num_data_in_parity
137
138
139 def get_parity_eqns(bm_parity_combinations):
140 parity_bms = [0 for i in range(m)]
141 data_num = 0
142 for parity_comb in bm_parity_combinations:
143 for i in range(m):
144 if bm_in(i, parity_comb):
145 parity_bms[i] = bm_insert(parity_bms[i], data_num)
146 data_num += 1
147
148 return parity_bms
149
150 if len(sys.argv) != 3:
151 print("Usage: %s <num_parities> <num_bits = 2|3>")
152 sys.exit(1)
153
154 m = int(sys.argv[1])
155 num_bits = int(sys.argv[2])
156
157 if m is None or num_bits not in [2, 3]:
158 print("Usage: %s <num_parities> <num_bits = 2|3>")
159 sys.exit(1)
160
161 parity_list = [i for i in range(m)]
162 parity_combinations = get_combinations(parity_list, num_bits)
163 bm_parity_combinations = list_of_list_to_bm_list(parity_combinations)
164
165 needed_parity_bm = create_full_bm(m)
166
167 parity_bms_template = "int g_%d_%d_%d_hd_code_parity_bms[] = { %s };"
168 data_bms_template = "int g_%d_%d_%d_hd_code_data_bms[] = { %s };"
169
170 k = mpmath.binomial(m, num_bits)
171 used_parities = []
172
173 while k > m:
174 if bm_hw(needed_parity_bm) >= num_bits:
175 # If HW >= num_bits, find any such that (elm & needed_parity_bm) == elm
176 parity_bm = find_first(
177 bm_parity_combinations,
178 lambda elm: (
179 elm & needed_parity_bm) == elm)
180 if parity_bm is not None:
181 needed_parity_bm ^= parity_bm
182 else:
183 # If HW < num_bits, find any such that (elm & needed_parity_bm) ==
184 # needed_parity_bm
185 parity_bm = find_first(
186 bm_parity_combinations,
187 lambda elm: (
188 elm & needed_parity_bm) == needed_parity_bm)
189 if parity_bm is not None:
190 needed_parity_bm = (
191 needed_parity_bm ^ parity_bm) ^ create_full_bm(m)
192
193 # If we cannot find one, pop the last chosen element and try another
194 full_bm = create_full_bm(m)
195 if parity_bm is None:
196 parity_to_re_add = used_parities.pop()
197 # Added at the end, so we are changing the order
198 bm_parity_combinations.append(parity_to_re_add)
199 needed_parity_bm |= parity_to_re_add
200 k += 1
201 else:
202 used_parities.append(parity_bm)
203 k -= 1
204
205 for parity_bm in used_parities:
206 num_data_in_parity = get_num_data_in_parity(bm_parity_combinations)
207 parity_eqns = get_parity_eqns(bm_parity_combinations)
208 # print "(%d, %d) : %s : %s : %s" % (k, m, bm_parity_combinations,
209 # parity_eqns, num_data_in_parity)
210 print(parity_bms_template %
211 (k, m, num_bits + 1,
212 ("%s" % parity_eqns).replace("[", "").replace("]", "")))
213 print(data_bms_template %
214 (k, m, num_bits + 1,
215 ("%s" % bm_parity_combinations).replace("[", "").replace("]", "")))
216
217 bm_parity_combinations.append(parity_bm)
218 k += 1
219
220 num_data_in_parity = get_num_data_in_parity(bm_parity_combinations)
221 parity_eqns = get_parity_eqns(bm_parity_combinations)
222 # print"(%d, %d) : %s : %s" % (k, m, bm_parity_combinations,
223 # num_data_in_parity)
224 print(parity_bms_template %
225 (k, m, num_bits + 1,
226 ("%s" % parity_eqns).replace("[", "").replace("]", "")))
227 print(data_bms_template %
228 (k, m, num_bits + 1,
229 ("%s" % bm_parity_combinations).replace("[", "").replace("]", "")))